{"id":28665095,"url":"https://github.com/althonos/pyaragorn","last_synced_at":"2026-01-08T02:12:21.916Z","repository":{"id":295700603,"uuid":"990948800","full_name":"althonos/pyaragorn","owner":"althonos","description":"Cython bindings and Python interface to ARAGORN, a (t|mt|tm)RNA gene finder.","archived":false,"fork":false,"pushed_at":"2025-06-02T11:23:17.000Z","size":517,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-03T11:15:03.495Z","etag":null,"topics":["aragorn","bioinformatics","gene-finding","genome","mtrna","python","python-library","rna","tmrna","trna"],"latest_commit_sha":null,"homepage":"","language":"Cython","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/althonos.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-26T22:37:58.000Z","updated_at":"2025-06-02T11:23:21.000Z","dependencies_parsed_at":"2025-05-27T00:29:46.217Z","dependency_job_id":null,"html_url":"https://github.com/althonos/pyaragorn","commit_stats":null,"previous_names":["althonos/pyaragorn"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/althonos/pyaragorn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/althonos%2Fpyaragorn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/althonos%2Fpyaragorn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/althonos%2Fpyaragorn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/althonos%2Fpyaragorn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/althonos","download_url":"https://codeload.github.com/althonos/pyaragorn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/althonos%2Fpyaragorn/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259651069,"owners_count":22890390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aragorn","bioinformatics","gene-finding","genome","mtrna","python","python-library","rna","tmrna","trna"],"created_at":"2025-06-13T13:12:12.923Z","updated_at":"2026-01-08T02:12:21.903Z","avatar_url":"https://github.com/althonos.png","language":"Cython","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 👑 PyARAGORN [![Stars](https://img.shields.io/github/stars/althonos/pyaragorn.svg?style=social\u0026maxAge=3600\u0026label=Star)](https://github.com/althonos/pyaragorn/stargazers)\n\n*Cython bindings and Python interface to [ARAGORN](https://www.trna.se/), a (t|mt|tm)RNA gene finder*.\n\n[![Actions](https://img.shields.io/github/actions/workflow/status/althonos/pyaragorn/test.yml?branch=main\u0026logo=github\u0026style=flat-square\u0026maxAge=300)](https://github.com/althonos/pyaragorn/actions)\n[![Coverage](https://img.shields.io/codecov/c/gh/althonos/pyaragorn?style=flat-square\u0026maxAge=3600\u0026logo=codecov)](https://codecov.io/gh/althonos/pyaragorn/)\n[![License](https://img.shields.io/badge/license-GPLv3-blue.svg?style=flat-square\u0026maxAge=2678400)](https://choosealicense.com/licenses/gpl-3.0/)\n[![PyPI](https://img.shields.io/pypi/v/pyaragorn.svg?style=flat-square\u0026maxAge=3600\u0026logo=PyPI)](https://pypi.org/project/pyaragorn)\n[![Bioconda](https://img.shields.io/conda/vn/bioconda/pyaragorn?style=flat-square\u0026maxAge=3600\u0026logo=anaconda)](https://anaconda.org/bioconda/pyaragorn)\n[![AUR](https://img.shields.io/aur/version/python-pyaragorn?logo=archlinux\u0026style=flat-square\u0026maxAge=3600)](https://aur.archlinux.org/packages/python-pyaragorn)\n[![Wheel](https://img.shields.io/pypi/wheel/pyaragorn.svg?style=flat-square\u0026maxAge=3600)](https://pypi.org/project/pyaragorn/#files)\n[![Python Versions](https://img.shields.io/pypi/pyversions/pyaragorn.svg?style=flat-square\u0026maxAge=600\u0026logo=python)](https://pypi.org/project/pyaragorn/#files)\n[![Python Implementations](https://img.shields.io/pypi/implementation/pyaragorn.svg?style=flat-square\u0026maxAge=600\u0026label=impl)](https://pypi.org/project/pyaragorn/#files)\n[![Source](https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=2678400\u0026style=flat-square)](https://github.com/althonos/pyaragorn/)\n[![Mirror](https://img.shields.io/badge/mirror-LUMC-003EAA.svg?maxAge=2678400\u0026style=flat-square)](https://git.lumc.nl/mflarralde/pyaragorn/)\n[![GitHub issues](https://img.shields.io/github/issues/althonos/pyaragorn.svg?style=flat-square\u0026maxAge=600)](https://github.com/althonos/pyaragorn/issues)\n[![Docs](https://img.shields.io/readthedocs/pyaragorn/latest?style=flat-square\u0026maxAge=600)](https://pyaragorn.readthedocs.io)\n[![Changelog](https://img.shields.io/badge/keep%20a-changelog-8A0707.svg?maxAge=2678400\u0026style=flat-square)](https://github.com/althonos/pyaragorn/blob/main/CHANGELOG.md)\n[![Downloads](https://img.shields.io/pypi/dm/pyaragorn?style=flat-square\u0026color=303f9f\u0026maxAge=86400\u0026label=downloads)](https://pepy.tech/project/pyaragorn)\n\n\n## 🗺️ Overview\n\n[ARAGORN](https://trna.se) is a fast method developed\nby Dean Laslett \u0026 Björn Canback[\\[1\\]](#ref1) to identify tRNA and tmRNA\ngenes in genomic sequences using heuristics to detect potential high-scoring\nstem-loop structures. The complementary method ARWEN, developed by the same\nauthors[\\[2\\]](#ref2) to support the detection of metazoan mitochondrial\nRNA (mtRNA) genes, was later integrated into ARAGORN.\n\n`pyaragorn` is a Python module that provides bindings to ARAGORN and ARWEN\nusing [Cython](https://cython.org/). It directly interacts with the\nARAGORN internals, which has the following advantages:\n\n- **single dependency**: PyARAGORN is distributed as a Python package, so you\n  can add it as a dependency to your project, and stop worrying about the\n  ARAGORN binary being present on the end-user machine.\n- **no intermediate files**: Everything happens in memory, in a Python object\n  you fully control, so you don't have to invoke the ARAGORN CLI using a\n  sub-process and temporary files. Sequences can be passed directly as\n  strings, bytes, or any buffer objects, which avoids the overhead of\n  formatting your input to FASTA for ARAGORN.\n- **no output parsing**: The detected RNA genes are returned as Python\n  objects with transparent attributes, which facilitate handling the output\n  of ARAGORN compared to parsing the output tables.\n- **same results**: PyARAGORN is tested to ensure it produces the same results\n  as ARAGORN `v1.2.41`, the latest release.\n\n\n### 📋 Features\n\nPyARAGORN currently supports the following features from the ARAGORN\ncommand line:\n\n- [x] tRNA gene detection (`aragorn -t`).\n- [x] tmRNA gene detection (`aragorn -m`).\n- [ ] mtRNA gene detection (`aragorn -mt`).\n- [x] Reporting of batch mode metadata (`aragorn -w`).\n- [x] Alternative genetic code (`aragorn -gc`).\n- [ ] Custom genetic code (`aragorn -gc\u003cn\u003e,BBB=\u003caa\u003e`).\n- [x] Circular and linear topologies (`aragorn -c` | `aragorn -l`).\n- [ ] Intron length configuration (`aragorn -i`).\n- [x] Scoring threshold configuration (`aragorn -ps`).\n- [x] Sequence extraction from RNA gene (`aragorn -seq`).\n- [ ] Secondary structure extraction from each gene (`aragorn -br`).\n\n### 🧶 Thread-safety\n\n`pyaragorn.RNAFinder` instances are thread-safe. In addition, the `find_rna`\nmethod is re-entrant. This means you can parameterize a `RNAFinder` instance\nonce, and then use a pool to process sequences in parallel:\n\n```python\nimport multiprocessing.pool\nimport pyaragorn\n\nrna_finder = pyaragorn.RNAFinder()\n\nwith multiprocessing.pool.ThreadPool() as pool:\n    predictions = pool.map(rna_finder.find_rna, sequences)\n```\n\n## 🔧 Installing\n\nThis project is supported on Python 3.7 and later.\n\nPyARAGORN can be installed directly from [PyPI](https://pypi.org/project/pyaragorn/),\nwhich hosts some pre-built wheels for the x86-64 architecture (Linux/MacOS/Windows)\nand the Aarch64 architecture (Linux/MacOS), as well as the code required to compile\nfrom source with Cython:\n```console\n$ pip install pyaragorn\n```\n\n## 💡 Example\n\nLet's load a sequence from a\n[GenBank](http://www.insdc.org/files/feature_table.html) file,\nuse a `RNAFinder` to find all the tRNA genes it contains,\nand print the anticodon and corresponding amino-acids of the detected\ntRNAs.\n\n\n### 🔬 [Biopython](https://github.com/biopython/biopython)\n\nTo use the `RNAFinder` to detect tRNA and tmRNA genes, the default operation\nmode, but using the bacterial genetic code (translation table 11):\n\n```python\nimport Bio.SeqIO\nimport pyaragorn\n\nrecord = Bio.SeqIO.read(\"sequence.gbk\", \"genbank\")\n\nrna_finder = pyaragorn.RNAFinder(translation_table=11)\ngenes = rna_finder.find_rna(bytes(record.seq))\n\nfor gene in genes:\n    if gene.type == \"tRNA\":\n        print(\n            gene.amino_acid,   # 3-letter code\n            gene.begin,        # 1-based, inclusive\n            gene.end,\n            gene.strand,       # +1 or -1 for direct and reverse strand\n            gene.energy,\n            gene.anticodon\n        )\n```\n\n*On older versions of Biopython (before 1.79) you will need to use\n`record.seq.encode()` instead of `bytes(record.seq)`*.\n\n\n## 💭 Feedback\n\n### ⚠️ Issue Tracker\n\nFound a bug ? Have an enhancement request ? Head over to the [GitHub issue tracker](https://github.com/althonos/pyaragorn/issues)\nif you need to report or ask something. If you are filing in on a bug,\nplease include as much information as you can about the issue, and try to\nrecreate the same bug in a simple, easily reproducible situation.\n\n\n\u003c!-- ### 🏗️ Contributing\n\nContributions are more than welcome! See\n[`CONTRIBUTING.md`](https://github.com/althonos/pyaragorn/blob/main/CONTRIBUTING.md)\nfor more details. --\u003e\n\n\n## 📋 Changelog\n\nThis project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html)\nand provides a [changelog](https://github.com/althonos/pyaragorn/blob/main/CHANGELOG.md)\nin the [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) format.\n\n\n## ⚖️ License\n\nThis library is provided under the [GNU General Public License v3.0 or later](https://choosealicense.com/licenses/gpl-3.0/).\nARAGORN and ARWEN were developed by Dean Laslett and are distributed under the\nterms of the GPLv3 or later as well. See `vendor/aragorn` for more information.\n\n*This project is in no way not affiliated, sponsored, or otherwise endorsed\nby the ARAGORN authors. It was developed by\n[Martin Larralde](https://github.com/althonos/) during his PhD project\nat the [Leiden University Medical Center](https://www.lumc.nl/en/) in\nthe [Zeller Lab](https://zellerlab.org).*\n\n\n## 📚 References\n\n- \u003ca id=\"ref1\"\u003e\\[1\\]\u003c/a\u003e Laslett, Dean, and Bjorn Canback. “ARAGORN, a program to detect tRNA genes and tmRNA genes in nucleotide sequences.” Nucleic acids research vol. 32,1 11-6. 2 Jan. 2004, [doi:10.1093/nar/gkh152](https://doi.org/10.1093/nar/gkh152)\n- \u003ca id=\"ref2\"\u003e\\[2\\]\u003c/a\u003e Laslett, Dean, and Björn Canbäck. “ARWEN: a program to detect tRNA genes in metazoan mitochondrial nucleotide sequences.” Bioinformatics (Oxford, England) vol. 24,2 (2008): 172-5. [doi:10.1093/bioinformatics/btm573](https://doi.org/10.1093/bioinformatics/btm573)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falthonos%2Fpyaragorn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falthonos%2Fpyaragorn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falthonos%2Fpyaragorn/lists"}