Skip to main content

Graph-aware contextual annotation of targeted genomic features

Project description

eris 🧬🍏✨

PyPI version Python versions Documentation License

⋆⁺‧₊☽◯☾₊‧⁺⋆ 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/rd tags) 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, and mappy (Minimap2).
  • Standardized Outputs: Generates detailed tabular reports (TSV), locus-specific FASTAs, and standard annotations (pyfgs powered 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:

  1. {prefix}_report.tsv: A detailed report of every resolved locus, including targets, context (INSIDE, UPSTREAM, DOWNSTREAM), biological effects, topological hops, and fractional depths.
  2. {prefix}_loci.fasta: The stitched nucleotide sequences for each assembled structural variant.
  3. {prefix}_assembly.gff: GFF3 annotation of the global features.
  4. {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


eris

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyeris-0.0.1a1.tar.gz (111.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyeris-0.0.1a1-py3-none-any.whl (55.5 kB view details)

Uploaded Python 3

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

Hashes for pyeris-0.0.1a1.tar.gz
Algorithm Hash digest
SHA256 15ed3b2fd410e0ebd558c2072baabe995c0d79dd10286651f2624f2055013148
MD5 3c3fd8b4e9f4391e85a65bb139e17aae
BLAKE2b-256 abb0431f185fb9035e6d6b5a50b5820d58f922136bfb9340596127ba34a6aa5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyeris-0.0.1a1.tar.gz:

Publisher: publish.yaml on tomdstanton/eris

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for pyeris-0.0.1a1-py3-none-any.whl
Algorithm Hash digest
SHA256 6f3c9b100deb46f6e39c5eb64c2bb9c1096b67c28bf31eaa5cde782893116c51
MD5 ba9e5c2037483e5252348674b5d64fd1
BLAKE2b-256 5057dff45e09c499b91aeccd40abacaaae37a684c88d1c2422572979e2d1b939

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyeris-0.0.1a1-py3-none-any.whl:

Publisher: publish.yaml on tomdstanton/eris

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page