Software
SuGeT (SuperGeneTree)
Given a set of gene trees and a species tree, this software finds a supergenetree of the input trees that minimizes the reconciliation cost with the species tree. A supergenetree is a tree that "contains" all the input gene trees. The user can also specify to preserve the orthology/paralogy relations from the input trees. The runtime is exponential in the number of input trees. See this paper for details.
https://github.com/UdeM-LBIT/SuGeT
To cite: M Lafond, C Chauve, N El-Mabrouk, A Ouangraoua, "Gene Tree Construction and Correction using SuperTree and Reconciliation", IEEE/ACM Transactions on Computational Biology and Bioinformatics, 2017
profileNJ
Given a non-binary gene tree, a species tree and an optional gene distance matrix, this software outputs a binarization of the gene tree
that minimizes the duplication+loss score. Since the number of solutions can easily get exponential,
the algorithm can use a NJ distance criterion to join the 'nearest' subtrees first.
This software was used for the experimental studies in this paper.
profileNJ extends the linear-time algorithm for gene tree resolution published in this paper and can also handle weights on duplications and losses as seen in this paper. It is maintained by Emmanuel Noutahi.
https://github.com/UdeM-LBIT/profileNJ
To cite: E Noutahi, M Semeria, M Lafond, J Seguin, B Boussau, L Gueguen, N El-Mabrouk, E Tannier, "Efficient Gene Tree Correction Guided by Genome Evolution", PLOS One (2016)
OPCC (OrthoPara-ConstraintChecker)
A python script that tests satisfiability/consistency with a species tree of a set of orthologies/paralogies/undecided.
In other words, given a set of genes and their partial orthology/paralogy relationships, can we build a gene tree that depicts these
relationships ? And, can we build such a gene tree that also agrees with a species tree ?
This script was extended by Mark Jones to check if the gene tree also agrees with some species tree.
https://github.com/UdeM-LBIT/profileNJ
To cite: M Lafond, N El-Mabrouk, "Orthology and Paralogy Constraints: Satisfiability and Consistency", BMC Genomics (2014)
PolytomySolverNAD
Given a rooted binary gene tree and species tree, corrects a NAD (Non-Apparent Duplication) of the gene tree by applying multifurcation. User may specify a node to correct by appending the string "[CORRECT]" to the label of the node in the newick string. If none specified, this program corrects the highest NAD.
As seen in the ECCB 2014 paper,
"Polytomy Refinement for the Correction of Dubious Duplications in Gene Trees." featuring Manuel Lafond, Cedric Chauve, Riccardo Dondi and Nadia El-Mabrouk.
Functionalities of this software are fairly limited. If you are seriously interested in this work, I suggest contacting me.
ParalogyCorrector
Given a gene tree, a species tree and a list of gene pairs that are required to be orthologs, find a gene tree as close as possible to the original that satisfies these constraints under reconciliation. As seen in this paper.
UPDATED VERSION ON GITHUB
https://github.com/UdeM-LBIT/paralogy-corrector
Old version (that was used for the publication)
Download the source code (ParalogyCorrector.zip)
To cite : M Lafond, M Semeria, K M Swenson, E Tannier, N El-Mabrouk : Gene tree correction guided by orthology BMC Bioinformatics 14:S5I; 10.1186/1471-2105-14-S15-S5-T, 2013.
PolytomySolver
Given a non-binary gene tree and a binary species tree, this set of C++ classes finds an optimal binary resolution of the gene tree such that the number of duplications + losses is minimized. It is an implementation of what appeared in this paper.
This version is obsolete - please use profileNJ above, which does the same tasks and more!
Download the source code (polysolver_0.1_090913.zip)
DOCUMENTATION
To cite :
Lafond M, Swenson KM, El-Mabrouk N: An optimal reconciliation
algorithm for gene trees with polytomies.
In WABI, volume 7534 of
LNBI/LNBI; 2012:106-122.