gene-set-fetch

Fetches provenance-stamped gene sets from Ensembl, Lambert 2018, JASPAR, and disease databases into TSV files.

Updated Apr 18, 2026
One-click install
npx skills add https://github.com/ppavlidis/skillz --skill gene-set-fetch-ppavlidis
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: gene-set-fetch
Source: https://github.com/ppavlidis/skillz/tree/main/skills/gene-set-fetch
Command: npx skills add https://github.com/ppavlidis/skillz --skill gene-set-fetch-ppavlidis

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires pyyaml, pandas, requests, and includes scripts (resource) components.

What problem does it solve? Researchers routinely need canonical gene lists — transcription factors, protein-coding genes, disease-associated genes — but typically rely on undated, unsourced lists passed around the lab. This Skill fetches each set live from the authoritative upstream source and writes a TSV with a sidecar .meta.json recording source URL, version, fetch date, and sha256 hashes, so every list is reproducible and citable. ## Core Features & Use Cases - Named gene sets: Transcription factors (Lambert 2018, AnimalTFDB, JASPAR motif-backed), protein-coding genes (Ensembl biotype or strict Ensembl ∩ HGNC/MGI ∩ GENCODE intersection), and union/intersection composites across human, mouse, and rat. - Ad-hoc disease-gene queries: Genes associated with a disease via Open Targets, GWAS Catalog, or OMIM, with optional score filtering — never literature search. - Genomic structural sets: Head-to-head (bidirectional promoter) gene pairs from Ensembl BioMart coordinates, filterable by chromosome and TSS distance. - Use Case: A reviewer demands a defensible background set for your GO enrichment analysis. Run one command to fetch the strict three-way protein-coding intersection, then cite the set name, Ensembl release, and source versions from the sidecar metadata in your methods section. ## Quick Start Ask the assistant to fetch the human Lambert 2018 transcription factor list and save it to a file, for example: "get me the human TFs from Lambert 2018 and save the list to /tmp/tfs.tsv".

Frequently Asked Questions about gene-set-fetch

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I get a list of human transcription factors?

Run python scripts/fetch.py tfs_human_lambert2018 to fetch the Lambert 2018 human TF list, or use tfs_human_intersection for the strict Lambert ∩ AnimalTFDB set. The command writes a TSV plus a provenance sidecar and prints the output path.

How do I get genes associated with a disease from a curated database?

Run python scripts/query.py disease "Parkinson disease" to query Open Targets by default, or pass --source gwas_catalog or --source omim for GWAS-only or Mendelian associations. Use --min-score to filter Open Targets results by association score.

What is the difference between the loose and strict protein-coding gene sets?

The loose sets (protein_coding_human/mouse) use only the Ensembl biotype annotation. The strict sets are three-way intersections of Ensembl, HGNC or MGI, and GENCODE, keeping only genes all three authorities agree are protein-coding.

Why does the AnimalTFDB fetch fail with an anti-bot error?

AnimalTFDB's current host serves a JavaScript anti-bot challenge that blocks plain HTTP clients. Download the raw TF file in a browser, place it in ~/Downloads or $ANIMALTFDB_RAW_DIR, and re-run; the fetcher will normalize it into the cache.

Does gene-set-fetch cache results and how do I force a refresh?

Yes, artifacts are cached in ~/.cache/gene-set-fetch/ with filenames encoding set name, Ensembl release, and source version. Re-running a fetch is a no-op unless you pass --refresh to force a new download from the upstream source.

When should I not use this skill for gene lists?

Do not use it for single-gene lookups (use gget), gene-to-GO-term annotations (use gene-annotations), or disease associations answered by literature search. Protein-protein interaction neighbor lists are also explicitly out of scope.