gene-annotations

Query bidirectional gene-to-GO-term annotations from GOA and GAF sources with provenance.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

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

What problem does it solve? Answering "which genes are annotated to this GO term" or "what GO terms does this gene have" is error-prone: casual sources skip child-term propagation, gene identifiers come in mismatched formats (symbol, UniProt, Ensembl, Entrez), and results rarely record evidence codes or source versions. This Skill performs authoritative bidirectional lookups with propagation on by default, transparent ID resolution, and full provenance on every output. ## Core Features & Use Cases - Term-to-genes lookup: genes_with_annotation GO:0006915 returns all genes annotated to a GO term including descendants (use --direct to disable propagation). - Gene-to-terms lookup: annotations_of_gene TP53 resolves symbols via UniProt and returns GO annotations with evidence codes, qualifiers, and per-row direct/propagated flags. - Two authoritative sources: GOA via the QuickGO REST API (live, rich coverage) and per-species GAF files from the GO Consortium (offline, version-pinned, reproducible via cached go.obo). - Provenance sidecars: every TSV ships with a .meta.json recording source URL, sha256 hashes, species, propagation flag, and evidence codes. - Use Case: Verify a paper's claim that TP53 is involved in DNA repair by fetching its GO annotations, filtering to experimental evidence codes (IDA, IMP, EXP), and reporting exactly which terms are experimentally backed versus electronically inferred. ## Quick Start Ask the assistant to list the human genes annotated to apoptosis (GO:0006915) including child terms, or to fetch the GO annotations for a gene such as TP53, and it will run the annotate.py script and save a provenance-stamped TSV.

Frequently Asked Questions about gene-annotations

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

FAQPage Schema
How do I get all genes annotated to a GO term including child terms?

Run genes_with_annotation with the GO term, for example GO:0006915 for apoptosis. Child-term propagation is enabled by default via QuickGO's descendants mode or local go.obo traversal; pass --direct to restrict to direct annotations only.

How do I look up GO annotations for a gene like TP53?

Run annotations_of_gene with the gene symbol, UniProt accession, Ensembl ID, or prefixed identifier. Symbols are resolved to reviewed UniProt accessions automatically, and results include term labels, aspects, evidence codes, and qualifiers.

What is the difference between the goa and gaf sources?

The goa source queries QuickGO live at EBI and offers the richest coverage with server-side propagation. The gaf source downloads per-species GO Consortium GAF files (~15 MB) plus go.obo for offline, version-pinned, reproducible queries.

Does it support mouse genes as well as human?

Yes, pass --species mouse to either operation. Mouse queries use taxon 10090 in QuickGO or the MGI GAF file, and symbols are resolved against the correct organism via UniProt.

Why is Gemma not available as an annotation source?

Gemma republishes upstream GOA data rather than curating gene-GO annotations itself, so it is deliberately excluded to avoid silently using a non-authoritative source. The skill only exposes GOA and GAF, the canonical sources of record.

What happens when a gene symbol cannot be resolved?

The script fails loudly with a non-zero exit and a clear error message suggesting alternatives such as passing a UniProtKB accession or Ensembl ID. It never returns empty results silently or fabricates annotations.