//******************************************************************************
//
// File:    DrawTree.java
// Package: edu.rit.compbio.phyl
// Unit:    Class edu.rit.compbio.phyl.DrawTree
//
// This Java source file is copyright (C) 2008 by Alan Kaminsky. All rights
// reserved. For further information, contact the author, Alan Kaminsky, at
// ark@cs.rit.edu.
//
// This Java source file is part of the Parallel Java Library ("PJ"). PJ is free
// software; you can redistribute it and/or modify it under the terms of the GNU
// General Public License as published by the Free Software Foundation; either
// version 3 of the License, or (at your option) any later version.
//
// PJ is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
// A PARTICULAR PURPOSE. See the GNU General Public License for more details.
//
// A copy of the GNU General Public License is provided in the file gpl.txt. You
// may also obtain a copy of the GNU General Public License on the World Wide
// Web at http://www.gnu.org/licenses/gpl.html.
//
//******************************************************************************

package edu.rit.compbio.phyl;

import edu.rit.draw.Drawing;

import java.io.File;

/**
 * Class DrawTree is a program that draws a phylogenetic tree. The tree is
 * specified on the command line in a subset of Newick Standard format. The
 * drawing is stored in a file specified on the command line as a serialized
 * {@linkplain edu.rit.draw.Drawing} object. The {@linkplain View} program can
 * be used to view the drawing file and save it in an image file in several
 * formats.
 * 

* Usage: java edu.rit.compbio.phyl.DrawTree "tree" file [ * format ] *
tree = Tree in Newick Standard format *
file = Drawing file name *
format = DecimalFormat string for branch lengths (default: * "0.00") *

* Newick Standard format. The subset of Newick Standard format class * DrawTree supports is described by this BNF syntax. Nonterminal symbols are * in italic font, terminal symbols are in typewriter font, | * designates alternatives. *

* tree ::= node ; *
node ::= ( childList ) nameLength *
childList ::= child | child , childList *
child ::= tip | node *
tip ::= nameLength *
nameLength ::= empty | name | : length | name : length *
name ::= Any sequence of non-whitespace characters except ( ) , : ; *
length ::= Floating point number, as in the Double.valueOf() method *

* This subset only supports non-quoted names with no whitespace; however, any * underscore character _ in a name is replaced with a space character. * The full Newick Standard format supports quoted names including whitespace. * For further information about Newick Standard format, see: *

*

* Here is an example command to draw a tree and store it in the file * "tree.dwg": *

* java edu.rit.compbio.phyl.DrawTree \ *
"(Gibbon:10,(Orangutan:8,(Gorilla:6,(Chimp:4,Human:4)))apes)primates;" tree.dwg *

* Here is the command to view the tree drawing: *

* java View tree.dwg *

* Here is the resulting drawing: *

* * * @author Alan Kaminsky * @version 15-Jul-2008 */ public class DrawTree { // Prevent construction. private DrawTree() { } // Main program. /** * Main program. */ public static void main (String[] args) throws Exception { // Parse command line arguments. if (args.length < 2 || args.length > 3) usage(); String treestring = args[0]; File file = new File (args[1]); TreeDrawing artist = new TreeDrawing(); if (args.length >= 3) artist.setBranchLengthFormat (args[2]); // Draw the tree. try { artist.draw (treestring); } catch (TreeDrawing.SyntaxException exc) { exc.printSyntaxError (System.err); System.exit (1); } // Write drawing object into output file. Drawing.write (file); } // Hidden operations. /** * Print a usage message and exit. */ private static void usage() { System.err.println ("Usage: java edu.rit.compbio.phyl.DrawTree \"\" []"); System.err.println (" = Tree in Newick Standard format"); System.err.println (" = Drawing file name"); System.err.println (" = DecimalFormat string for branch lengths (default: \"0.00\")"); System.exit (1); } }

Ads help maintain this website.