Graph-aware contextual annotation of targeted genomic features
Project description
eris 🧬🍏✨
⋆⁺‧₊☽◯☾₊‧⁺⋆ Graph-aware contextual annotation of targeted genomic features. ⋆⁺‧₊☽◯☾₊‧⁺⋆
eris is a bioinformatics pipeline designed to resolve and annotate shattered genomic
features (like mobile genetic elements or structural variants) directly from assembly graphs.
By employing a dynamic "Anchor-and-Traverse" depth-first search through de Bruijn/string graphs (GFA),
eris stitches together split alignments across multiple micro-contigs, seamlessly bridging sequence
bubbles and gaps.
Crucially, it utilizes fractional read depth flow to distinguish between dominant wild-type structures and rare sub-clonal insertions, returning detailed evolutionary context including upstream flanks, downstream flanks, and trapped passenger genes.
🚀 Features
- Graph-Aware Traversal: Overcomes aligner limitations by traversing assembly graph topology to bridge unaligned micro-contigs and resolve shattered targets.
- Sub-Clonal Resolution: Integrates graph read-depth (
dp/rdtags) to calculate fractional copy number, easily distinguishing low-frequency variant bubbles from dominant paths. - Contextual Annotation: Sweeps across stitched paths to identify internal passenger genes (e.g., AMR genes trapped inside transposons) and flanking genomic context.
- High Performance: Built for speed with a hybrid architecture utilizing
numpy,numba, andmappy(Minimap2). - Standardized Outputs: Generates detailed tabular reports (TSV), locus-specific FASTAs, and standard annotations (
pyfgspowered GFF3/FAA).
📦 Installation
eris requires Python 3.11 or later.
Install directly from PyPI:
pip install eris
Dependencies
eris relies on the following core libraries:
numpy(>=2.4)numba(>=0.65)mappy(>=2.3)pyfgs(>=0.0.1)biopython(>=1.87)
🛠️ Usage
eris installs a command-line interface eris for immediate use.
eris -i assembly.gfa -d targets.fasta -o results/sample_A
Basic Arguments
-i,--genome: Path to a genome in fasta or GFA format (can be compressed). GFA is heavily recommended to utilize topological stitching.-d,--targets: Path to target nucleotide features (fasta or pre-indexed.mmi).-o,--outprefix: Prefix for all generated output files.-f,--feature-type: The type of feature to annotate (default:CDS).--hops: Maximum number of contextual genes to sweep upstream/downstream (default:3).--tolerance: Distance tolerance in base pairs for merging clustered alignments (default:0).
Outputs
Depending on the arguments provided, eris will output:
{prefix}_report.tsv: A detailed report of every resolved locus, including targets, context (INSIDE, UPSTREAM, DOWNSTREAM), biological effects, topological hops, and fractional depths.{prefix}_loci.fasta: The stitched nucleotide sequences for each assembled structural variant.{prefix}_assembly.gff: GFF3 annotation of the global features.{prefix}_proteins.faa: Amino acid fasta of the global features.
📚 Documentation
For detailed guides, API reference, and advanced configuration, visit the eris Documentation.
💻 Development
eris uses hatch for build and environment management.
To set up a local development environment (uv needs to be installed):
# Clone the repository
git clone [https://github.com/tomdstanton/eris.git](https://github.com/tomdstanton/eris.git)
cd eris
make dev
Running Tests & Linting
eris enforces rigorous type checking and linting.
# Run tests
pytest
# Run static type checking
mypy
# Run linting and formatting
ruff check
ruff format
📝 License
This project is licensed under the terms of the LICENSE file included in the repository.
🤝 Authors
- Tom Stanton - tomdstanton@gmail.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyeris-0.0.1a1.tar.gz.
File metadata
- Download URL: pyeris-0.0.1a1.tar.gz
- Upload date:
- Size: 111.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15ed3b2fd410e0ebd558c2072baabe995c0d79dd10286651f2624f2055013148
|
|
| MD5 |
3c3fd8b4e9f4391e85a65bb139e17aae
|
|
| BLAKE2b-256 |
abb0431f185fb9035e6d6b5a50b5820d58f922136bfb9340596127ba34a6aa5b
|
Provenance
The following attestation bundles were made for pyeris-0.0.1a1.tar.gz:
Publisher:
publish.yaml on tomdstanton/eris
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyeris-0.0.1a1.tar.gz -
Subject digest:
15ed3b2fd410e0ebd558c2072baabe995c0d79dd10286651f2624f2055013148 - Sigstore transparency entry: 1367265235
- Sigstore integration time:
-
Permalink:
tomdstanton/eris@82496c7bc21c78d499f51d36136203a992a73242 -
Branch / Tag:
refs/tags/v0.0.1-alpha1 - Owner: https://github.com/tomdstanton
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@82496c7bc21c78d499f51d36136203a992a73242 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyeris-0.0.1a1-py3-none-any.whl.
File metadata
- Download URL: pyeris-0.0.1a1-py3-none-any.whl
- Upload date:
- Size: 55.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f3c9b100deb46f6e39c5eb64c2bb9c1096b67c28bf31eaa5cde782893116c51
|
|
| MD5 |
ba9e5c2037483e5252348674b5d64fd1
|
|
| BLAKE2b-256 |
5057dff45e09c499b91aeccd40abacaaae37a684c88d1c2422572979e2d1b939
|
Provenance
The following attestation bundles were made for pyeris-0.0.1a1-py3-none-any.whl:
Publisher:
publish.yaml on tomdstanton/eris
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyeris-0.0.1a1-py3-none-any.whl -
Subject digest:
6f3c9b100deb46f6e39c5eb64c2bb9c1096b67c28bf31eaa5cde782893116c51 - Sigstore transparency entry: 1367265252
- Sigstore integration time:
-
Permalink:
tomdstanton/eris@82496c7bc21c78d499f51d36136203a992a73242 -
Branch / Tag:
refs/tags/v0.0.1-alpha1 - Owner: https://github.com/tomdstanton
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@82496c7bc21c78d499f51d36136203a992a73242 -
Trigger Event:
push
-
Statement type: