| Bio::Phylo::IO - Front end for parsers and serializers |
Bio::Phylo::IO - Front end for parsers and serializers
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', ); 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";
# 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
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.
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), -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.
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. Returns : SCALAR Args : -phylo => (Bio::Phylo object), -format => (description format), -(other) => (parser specific options)
Also see the manual: the Bio::Phylo::Manual manpage and http://rutgervos.blogspot.com
$Id: IO.pm 841 2009-03-04 23:07:30Z rvos $
| Bio::Phylo::IO - Front end for parsers and serializers |