b6b2caadb6479b5c01872931d85e805be6eb1f4c
[jalview.git] / wiki / forester.wiki
1 = forester Tutorial and Examples =
2 <wiki:toc max_depth="3" />
3
4 = Introduction =
5
6 Under development!
7
8 Documentation, tutorial, and examples for [http://www.phylosoft.org/forester/ forester].
9
10 Author: [http://www.cmzmasek.net/ Christian M Zmasek], Sanford-Burnham Medical Research Institute
11
12  
13 Copyright (C) 2011 Christian M Zmasek. All rights reserved.
14
15
16 = Reading and writing of phylogenetic trees =
17
18 This needs file "forester.jar" to be in the class-path.
19
20 {{{
21
22 package examples;
23
24 import java.io.File;
25 import java.io.IOException;
26
27 import org.forester.io.parsers.PhylogenyParser;
28 import org.forester.io.parsers.util.ParserUtils;
29 import org.forester.io.writers.PhylogenyWriter;
30 import org.forester.phylogeny.Phylogeny;
31 import org.forester.phylogeny.PhylogenyMethods;
32 import org.forester.util.ForesterUtil;
33
34 public class Example {
35
36     public static void main( final String[] args ) {
37         // Reading-in of (a) tree(s) from a file.
38         final File treefile = new File( "/path/to/tree.xml" );
39         PhylogenyParser parser = null;
40         try {
41             parser = ParserUtils.createParserDependingOnFileType( treefile, true );
42         }
43         catch ( final IOException e ) {
44             e.printStackTrace();
45         }
46         Phylogeny[] phys = null;
47         try {
48             phys = PhylogenyMethods.readPhylogenies( parser, treefile );
49         }
50         catch ( final IOException e ) {
51             e.printStackTrace();
52         }
53         // Writing trees to a file.
54         final File outfile = new File( "/path/to/out_tree.xml" );
55         try {
56             final PhylogenyWriter writer = new PhylogenyWriter();
57             writer.toPhyloXML( phys, 0, outfile, ForesterUtil.LINE_SEPARATOR );
58         }
59         catch ( final Exception e ) {
60             e.printStackTrace();
61         }
62     }
63 }
64
65 }}}
66
67
68
69 = Reading of phylogenetic trees and displaying them with Archaeopteryx =
70
71 This needs file "forester.jar" to be in the class-path.
72
73 {{{
74
75 package examples;
76
77 import java.io.File;
78 import java.io.IOException;
79
80 import org.forester.archaeopteryx.Archaeopteryx;
81 import org.forester.io.parsers.PhylogenyParser;
82 import org.forester.phylogeny.Phylogeny;
83 import org.forester.util.ForesterUtil;
84
85 public class Example {
86
87     public static void main( final String[] args ) {
88         // Reading-in of (a) tree(s) from a file.
89         final File treefile = new File( "/path/to/tree.xml" );
90         PhylogenyParser parser = null;
91         try {
92             parser = ForesterUtil.createParserDependingOnFileType( treefile, true );
93         }
94         catch ( final IOException e ) {
95             e.printStackTrace();
96         }
97         Phylogeny[] phys = null;
98         try {
99             phys = ForesterUtil.readPhylogenies( parser, treefile );
100         }
101         catch ( final IOException e ) {
102             e.printStackTrace();
103         }
104         // Display of the tree(s) with Archaeopteryx.
105         Archaeopteryx.createApplication( phys );
106     }
107 }
108
109 }}}
110
111
112
113
114 = Creating a new tree and displaying it with Archaeopteryx =
115
116 This needs file "forester.jar" to be in the class-path.
117
118 {{{
119
120 package examples;
121
122 import org.forester.archaeopteryx.Archaeopteryx;
123 import org.forester.phylogeny.Phylogeny;
124 import org.forester.phylogeny.PhylogenyNode;
125
126 public class Example {
127
128     public static void main( final String[] args ) {
129         // Creating a new rooted tree with two external nodes.
130         final Phylogeny phy = new Phylogeny();
131         final PhylogenyNode root = new PhylogenyNode();
132         final PhylogenyNode d1 = new PhylogenyNode();
133         final PhylogenyNode d2 = new PhylogenyNode();
134         root.setName( "root" );
135         d1.setName( "descendant 1" );
136         d2.setName( "descendant 2" );
137         root.addAsChild( d1 );
138         root.addAsChild( d2 );
139         phy.setRoot( root );
140         phy.setRooted( true );
141         // Displaying the newly created tree with Archaeopteryx.
142         Archaeopteryx.createApplication( phy );
143     }
144 }
145
146 }}}
147
148
149
150
151
152
153 = Using iterators to visit tree nodes in certain orders =
154
155 This needs file "forester.jar" to be in the class-path.
156
157 {{{
158
159 package examples;
160
161 import org.forester.phylogeny.Phylogeny;
162 import org.forester.phylogeny.PhylogenyNode;
163 import org.forester.phylogeny.iterators.PhylogenyNodeIterator;
164
165 public class Example {
166
167     public static void main( final String[] args ) {
168         // Creating a new rooted tree with four external nodes.
169         final Phylogeny phy = new Phylogeny();
170         final PhylogenyNode root = new PhylogenyNode();
171         final PhylogenyNode d1 = new PhylogenyNode();
172         final PhylogenyNode d2 = new PhylogenyNode();
173         final PhylogenyNode d11 = new PhylogenyNode();
174         final PhylogenyNode d12 = new PhylogenyNode();
175         root.setName( "root" );
176         d1.setName( "1" );
177         d2.setName( "2" );
178         d11.setName( "1-1" );
179         d12.setName( "1-2" );
180         root.addAsChild( d1 );
181         root.addAsChild( d2 );
182         d2.addAsChild( d11 );
183         d2.addAsChild( d12 );
184         phy.setRoot( root );
185         phy.setRooted( true );
186         // Using a variety of iterators to visit the nodes of the newly created tree.
187         System.out.println( "post-order:" );
188         for( final PhylogenyNodeIterator it = phy.iteratorPostorder(); it.hasNext(); ) {
189             System.out.println( it.next().getName() );
190         }
191         System.out.println( "pre-order:" );
192         for( final PhylogenyNodeIterator it = phy.iteratorPreorder(); it.hasNext(); ) {
193             System.out.println( it.next().getName() );
194         }
195         System.out.println( "level-order:" );
196         for( final PhylogenyNodeIterator it = phy.iteratorLevelOrder(); it.hasNext(); ) {
197             System.out.println( it.next().getName() );
198         }
199         System.out.println( "external nodes only:" );
200         for( final PhylogenyNodeIterator it = phy.iteratorExternalForward(); it.hasNext(); ) {
201             System.out.println( it.next().getName() );
202         }
203     }
204 }
205
206 }}}
207
208
209
210
211
212
213
214
215
216 = Creating a basic gene tree (with branch lengths) =
217
218 This needs file "forester.jar" to be in the class-path.
219
220 {{{
221
222 package examples;
223
224 import org.forester.archaeopteryx.Archaeopteryx;
225 import org.forester.phylogeny.Phylogeny;
226 import org.forester.phylogeny.PhylogenyNode;
227 import org.forester.phylogeny.data.Sequence;
228 import org.forester.phylogeny.data.Taxonomy;
229
230 public class Example {
231
232     public static void main( final String[] args ) {
233         // Creating a new rooted tree with two external nodes.
234         final Phylogeny phy = new Phylogeny();
235         final PhylogenyNode root = new PhylogenyNode();
236         final PhylogenyNode d1 = new PhylogenyNode();
237         final PhylogenyNode d2 = new PhylogenyNode();
238         // Setting of distances.
239         d1.setDistanceToParent( 1.2 );
240         d2.setDistanceToParent( 2.4 );
241         // Adding species information.
242         final Taxonomy t1 = new Taxonomy();
243         t1.setScientificName( "Nematostella vectensis" );
244         d1.getNodeData().addTaxonomy( t1 );
245         final Taxonomy t2 = new Taxonomy();
246         t2.setScientificName( "Monosiga brevicollis" );
247         d2.getNodeData().addTaxonomy( t2 );
248         // Adding gene names.
249         final Sequence s1 = new Sequence();
250         s1.setName( "Bcl-2" );
251         d1.getNodeData().addSequence( s1 );
252         final Sequence s2 = new Sequence();
253         s2.setName( "Bcl-2" );
254         d2.getNodeData().addSequence( s2 );
255         // Root is a speciation.
256         final Event ev = new Event();
257         ev.setSpeciations( 1 );
258         ev.setDuplications( 0 );
259         root.getNodeData().setEvent( ev );
260         // Putting the tree together.
261         root.addAsChild( d1 );
262         root.addAsChild( d2 );
263         phy.setRoot( root );
264         phy.setRooted( true );
265         // Displaying the newly created tree with Archaeopteryx.
266         Archaeopteryx.createApplication( phy );
267     }
268 }
269
270 }}}