initial commit to support archaeal genome annotations - #452
Open
xvazquezc wants to merge 6 commits into
Open
Conversation
…rated arch dbs, rRNA profiles, Rfam, tRNAs (with introns), ori detection with Ori-Finder-Arch, custom sORF start codons, Pyl support (prelim), no tmRNA (not proven to exist in arch)
There was a problem hiding this comment.
🟡 Changes recommended
Several DB build scripts use an undefined taxa variable after introducing --taxon, which will cause database construction to fail at runtime.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR introduces an archaeal annotation profile to Bakta by adding a domain selector to the CLI/runtime and wiring domain-specific databases, RNA models, recoding rules, and oriC prediction (Ori-Finder-Arch) while aiming to keep the default bacterial behavior compatible.
Changes:
- Add domain selection (
--domain) and propagate it through configuration, DB checks, and protein/expert-system handling. - Add archaeal-specific assets and predictors: rRNA/ncRNA/tRNA profile selection (including tRNA introns), Sec/Pyl recoding, and Ori-Finder-Arch oriC prediction.
- Update database build scripts and packaging/docs to support a dual-profile database layout and installation of Ori-Finder-Arch.
File summaries
| File | Description |
|---|---|
| test/test_organism_profiles.py | Adds regression tests for archaeal domain selection and key profile behaviors. |
| setup.py | Updates package description/keywords to include archaea. |
| scripts/install-ori-finder-arch.sh | Adds installer for Ori-Finder-Arch binary with SHA-256 verification. |
| README.md | Updates user-facing documentation for archaeal profile and CLI help snippet. |
| environment.yml | Adds MEME/HMMER dependencies and pytest tooling. |
| docs/archaeal-support-plan.md | Adds tracking/acceptance plan for archaeal support work. |
| Dockerfile | Installs Ori-Finder-Arch during image build. |
| db-scripts/init-ups-ips.py | Extends UPS/IPS init to support multiple root taxa via --taxon. |
| db-scripts/init-pscc.py | Extends PSCC init to support multiple root taxa via --taxon. |
| db-scripts/init-psc.py | Extends PSC init to support multiple root taxa via --taxon. |
| db-scripts/buid-db.sh | Builds dual-profile DB assets (bacteria + archaea) and archaeal expert DB. |
| db-scripts/annotate-swissprot.py | Extends SwissProt annotation to support multiple root taxa via --taxon. |
| bakta/utils.py | Adds --domain CLI option and updates dependency gating for archaeal profile. |
| bakta/proteins.py | Adds --domain handling for protein bulk annotation and domain-aware DB check. |
| bakta/main.py | Routes DB checks and origin prediction/expert systems based on selected domain. |
| bakta/io/insdc.py | Preserves Ori-Finder-Arch provenance/attributes and supports tRNA intron locations. |
| bakta/io/gff.py | Emits tRNA intron features and preserves oriC provenance/attributes in GFF3. |
| bakta/features/tm_rna.py | Makes tmRNA labels domain-aware via domain profile. |
| bakta/features/t_rna.py | Switches tRNAscan-SE mode for archaea and records intron coordinates. |
| bakta/features/s_orf.py | Applies domain-specific sORF start codon policy. |
| bakta/features/r_rna.py | Adds domain-specific rRNA model profiles and selects DB accordingly. |
| bakta/features/ori_arch.py | Introduces Ori-Finder-Arch integration and parsing into Bakta features. |
| bakta/features/orf.py | Selects AntiFam DB by domain. |
| bakta/features/nc_rna.py | Selects ncRNA gene CM DB by domain. |
| bakta/features/nc_rna_region.py | Selects ncRNA region CM DB by domain. |
| bakta/features/cds.py | Extends translational exception handling to support Pyl as well as Sec. |
| bakta/db.py | Makes DB validation domain-aware and adds archaeal required-file set. |
| bakta/constants.py | Adds domain constants and explicit domain profiles for key policies. |
| bakta/config.py | Tracks domain in global config and normalizes gram handling by domain. |
| .gitignore | Ignores local db/ directory artifacts. |
Review details
- Files reviewed: 29/30 changed files
- Comments generated: 7
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There is a lot to test, esp. regarding the
bakta.dbcreation and the expert proteins.From the CLI point of view the main change is the addition of the
--organismflag that allows you to chose the set of parameters for bacteria or archaea. For compatibility, the bacteria mode will be run and the code executed should be the same. In a related note, the code should ignore the--gramflag when running with--organism archaeaif you indicate it by mistake.On the side to support archaea annotations, so far:
<dbname>-archaeaare created for this purpose (again, the bacterial ones have no suffix for compatibility)I tested some of the smaller db creation but I couldn't get some of the Rfam ones to work (the ones that use
mysqlduring creation).Cheers,
Xabi