An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          



Logo


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