1. Introduction
PhyloNet is a tool designed mainly for analyzing, reconstructing, and evaluating reticulate (or non-treelike) evolutionary relationships, generally known as phylogenetic networks. Various methods that we have developed make use of techniques and tools from the domain of phylogenetic trees, and hence the PhyloNet package includes several tools for phylogenetic tree analysis. PhyloNet is released under the GNU General Public License. For the full license, see the file GPL.txt included with this distribution.
1.1 Contributors
PhyloNet is designed, implemented, and maintained by Rice's BioInformatics Group, which is lead by Professor Luay Nakhleh (nakhleh@cs.rice.edu). For more details related to this group please visit http://bioinfo.cs.rice.edu.
2. Installation
System Requirements
In order to run the PhyloNet toolkit, you must have Java 1.6.0 or later installed on your system. All references to the java command assume that Java 1.6 is being used.
Downloading phylonet.jar
Acquire the current release of PhyloNet by downloading the most recent version of the PhyloNet JAR file. You will have a file named PhyloNet_X.Y.Z.jar
, where X is the major version number and Y and Z are the minor version numbers.
Installing the file
Place the jar file in the desired installation directory. The remainder of this document assumes that it is located in $PHYLONET PATH/jar
. Installation is now complete. In order to run PhyloNet, you must execute the file PhyloNet_X.Y.Z.jar
, as described in the next section.
3. Basic Usage
The PhloNet tool is executed by typing the following command into your console:
>java -jar $PHYLONET PATH/jar/PhyloNet_X.Y.Z.jar script.nex
Where script.nex
is the NEXUS file containing the commands to be executed.
4. Basic NEXUS Overview
When PhyloNet is invoked with a specified NEXUS script file the tool will execute all of the commands contained within the file's PHYLONET
block. For example, consider the following NEXUS file:
#NEXUS BEGIN NETWORKS; Network net = ((a,(b,(c)x#1)),((x#1,d),e)); Network net1 = ((a,(b,(c)x#1)),((d,x#1),e)); Network net2 = ((((a, (c)x#1), d), (b, x)), e); Network net3 = ((a,b),(c,(d,(e,(f,g))))); Network net4 = ((f,b),(c,(d,(a,(e,g))))); END; BEGIN PHYLONET; Charnet net -m tree; Cmpnets net1 net2 -m cluster; CountCoal net3 net4; END;
Blocks in a NEXUS file start with the BEGIN
keyword and terminate with the END;
keyword. This example file contains two blocks--NETWORKS
and PHYLONET
. Contained within the PHYLONET
block is the list of commands PhyloNet will execute when processing the NEXUS file. Commands in a PHYLONET
block begin with a command identifier and terminate with a semicolon. In this example script, three commands are listed: Charnet
, Cmpnets
, and CountCoal
. Appearing after the command identifier but before the semicolon are any parameters provided to a given command for its execution. For example in the script file above three parameters are provided to the Charnet
command: net
, -m
and tree
. Details about specific parameters for a given command can be found on the documentation page for the given command.
The NETWORKS
block provides an area for defining any phylogenetic networks utilized by any command in the PHYLONET
block. A network definition in the NETWORKS
block must be of the form:
Network "identifier" = "rich newick string";
Where "identifier" is a user specified name for the network and "rich newick string" is a user specified rich newick string. For more information about rich newick strings see its corresponding reference page.
In addition to the NETWORKS
block, the TREES
block may also be used to define rich newick strings. However, rich newick strings defined in a TREES
block may not contain hybridization nodes. The inclusion of the TREES
block in addition to the NETWORKS
block is for increased comparability with NEXUS processing tools besides PhyloNet that also consume or produce TREES
blocks within NEXUS files.
For example, consider the following NEXUS file that utilizes a TREES
block:
#NEXUS BEGIN TREES; Tree speceiesTree = ((((a,b),c),d),e); Tree geneTree1 = ((((a,b),c),d),e); Tree geneTree2 = ((a,b),((c,e),d)); Tree geneTree3 = ((a,c),((b,e),d)); END; BEGIN PHYLONET; DeepCoalCount {speceiesTree} {geneTree1, geneTree2, geneTree3}; END;