/geo-connector
Search, query, and cross-reference NCBI GEO (Gene Expression Omnibus) datasets with ENCODE experiments. Use when the user wants to find GEO accessions for ENCODE experiments, search GEO for complementary datasets, download GEO metadata or series matrices, cross-reference ENCODE
$ npx -y skills add ammawla/encode-toolkit --skill geo-connector --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.
- You can call itInvoke it directly when you want it.
- Slash command
/geo-connector
Context preview
The summary Claude sees to decide when to auto-load this skill.
Search, query, and cross-reference NCBI GEO (Gene Expression Omnibus) datasets with ENCODE experiments. Use when the user wants to find GEO accessions for ENCODE experiments, search GEO for complementary datasets, download GEO metadata or series matrices, cross-reference ENCODE
SKILL.md
geo-connector.SKILL.mdname: geo-connector
description: Search, query, and cross-reference NCBI GEO (Gene Expression Omnibus) datasets with ENCODE experiments. Use when the user wants to find GEO accessions for ENCODE experiments, search GEO for complementary datasets, download GEO metadata or series matrices, cross-reference ENCODE and GEO data, find supplementary files from GEO, or link GEO series to ENCODE experiments for provenance tracking. Also use when the user mentions GEO, GSE, GSM, GPL, GDS, series matrix, SOFT format, or needs to find expression data in GEO that complements their ENCODE analysis.
Search and Cross-Reference NCBI GEO with ENCODE
When to Use
- User wants to find complementary datasets in NCBI GEO to supplement ENCODE data
- User asks about "GEO", "Gene Expression Omnibus", "supplementary data", or "find related datasets"
- User needs to cross-reference ENCODE experiments with GEO series for additional replicates or conditions
- User wants to link ENCODE accessions to GEO/SRA identifiers for data sharing or citation
- Example queries: "find GEO datasets for pancreatic islet RNA-seq", "link this ENCODE experiment to GEO", "search GEO for complementary ATAC-seq data"
Query the Gene Expression Omnibus programmatically to find complementary datasets, cross-reference ENCODE experiments, and download metadata.
Scientific Rationale
**The question**: "What additional expression or epigenomic datasets exist in GEO that complement my ENCODE analysis?"
GEO hosts >200,000 series across all organisms and assay types. Many ENCODE experiments are deposited in GEO as secondary archives (ENCODE Portal is primary). GEO also contains vast amounts of non-ENCODE data — disease cohorts, perturbation experiments, time courses — that complement ENCODE's reference epigenomes.
GEO ↔ ENCODE Relationship
- ENCODE processed data is deposited at GEO as standard GSE submissions
- Raw sequencing data goes to SRA (linked from both GEO and ENCODE)
- The ENCODE Portal is canonical; GEO is secondary archive
- GEO accessions are stored in ENCODE's `dbxrefs` field as `GEO:GSExxxxx`
- NCBI maintains a dedicated ENCODE listing: https://www.ncbi.nlm.nih.gov/geo/encode/
GEO Entity Hierarchy
Series (GSE) — An experiment/study
├── Sample (GSM) — Individual measurements
│ ├── references → Platform (GPL)
│ ├── has → Supplementary files (raw data)
│ └── has → Data table (normalized values)
│
└── curated into → DataSet (GDS) [not all GSE get curated]
└── generates → Profiles (gene-level summaries)Step 1: Find GEO Accessions for ENCODE Experiments
From ENCODE → GEO
ENCODE experiments may have GEO cross-references in their metadata. After tracking an experiment:
encode_track_experiment(accession="ENCSR...")
Check the experiment's `dbxrefs` field for `GEO:GSExxxxx` entries. If found, link it:
encode_link_reference(
experiment_accession="ENCSR...",
reference_type="geo_accession",
reference_id="GSE12345"
)From GEO → ENCODE
Search GEO for ENCODE-deposited data:
# Via NCBI E-utilities
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=ENCODE[KEYWORD]+AND+gse[ETYP]&retmax=100&usehistory=y&tool=encode_mcp&email=YOUR_EMAIL"
Step 2: Search GEO for Complementary Datasets
E-utilities Search Syntax
**Base URL**: `https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi`
**Required parameters**: `db=gds`, `term=QUERY`, `tool=encode_mcp`, `email=YOUR_EMAIL`
**Rate limit**: 3 req/sec without API key, 10 req/sec with key. Get a key at https://www.ncbi.nlm.nih.gov/account/
Search Field Qualifiers
| Qualifier | Purpose | Example | |-----------|---------|---------| | `[ETYP]` | Entry type | `gse[ETYP]`, `gds[ETYP]` | | `[ORGN]` | Organism | `"Homo sapiens"[ORGN]` | | `[PDAT]` | Publication date | `2024[PDAT]` | | `[ACCN]` | Accession | `GPL96[ACCN]` | | `[suppFile]` | Supplementary file type | `bed[suppFile]`, `bw[suppFile]` |
Example Searches
# Human pancreas ATAC-seq datasets with BED files
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=pancreas+AND+ATAC-seq+AND+%22Homo+sapiens%22[ORGN]+AND+gse[ETYP]+AND+bed[suppFile]&retmax=50&tool=encode_mcp&email=YOUR_EMAIL"
# ChIP-seq datasets from a specific year
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=ChIP-seq+AND+H3K27ac+AND+gse[ETYP]+AND+2024[PDAT]&retmax=50&tool=encode_mcp&email=YOUR_EMAIL"
# Datasets associated with a PubMed ID
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=pubmed&db=gds&id=PMID&tool=encode_mcp&email=YOUR_EMAIL"
Step 3: Retrieve GEO Metadata
Get Summary for GEO Records
# Step 1: Search (returns UIDs, NOT accessions)
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=GSE12345[ACCN]&tool=encode_mcp&email=YOUR_EMAIL"
# Step 2: Get summary (use UID from step 1)
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gds&id=UID&version=2.0&tool=encode_mcp&email=YOUR_EMAIL"
Direct Record Access (acc.cgi)
# Get full SOFT-format record
curl "https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE12345&targ=self&view=full&form=text"
# Get XML (MINiML) format
curl "https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE12345&targ=self&view=full&form=xml"
# Get all sample metadata for a series
curl "https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE12345&targ=gsm&view=brief&form=text"
Step 4: Download GEO Data Files
FTP Directory Convention
GEO uses a "nnn" directory pattern: replace last 3 digits with "nnn".
| Accession | FTP Path | |-----------|----------| | GSE12345 | `ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE12nnn/GSE12345/` | | GSM575 | `ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSMnnn/GSM575/` |
Key Download Paths
| Content | Path Under Series Directory | |---------|----------------------------| | Series matrix (ex
Read more
name: geo-connector description: Search, query, and cross-reference NCBI GEO (Gene Expression Omnibus) datasets with ENCODE experiments. Use when the user wants to find GEO accessions for ENCODE experiments, search GEO for complementary datasets, download GEO metadata or series matrices, cross-reference ENCODE and GEO data, find supplementary files from GEO, or link GEO series to ENCODE experiments for provenance tracking. Also use when the user mentions GEO, GSE, GSM, GPL, GDS, series matrix, SOFT format, or needs to find expression data in GEO that complements their ENCODE analysis.
Search and Cross-Reference NCBI GEO with ENCODE
When to Use
- User wants to find complementary datasets in NCBI GEO to supplement ENCODE data
- User asks about "GEO", "Gene Expression Omnibus", "supplementary data", or "find related datasets"
- User needs to cross-reference ENCODE experiments with GEO series for additional replicates or conditions
- User wants to link ENCODE accessions to GEO/SRA identifiers for data sharing or citation
- Example queries: "find GEO datasets for pancreatic islet RNA-seq", "link this ENCODE experiment to GEO", "search GEO for complementary ATAC-seq data"
Query the Gene Expression Omnibus programmatically to find complementary datasets, cross-reference ENCODE experiments, and download metadata.
Scientific Rationale
**The question**: "What additional expression or epigenomic datasets exist in GEO that complement my ENCODE analysis?"
GEO hosts >200,000 series across all organisms and assay types. Many ENCODE experiments are deposited in GEO as secondary archives (ENCODE Portal is primary). GEO also contains vast amounts of non-ENCODE data — disease cohorts, perturbation experiments, time courses — that complement ENCODE's reference epigenomes.
GEO ↔ ENCODE Relationship
- ENCODE processed data is deposited at GEO as standard GSE submissions
- Raw sequencing data goes to SRA (linked from both GEO and ENCODE)
- The ENCODE Portal is canonical; GEO is secondary archive
- GEO accessions are stored in ENCODE's `dbxrefs` field as `GEO:GSExxxxx`
- NCBI maintains a dedicated ENCODE listing: https://www.ncbi.nlm.nih.gov/geo/encode/
GEO Entity Hierarchy
Series (GSE) — An experiment/study
├── Sample (GSM) — Individual measurements
│ ├── references → Platform (GPL)
│ ├── has → Supplementary files (raw data)
│ └── has → Data table (normalized values)
│
└── curated into → DataSet (GDS) [not all GSE get curated]
└── generates → Profiles (gene-level summaries)Step 1: Find GEO Accessions for ENCODE Experiments
From ENCODE → GEO
ENCODE experiments may have GEO cross-references in their metadata. After tracking an experiment:
encode_track_experiment(accession="ENCSR...")
Check the experiment's `dbxrefs` field for `GEO:GSExxxxx` entries. If found, link it:
encode_link_reference(
experiment_accession="ENCSR...",
reference_type="geo_accession",
reference_id="GSE12345"
)From GEO → ENCODE
Search GEO for ENCODE-deposited data:
# Via NCBI E-utilities curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=ENCODE[KEYWORD]+AND+gse[ETYP]&retmax=100&usehistory=y&tool=encode_mcp&email=YOUR_EMAIL"
Step 2: Search GEO for Complementary Datasets
E-utilities Search Syntax
**Base URL**: `https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi`
**Required parameters**: `db=gds`, `term=QUERY`, `tool=encode_mcp`, `email=YOUR_EMAIL`
**Rate limit**: 3 req/sec without API key, 10 req/sec with key. Get a key at https://www.ncbi.nlm.nih.gov/account/
Search Field Qualifiers
| Qualifier | Purpose | Example | |-----------|---------|---------| | `[ETYP]` | Entry type | `gse[ETYP]`, `gds[ETYP]` | | `[ORGN]` | Organism | `"Homo sapiens"[ORGN]` | | `[PDAT]` | Publication date | `2024[PDAT]` | | `[ACCN]` | Accession | `GPL96[ACCN]` | | `[suppFile]` | Supplementary file type | `bed[suppFile]`, `bw[suppFile]` |
Example Searches
# Human pancreas ATAC-seq datasets with BED files curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=pancreas+AND+ATAC-seq+AND+%22Homo+sapiens%22[ORGN]+AND+gse[ETYP]+AND+bed[suppFile]&retmax=50&tool=encode_mcp&email=YOUR_EMAIL" # ChIP-seq datasets from a specific year curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=ChIP-seq+AND+H3K27ac+AND+gse[ETYP]+AND+2024[PDAT]&retmax=50&tool=encode_mcp&email=YOUR_EMAIL" # Datasets associated with a PubMed ID curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=pubmed&db=gds&id=PMID&tool=encode_mcp&email=YOUR_EMAIL"
Step 3: Retrieve GEO Metadata
Get Summary for GEO Records
# Step 1: Search (returns UIDs, NOT accessions) curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=GSE12345[ACCN]&tool=encode_mcp&email=YOUR_EMAIL" # Step 2: Get summary (use UID from step 1) curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gds&id=UID&version=2.0&tool=encode_mcp&email=YOUR_EMAIL"
Direct Record Access (acc.cgi)
# Get full SOFT-format record curl "https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE12345&targ=self&view=full&form=text" # Get XML (MINiML) format curl "https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE12345&targ=self&view=full&form=xml" # Get all sample metadata for a series curl "https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE12345&targ=gsm&view=brief&form=text"
Step 4: Download GEO Data Files
FTP Directory Convention
GEO uses a "nnn" directory pattern: replace last 3 digits with "nnn".
| Accession | FTP Path | |-----------|----------| | GSE12345 | `ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE12nnn/GSE12345/` | | GSM575 | `ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSMnnn/GSM575/` |
Key Download Paths
| Content | Path Under Series Directory | |---------|----------------------------| | Series matrix (ex
Showing the first part of this file.
Search ENCODE, cross-reference 14 databases, run 7 analysis pipelines, and generate publication-ready methods — all from natural language in Claude Code.
Repo: ammawla/encode-toolkit
Other skills on encode-toolkit.
- /accessibility-aggregation
Build comprehensive chromatin accessibility maps by aggregating ATAC-seq and DNase-seq narrowPeak data across multiple ENCODE experiments, donors, and labs. Use when the user wants to answer "where is chromatin accessible in my tissue?" by combining peak calls into a union peak
Open skill - /batch-analysis
Guide for multi-experiment batch operations: QC screening, batch download, comparison, and report generation across many ENCODE experiments simultaneously. Use when users need to process 5+ experiments together, create experiment comparison tables, perform batch quality checks,
Open skill - /bioinformatics-installer
Install bioinformatics tools for ENCODE data analysis. Covers CLI tools (BWA, STAR, samtools, MACS2), R/Bioconductor packages (DESeq2, Seurat, ChIPseeker), Python packages (Scanpy, deeptools), and Nextflow pipeline infrastructure. Generates conda environments, R install scripts,
Open skill - /cellxgene-context
Guide for integrating CellxGene Census single-cell data with ENCODE bulk experiments. Use when users need cell-type-specific expression context for ENCODE regulatory data, want to deconvolve bulk ENCODE signals, or validate regulatory elements at single-cell resolution. Trigger
Open skill - /cite-encode
Generate proper ENCODE citations for publications, grants, and presentations. Use when the user needs to cite ENCODE data, create bibliography entries, write acknowledgment sections, or ensure compliance with ENCODE data use policy.
Open skill - /clinvar-annotation
Guide for annotating ENCODE regulatory variants with ClinVar clinical significance. Use when users need to check if variants in ENCODE peaks have clinical associations, find pathogenic variants in regulatory regions, or assess variant clinical impact. Trigger on: ClinVar,
Open skill

