NAME
p3treeplot.pl - uses R to create PPP trees from a NEXUS file
SYNOPSIS
p3treeplot.pl NEXUSFileName [charlabel1 charlabel2 ... ]
DESCRIPTION
This is a command-line script that draws all (default) or some (if charlabels are listed) of the posterior probability of presence trees represented in the history block in a NEXUS file.
FEEDBACK
All feedback (bugs, feature enhancements, etc.) are greatly appreciated.
AUTHOR
Tom Hladish
VERSION
$Revision: 1.6 $
SUBROUTINES
parse_ARGV
Title : parse_ARGV
Usage : (input_filename, output_filename, charlabel_subset) = &parse_ARGV (@ARGV);
Function: assigns certain variables based on command-line arguments
Returns : (1) NEXUS source filename, (2) output filename to be created,
(3) reference to array of subset of introns to be plotted
Args : array of command-line arguments
Comments:
read_nexus
Title : read_nexus
Usage : (character_labels, otu_objects, root_object) = &read_nexus ($NEXUSfile)
Function: reads the relevant information from a NEXUS History Block
Returns : references to (1) array of character labels, (2) array of otu objects,
(3) root object
Args : name of source NEXUS file with History Block, with path if necessary
Comments:
read_pres_prob
Title : read_pres_prob
Usage : probability_of_presence_data_structure = &read_pres_prob (otu_objects,
character_labels);
Function: reads the relevant information from a NEXUS History Block
Returns : reference to hash (keys = intron names) of hashes (keys = node names) of
probability data for all nodes
Args : references to (1) otu objects and (2) character labels (i.e. intron names)
Comments:
matrix_builder
Title : matrix_builder
Usage : (nexus_data_matrix, max_branch_length) = &matrix_builder (root_object);
Function: constructs preliminary nexmatrix, determines maximum branch length
Returns : reference to array (each element corresponds to one line drawn in R) of arrays
(of structure [parentnode, childnode, branchlength]); also returns scalar of
maximum distance from root to leaf
Args : reference to root object
Comments: Should be possible to condense the top-level loops into just one 'for' loop (TH)
intron_sorter
Title : intron_sorter
Usage : sorted_introns = &intron_sorter (intron_names_list);
Function: sorts intron names numerically rather than as strings (as with the 'sort'
function)
Returns : reference to array of sorted names
Args : list or array of intron names
Comments: Works for introns that match pattern /\d+-\d/. May not work for other names. (TH)
numerically
Title : numerically
Usage : array_of_numbers = sort numerically array_of_numbers;
Function: tells 'sort' function how to sort numbers
Returns : 0 if $a and $b are equal, 1 if $a is greater, -1 if $b is greater
Args : None; or rather, 'sort' idiomatically passes special variables $a and $b
Comments:
include_pres_probs
Title : include_pres_probs
Usage : nexus_data_matrix = &include_pres_probs (nexus_data_matrix, sorted_introns);
Function: adds probability of presence data to nexus_data_matrix; also unshifts column names
into first row of matrix
Returns : reference to array of arrays (i.e., the updated nexus_data_matrix)
Args : reference to array of arrays (preliminary nexus_data_matrix), reference to array
of sorted intron names
Comments: Columns (corresponding to each intron) with probability data for at each node are
added to the matrix in the order provided in sorted_introns.
optimal_layout
Title : optimal_layout
Usage : (layout, $pagesetup) = &optimal_layout (number_of_plots, $pagesetup);
Function: determines best way to place N plots on one page; also removes axes labels and
shrinks fonts if many plots are on one page
Returns : reference to [rows_per_page, cols_per_page] array, reference to updated global
%pagesetup
Args : number of introns to plot, reference to pagesetup hash
Comments: fits number of introns to number of pages specified by $$pagesetup{'pages'})
write_R
Title : write_R
Usage : R_commands = &write_R (nexus_data_matrix, probability_of_presence_data_structure,
max_branch_length, layout, page_setup_data);
Function: translates various data structures into R language commands
Returns : array of R commands
Args : references to nexmatrix, presencedata, layout, and pagesetup data structures;
maximum distance from root to leaf
Comments: this subroutine determines all R settings not explicitly laid out in $pagesetup