BACKGROUND
the need to build species trees based on evidence from genes along entire genomes often arises in phylogenomic studies  <cit> .
the problem is sometimes approached using supertree methods  <cit> , which provide a way to combine several conflicting phylogenies on partially overlapping sets of taxa into a single comprehensive phylogeny.
however, supertree methods  are typically designed to work with species trees, not gene trees, as their inputs.
unlike species trees, gene trees can contain more than one homolog of a gene from the same species.
more crucially, genes are affected by complex evolutionary phenomena, such as deep coalescence , gene duplication and subsequent loss, lateral gene transfer, and recombination, that can create tremendous heterogeneity in the topology of gene trees and obscure species relationships.
one well-studied approach for dealing with these complications is gene tree parsimony   <cit> , which seeks a species tree that contains all taxa represented in the gene trees and implies the minimum reconciliation cost; that is, the fewest number of evolutionary events that explains the discordance among the gene phylogenies.
we note that the term gtp has traditionally been used in the context of gene duplication and loss, but here we use it more generally to mean a method that tries to minimize some reconciliation cost.
it should be mentioned that, in addition to gtp, there has also been considerable recent interest in probabilistic models of reconciliation  <cit> .
although these methods are beyond the scope of this paper, we point out that the main purpose of such techniques is typically not to produce species trees, but to construct gene trees or to identify discordance among gene trees.
while previous work suggests that gtp can produce accurate species trees  <cit> , currently available software is either too slow to handle large data sets or lacks the flexibility to handle the wide range of evolutionary processes that affect gene tree topologies.
here we introduce igtp, a stand-alone software application with an easy-to-use graphical user interface  that makes it possible to conduct large-scale gene tree parsimony analyses on hundreds of taxa and thousands of gene phylogenies for three of the most important variants of the gtp problem:  the duplication problem  <cit> , which minimizes the number of gene duplications,  the duplication-loss problem  <cit> , which minimizes the number of gene duplications and losses, and  the deep-coalescence problem  <cit> , which minimizes the number of deep coalescences.
all of these variants of gtp are intrinsically hard  <cit> , and exact algorithms  <cit>  are feasible only when there are very few taxa.
therefore, igtp relies on widely-used local search heuristics that have been proven to be effective in previous studies  <cit> .
igtp simplifies the analysis of the results by displaying the reconciliation costs of the gene trees against the computed species trees in convenient tabular form, and by providing integrated options for displaying the gene trees and species trees.
igtp's more advanced features include allowing unrooted gene trees in the input, assigning weights to the input gene trees, building effective initial trees using stepwise leaf addition, executing a constrained tree search by enforcing the presence of certain clades in the species tree, and automatically executing several replicates of the heuristic search.
igtp provides a scoring option that allows users to determine the total reconciliation cost of a given species tree with respect to a collection of gene trees.
prior to igtp, the three main software programs available for gene tree parsimony were gene tree  <cit> , mesquite  <cit> , and duptree  <cit> .
igtp deals with a broader range of evolutionary events than either mesquite, which handles only deep coalescence, or duptree, which handles only gene duplications.
further, neither genetree nor mesquite can handle unrooted gene trees, but igtp can.
igtp's scoring function is similar to one provided by the software program notung  <cit> .
while notung performs scoring under the duplication-loss model, igtp also handles pure duplication and deep coalescence.
also, notung does not provide the option to compute supertrees.
further, igtp can score multiple gene trees simultaneously against a species tree.
on the other hand, notung allows non-binary species trees or non-binary gene trees, but not both, while igtp requires all trees to be binary.
igtp combines duptree with two new programs, duploss - for duplication and loss - and deepc - for deep coalescence - under a common gui.
the use of these programs, which implement state-of-the-art algorithms, makes igtp many times faster than genetree or mesquite.
aside from the gui, igtp adds to duptree the ability to perform replicate runs.
while a preliminary version of duploss was mentioned in  <cit> , that version could not handle unrooted or weighted gene trees, could not execute constrained or replicate searches, did not have options to build good initial species trees by stepwise taxon addition, and only implemented the most basic type of local search.
finally, this is the first time that the program deepc has been implemented and made available.
the executable of igtp, as well as its user manual, can be obtained at http://genome.cs.iastate.edu/cbl/igtp/.
implementation
the input to a search operation is a gene tree file, which contains rooted or unrooted binary gene trees in newick format.
the input files are stored in the inputdata folder under the project home directory.
after the input is read, the user layer invokes the appropriate search service.
the output is stored as a newick file that contains all the optimal species trees, followed by all the input gene trees, as well as the total reconciliation cost of each species tree and the reconciliation costs of the individual gene trees against the species trees.
this file can be found inside the outputdata folder under the project home directory.
the input to a scoring operation is a scoring file, which is comprised of a rooted species tree and a collection of rooted gene trees.
all trees must be binary and in newick format.
the output of the scoring service is displayed on the screen.
RESULTS
igtp has an intuitive user interface that permits even novice users to immediately start gene tree parsimony analyses .
the interface items are divided into four categories.
the file menu item allows opening and closing of input files.
the analysis menu item provides searching and scoring options.
the user can customize the tree search by setting available options under the options menu item.
the help menu item assists users with options available in igtp.
moreover, tooltips are provided extensively to describe menu items over which the cursor is hovering.
a basic  tree search in igtp consists of two steps: opening a gene tree file and triggering the appropriate search option .
the input file statistics table, generated in the first step, lists each tree in the input gene tree file with its leaf count and rooting status; the tree itself can be displayed by clicking its view button.
a successful tree search renders the output folder statistics table, listing the names of the generated output files and the scores of its species trees.
note that, in a basic execution of tree search, only one output file is generated.
however, as described under "customization options", igtp can run multiple replicates, leading to multiple output files.
each such file can be examined by clicking on its name.
this displays the file's output file statistics table, which lists the generated species tree followed by the input gene trees with their scores and rooting statuses.
trees can be displayed by clicking their view buttons .
a log window displays the selections made in the drop-down menu options, and updates the user with intermediate results of the gtp search in real time.
a scoring operation consists of opening a scoring file and then selecting the appropriate scoring option .
the results of a scoring operation are displayed in a table that gives the total reconciliation cost for the input species tree, as well as the reconciliation cost between this tree and each of the input gene trees.
as for tree search, any of the trees can be displayed by clicking its view button.
customization options
under the options menu item, igtp offers various options for customizing tree search.
the starting species tree generation item gives users three options to customize the initial species tree used for tree search.
the leaf adding option utilizes a greedy stepwise addition algorithm.
the random tree option starts the search with a random tree topology.
the user specified option allows users to supply their own starting trees.
the default name for the output folder is composed of a system generated unique hexadecimal number followed by the input gene tree file name.
the user can choose a different name through the output folder name submenu.
the no.
of replicates option allows the automatic execution of multiple heuristic searches on the same data set.
this is done by pipelining the selected number of commands to the gtp search services.
each replicate uses a different random seed, allowing for a more thorough exploration of the search space.
the constraints file submenu allows one to impose constraints on the topology of the inferred species tree.
to adjust the thoroughness of the tree search, igtp provides three versions of the subtree pruning and regrafting  local search heuristic, which differ in the way they deal with multiple equally optimal trees.
randomized hill climbing randomly chooses one tree from among the optimal species trees in the spr neighborhood and continues the local search step with it.
the search terminates when none of the trees in the current local search step has a lower reconciliation cost.
in contrast, in the partial queue based approach, each optimal tree from the current local search step is enqueued and serves as the initial starting tree for the heuristic search until a better tree is found.
thus, a partial queue based heuristic terminates only if none of the local search steps, starting from each of the the enqueued trees, yields a tree with lower reconciliation cost.
a more thorough version of the partial queue based option is the queue based option, which enqueues all the optimal trees found so far, even if they were found in previous local search steps.
as with the partial queue based heuristic, each of the latter trees serves as the initial starting tree for the heuristic search until a better tree is found.
to adjust the behavior of this option, two more parameters, maximum queue size and no.
of trees, are provided.
the first parameter specifies the maximum number of trees that can be in the queue at any given time; the second sets the number of optimal trees to be output at the end.
the gtp method requires input gene trees to be rooted.
since it can often be hard to root gene trees accurately, the gene tree rooting menu item provides two option for dealing with unrooted gene trees.
the goal is to identify gene tree rootings that minimize the reconciliation cost.
the all option examines the reconciliation cost of every possible rooting of each unrooted gene tree against each species tree encountered during the search.
the optimal option examines the reconciliation cost of every possible rooting of each unrooted gene tree only after the search reaches a local optimum.
if rerooting the unrooted gene trees can reduce the reconciliation cost, then all unrooted gene trees are optimally re-rooted and the spr heuristic search is repeated using the new rootings.
the setting for the random number generator seed used in the heuristics can be adjusted via the random seed option.
this allows the user to select between a system generated number or a user-supplied number, which enables one to repeat a particular gtp search.
performance evaluation
to evaluate the performance of igtp, we compared its running time to that of the program genetree  <cit> , which implements spr-based search heuristics for all three reconciliation costs considered in this paper.
since mesquite  <cit>  only allows gtp analyses under the deep coalescence reconciliation cost, we did not consider it in our study.
we created five different gene tree data sets with  <dig>   <dig>   <dig>   <dig>  and  <dig> taxa respectively.
each data set consisted of  <dig> gene trees with the same set of taxa and with random binary topologies and random assignment of leaf labels.
all analyses were performed on a  <dig> ghz intel pentium  <dig> cpu based pc with windows xp operating system.
both igtp and genetree were run using the randomized hill-climbing heuristic starting from the same user-given species tree.
CONCLUSIONS
genome-scale phylogenetic analyses must account for complex evolutionary processes such as gene duplication and loss, incomplete lineage sorting , or horizontal gene transfer, that can create incongruence among gene trees.
igtp is a software tool that enables, for the first time, rigorous, large-scale gene tree parsimony analyses based on thousands of genes using the duplication, duplication-loss, and deep coalescence reconciliation costs, all from within a convenient and user-friendly graphical interface.
availability and requirements
project name: igtp
project home page: http://genome.cs.iastate.edu/cbl/igtp/
operating system: platform independent, and tested on linux, mac os x , microsoft windows .
programming languages: java swing and c++
other requirements: java runtime environment version  <dig> or higher, at least  <dig> mb of main memory , and a modern 3d capable graphics card for visualizing large trees.
license: none
any restrictions to use by non-academics: none
authors' contributions
rc and msb contributed equally to this work.
rc developed the graphical user interface and integrated it with the back-end c++ programs, wrote the project webpage, and contributed to the writing of the manuscript and the manual.
msb implemented the c++ programs for performing gtp analyses using the duplication-loss and deep coalescence costs, and contributed to the writing of the manuscript and the manual.
aw helped with the development of the gui, helped integrate paloverde with igtp, and wrote the back-end tools for scoring a given species tree.
oe and dfb supervised the project and contributed to the writing of the manuscript.
all authors read and approved the final manuscript.

 the need to build species trees based on evidence from genes along entire genomes often arises in phylogenomic studies. the problem is sometimes approached using supertree methods, which provide a way to combine several conflicting phylogenies on partially overlapping sets of taxa into a single comprehensive phylogeny. however, supertree methods are typically designed to work with species trees, not gene trees, as their inputs. unlike species trees, gene trees can contain more than one homolog of a gene from the same species. more crucially, genes are affected by complex evolutionary phenomena, such as deep coalescence, gene duplication and subsequent loss, lateral gene transfer, and recombination, that can create tremendous heterogeneity in the topology of gene trees and obscure species relationships. one well-studied approach for dealing with these complications is gene tree parsimony, which seeks a species tree that contains all taxa represented in the gene trees and implies the minimum reconciliation cost; that is, the fewest number of evolutionary events that explains the discordance among the gene phylogenies. we note that the term gtp has traditionally been used in the context of gene duplication and loss, but here we use it more generally to mean a method that tries to minimize some reconciliation cost. it should be mentioned that, in addition to gtp, there has also been considerable recent interest in probabilistic models of reconciliation. although these methods are beyond the scope of this paper, we point out that the main purpose of such techniques is typically not to produce species trees, but to construct gene trees or to identify discordance among gene trees. while previous work suggests that gtp can produce accurate species trees, currently available software is either too slow to handle large data sets or lacks the flexibility to handle the wide range of evolutionary processes that affect gene tree topologies. here we introduce igtp, a stand-alone software application with an easy-to-use graphical user interface that makes it possible to conduct large-scale gene tree parsimony analyses on hundreds of taxa and thousands of gene phylogenies for three of the most important variants of the gtp problem: the duplication problem, which minimizes the number of gene duplications, the duplication-loss problem, which minimizes the number of gene duplications and losses, and the deep-coalescence problem, which minimizes the number of deep coalescences. all of these variants of gtp are intrinsically hard, and exact algorithms are feasible only when there are very few taxa. therefore, igtp relies on widely-used local search heuristics that have been proven to be effective in previous studies. igtp simplifies the analysis of the results by displaying the reconciliation costs of the gene trees against the computed species trees in convenient tabular form, and by providing integrated options for displaying the gene trees and species trees. igtp's more advanced features include allowing unrooted gene trees in the input, assigning weights to the input gene trees, building effective initial trees using stepwise leaf addition, executing a constrained tree search by enforcing the presence of certain clades in the species tree, and automatically executing several replicates of the heuristic search. igtp provides a scoring option that allows users to determine the total reconciliation cost of a given species tree with respect to a collection of gene trees. prior to igtp, the three main software programs available for gene tree parsimony were gene tree, mesquite, and duptree. igtp deals with a broader range of evolutionary events than either mesquite, which handles only deep coalescence, or duptree, which handles only gene duplications. further, neither genetree nor mesquite can handle unrooted gene trees, but igtp can. igtp's scoring function is similar to one provided by the software program notung. while notung performs scoring under the duplication-loss model, igtp also handles pure duplication and deep coalescence. also, notung does not provide the option to compute supertrees. further, igtp can score multiple gene trees simultaneously against a species tree. on the other hand, notung allows non-binary species trees or non-binary gene trees, but not both, while igtp requires all trees to be binary. igtp combines duptree with two new programs, duploss - for duplication and loss - and deepc - for deep coalescence - under a common gui. the use of these programs, which implement state-of-the-art algorithms, makes igtp many times faster than genetree or mesquite. aside from the gui, igtp adds to duptree the ability to perform replicate runs. while a preliminary version of duploss was mentioned in, that version could not handle unrooted or weighted gene trees, could not execute constrained or replicate searches, did not have options to build good initial species trees by stepwise taxon addition, and only implemented the most basic type of local search. finally, this is the first time that the program deepc has been implemented and made available. the executable of igtp, as well as its user manual, can be obtained at http://genome.cs.iastate.edu/cbl/igtp/. implementation the input to a search operation is a gene tree file, which contains rooted or unrooted binary gene trees in newick format. the input files are stored in the inputdata folder under the project home directory. after the input is read, the user layer invokes the appropriate search service. the output is stored as a newick file that contains all the optimal species trees, followed by all the input gene trees, as well as the total reconciliation cost of each species tree and the reconciliation costs of the individual gene trees against the species trees. this file can be found inside the outputdata folder under the project home directory. the input to a scoring operation is a scoring file, which is comprised of a rooted species tree and a collection of rooted gene trees. all trees must be binary and in newick format. the output of the scoring service is displayed on the screen.  igtp has an intuitive user interface that permits even novice users to immediately start gene tree parsimony analyses. the interface items are divided into four categories. the file menu item allows opening and closing of input files. the analysis menu item provides searching and scoring options. the user can customize the tree search by setting available options under the options menu item. the help menu item assists users with options available in igtp. moreover, tooltips are provided extensively to describe menu items over which the cursor is hovering. a basic tree search in igtp consists of two steps: opening a gene tree file and triggering the appropriate search option. the input file statistics table, generated in the first step, lists each tree in the input gene tree file with its leaf count and rooting status; the tree itself can be displayed by clicking its view button. a successful tree search renders the output folder statistics table, listing the names of the generated output files and the scores of its species trees. note that, in a basic execution of tree search, only one output file is generated. however, as described under "customization options", igtp can run multiple replicates, leading to multiple output files. each such file can be examined by clicking on its name. this displays the file's output file statistics table, which lists the generated species tree followed by the input gene trees with their scores and rooting statuses. trees can be displayed by clicking their view buttons. a log window displays the selections made in the drop-down menu options, and updates the user with intermediate results of the gtp search in real time. a scoring operation consists of opening a scoring file and then selecting the appropriate scoring option. the results of a scoring operation are displayed in a table that gives the total reconciliation cost for the input species tree, as well as the reconciliation cost between this tree and each of the input gene trees. as for tree search, any of the trees can be displayed by clicking its view button. customization options under the options menu item, igtp offers various options for customizing tree search. the starting species tree generation item gives users three options to customize the initial species tree used for tree search. the leaf adding option utilizes a greedy stepwise addition algorithm. the random tree option starts the search with a random tree topology. the user specified option allows users to supply their own starting trees. the default name for the output folder is composed of a system generated unique hexadecimal number followed by the input gene tree file name. the user can choose a different name through the output folder name submenu. the no. of replicates option allows the automatic execution of multiple heuristic searches on the same data set. this is done by pipelining the selected number of commands to the gtp search services. each replicate uses a different random seed, allowing for a more thorough exploration of the search space. the constraints file submenu allows one to impose constraints on the topology of the inferred species tree. to adjust the thoroughness of the tree search, igtp provides three versions of the subtree pruning and regrafting local search heuristic, which differ in the way they deal with multiple equally optimal trees. randomized hill climbing randomly chooses one tree from among the optimal species trees in the spr neighborhood and continues the local search step with it. the search terminates when none of the trees in the current local search step has a lower reconciliation cost. in contrast, in the partial queue based approach, each optimal tree from the current local search step is enqueued and serves as the initial starting tree for the heuristic search until a better tree is found. thus, a partial queue based heuristic terminates only if none of the local search steps, starting from each of the the enqueued trees, yields a tree with lower reconciliation cost. a more thorough version of the partial queue based option is the queue based option, which enqueues all the optimal trees found so far, even if they were found in previous local search steps. as with the partial queue based heuristic, each of the latter trees serves as the initial starting tree for the heuristic search until a better tree is found. to adjust the behavior of this option, two more parameters, maximum queue size and no. of trees, are provided. the first parameter specifies the maximum number of trees that can be in the queue at any given time; the second sets the number of optimal trees to be output at the end. the gtp method requires input gene trees to be rooted. since it can often be hard to root gene trees accurately, the gene tree rooting menu item provides two option for dealing with unrooted gene trees. the goal is to identify gene tree rootings that minimize the reconciliation cost. the all option examines the reconciliation cost of every possible rooting of each unrooted gene tree against each species tree encountered during the search. the optimal option examines the reconciliation cost of every possible rooting of each unrooted gene tree only after the search reaches a local optimum. if rerooting the unrooted gene trees can reduce the reconciliation cost, then all unrooted gene trees are optimally re-rooted and the spr heuristic search is repeated using the new rootings. the setting for the random number generator seed used in the heuristics can be adjusted via the random seed option. this allows the user to select between a system generated number or a user-supplied number, which enables one to repeat a particular gtp search. performance evaluation to evaluate the performance of igtp, we compared its running time to that of the program genetree, which implements spr-based search heuristics for all three reconciliation costs considered in this paper. since mesquite only allows gtp analyses under the deep coalescence reconciliation cost, we did not consider it in our study. we created five different gene tree data sets with and taxa respectively. each data set consisted of gene trees with the same set of taxa and with random binary topologies and random assignment of leaf labels. all analyses were performed on a ghz intel pentium cpu based pc with windows xp operating system. both igtp and genetree were run using the randomized hill-climbing heuristic starting from the same user-given species tree.  genome-scale phylogenetic analyses must account for complex evolutionary processes such as gene duplication and loss, incomplete lineage sorting, or horizontal gene transfer, that can create incongruence among gene trees. igtp is a software tool that enables, for the first time, rigorous, large-scale gene tree parsimony analyses based on thousands of genes using the duplication, duplication-loss, and deep coalescence reconciliation costs, all from within a convenient and user-friendly graphical interface. availability and requirements project name: igtp project home page: http://genome.cs.iastate.edu/cbl/igtp/ operating system: platform independent, and tested on linux, mac os x, microsoft windows. programming languages: java swing and c++ other requirements: java runtime environment version or higher, at least mb of main memory, and a modern 3d capable graphics card for visualizing large trees. license: none any restrictions to use by non-academics: none authors' contributions rc and msb contributed equally to this work. rc developed the graphical user interface and integrated it with the back-end c++ programs, wrote the project webpage, and contributed to the writing of the manuscript and the manual. msb implemented the c++ programs for performing gtp analyses using the duplication-loss and deep coalescence costs, and contributed to the writing of the manuscript and the manual. aw helped with the development of the gui, helped integrate paloverde with igtp, and wrote the back-end tools for scoring a given species tree. oe and dfb supervised the project and contributed to the writing of the manuscript. all authors read and approved the final manuscript. 
however, species phylogeny inference is obfuscated by incongruence among gene trees due to evolutionary events such as gene duplication and loss, incomplete lineage sorting, and horizontal gene transfer. gene tree parsimony addresses this issue by seeking a species tree that requires the minimum number of evolutionary events to reconcile a given set of incongruent gene trees. despite its promise, the use of gene tree parsimony has been limited by the fact that existing software is either not fast enough to tackle large data sets or is restricted in the range of evolutionary events it can handle. igtp significantly extends and improves the functionality and performance of existing gene tree parsimony software and offers advanced features such as building effective initial trees using stepwise leaf addition and the ability to have unrooted gene trees in the input. igtp enables, for the first time, gene tree parsimony analyses of thousands of genes from hundreds of taxa using the duplication, duplication-loss, and deep coalescence reconciliation costs, all from within a convenient graphical user interface. we introduce igtp, a platform-independent software program that implements state-of-the-art algorithms that greatly speed up species tree inference under the duplication, duplication-loss, and deep coalescence reconciliation costs. moreover, igtp provides a user-friendly graphical interface with integrated tree visualization software to facilitate analysis of the results.
 the ever-increasing wealth of genomic sequence information provides an unprecedented opportunity for large-scale phylogenetic analysis. however, species phylogeny inference is obfuscated by incongruence among gene trees due to evolutionary events such as gene duplication and loss, incomplete lineage sorting, and horizontal gene transfer. gene tree parsimony addresses this issue by seeking a species tree that requires the minimum number of evolutionary events to reconcile a given set of incongruent gene trees. despite its promise, the use of gene tree parsimony has been limited by the fact that existing software is either not fast enough to tackle large data sets or is restricted in the range of evolutionary events it can handle.  we introduce igtp, a platform-independent software program that implements state-of-the-art algorithms that greatly speed up species tree inference under the duplication, duplication-loss, and deep coalescence reconciliation costs. igtp significantly extends and improves the functionality and performance of existing gene tree parsimony software and offers advanced features such as building effective initial trees using stepwise leaf addition and the ability to have unrooted gene trees in the input. moreover, igtp provides a user-friendly graphical interface with integrated tree visualization software to facilitate analysis of the results.  igtp enables, for the first time, gene tree parsimony analyses of thousands of genes from hundreds of taxa using the duplication, duplication-loss, and deep coalescence reconciliation costs, all from within a convenient graphical user interface. 