| Bio-Phylo documentation | Contained in the Bio-Phylo distribution. |
Bio::Phylo::Parsers::Phylip - Parser used by Bio::Phylo::IO, no serviceable parts inside
This module is used for parsing PHYLIP character state matrix files. At present this only works on non-interleaved files. As PHYLIP files don't indicate what data type they are you should indicate this as an argument to the Bio::Phylo::IO::parse function, i.e.:
use Bio::Phylo::IO 'parse'; my $file = shift @ARGV; my $type = 'dna'; # or rna, protein, restriction, standard, continuous my $matrix = parse( '-file' => $file, '-format' => 'phylip', '-type' => $type, )->[0]; print ref($matrix); # probably prints Bio::Phylo::Matrices::Matrix;
The PHYLIP parser is called by the Bio::Phylo::IO object. Look there for examples.
Also see the manual: Bio::Phylo::Manual and http://rutgervos.blogspot.com.
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
$Id: Phylip.pm 1660 2011-04-02 18:29:40Z rvos $
| Bio-Phylo documentation | Contained in the Bio-Phylo distribution. |
# $Id: Phylip.pm 1660 2011-04-02 18:29:40Z rvos $ package Bio::Phylo::Parsers::Phylip; use strict; use base 'Bio::Phylo::Parsers::Abstract'; use Bio::Phylo::Util::Exceptions 'throw';
sub _parse { my $self = shift; my $factory = $self->_factory; my $type = $self->_args->{'-type'} || 'standard'; my $handle = $self->_handle; my $matrix = $factory->create_matrix( '-type' => $type ); my ( $ntax, $nchar ); while (<$handle>) { if ( /^\s*(\d+)\s+(\d+)\s*$/ && !$ntax && !$nchar ) { ( $ntax, $nchar ) = ( $1, $2 ); } elsif (/\S/) { my $name = substr( $_, 0, 10 ); my $seq = substr( $_, 10 ); $matrix->insert( $factory->create_datum( '-type' => $type, '-name' => $name, '-char' => $matrix->get_type_object->split($seq), ) ); } } my ( $my_nchar, $my_ntax ) = ( $matrix->get_nchar, $matrix->get_ntax ); $nchar != $my_nchar && throw 'BadFormat' => "observed ($my_nchar) != expected ($nchar) nchar"; $ntax != $my_ntax && throw 'BadFormat' => "observed ($my_ntax) != expected ($ntax) ntax"; return $matrix; } # podinherit_insert_token
1;