원클릭으로
proteomics-clock
// Compute organ-specific biological age from Olink proteomic data using Goeminne et al. (2025) elastic net aging clocks.
// Compute organ-specific biological age from Olink proteomic data using Goeminne et al. (2025) elastic net aging clocks.
| name | proteomics-clock |
| description | Compute organ-specific biological age from Olink proteomic data using Goeminne et al. (2025) elastic net aging clocks. |
| license | MIT |
| metadata | {"version":"0.1.0","author":"Maria Dermit","domain":"proteomics","tags":["proteomics","aging","olink","organ-clock","biological age","Goeminne"],"inputs":[{"name":"input_file","type":"file","format":["csv","tsv","csv.gz","tsv.gz"],"description":"Olink NPX protein expression table (samples x proteins)","required":true}],"outputs":[{"name":"report","type":"file","format":"md","description":"Organ aging analysis report"}],"dependencies":{"python":">=3.11","packages":["pandas>=2.0","numpy>=1.24","matplotlib>=3.7","seaborn>=0.12","requests>=2.28"]},"demo_data":[{"path":"data/demo_olink_npx.csv.gz","description":"Synthetic 20-sample Olink NPX dataset (26 proteins)"}],"endpoints":{"cli":"python skills/proteomics-clock/proteomics_clock.py --input {input_file} --output {output_dir}"},"openclaw":{"requires":{"bins":["python3"]},"always":false,"emoji":"🕰️","homepage":"https://github.com/ClawBio/ClawBio","os":["darwin","linux"],"install":[{"kind":"pip","package":"pandas"},{"kind":"pip","package":"numpy"},{"kind":"pip","package":"matplotlib"},{"kind":"pip","package":"seaborn"},{"kind":"pip","package":"requests"}],"trigger_keywords":["proteomics clock","organ aging","proteomic clock","olink clock","organ clock","goeminne","plasma protein aging","organ-specific aging"]}} |
You are Proteomics Clock, a specialised ClawBio agent for computing organ-specific biological age from Olink proteomic data. Your role is to apply the Goeminne et al. (2025) elastic net aging clocks to user-provided Olink NPX data and produce a structured report.
Fire this skill when the user says any of:
Do NOT fire when:
methylation-clockaffinity-proteomics skillstruct-predictorOne skill, one task. This skill predicts organ-specific biological ages from Olink proteomic data and nothing else. It does not perform differential abundance, QC, or normalisation.
| Format | Extension | Required Fields | Example |
|---|---|---|---|
| Olink NPX CSV | .csv | sample_id + protein columns | olink_data.csv |
| Olink NPX TSV | .tsv | sample_id + protein columns | olink_data.tsv |
| Compressed CSV | .csv.gz | sample_id + protein columns | demo_olink_npx.csv.gz |
Protein columns must use gene symbol names matching Olink nomenclature (e.g., NPPB, BMP10, UMOD).
Optional: age column for residual calculation, sex column.
# Standard usage with Olink data
python skills/proteomics-clock/proteomics_clock.py \
--input <olink_npx.csv> --output <report_dir>
# Select specific organs and generation
python skills/proteomics-clock/proteomics_clock.py \
--input <olink_npx.csv> --organs Heart,Brain,Kidney --generation gen1 --output <dir>
# Demo mode
python skills/proteomics-clock/proteomics_clock.py --demo --output /tmp/proteomics_demo
# Keep gen2 as log-hazard (no Gompertz conversion)
python skills/proteomics-clock/proteomics_clock.py \
--input <olink_npx.csv> --no-convert-mortality --output <dir>
python skills/proteomics-clock/proteomics_clock.py --demo --output /tmp/proteomics_demo
Expected output: Predictions for 20 synthetic samples across heart, brain, kidney (and more) organ clocks, with distribution boxplots, correlation heatmap, and sample-organ heatmap.
age = (-avg_hazard + hazard) / slope - intercept with population constants from UK BiobankKey constants (from organAging repo):
# ClawBio Proteomics Clock Report
**Date**: 2026-04-10 12:00 UTC
**Input**: `demo_olink_npx.csv.gz`
**Samples**: 20
**Organs requested**: Heart, Brain, Kidney
**Generation**: both
## Prediction Summary
| Organ | Generation | N | Mean | Std |
|---|---|---:|---:|---:|
| Heart | gen1 | 20 | 62.45 | 8.32 |
| Brain | gen1 | 20 | 58.91 | 12.10 |
| Heart | gen2 | 20 | 65.12 | 9.87 |
*ClawBio is a research tool. Not a medical device.*
proteomics_clock_report/
├── report.md
├── figures/
│ ├── organ_distributions.png
│ ├── organ_correlation.png
│ └── organ_heatmap.png
├── tables/
│ ├── predictions_gen1.csv
│ ├── predictions_gen2.csv
│ ├── prediction_summary.csv
│ ├── missing_proteins.csv
│ └── clock_metadata.json
└── reproducibility/
├── commands.sh
├── environment.yml
└── checksums.sha256
missing_proteins.csv and the coverage report.This skill fetches model coefficients on first run and caches them locally.
| What | URL pattern | Cached? |
|---|---|---|
| Organ-protein mapping | raw.githubusercontent.com/ludgergoeminne/organAging/{SHA}/data/output_Python/GTEx_4x_FC_genes.json | Yes |
| Gen1 coefficients (per organ) | .../instance_0/chronological_models/{organ}_coefs_GTEx_4x_FC.csv | Yes |
| Gen2 coefficients (per organ) | .../instance_0/mortality_based_models/{organ}_mortality_coefs_GTEx_4x_FC.csv | Yes |
$CLAWBIO_CACHE/proteomics-clock/ if set, otherwise ~/.cache/clawbio/proteomics-clock/5147b03 for reproducibility. Update ORGANAGING_COMMIT in the script and clear the cache to use newer coefficients.--offline flag needed.The agent (LLM) dispatches and explains. The skill (Python) executes. The agent must NOT override model coefficients, Gompertz constants, or invent organ associations.
This skill computes organ ages for a single timepoint. For longitudinal or treatment effect analyses, run the skill separately on each timepoint and compare externally:
--input olink_t0.csv --output results_t0--input olink_t1.csv --output results_t1Real-world example: The Filbin et al. (2021) longitudinal COVID-19 Olink dataset (freely available from Mendeley Data) contains 784 samples across Day 0/3/7 with severity metadata — ideal for testing whether organ-specific biological age accelerates with COVID severity over time. The organAging authors validated their clocks on this exact dataset.
Trigger conditions: the orchestrator routes here when:
Chaining partners:
methylation-clock: Compare epigenetic vs proteomic biological age for same cohortprofile-report: Include organ aging results in unified genomic profileaffinity-proteomics (future): QC and normalise Olink data before feeding to this skillRender a 4-panel regional LocusCompare diagnostic for one (lead variant, exposure study, outcome study) tuple - overlays GWAS Manhattan, QTL Manhattan, GENCODE gene track, and cross-trait scatter colored by LD r². Use when an agent needs visual confirmation that two GWAS / QTL signals share the same causal variant (the Liu 2019 LocusCompare convention). Inputs: lead variant + two pre-fetched harmonised sumstats slices (or eQTL Catalogue / GWAS Catalog identifiers for bundled fetch). Output: PNG + JSON manifest.
Meta-agent that routes bioinformatics requests to specialised sub-skills. Handles file type detection, analysis planning, report generation, and reproducibility export.
Summarise pre-computed differential expression results with ranked gene lists, biological themes, and publication-ready interpretation.
Unified analysis pipeline for affinity-based proteomics platforms — Olink (PEA, NPX) and SomaLogic SomaScan (SOMAmer, RFU). Platform-aware QC, normalisation, differential abundance, volcano plots, heatmaps, and PCA.
Compute epigenetic age from DNA methylation arrays using PyAging clocks from GEO accessions or local files.
Cell segmentation in fluorescence microscopy images. Supports Cellpose/cpsam (Cellpose 4.0) with additional backends planned. Produces segmentation masks, per-cell morphology metrics (area, diameter, centroid, eccentricity), overlay figures, and a report.md.