Skip to content
Back to skills

Gene Annotation

ASecurity

"Use gget to discover Ensembl reference FTPs, search gene or

  • 247 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 8, 2026
databasespythonsqlexpressapidatabase

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill gene-annotation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gene Annotation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gene Annotation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-gene-annotation/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-gene-annotation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gene-annotation
description: "Use gget to discover Ensembl reference FTPs, search gene or
  transcript annotations, inspect Ensembl/WormBase/FlyBase IDs, and retrieve
  nucleotide or UniProt amino-acid FASTA sequences."
disable-model-invocation: true
metadata:
  disco-role: operating
license: BSD 2-Clause
---

# Gene annotation

Use this skill for identifier-centered annotation work: choose a species/release,
find an ID from free text, inspect its metadata, and retrieve nucleotide or
protein sequence. The four public operations are `gget.ref`, `gget.search`,
`gget.info`, and `gget.seq`. They query remote Ensembl, Ensembl Genomes,
Ensembl REST, NCBI, UniProt, or PDBe services; a network-enabled run is
required.

## Choose the operation

- **Reference files/FTP discovery:** `gget.ref` returns release-aware links and
  metadata for GTF, DNA, cDNA, CDS, ncRNA, and peptide files. It does not
  download in Python unless the caller downloads the returned URL.
- **Free-text discovery:** `gget.search` searches Ensembl gene or transcript
  names, descriptions, synonyms, and related annotation fields. It needs a
  species or explicit Ensembl core database.
- **ID metadata:** `gget.info` expands Ensembl, WormBase, or FlyBase IDs and
  can add NCBI, UniProt, and optional PDB information.
- **Sequence:** `gget.seq` returns FASTA records as a Python list. Nucleotide
  requests use Ensembl; `translate=True` uses UniProt protein records.

Route sequence comparison/alignment to **sequence-tools**, expression queries
to **expression-omics**, and target or cancer queries to **disease-structure**.
Do not infer a protein match from a symbol alone: resolve the species-specific
ID, then inspect its metadata before choosing canonical or isoform behavior.

## Fast path: search -> info -> sequence

1. Search the intended species with a narrow term and a small `limit`.
2. Select an `ensembl_id` and verify `gene_name`, description, `biotype`, and
   `url`; when transcripts matter, search with `id_type="transcript"`.
3. Call `gget.info(id, ncbi=False, pdb=False)` first. Read `object_type`, the
   current `ensembl_id`, and `canonical_transcript`; for a gene, inspect
   `all_transcripts` when isoforms are needed.
4. Call `gget.seq(current_id, translate=False)` for nucleotide or
   `gget.seq(current_id, translate=True)` for the canonical protein. Add
   `isoforms=True` only for a gene when all transcript records are wanted.
5. Validate the returned FASTA headers and sequence alphabet/length before
   downstream analysis. Save explicitly or serialize the returned list; see
   [workflows](references/workflows.md).

A compact Python chain is:

```python
import gget
hits = gget.search("ace2", species="homo_sapiens", limit=5, verbose=False)
ens_id = hits.iloc[0]["ensembl_id"]
meta = gget.info(ens_id, ncbi=False, pdb=False, json=True, verbose=False)
protein_fasta = gget.seq(ens_id, translate=True, verbose=False)
```

The chain is current-database work: `search`, `info`, and `seq` do not share an
explicit release parameter. Record the returned Ensembl version and service
responses if reproducibility matters.

## Output and safety rules

- Python `json=True` is supported by `search` and `info`; it changes the return
  from a pandas `DataFrame` to JSON-compatible list/dictionary data. `ref` has
  dictionary output by default; `seq` always returns FASTA lines as a list.
- `wrap_text=True` is a display convenience for long DataFrame text. It does
  not create a new stable schema and is not a JSON formatting option.
- Python `save=True` writes fixed filenames in the current working directory:
  `gget_ref_results.json` or `.txt`, `gget_search_results.csv` or `.json`,
  `gget_info_results.csv` or `.json`, and `gget_seq_results.fa`. The return
  value is still useful; use the CLI `--out` option for a chosen path.
- IDs beginning with `ENS` have version suffixes removed before `info` and
  `seq` lookups; metadata reports the latest version returned by Ensembl.
  WormBase and FlyBase identifiers are handled separately and must not be
  normalized as Ensembl IDs.
- Keep requests bounded. `info` documents a practical limit of 1,000 IDs per
  request; split larger lists. Avoid repeatedly polling public APIs, and keep
  `verbose=True` while diagnosing partial or missing records.

## CLI quick reference

```text
gget ref [species] [-w all|gtf,cdna,dna,cds,ncrna,pep] [-r RELEASE]
         [--ftp] [--list_species|--list_iv_species] [--download]
         [--out_dir DIR] [--out FILE] [--quiet]
gget search WORD... --species SPECIES [-r RELEASE] [-t gene|transcript]
            [-ao or|and] [-l LIMIT] [--csv] [--out FILE] [--quiet]
gget info ID... [--ncbi] [--uniprot] [--pdb] [--csv] [--out FILE] [--quiet]
gget seq ID... [--translate] [--isoforms] [--out FILE] [--quiet]
```

CLI output is JSON by default for `ref`, `search`, and `info`; `--csv` switches
`search` or `info` to CSV. `seq` emits FASTA. `--ncbi` and `--uniprot` are
negative flags in the CLI (they turn those providers off), unlike Python's
positive boolean arguments. Use `-h` for the installed CLI help; deprecated
CLI aliases are documented in [api](references/api.md), but should not be used.

## Constraints and handoff

Reference and search resolution depend on live Ensembl listings/MySQL. Metadata
can combine several live providers, and protein retrieval depends on UniProt
cross-references; a valid Ensembl ID can therefore have no protein record.
Release selection for `ref` and `search` does not freeze REST/UniProt metadata.
Do not silently substitute another species, release, transcript, or UniProt
record when an exact match is absent. Use the recovery steps in
[troubleshooting](references/troubleshooting.md), and preserve the selected ID,
release/database, flags, and output mode in the downstream handoff.

Files in this skill

  • SKILL.md5.7 KB
  • references/api.md10 KB
  • references/troubleshooting.md9.5 KB
  • references/workflows.md6.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.