{"id":16265073,"url":"https://github.com/robaina/pynteny","last_synced_at":"2025-03-19T23:30:32.761Z","repository":{"id":59976938,"uuid":"500470783","full_name":"Robaina/Pynteny","owner":"Robaina","description":"Query sequence database by HMMs arranged in predefined synteny structure","archived":false,"fork":false,"pushed_at":"2023-11-03T09:50:58.000Z","size":23187,"stargazers_count":13,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T22:37:36.510Z","etag":null,"topics":["bioinformatics","computational-biology","genomics","hmm","hmmer","metagenomics","prokaryotic-genomes","python","synteny","synteny-block"],"latest_commit_sha":null,"homepage":"https://robaina.github.io/Pynteny","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Robaina.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-06-06T14:39:33.000Z","updated_at":"2024-05-24T06:47:18.000Z","dependencies_parsed_at":"2023-02-19T07:45:59.144Z","dependency_job_id":"39c7adcb-a4f9-413d-838d-dd47e89e2d26","html_url":"https://github.com/Robaina/Pynteny","commit_stats":{"total_commits":603,"total_committers":2,"mean_commits":301.5,"dds":0.00995024875621886,"last_synced_commit":"5d7cfc910be9829f2706359730cdaa7c581df2b2"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Robaina%2FPynteny","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Robaina%2FPynteny/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Robaina%2FPynteny/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Robaina%2FPynteny/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Robaina","download_url":"https://codeload.github.com/Robaina/Pynteny/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244030752,"owners_count":20386533,"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":["bioinformatics","computational-biology","genomics","hmm","hmmer","metagenomics","prokaryotic-genomes","python","synteny","synteny-block"],"created_at":"2024-10-10T17:05:58.978Z","updated_at":"2025-03-19T23:30:31.991Z","avatar_url":"https://github.com/Robaina.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![logo](https://user-images.githubusercontent.com/21340147/192824830-dcbe8d09-2b10-431d-bd9a-b4624192dcc9.png)\n\u003cbr\u003e\n\n# Synteny-aware hmm searches made easy\n\n[![tests](https://github.com/Robaina/Pynteny/actions/workflows/tests.yml/badge.svg)](https://github.com/Robaina/Pynteny/actions/workflows/tests.yml)\n[![codecov](https://codecov.io/gh/Robaina/Pynteny/branch/main/graph/badge.svg?token=WDSOC220X6)](https://codecov.io/gh/Robaina/Pynteny)\n[![docs](https://github.com/Robaina/Pynteny/actions/workflows/docs.yml/badge.svg)](https://github.com/Robaina/Pynteny/actions/workflows/docs.yml)\n\n[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n[![Anaconda-Server Badge](https://anaconda.org/bioconda/pynteny/badges/latest_release_date.svg)](https://anaconda.org/bioconda/pynteny)\n![license](https://img.shields.io/github/license/Robaina/Pynteny)\n![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4)\n\n[![Bioconda](https://img.shields.io/conda/vn/bioconda/pynteny?logo=anaconda\u0026style=flat-square\u0026maxAge=3600)](https://anaconda.org/bioconda/pynteny)\n[![Anaconda-Server Badge](https://anaconda.org/bioconda/pynteny/badges/downloads.svg)](https://anaconda.org/bioconda/pynteny)\n[![GitHub release](https://img.shields.io/github/release/Robaina/Pynteny.svg)](https://GitHub.com/Robaina/Pynteny/releases/)\n\n\n[![Anaconda-Server Badge](https://anaconda.org/bioconda/pynteny/badges/platforms.svg)](https://anaconda.org/bioconda/pynteny)\n![python](https://img.shields.io/badge/Python-3.10-blue)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n[![pyOpenSci](https://tinyurl.com/y22nb8up)](https://github.com/pyOpenSci/software-review/issues/67)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.05289/status.svg)](https://doi.org/10.21105/joss.05289)\n\u003c!-- [![DOI](https://zenodo.org/badge/500470783.svg)](https://zenodo.org/badge/latestdoi/500470783) --\u003e\n\n\n## 1. :bulb: What is Pynteny?\n\n`Pynteny` is Python tool to search for [synteny](https://en.wikipedia.org/wiki/Synteny) blocks in (prokaryotic) sequence data through [HMMs](https://www.bioinformatics.org/wiki/Hidden_Markov_Model) of the ORFs of interest and [HMMER](http://hmmer.janelia.org/). By leveraging genomic context information, `Pynteny` can be employed to decrease the uncertainty of functional annotation of unlabelled sequence data due to the effect of paralogs. `Pynteny` can be accessed (i) through the command line or (ii) as a Python module.\n\nGet more info in the [documentation](https://robaina.github.io/Pynteny/) pages!\n\nCheck out the [Pynteny paper](https://doi.org/10.21105/joss.05289) in the Journal of Open Source Software!\n\n## 2. :wrench: Setup\n\nInstall with conda:\n\n1. Pynteny requires Python 3.10. The easiest way to handle dependencies is by creating a dedicated conda environment:\n\n```bash\nconda create -n pynteny -c bioconda -c conda-forge python=3.10 pynteny\nconda activate pynteny\n```\n\n2. Check that installation worked fine:\n\n```bash\n(pynteny) pynteny --help\n```\n### 2.1. Installing on Windows\n\nPynteny is designed to run on Linux machines. However, it can be installed within the [Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/install) via conda.\n\n### 2.2. Installing on MacOS with the latest ARM64 architecture\n\nPynteny doesn't currently support the latest ARM64 architecture of silicon processors (e.g. MacBook M1 and M2). If that is your case, you can install Pynteny using the workaround below (based on [this post](https://towardsdatascience.com/how-to-manage-conda-environments-on-an-apple-silicon-m1-mac-1e29cb3bad12)):\n\n```bash\nCONDA_SUBDIR=osx-64 conda create -n pynteny_x86 python=3.10\nconda activate pynteny_x86\nconda config --env --set subdir osx-64\nconda install -c bioconda pynteny\n```\n\n## 3. :rocket: Usage\n\nConsider the following toy example of a syntenic block:\n\n![synteny example](assets/synteny_example.png)\n\nHere, we are interested in four genes which colocate according to the pattern above: genes A-C show consecutive locations in the positive strand, followed by three (untargeted) genes and followed by gene D, which is located in the negative strand.\n\nPynteny can be run either as a command line tool or as a Python module. To run pynteny in the command line, execute:\n\n```bash\nconda activate pynteny\npynteny \u003csubcommand\u003e \u003coptions\u003e\n```\n\n\u003cp align=\"center\"\u003e\n   \u003cimg src=\"assets/pynteny_cli.png\" alt=\"pynyeny-cli\"\u003e\n\u003c/p\u003e\n\n\nThere are a number of available subcommands, which can be explored in the [documentation](https://robaina.github.io/Pynteny/) pages.\n\nFor intance, to first download the [PGAP](https://academic.oup.com/nar/article/49/D1/D1020/6018440)'s database containing a collection of profile HMMs as well as metadata:\n\n```bash\npynteny download --outdir data/hmms --unpack\n```\n\nNext, to build a labelled peptide database from DNA assembly data:\n\n```bash\npynteny build \\\n    --data assembly.fa \\\n    --outfile labelled_peptides.faa\n\n```\n\nFinally, to search the peptide database for the syntenic structure displayed above: `\u003egene_A 0 \u003egene_B 0 \u003egene_C 3 \u003cgene_D`, and using the downloaded [PGAP](https://academic.oup.com/nar/article/49/D1/D1020/6018440) database:\n\n```bash\npynteny search \\\n    --synteny_struc \"\u003egene_A 0 \u003egene_B 0 \u003egene_C 3 \u003cgene_D\" \\\n    --data labelled_peptides.faa \\\n    --outdir results/ \\\n    --gene_ids\n```\n\n## 4. :notebook_with_decorative_cover: Examples\n\nHere are some Jupyter Notebooks with examples to show how Pynteny works:\n\n\u003c!-- \u003ca href=\"https://colab.research.google.com/github/Robaina/Pynteny/blob/main/docs/examples/example_api_colab.ipynb\" target=\"_blank\"\u003e\u003cimg src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/\u003e\u003c/a\u003e --\u003e\n* [Pynteny API](https://robaina.github.io/Pynteny/examples/example_api/)\n* [Pynteny CLI](https://robaina.github.io/Pynteny/examples/example_cli/)\n* [Sus operon](https://robaina.github.io/Pynteny/examples/example_sus/)\n\nYou can find more notebooks in the [examples directory](docs/examples/). Find more info in the [documentation](https://robaina.github.io/Pynteny/).\n\n## 5. :arrows_counterclockwise: Dependencies\nPynteny would not work without these awesome projects:\n\n- [hmmer](https://github.com/EddyRivasLab/hmmer)\n- [prodigal](https://github.com/hyattpd/Prodigal)\n- [pyfastx](https://github.com/lmdu/pyfastx)\n- [biopython](https://github.com/biopython/biopython)\n- [seqkit](https://bioinf.shenwei.me/seqkit/)\n- [numpy](https://github.com/numpy/numpy)\n- [pandas](https://github.com/pandas-dev/pandas)\n- [psutil](https://github.com/giampaolo/psutil)\n- [requests](https://requests.readthedocs.io/en/latest/)\n- [tqdm](https://github.com/tqdm/tqdm)\n\nThanks!\n\n## 6. :octocat: Contributing\n\nContributions are always welcome! If you don't know where to start, you may find an interesting [issue to work in here](https://github.com/Robaina/Pynteny/issues). Please, read our [contribution guidelines](CONTRIBUTING.md) first.\n\n## 7. :black_nib: Citation\n\nIf you use this software, please cite it as below:\n\nSemidán Robaina Estévez. (2023). Pynteny: synteny-aware hmm searches made easy (Version 1.0.0). Zenodo. https://zenodo.org/record/7696204\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobaina%2Fpynteny","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobaina%2Fpynteny","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobaina%2Fpynteny/lists"}