Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

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.

...

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.

...

The PhyloNet tool is executed by typing the following command into your console:

Code Block

>java -jar $PHYLONET PATH/jar/PhyloNet_X.Y.Z.jar script.nex

...

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:

Code Block
langhtml

#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;

...

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:

Code Block
langhtml

Network "identifier" = "rich newick string";

...

For example usage of a TREES block consider the following NEXUS file:

Code Block
langhtml

#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;

...

The default behavior of PhyloNet for reporting results is to display each command's output on the console. For example given the following NEXUS file charnet.nex:

Code Block
langhtml

#NEXUS

BEGIN NETWORKS;

Network net = ((a,(b,(c)x#1)),((x#1,d),e));

END;


BEGIN PHYLONET;

Charnet net -m tree;

END;

we could execute the script by typing the following command on the console:

Code Block
langhtml

>java -jar $PHYLONET PATH/jar/PhyloNet_X.Y.Z.jar charnet.nex

which in turn would append the following output to the console:

Code Block
langhtml

>java -jar $PHYLONET PATH/jar/PhyloNet_X.Y.Z.jar charnet.nex

Charnet net -m tree
((a,(b,c)),(e,d));
((a,b),((d,c),e));

>

...

Most commands, including Charnet, support an optional final parameter that specifies the name of a file where command output should be redirected to instead of the console. For example, we could modify charnet.nex to send the command's output to the file C:\temp\charnet_output.txt as follows:

Code Block
langhtml

#NEXUS

BEGIN NETWORKS;

Network net = ((a,(b,(c)x#1)),((x#1,d),e));

END;


BEGIN PHYLONET;

Charnet net -m tree "C:\temp\charnet_output.txt";

END;

Upon executing the modified script from the console we would now see a new result without any tree results displayed to the console:

Code Block
langhtml

>java -jar $PHYLONET PATH/jar/PhyloNet_X.Y.Z.jar charnet.nex

Charnet net -m tree "C:\temp\charnet_output.txt"
Writing output to C:\temp\charnet_output.txt

>

Opening the file C:\temp\charnet_output.txt would reveal the command output:

Code Block
langhtml

((a,(b,c)),(e,d));
((a,b),((d,c),e));

...

PhyloNet provides a special command called Nexus_Out that instructs PhyloNet to additionally create an output NEXUS file containing a copy of each tree result generated by all commands within the script. For example, executing the following NEXUS script:

Code Block
langhtml

#NEXUS

BEGIN NETWORKS;

Network net = ((a,(b,(c)x#1)),((x#1,d),e));

END;


BEGIN PHYLONET;

Nexus_Out "C:\temp\nexus_out.nex";
Charnet net -m tree;

END;

would cause a file C:\temp\nexus_out.nex to be generated with contents:

Code Block
langhtml

#NEXUS

BEGIN TREES;

2_Charnet_1 = ((a,(b,c)),(e,d));

2_Charnet_2 = ((a,b),((d,c),e));

END;

...

All trees recorded in the TREES section will be of the form:

Code Block
langhtml

N_Command_M = ...;

Where N is the number of the command (that is, the nth command) as it appears in the original NEXUS script, Command is the command identifier of the command that generated the tree, and M denotes the mth tree generated by the nth command.

...