PyEnsembl
PyEnsembl looks up genes, transcripts, exons and their protein and transcript sequences in a pinned Ensembl release or in your own GTF and FASTA files. It downloads and indexes an annotation once; after that, queries run locally. It is the gene annotation layer of the OpenVax tools: Varcode, Isovar, Topiary and Vaxrank use it, and it builds on datacache for downloads and gtfparse for reading GTF files.
Install
Use Python 3.11 or later. Install the package and one annotation release:
python -m pip install pyensembl
pyensembl install --release 93 --species human
The second command selects human GRCh38 and downloads and indexes Ensembl release 93's annotation, transcript and protein files, about 1.3 GB. It takes several minutes. Whole-genome DNA is a separate, optional download.
Quick start
After installing the data above:
from pyensembl import EnsemblRelease
with EnsemblRelease(93, species="human") as data:
gene = data.gene_by_id("ENSG00000141510")
print(gene.name, gene.contig, gene.start, gene.end, gene.strand)
transcript = data.transcript_by_id("ENST00000269305")
print(transcript.name, transcript.protein_sequence[:30])
TP53 17 7661779 7687550 -
TP53-201 MEEPQSDPSVEPPLSQETFSDLWKLLPENN
Coordinates are one-based and inclusive; TP53 is on the minus strand. Pin the
release you analyze: coordinates, IDs and sequences can change between
releases. A gene name can match several loci, so data.genes_by_name("TP53")
returns a list.
Command line
The pyensembl command installs and manages local data:
pyensembl install --release 93 --species human # download and index a release
pyensembl list # installed genomes and their status
pyensembl inspect --release 93 # files, sizes and provenance, offline
pyensembl available # supported species, assemblies and releases
pyensembl delete-all-files --release 93 # remove one release's local data
pyensembl prune --dry-run # shared reference DNA that no release uses
The command-line reference
lists every option. For Tab completion, run activate-global-python-argcomplete
once, or add eval "$(register-python-argcomplete pyensembl)" to your shell's
startup file.
Documentation
The documentation starts with installation and a first lookup, then covers one task per page. In reading order:
- Find genes and transcripts by name, ID, position or biotype.
- Get protein and transcript sequences, coding sequences, UTRs and exons.
- Read genomic DNA for introns and flanking sequence.
- Choose a reference: species, assembly, and numbered or dated Ensembl releases.
- Install and manage data from Python, check what is installed and free disk space.
- Use your own annotations from GTF and FASTA files.
Also see gene name aliases, genetic codes and the API reference.
Development
From a clone of this repository:
python -m pip install -e '.[dev]'
./lint.sh # ruff and mypy
./test.sh # pytest with coverage
./docs.sh # strict docs build and link checks; needs '.[docs]'
Most tests need the Ensembl releases that
the Tests workflow
installs. Every PR bumps pyensembl/version.py, including documentation
changes. See contributing
and releasing.
License
Metadata
Release files for pyensembl 2.33.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pyensembl-2.33.0.tar.gz | 524.3 kB | Without provenance | Details for pyensembl-2.33.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyensembl-2.33.0-py3-none-any.whl | Python 3 | none | any | Details for pyensembl-2.33.0-py3-none-any.whl |
Total release size: 696.9 kB
Release files / pyensembl-2.33.0.tar.gz
| Download URL | pyensembl-2.33.0.tar.gz |
|---|---|
| Size | 524.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4aa234beb187af0ec9a6f9ae3cc07231f2650d9093d2598cf48f8230aa1dfac9
|
|
BLAKE2b-256 checksum How to use checksums |
7177bf69ec640295cbc4d3683994b7c48d8c14a5755c3ff2595d32cfb5dccfaf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / pyensembl-2.33.0-py3-none-any.whl
| Download URL | pyensembl-2.33.0-py3-none-any.whl |
|---|---|
| Size | 172.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6839a63588e9244fd53185f18dd75f800ed4f92718c6edcb8c791bed534532dd
|
|
BLAKE2b-256 checksum How to use checksums |
553fc01844e1bba66f435bc0f841a86e9c4daaa77076dce46a720656289ae4bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Security for pyensembl 2.33.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.