Bio::Phylo::IO - Front end for parsers and serializers


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',
 );
 
 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


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),
           -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)


SEE ALSO

the Bio::Phylo::Parsers::Newick manpage
the Bio::Phylo::Parsers::Nexus manpage
the Bio::Phylo::Parsers::Table manpage
the Bio::Phylo::Parsers::Taxlist manpage
the Bio::Phylo::Unparsers::Mrp manpage
the Bio::Phylo::Unparsers::Newick manpage
the Bio::Phylo::Unparsers::Nexus manpage
the Bio::Phylo::Unparsers::Pagel manpage
the Bio::Phylo::Manual manpage

Also see the manual: the Bio::Phylo::Manual manpage and http://rutgervos.blogspot.com


REVISION

 $Id: IO.pm 841 2009-03-04 23:07:30Z rvos $
 Bio::Phylo::IO - Front end for parsers and serializers