NAME
Bio::Phylo::IO - Front end for parsers and serializers
SYNOPSIS
use Bio::Phylo::IO qw(parse unparse);
# returns an unblessed array reference of block objects,
# i.e. taxa, matrix or forest objects
my $blocks = parse(
'-file' => $file,
'-format' => 'nexus',
'-encoding' => ':encoding(UTF-8)', # optional, default is system-dependent
);
for my $block ( @{ $blocks } ) {
if ( $block->isa('Bio::Phylo::Taxa') ) {
my $taxa = $block;
# do something with the taxa
}
}
# returns a Bio::Phylo::Project object
my $project = parse(
'-file' => $file,
'-format' => 'nexus',
'-as_project' => 1
)
my ($taxa) = @{ $project->get_taxa };
# parsing a tree from a newick string
my $tree_string = '(((A,B),C),D);';
my $tree = Bio::Phylo::IO->parse(
'-string' => $tree_string,
'-format' => 'newick',
)->first;
# note: newick parsers return
# 'Bio::Phylo::Forest'! Call
# ->first to retrieve the first
# tree of the forest.
# prints 'Bio::Phylo::Forest::Tree'
print ref $tree, "\n";
# if the tree is very large and you need only some terminal nodes from it
$simplified_tree = Bio::Phylo::IO->parse(
'-string' => $tree_string,
'-format' => 'newick',
'-keep' => ['A', 'D'], # nodes to keep
'-ignore_comments' => 1, # treats [] symbols as part of taxon name
)->first;
# parsing a table
my $table_string = qq(A,1,2|B,1,2|C,2,2|D,2,1);
my $matrix = Bio::Phylo::IO->parse(
'-string' => $table_string,
'-format' => 'table',
# Data type, see Bio::Phylo::Parsers::Table
'-type' => 'STANDARD',
# field separator
'-fieldsep' => ',',
# line separator
'-linesep' => '|'
);
# prints 'Bio::Phylo::Matrices::Matrix'
print ref $matrix, "\n";
# parsing a list of taxa
my $taxa_string = 'A:B:C:D';
my $taxa = Bio::Phylo::IO->parse(
'-string' => $taxa_string,
'-format' => 'taxlist',
'-fieldsep' => ':'
);
# prints 'Bio::Phylo::Taxa'
print ref $taxa, "\n";
# matches taxon names in tree to $taxa object
$tree->cross_reference($taxa);
# likewise for matrix
$matrix->cross_reference($taxa);
print unparse(
# pass the tree object,
# crossreferenced to taxa, which
# are crossreferenced to the matrix
'-phylo' => $tree,
'-format' => 'pagel'
);
# prints a pagel data file:
#4 2
#A,n1,0.000000,1,2
#B,n1,0.000000,1,2
#n1,n2,0.000000
#C,n2,0.000000,2,2
#n2,n3,0.000000
#D,n3,0.000000,2,1
DESCRIPTION
The IO module is the front end for parsing and serializing phylogenetic data objects. It is a non-OO module that optionally exports the 'parse' and 'unparse' subroutines into the caller's namespace, using the use Bio::Phylo::IO qw(parse unparse);
directive. Alternatively, you can call the subroutines as class methods. The parse
and unparse
subroutines load and dispatch the appropriate sub-modules at runtime, depending on the '-format' argument.
CLASS METHODS
- parse()
-
Parses a file or string.
Type : Class method Title : parse Usage : my $obj = Bio::Phylo::IO->parse(%options); Function: Creates (file) handle, instantiates appropriate parser. Returns : A Bio::Phylo::* object Args : -file => (path), or -string => (scalar), or -handle => (IO::Handle object) or -url => (url string) -format => (description format), -(other) => (parser specific options) Comments: The parse method makes assumptions about the capabilities of Bio::Phylo::Parsers::* modules: i) their names match those of the -format => (blah) arguments, insofar that ucfirst(blah) . '.pm' is an existing module; ii) the modules implement a _from_handle, or a _from_string method. Exceptions are thrown if either assumption is violated. If @ARGV contains even key/value pairs such as "format newick file <filename>" (note: no dashes) these will be prepended to @_, for one-liners.
- parse_matrix()
-
Parses a file or string.
Type : Class method Title : parse_matrix Usage : my $matrix = Bio::Phylo::IO->parse_matrix(%options); Function: Creates (file) handle, instantiates appropriate parser. Returns : A Bio::Phylo::Matrices::Matrix object Args : Same as parse() Comments: This method is syntactical sugar to get the first matrix out of a file/handle/string
- parse_tree()
-
Parses a file or string.
Type : Class method Title : parse_tree Usage : my $tree = Bio::Phylo::IO->parse_tree(%options); Function: Creates (file) handle, instantiates appropriate parser. Returns : A Bio::Phylo::Forest::Tree object Args : Same as parse() Comments: This method is syntactical sugar to get the first tree out of a file/handle/string
- unparse()
-
Unparses object(s) to a string.
Type : Class method Title : unparse Usage : my $string = Bio::Phylo::IO->unparse( %options ); Function: Turns Bio::Phylo object into a string according to specified format. If an optional -file or -handle argument is provided the string is also written to that. Returns : SCALAR Args : -phylo => (Bio::Phylo object), -format => (description format), -(other) => (parser specific options) -file => (optional: a file path to open and write to) or -handle => (optional: a handle to write to)
- can_read()
-
Tests whether Bio::Phylo::IO can read provided syntax format.
Type : Class method Title : can_read Usage : &do_something if Bio::Phylo::IO->can_read('foo'); Function: Tests whether Bio::Phylo::IO can read provided syntax format. Returns : Boolean Args : A syntax format name, like "nexml"
- can_write()
-
Tests whether Bio::Phylo::IO can write provided syntax format.
Type : Class method Title : can_write Usage : &do_something if Bio::Phylo::IO->can_write('foo'); Function: Tests whether Bio::Phylo::IO can write provided syntax format. Returns : Boolean Args : A syntax format name, like "nexml"
SEE ALSO
There is a mailing list at https://groups.google.com/forum/#!forum/bio-phylo for any user or developer questions and discussions.
- Bio::Phylo::Parsers::Fasta
- Bio::Phylo::Parsers::Newick
- Bio::Phylo::Parsers::Nexml
- Bio::Phylo::Parsers::Nexus
- Bio::Phylo::Parsers::Phylip
- Bio::Phylo::Parsers::Phyloxml
- Bio::Phylo::Parsers::Table
- Bio::Phylo::Parsers::Taxlist
- Bio::Phylo::Parsers::Tolweb
- Bio::Phylo::Unparsers::Mrp
- Bio::Phylo::Unparsers::Newick
- Bio::Phylo::Unparsers::Nexml
- Bio::Phylo::Unparsers::Nexus
- Bio::Phylo::Unparsers::Pagel
- Bio::Phylo::Unparsers::Phylip
- Bio::Phylo::Unparsers::Phyloxml
- Bio::Phylo::Manual
-
Also see the manual: Bio::Phylo::Manual and http://rutgervos.blogspot.com
CITATION
If you use Bio::Phylo in published research, please cite it:
Rutger A Vos, Jason Caravas, Klaas Hartmann, Mark A Jensen and Chase Miller, 2011. Bio::Phylo - phyloinformatic analysis using Perl. BMC Bioinformatics 12:63. http://dx.doi.org/10.1186/1471-2105-12-63