Metadata-Version: 2.4
Name: recur
Version: 1.1.0
Summary: recurrant evolution
Author-email: Elizabeth Robbins <lizzie.robbins1@gmail.com>, Yi Liu <caoxen7ys@yahoo.com>
License-Expression: LGPL-3.0-only
Project-URL: repository, https://github.com/OrthoFinder/RECUR
Keywords: Reccurant Evolution,Monte-Carlo,Phylogeneticrelationships
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: dendropy
Requires-Dist: pyyaml
Requires-Dist: types-PyYAML
Requires-Dist: resource
Requires-Dist: psutil
Requires-Dist: rich
Requires-Dist: statsmodels
Requires-Dist: scipy
Provides-Extra: all
Requires-Dist: recur[build,dev,test]; extra == "all"
Provides-Extra: build
Requires-Dist: build; extra == "build"
Requires-Dist: twine; extra == "build"
Requires-Dist: wheel; extra == "build"
Requires-Dist: setuptools>=77; extra == "build"
Requires-Dist: setuptools_scm>=8; extra == "build"
Requires-Dist: packaging>=24.2; extra == "build"
Provides-Extra: dev
Requires-Dist: python-semantic-release; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: memory_profiler; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: pipdeptree; extra == "dev"
Requires-Dist: graphviz; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov[all]; extra == "test"
Dynamic: license-file

# RECUR ![Tested](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/OrthoFinder/RECUR/main/badge-status.json)

Finding Recurrent Substitutions from Multiple Sequence Alignments

## Introduction
![RECUR method workflow](./docs/images/RECUR_workflow.png)

<div align="center">
  Figure 1: The RECUR workflow
</div>

The required input is either a protein or codon multiple sequence alignment (in FASTA format) and a defined outgroup species or clade. The output of RECUR is a list of recurrent amino acid substitutions (file suffix: `.recur.tsv`), that have occurred in the inferred phylogeny. Outputs of intermediate steps, i.e. model selection, tree inference, ancestral state reconstruction and site substitution matrices, can be found in the `.recur` output directory.

Comprehensive installation and usage documentation is available on the [RECUR homepage](https://orthofinder.github.io/RECUR/)

## Citations

*Elizabeth H J Robbins, Yi Liu, Steven Kelly*, **RECUR: identifying recurrent amino acid substitutions from multiple sequence alignments**, *Molecular Biology and Evolution*, Volume 43, Issue 2, February 2026, msag036  [![DOI](https://img.shields.io/badge/DOI-10.1093%2Fmolbev%2Fmsag036-blue)](https://doi.org/10.1093/molbev/msag036)

## Credits and Acknowledgements

This is a software developed by the [Steven Kelly Lab](http://www.stevekellylab.com/).

## Contributing

If you find a bug :bug:, please open a [bug report](https://github.com/).
If you have an idea for an improvement or new feature, please open a [feature request]().

