https://github.com/jlsteenwyk/orthosnap
a tree splitting and pruning algorithm for retrieving single-copy orthologs from gene family trees
https://github.com/jlsteenwyk/orthosnap
bioinformatics evolution evolutionary-biology genomics orthology orthology-assignments orthology-inference phylogenetics phylogenomics python
Last synced: 5 months ago
JSON representation
a tree splitting and pruning algorithm for retrieving single-copy orthologs from gene family trees
- Host: GitHub
- URL: https://github.com/jlsteenwyk/orthosnap
- Owner: JLSteenwyk
- License: mit
- Created: 2021-02-28T13:55:43.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-02-15T23:00:08.000Z (over 1 year ago)
- Last Synced: 2025-04-12T09:53:03.327Z (over 1 year ago)
- Topics: bioinformatics, evolution, evolutionary-biology, genomics, orthology, orthology-assignments, orthology-inference, phylogenetics, phylogenomics, python
- Language: Python
- Homepage: https://jlsteenwyk.com/orthosnap/
- Size: 112 MB
- Stars: 25
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
Docs
·
Report Bug
·
Request Feature
OrthoSNAP is a tree splitting and pruning tool for retrieving single-copy orthologous subgroups (SNAP-OGs) from larger gene families.
If you found OrthoSNAP useful, please cite:
*OrthoSNAP: a tree splitting and pruning algorithm for retrieving single-copy orthologs from gene family trees*. Steenwyk et al. 2022, PLOS Biology. DOI: [10.1371/journal.pbio.3001827](https://jlsteenwyk.com/publication_pdfs/2022_Steenwyk_etal_PLoS_Biology.pdf).
---
Full usage documentation and tutorial:
[https://jlsteenwyk.com/orthosnap/](https://jlsteenwyk.com/orthosnap/)
## What's new in v1.6.0
Compared to v1.5.0 (plotting + performance improvements), v1.6.0 adds workflow-scale and reproducibility features:
- `--manifest`: batch execution from TSV/CSV manifests.
- `--validate-only`: preflight input concordance checks without extraction.
- `--structured-output`: machine-readable run metadata (`.run.json`) and subgroup summaries (`.subgroups.tsv`).
- `--occupancy-count` / `--occupancy-fraction`: explicit occupancy semantics.
- `--resume`: skip rerunning completed analyses.
- `--bootstrap-trees` + `--consensus-min-frequency` + `--consensus-trees`: consensus subgrouping across bootstrap tree uncertainty.
Compared to older releases:
- v1.5.0 focused on plotting and runtime optimization.
- v1.3.2 introduced configurable delimiters.
- v1.2.0 added inparalog handling reports.
- v1.0.0 and earlier focused on core pruning behavior.
## Installation
### Install with pip (recommended)
```shell
python -m venv .venv
source .venv/bin/activate
pip install orthosnap
```
### Install from source
```shell
git clone https://github.com/JLSteenwyk/orthosnap.git
cd orthosnap
python -m venv .venv
source .venv/bin/activate
make install
```
### Install with conda
```shell
conda install -c jlsteenwyk orthosnap
```
Conda package details:
https://anaconda.org/jlsteenwyk/orthosnap
## Quick start
```shell
orthosnap -f orthogroup_of_genes.faa -t phylogeny_of_orthogroup_of_genes.tre
```
Generate a color-coded SNAP-OG assignment plot for the full tree:
```shell
orthosnap -f orthogroup_of_genes.faa -t phylogeny_of_orthogroup_of_genes.tre -ps
```
Choose plot format (`png` default, `pdf` or `svg`):
```shell
orthosnap -f orthogroup_of_genes.faa -t phylogeny_of_orthogroup_of_genes.tre -ps -pf svg
```
Show all CLI options:
```shell
orthosnap -h
```
Run validation checks only (no subgroup extraction):
```shell
orthosnap -f orthogroup_of_genes.faa -t phylogeny_of_orthogroup_of_genes.tre --validate-only
```
Write structured provenance outputs (`.run.json` and `.subgroups.tsv`):
```shell
orthosnap -f orthogroup_of_genes.faa -t phylogeny_of_orthogroup_of_genes.tre --structured-output
```
Resume an interrupted or previously completed run:
```shell
orthosnap -f orthogroup_of_genes.faa -t phylogeny_of_orthogroup_of_genes.tre --resume
```
Use explicit occupancy semantics:
```shell
orthosnap -f orthogroup_of_genes.faa -t phylogeny_of_orthogroup_of_genes.tre --occupancy-count 5
orthosnap -f orthogroup_of_genes.faa -t phylogeny_of_orthogroup_of_genes.tre --occupancy-fraction 0.5
```
Run many orthogroups from a manifest (TSV/CSV with `tree` and `fasta` columns):
```shell
orthosnap --manifest runs.tsv --structured-output -op results/
```
Run bootstrap consensus mode using a file of tree paths (one per line):
```shell
orthosnap -f orthogroup_of_genes.faa -t reference.treefile --bootstrap-trees bootstrap_paths.txt --consensus-min-frequency 0.5
```
Also write consensus Newick trees:
```shell
orthosnap -f orthogroup_of_genes.faa -t reference.treefile --bootstrap-trees bootstrap_paths.txt --consensus-trees
```
## Support
If installation fails in a clean virtual environment, contact Jacob L. Steenwyk via:
- Email: https://jlsteenwyk.com/contact.html
- Twitter/X: https://twitter.com/jlsteenwyk