/affinity-proteomics
Unified analysis pipeline for affinity-based proteomics platforms — Olink (PEA, NPX) and SomaLogic SomaScan (SOMAmer,
$ npx -y skills add ClawBio/ClawBio --skill affinity-proteomics --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/affinity-proteomics
Context preview
The summary Claude sees to decide when to auto-load this skill.
Unified analysis pipeline for affinity-based proteomics platforms — Olink (PEA, NPX) and SomaLogic SomaScan (SOMAmer,
SKILL.md
affinity-proteomics.SKILL.mdname: affinity-proteomics
description: 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.
license: MIT
metadata:
version: 0.1.0
author: Reza
tags:
- proteomics
- olink
- somalogic
- somascan
- npx
- affinity
- differential-abundance
- biomarker
openclaw:
requires:
bins:
- python3
always: false
emoji: 🧪
homepage: https://github.com/ClawBio/ClawBio
os:
- darwin
- linux
install:
- kind: pip
package: somadata
- kind: pip
package: scipy
- kind: pip
package: statsmodels
- kind: pip
package: seaborn
- kind: pip
package: scikit-learn
trigger_keywords:
- Olink
- SomaLogic
- SomaScan
- NPX
- proteomics
- affinity proteomics
- protein biomarker
- plasma proteomics
- ADAT🧪 Affinity Proteomics Pipeline
You are **Affinity Proteomics**, a specialised ClawBio agent for Olink and SomaLogic SomaScan data analysis. Your role is to run platform-aware QC, differential abundance testing, and visualisation from affinity-based proteomics data.
Why This Exists
- **Without it**: Researchers must write bespoke scripts for each platform — Olink NPX and SomaLogic ADAT have completely different file formats, normalisation methods, and QC conventions
- **With it**: A single command handles both platforms with correct QC, normalisation, and analysis under a unified interface
- **Why ClawBio**: The existing `proteomics-de` skill handles mass-spectrometry LFQ data (MaxQuant/DIA-NN) and does not cover affinity-based platforms. This skill fills that gap
Core Capabilities
1. **Dual-platform support**: Olink NPX (CSV/Parquet) and SomaLogic ADAT under one interface 2. **Platform-specific QC**: Olink (QC_Warning, LOD, sample median) / SomaLogic (RowCheck, ColCheck, normalisation scale factors, MAD outlier filtering) 3. **Differential abundance**: t-test or Mann-Whitney U with Benjamini-Hochberg FDR correction 4. **Visualisation**: Volcano plot, heatmap (top N proteins), PCA plot 5. **Structured reporting**: Markdown report, result.json, per-protein TSV, reproducibility bundle 6. **Skill Action Menu**: `result.json` includes a workflow state plus read-only follow-up actions for compact report cards
Input Formats
| Format | Extension | Platform | Example | |--------|-----------|----------|---------| | Olink NPX | `.csv` | Olink Explore / Target 96 | `olink_demo_npx.csv` | | SomaLogic ADAT | `.adat` | SomaScan v4.0/v4.1 | `example_data.adat` (via somadata) | | Sample metadata | `.csv` | Both (Olink requires separate file) | `olink_demo_meta.csv` |
CLI Reference
# Olink demo
python skills/affinity-proteomics/affinity_proteomics.py \
--demo --platform olink --output /tmp/olink_demo
# SomaLogic demo
python skills/affinity-proteomics/affinity_proteomics.py \
--demo --platform somascan --output /tmp/soma_demo
# Real Olink data
python skills/affinity-proteomics/affinity_proteomics.py \
--platform olink --input data.csv --meta samples.csv \
--group-col Group --contrast "Case,Control" --output results/
# Via ClawBio runner
python clawbio.py run affprot --demo --platform olink
Demo
python clawbio.py run affprot --demo --platform olink
Expected output: Differential abundance report for 80 samples (40 Case / 40 Control) across 40 proteins, with 5 truly differentially expressed proteins recovered, volcano plot, heatmap, PCA, and reproducibility bundle.
Output Structure
- `report.md` — markdown report with QC, differential abundance, and top-protein sections
- `result.json` — structured summary with `chat_summary_lines`, `preferred_artifacts`, `workflow_state`, and `suggested_actions`
- `tables/diff_abundance.tsv` — per-protein differential abundance table
- `figures/volcano.png`, `figures/heatmap.png`, `figures/pca.png` — standard demo figures
- `reproducibility/` — command and software-version metadata
Suggested Actions
The demo result emits `workflow_state.lifecycle: "ready"` and offers two read-only actions: `Top Proteins` and `Volcano Summary`. In chat, the user sees those labels as numbered options; selecting one runs the stored structured request.
`state_id` is derived as a SHA-256 hash over a compact deterministic state payload: platform, contrast, protein counts, significant-protein direction counts, and the top protein rows carried in each action request. If a stored request's `state_id` no longer matches that payload, the skill returns a structured `expired` result instead of rendering a stale follow-up.
{
"workflow_state": {
"state_schema": "affinity_proteomics.workflow_state.v1",
"state_id": "sha256:...",
"lifecycle": "ready",
"state_label": "differential-abundance-ready",
"description": "OLINK differential abundance results for Case vs Control are available."
},
"suggested_actions": [
{
"action_id": "show-top-proteins",
"label": "Top Proteins",
"estimate": "~5s",
"request": {
"schema": "affinity_proteomics.action_request.v1",
"action": "top-proteins",
"state_schema": "affinity_proteomics.workflow_state.v1",
"state_id": "sha256:...",
"n": 5,
"platform": "olink",
"contrast": ["Case", "Control"],
"total_proteins_tested": 40,
"significant_proteins": 5,
"proteins": [
{"protein_id": "OID00001", "gene": "GENE1", "log2fc": 0.0, "padj": "0.00e+00"}
]
}
}
]
}Dependencies
**Required**:
- `somadata` >= 1.2 — SomaLogic ADAT parsing
- `scipy` >= 1.10 — statistical tests
- `statsmodels` >= 0.14 — multiple testing correction
- `matplotlib` >= 3.7 — plotting
- `seaborn` >= 0.13 — heatmaps
- `numpy` >= 1.24 — numerical operations
- `pandas` >= 2.0 — data manipula
Read more
name: affinity-proteomics
description: 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.
license: MIT
metadata:
version: 0.1.0
author: Reza
tags:
- proteomics
- olink
- somalogic
- somascan
- npx
- affinity
- differential-abundance
- biomarker
openclaw:
requires:
bins:
- python3
always: false
emoji: 🧪
homepage: https://github.com/ClawBio/ClawBio
os:
- darwin
- linux
install:
- kind: pip
package: somadata
- kind: pip
package: scipy
- kind: pip
package: statsmodels
- kind: pip
package: seaborn
- kind: pip
package: scikit-learn
trigger_keywords:
- Olink
- SomaLogic
- SomaScan
- NPX
- proteomics
- affinity proteomics
- protein biomarker
- plasma proteomics
- ADAT🧪 Affinity Proteomics Pipeline
You are **Affinity Proteomics**, a specialised ClawBio agent for Olink and SomaLogic SomaScan data analysis. Your role is to run platform-aware QC, differential abundance testing, and visualisation from affinity-based proteomics data.
Why This Exists
- **Without it**: Researchers must write bespoke scripts for each platform — Olink NPX and SomaLogic ADAT have completely different file formats, normalisation methods, and QC conventions
- **With it**: A single command handles both platforms with correct QC, normalisation, and analysis under a unified interface
- **Why ClawBio**: The existing `proteomics-de` skill handles mass-spectrometry LFQ data (MaxQuant/DIA-NN) and does not cover affinity-based platforms. This skill fills that gap
Core Capabilities
1. **Dual-platform support**: Olink NPX (CSV/Parquet) and SomaLogic ADAT under one interface 2. **Platform-specific QC**: Olink (QC_Warning, LOD, sample median) / SomaLogic (RowCheck, ColCheck, normalisation scale factors, MAD outlier filtering) 3. **Differential abundance**: t-test or Mann-Whitney U with Benjamini-Hochberg FDR correction 4. **Visualisation**: Volcano plot, heatmap (top N proteins), PCA plot 5. **Structured reporting**: Markdown report, result.json, per-protein TSV, reproducibility bundle 6. **Skill Action Menu**: `result.json` includes a workflow state plus read-only follow-up actions for compact report cards
Input Formats
| Format | Extension | Platform | Example | |--------|-----------|----------|---------| | Olink NPX | `.csv` | Olink Explore / Target 96 | `olink_demo_npx.csv` | | SomaLogic ADAT | `.adat` | SomaScan v4.0/v4.1 | `example_data.adat` (via somadata) | | Sample metadata | `.csv` | Both (Olink requires separate file) | `olink_demo_meta.csv` |
CLI Reference
# Olink demo python skills/affinity-proteomics/affinity_proteomics.py \ --demo --platform olink --output /tmp/olink_demo # SomaLogic demo python skills/affinity-proteomics/affinity_proteomics.py \ --demo --platform somascan --output /tmp/soma_demo # Real Olink data python skills/affinity-proteomics/affinity_proteomics.py \ --platform olink --input data.csv --meta samples.csv \ --group-col Group --contrast "Case,Control" --output results/ # Via ClawBio runner python clawbio.py run affprot --demo --platform olink
Demo
python clawbio.py run affprot --demo --platform olink
Expected output: Differential abundance report for 80 samples (40 Case / 40 Control) across 40 proteins, with 5 truly differentially expressed proteins recovered, volcano plot, heatmap, PCA, and reproducibility bundle.
Output Structure
- `report.md` — markdown report with QC, differential abundance, and top-protein sections
- `result.json` — structured summary with `chat_summary_lines`, `preferred_artifacts`, `workflow_state`, and `suggested_actions`
- `tables/diff_abundance.tsv` — per-protein differential abundance table
- `figures/volcano.png`, `figures/heatmap.png`, `figures/pca.png` — standard demo figures
- `reproducibility/` — command and software-version metadata
Suggested Actions
The demo result emits `workflow_state.lifecycle: "ready"` and offers two read-only actions: `Top Proteins` and `Volcano Summary`. In chat, the user sees those labels as numbered options; selecting one runs the stored structured request.
`state_id` is derived as a SHA-256 hash over a compact deterministic state payload: platform, contrast, protein counts, significant-protein direction counts, and the top protein rows carried in each action request. If a stored request's `state_id` no longer matches that payload, the skill returns a structured `expired` result instead of rendering a stale follow-up.
{
"workflow_state": {
"state_schema": "affinity_proteomics.workflow_state.v1",
"state_id": "sha256:...",
"lifecycle": "ready",
"state_label": "differential-abundance-ready",
"description": "OLINK differential abundance results for Case vs Control are available."
},
"suggested_actions": [
{
"action_id": "show-top-proteins",
"label": "Top Proteins",
"estimate": "~5s",
"request": {
"schema": "affinity_proteomics.action_request.v1",
"action": "top-proteins",
"state_schema": "affinity_proteomics.workflow_state.v1",
"state_id": "sha256:...",
"n": 5,
"platform": "olink",
"contrast": ["Case", "Control"],
"total_proteins_tested": 40,
"significant_proteins": 5,
"proteins": [
{"protein_id": "OID00001", "gene": "GENE1", "log2fc": 0.0, "padj": "0.00e+00"}
]
}
}
]
}Dependencies
**Required**:
- `somadata` >= 1.2 — SomaLogic ADAT parsing
- `scipy` >= 1.10 — statistical tests
- `statsmodels` >= 0.14 — multiple testing correction
- `matplotlib` >= 3.7 — plotting
- `seaborn` >= 0.13 — heatmaps
- `numpy` >= 1.24 — numerical operations
- `pandas` >= 2.0 — data manipula
🦖 ClawBio - The first bioinformatics-native AI agent skill library. Local-first. Reproducible. Open. Free.
Other skills on clawbio.
- /analyze-fasta
Synthetic ~120 aa protein sequence (CC0, no real organism)
Open skill - /ancestry-risk-profiler
Synthetic South Asian 23andMe profile with T2D, CAD, and hypertension risk alleles
Open skill - /archaic-introgression
Genomic coordinates of introgressed segments
Open skill - /article-data-fetcher
A test DOI pointing to a public GEO dataset
Open skill - /bgpt-mcp
Structured paper data with 25+ fields per result
Open skill - /bigquery-public
Run read-only SQL against BigQuery public datasets with local result capture, cost safeguards, and reproducibility
Open skill

