Public Bioinformatics Data Access
Build a reproducible acquisition plan before downloading. Treat GEO, SRA/ENA,
GDC, GTEx, and DepMap as independent providers behind one provider-neutral
workflow. Do not require a provider-specific toolkit or machine-specific checkout.
Workflow
- Clarify the dataset contract. Identify the provider, accession/project,
release, modality, smallest useful data product, filters, target directory,
expected scale, and downstream analysis.
- Inspect before transfer. Use available MCP/connectors or official
metadata endpoints to list releases, files, samples, sizes, and checksums.
Do not start a bulk transfer during discovery.
- Write a provider-neutral plan. Run
scripts/public_data_plan.py init.
Store the plan next to the future dataset as download-plan.json.
- Validate and review. Run
validate, show the user the resolved provider,
transport, filters, limits, output location, and known size. For a large,
paid, authenticated, or overwrite-capable job, confirm that the user's
authorization covers this concrete transfer; ask only when it does not.
- Select the adapter at runtime. Prefer an already available Wisp MCP tool
for metadata and small queries. Prefer official HTTPS/FTP or provider clients
for bulk files. Use an external project only when it is installed and record
its version in the plan/manifest.
- Acquire safely. Reuse existing valid files, resume partial transfers when
supported, keep raw files immutable, and never place credentials in the plan.
- Verify and hand off. Check expected files, byte sizes, checksums when
available, and sample/file counts. Generate
manifest.json with the script.
Provider routing
| Provider |
Discovery and small queries |
Bulk acquisition |
Typical products |
| GEO |
GEO metadata connector, NCBI E-utilities |
NCBI GEO HTTPS/FTP; optional geokit in R |
series matrix, SOFT, supplementary files |
| SRA/ENA |
RunInfo or ENA Portal API |
ENA HTTPS/FTP or SRA Toolkit |
FASTQ, run metadata |
| GDC |
GDC files/cases API |
manifest + gdc-client, or HTTPS for bounded files |
expression, mutation, CNV, clinical, methylation |
| GTEx |
GTEx expression connector/API |
official release files for matrices |
gene/tissue queries, median or sample expression |
| DepMap |
DepMap model/release metadata |
official release file endpoint |
model metadata, expression, mutation, dependency |
| custom |
User-provided catalog/API |
explicit HTTPS/FTP URLs |
provider-specific files |
Read references/provider-routing.md before implementing or changing a
provider adapter. DepMap-specific flags or release semantics must stay inside
the DepMap adapter; they must not shape the common plan schema.
For GEO SOFT/Series Matrix parsing, sample metadata preparation, or
ExpressionSet acquisition in an R workflow, read
references/geokit.md. geokit is optional; ordinary GEO
discovery does not require R or package installation.
Create and validate a plan
Resolve scripts/public_data_plan.py against this skill's directory (the
use_skill result lists its path), and invoke that resolved script with a
Python 3.10+ interpreter. Keep the working directory at the project root so
relative plan/output paths belong to the project. The examples below abbreviate
the script path; quote the resolved path when it contains spaces. In an SSH/WSL
context, stage the helper there or use an existing copy in that context; a
desktop skill path is not automatically available remotely.
python scripts/public_data_plan.py init \
--provider geo \
--identifier GSE12345 \
--data-type series-matrix \
--output-dir data/public/geo/GSE12345 \
--plan data/public/geo/GSE12345/download-plan.json
python scripts/public_data_plan.py validate \
data/public/geo/GSE12345/download-plan.json
Filters are provider-specific but encoded uniformly as repeated key=value
pairs:
python scripts/public_data_plan.py init \
--provider gdc \
--identifier TCGA-BRCA \
--data-type expression \
--filter workflow_type="STAR - Counts" \
--filter sample_type="Primary Tumor" \
--max-files 20 \
--transport gdc-client \
--plan data/public/gdc/TCGA-BRCA/download-plan.json
The planner does not download data. It produces a reviewable contract. See
references/download-plan-schema.md for the complete schema. Validation checks
the plan structure; it does not probe URLs, enforce transfer limits, verify
installed packages, or approve a pending transfer. The selected adapter must
honor the plan's limits and resume behavior.
Generate a manifest
After acquisition:
python scripts/public_data_plan.py manifest \
data/public/geo/GSE12345/download-plan.json \
--scan-dir data/public/geo/GSE12345 \
--output data/public/geo/GSE12345/manifest.json
Use SHA-256 for modest datasets and provider checksums for large archives. For
very large datasets, --checksum none is acceptable only when official
checksums or immutable object identifiers are recorded elsewhere.
Safety and reproducibility rules
- Default to
overwrite=false, resume=true, and the minimum useful subset.
- Never translate an exploratory request into “download everything.”
- Keep provider metadata, query/filter payloads, release/version, transport,
tool version, URLs/object identifiers, and validation results.
- Separate immutable source files from normalized/derived outputs.
- Do not treat a successful HTTP response as a valid dataset; verify content.
- Do not embed API keys, cookies, signed URLs, SSH keys, or bearer tokens.
- Use structured runs or a remote execution context for long transfers rather
than extending an interactive shell timeout.
- If an adapter or connector cannot perform the requested transfer, stop after
producing the validated plan and report the missing capability explicitly.
Wisp Science integration
- Discover the live connector/tool catalog instead of assuming exact MCP tool
names; installations can expose different provider adapters.
- Use connectors for discovery and bounded queries, then official transfer
mechanisms for large files.
- Keep outputs under the active project, normally
data/public/<provider>/....
- Invoke the planner as a standalone CLI; no Python REPL helper loading is
required. R-based acquisition can use geokit independently of the planner.
- Treat this skill as an acquisition/orchestration layer. Downstream QC,
statistics, annotation, and visualization belong to other skills.
1---2name: public-data-access3description: Plan, validate, and document public-bioinformatics data acquisition for GEO/GSE/GSM/GPL/GDS, SRA/ENA, TCGA/GDC, GTEx, and DepMap. Covers expression matrices, raw reads, download manifests, caches, and optional geokit SOFT/Series Matrix acquisition for R workflows.4---5
6# Public Bioinformatics Data Access
7
8Build a reproducible acquisition plan before downloading. Treat GEO, SRA/ENA,
9GDC, GTEx, and DepMap as independent providers behind one provider-neutral
10workflow. Do not require a provider-specific toolkit or machine-specific checkout.
11
12## Workflow
13
141. **Clarify the dataset contract.** Identify the provider, accession/project,
15 release, modality, smallest useful data product, filters, target directory,
16 expected scale, and downstream analysis.
172. **Inspect before transfer.** Use available MCP/connectors or official
18 metadata endpoints to list releases, files, samples, sizes, and checksums.
19 Do not start a bulk transfer during discovery.
203. **Write a provider-neutral plan.** Run `scripts/public_data_plan.py init`.
21 Store the plan next to the future dataset as `download-plan.json`.
224. **Validate and review.** Run `validate`, show the user the resolved provider,
23 transport, filters, limits, output location, and known size. For a large,
24 paid, authenticated, or overwrite-capable job, confirm that the user's
25 authorization covers this concrete transfer; ask only when it does not.
265. **Select the adapter at runtime.** Prefer an already available Wisp MCP tool
27 for metadata and small queries. Prefer official HTTPS/FTP or provider clients
28 for bulk files. Use an external project only when it is installed and record
29 its version in the plan/manifest.
306. **Acquire safely.** Reuse existing valid files, resume partial transfers when
31 supported, keep raw files immutable, and never place credentials in the plan.
327. **Verify and hand off.** Check expected files, byte sizes, checksums when
33 available, and sample/file counts. Generate `manifest.json` with the script.
34
35## Provider routing
36
37| Provider | Discovery and small queries | Bulk acquisition | Typical products |
38|---|---|---|---|
39| GEO | GEO metadata connector, NCBI E-utilities | NCBI GEO HTTPS/FTP; optional geokit in R | series matrix, SOFT, supplementary files |
40| SRA/ENA | RunInfo or ENA Portal API | ENA HTTPS/FTP or SRA Toolkit | FASTQ, run metadata |
41| GDC | GDC files/cases API | manifest + `gdc-client`, or HTTPS for bounded files | expression, mutation, CNV, clinical, methylation |
42| GTEx | GTEx expression connector/API | official release files for matrices | gene/tissue queries, median or sample expression |
43| DepMap | DepMap model/release metadata | official release file endpoint | model metadata, expression, mutation, dependency |
44| custom | User-provided catalog/API | explicit HTTPS/FTP URLs | provider-specific files |
45
46Read `references/provider-routing.md` before implementing or changing a
47provider adapter. DepMap-specific flags or release semantics must stay inside
48the DepMap adapter; they must not shape the common plan schema.
49
50For GEO SOFT/Series Matrix parsing, sample metadata preparation, or
51ExpressionSet acquisition in an R workflow, read
52[references/geokit.md](references/geokit.md). geokit is optional; ordinary GEO
53discovery does not require R or package installation.
54
55## Create and validate a plan
56
57Resolve `scripts/public_data_plan.py` against this skill's directory (the
58`use_skill` result lists its path), and invoke that resolved script with a
59Python 3.10+ interpreter. Keep the working directory at the project root so
60relative plan/output paths belong to the project. The examples below abbreviate
61the script path; quote the resolved path when it contains spaces. In an SSH/WSL
62context, stage the helper there or use an existing copy in that context; a
63desktop skill path is not automatically available remotely.
64
65```bash
66python scripts/public_data_plan.py init \
67 --provider geo \
68 --identifier GSE12345 \
69 --data-type series-matrix \
70 --output-dir data/public/geo/GSE12345 \
71 --plan data/public/geo/GSE12345/download-plan.json
72
73python scripts/public_data_plan.py validate \
74 data/public/geo/GSE12345/download-plan.json
75```
76
77Filters are provider-specific but encoded uniformly as repeated `key=value`
78pairs:
79
80```bash
81python scripts/public_data_plan.py init \
82 --provider gdc \
83 --identifier TCGA-BRCA \
84 --data-type expression \
85 --filter workflow_type="STAR - Counts" \
86 --filter sample_type="Primary Tumor" \
87 --max-files 20 \
88 --transport gdc-client \
89 --plan data/public/gdc/TCGA-BRCA/download-plan.json
90```
91
92The planner does not download data. It produces a reviewable contract. See
93`references/download-plan-schema.md` for the complete schema. Validation checks
94the plan structure; it does not probe URLs, enforce transfer limits, verify
95installed packages, or approve a pending transfer. The selected adapter must
96honor the plan's limits and resume behavior.
97
98## Generate a manifest
99
100After acquisition:
101
102```bash
103python scripts/public_data_plan.py manifest \
104 data/public/geo/GSE12345/download-plan.json \
105 --scan-dir data/public/geo/GSE12345 \
106 --output data/public/geo/GSE12345/manifest.json
107```
108
109Use SHA-256 for modest datasets and provider checksums for large archives. For
110very large datasets, `--checksum none` is acceptable only when official
111checksums or immutable object identifiers are recorded elsewhere.
112
113## Safety and reproducibility rules
114
115- Default to `overwrite=false`, `resume=true`, and the minimum useful subset.
116- Never translate an exploratory request into “download everything.”
117- Keep provider metadata, query/filter payloads, release/version, transport,
118 tool version, URLs/object identifiers, and validation results.
119- Separate immutable source files from normalized/derived outputs.
120- Do not treat a successful HTTP response as a valid dataset; verify content.
121- Do not embed API keys, cookies, signed URLs, SSH keys, or bearer tokens.
122- Use structured runs or a remote execution context for long transfers rather
123 than extending an interactive shell timeout.
124- If an adapter or connector cannot perform the requested transfer, stop after
125 producing the validated plan and report the missing capability explicitly.
126
127## Wisp Science integration
128
129- Discover the live connector/tool catalog instead of assuming exact MCP tool
130 names; installations can expose different provider adapters.
131- Use connectors for discovery and bounded queries, then official transfer
132 mechanisms for large files.
133- Keep outputs under the active project, normally `data/public/<provider>/...`.
134- Invoke the planner as a standalone CLI; no Python REPL helper loading is
135 required. R-based acquisition can use geokit independently of the planner.
136- Treat this skill as an acquisition/orchestration layer. Downstream QC,
137 statistics, annotation, and visualization belong to other skills.