Skip to main content

Synnotate

Annotate bacterial and phage genomes — including the genes other tools leave as "hypothetical protein."

Synnotate works out what a gene does from the company it keeps: the genes around it. Because it reads a gene's neighbourhood instead of its sequence, it can put a name to genes that have no known match in any database — the "dark" genes that ordinary annotation leaves blank.

For every gene you get a predicted function and a confidence score. You can also ask Synnotate to show its evidence: whether the same gene neighbourhood turns up in other genomes, and which neighbours led it to the answer.

Install

pip install git+https://github.com/khoa-yelo/Synnotate.git

Then download the data Synnotate needs into a folder of your choice (do this once):

synnotate setup --type prokaryote --dir ./synnotate_db

You point to that folder with --bundle ./synnotate_db whenever you annotate.

Try it

The repository includes a tiny example: a cluster of ribosomal-protein genes with one gene hidden as "hypothetical protein." Synnotate works out what the hidden gene is, from its neighbours alone:

synnotate annotate examples/demo.fna --type prokaryote --bundle ./synnotate_db \
    --gff examples/demo.gff --interpret --out demo
gene_id  annotation  prediction                   confidence  synteny_support  trusted
dcw_03   UNKNOWN     cell division protein FtsL    0.77        0.65             0.95

confidence is a calibrated expected accuracy (a 0.95 means ~95% of such calls are right), and trusted flags the strictest accuracy tier — 0.99, 0.95, or blank — that the call meets from confidence and synteny together.

Annotate your genome

Pick the line that matches what you have:

# You already have an annotated genome (a GFF with product names — e.g. from NCBI, Prokka, or Bakta)
synnotate annotate genome.fna --type prokaryote --bundle ./synnotate_db --gff annotations.gff --interpret --out result

# You have only a genome sequence, not annotated yet
synnotate annotate genome.fna --type prokaryote --bundle ./synnotate_db --backend eggnog --out result

# A phage genome
synnotate annotate phage.fna --type phage --bundle ./synnotate_db --interpret --out result

Add --interpret to include the supporting evidence (synteny and neighbour breakdown). Leave it off for a faster, prediction-only run.

What Synnotate needs from you

Synnotate reads the functions of a gene's neighbours, so those neighbours have to be named first. How that happens depends on your input:

  • An already-annotated genome (a GFF with product= names) — Synnotate reads the names directly. Nothing else to install.
  • A genome sequence only — Synnotate first names the genes with eggNOG-mapper (install it separately, below).
  • A phage — Synnotate uses Pharokka.
  • Your own names — give Synnotate a simple gene_id<TAB>function table with --annotations.

To use the sequence-only path, install eggNOG-mapper once:

mamba install -c bioconda eggnog-mapper
download_eggnog_data.py

Your results

Synnotate writes result.synnotate.tsv, one row per gene:

  • prediction — the predicted function
  • confidence — a calibrated expected accuracy (isotonic regression), so 0.95 means ~95% of such predictions are correct
  • confidence_raw — the uncalibrated softmax score, for reference
  • top5 — the five most likely functions
  • category — a broad functional category

With --interpret, you also get:

  • synteny_support — how strongly other genomes back up the call, from 0 to 1
  • trusted — the strictest expected-accuracy tier the call clears from calibrated confidence × synteny (0.99, 0.95, or blank); the same trusted-region gate used in the paper
  • driving_neighbours — which neighbouring genes led to the prediction

Add --gff-out result.gff to also get an annotated GFF you can load into a genome browser.

Options at a glance

Option What it does
--type {prokaryote,phage} which organism
--gff FILE use the gene coordinates and names from this GFF
--annotations FILE supply your own gene_id<TAB>function table
--interpret include synteny support and the neighbour breakdown
--out NAME name for the output files
--gff-out FILE also write an annotated GFF
--device {auto,cpu,cuda} run on CPU or GPU (auto by default)

How it works, briefly

Synnotate learns which gene neighbourhoods go with which functions. A gene with no known match still sits in a recognisable neighbourhood, so Synnotate can name it — and every prediction can be traced back to the specific neighbours that supported it.

Citation & license

Paper in preparation. Released under the MIT license — see LICENSE.

Download files

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

Source Distribution

synnotate-0.2.0.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

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

synnotate-0.2.0-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file synnotate-0.2.0.tar.gz.

File metadata

  • Download URL: synnotate-0.2.0.tar.gz
  • Upload date:
  • Size: 27.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.11

File hashes

Hashes for synnotate-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8cf427f4c77a9056ad9d3798ac0865f1bc840694ff72a11559bea8b4512374ca
MD5 847c7085305d0e356a7b95f63f5f016b
BLAKE2b-256 387733840595c12332aaea6c3d820b50ecf320e87f3a6dd62108626f34364dd5

See more details on using hashes here.

File details

Details for the file synnotate-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: synnotate-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 27.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.11

File hashes

Hashes for synnotate-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 922f7c3c1853c6e7d892260335fa81c29af12b4b6f0c4674269aee52f1aa77fd
MD5 71c4714412c847f417ae1a7fe4552374
BLAKE2b-256 298c244b5fac1828b5cfcf718193544bc026b3c4a1e59ca2101b47ba23e23047

See more details on using hashes here.

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