| Bio-Phylo documentation | Contained in the Bio-Phylo distribution. |
Bio::Phylo::Unparsers::Nexus - Serializer used by Bio::Phylo::IO, no serviceable parts inside
This module turns a Bio::Phylo::Matrices::Matrix object into a nexus formatted matrix. It is called by the Bio::Phylo::IO facade, don't call it directly. You can pass the following additional arguments to the unparse call:
# an array reference of matrix, forest and taxa objects:
-phylo => [ $block1, $block2 ]
# the arguments that can be passed for matrix objects,
# refer to Bio::Phylo::Matrices::Matrix::to_nexus:
-matrix_args => {}
# the arguments that can be passed for forest objects,
# refer to Bio::Phylo::Forest::to_nexus:
-forest_args => {}
# the arguments that can be passed for taxa objects,
# refer to Bio::Phylo::Taxa::to_nexus:
-taxa_args => {}
OR:
# for backward compatibility:
-phylo => $matrix
The nexus serializer is called by the Bio::Phylo::IO object.
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: Nexus.pm 1660 2011-04-02 18:29:40Z rvos $
| Bio-Phylo documentation | Contained in the Bio-Phylo distribution. |
# $Id: Nexus.pm 1660 2011-04-02 18:29:40Z rvos $ package Bio::Phylo::Unparsers::Nexus; use strict; use base 'Bio::Phylo::Unparsers::Abstract'; use Bio::Phylo::Util::CONSTANT ':objecttypes'; use Bio::Phylo::Util::Exceptions 'throw';
sub _to_string { my $self = shift; my $blocks = $self->{'PHYLO'}; my $nexus = "#NEXUS\n"; my $type; eval { $type = $blocks->_type }; # array? if ($@) { for my $block (@$blocks) { eval { $type = $block->_type }; my %args; if ( $type == _FOREST_ ) { if ( exists $self->{'FOREST_ARGS'} ) { %args = %{ $self->{'FOREST_ARGS'} }; } } elsif ( $type == _TAXA_ ) { if ( exists $self->{'TAXA_ARGS'} ) { %args = %{ $self->{'TAXA_ARGS'} }; } } elsif ( $type == _MATRIX_ ) { if ( exists $self->{'MATRIX_ARGS'} ) { %args = %{ $self->{'MATRIX_ARGS'} }; } } elsif ($@) { throw 'ObjectMismatch' => "Can't unparse this object: $blocks"; } $nexus .= $block->to_nexus(%args); } } # matrix? elsif ( defined $type and $type == _MATRIX_ ) { $nexus .= $blocks->to_nexus; } # project? elsif ( defined $type and $type == _PROJECT_ ) { $nexus = $blocks->to_nexus; } # wrong! else { throw 'ObjectMismatch' => "Can't unparse this object: $blocks"; } return $nexus; } # podinherit_insert_token
1;