64
64
24 and 22 0.013457 972
65
65
24 and 7 0.025598 1000
67
See http://shanghai.bio.psu.edu/lintree.html for access to the program
68
and N Takezaki, A Rzhetsky, and M Nei, "Phylogenetic test of the
69
molecular clock and linearized trees." Mol Biol Evol 12(5):823-33.
67
See http://www.bio.psu.edu/People/Faculty/Nei/Lab/software.htm for access
68
to the program and N Takezaki, A Rzhetsky, and M Nei, "Phylogenetic test
69
of the molecular clock and linearized trees." Mol Biol Evol 12(5):823-33.
76
76
Bioperl modules. Send your comments and suggestions preferably to
77
77
the Bioperl mailing list. Your participation is much appreciated.
79
bioperl-l@bioperl.org - General discussion
80
http://bioperl.org/MailList.shtml - About the mailing lists
79
bioperl-l@bioperl.org - General discussion
80
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
82
82
=head2 Reporting Bugs
84
84
Report bugs to the Bioperl bug tracking system to help us keep track
85
of the bugs and their resolution. Bug reports can be submitted via
85
of the bugs and their resolution. Bug reports can be submitted via the
88
bioperl-bugs@bioperl.org
89
http://bioperl.org/bioperl-bugs/
88
http://bugzilla.open-bio.org/
91
90
=head1 AUTHOR - Jason Stajich
155
153
my $nodetype = $self->nodetype;
157
155
while( defined( $_ = $self->_readline) ) {
158
if( /^\s*(\d+)\s+sequences/ ) {
156
if( /^\s*(\d+)\s+sequences/ox ) {
160
158
$self->_pushback($_);
165
} elsif( /^(\d+)\s+(\S+)/ ) {
163
} elsif( /^(\d+)\s+(\S+)\s*$/ox ) {
166
164
# deal with setting an outgroup
167
165
unless( defined $data{'outgroup'} ) {
168
166
$data{'outgroup'} = [$1,$2];
170
168
$nodes[$1 - 1] = { '-id' => $2 };
171
} elsif( m/^\s+(\d+)\s+and\s+(\d+)\s+(\d+\.\d+)(?:\s+(\d+))?/ox ) {
169
} elsif( m/^\s*(\d+)\s+and\s+(\d+)\s+(\-?\d+\.\d+)(?:\s+(\d+))?/ox ) {
172
170
my ($node,$descend,$blength,$bootstrap) = ( $1, $2, $3, $4 );
173
171
# need to -- descend and node because
174
172
# array is 0 based
178
176
$nodes[$node]->{'-id'} = $node+1;
179
177
push @{$nodes[$node]->{'-d'}}, $descend;
181
} elsif( /\s+(\S+)\-distance was used\./ ) {
179
} elsif( /\s+(\S+)\-distance was used\./ox ) {
182
180
$data{'method'} = $1;
183
} elsif( /\s*seed=(\d+)/ ) {
181
} elsif( /\s*seed=(\d+)/ox ) {
184
182
$data{'seed'} = $1;
185
183
} elsif( m/^outgroup:\s+(\d+)\s+(\S+)/ox ) {
186
184
$data{'outgroup'} = [$1,$2];
190
foreach my $n ( @nodes ) {
191
push @treenodes, $nodetype->new(%{$n});
194
foreach my $tn ( @treenodes ) {
195
my $n = shift @nodes;
196
for my $ptr ( @{ $n->{'-d'} || [] } ) {
197
$tn->add_Descendent($treenodes[$ptr]);
200
my $T = Bio::Tree::Tree->new(-root => (pop @treenodes) );
201
if( $data{'outgroup'} ) {
202
my ($outgroup) = $treenodes[$data{'outgroup'}->[0]];
203
if( ! defined $outgroup) {
204
$self->warn("cannot find '". $data{'outgroup'}->[1]. "'\n");
206
$T->reroot($outgroup->ancestor);
189
foreach my $n ( @nodes ) {
190
push @treenodes, $nodetype->new(%{$n});
193
foreach my $tn ( @treenodes ) {
194
my $n = shift @nodes;
195
for my $ptr ( @{ $n->{'-d'} || [] } ) {
196
$tn->add_Descendent($treenodes[$ptr]);
199
my $T = Bio::Tree::Tree->new(-root => (pop @treenodes) );
200
if( $data{'outgroup'} ) {
201
my ($outgroup) = $treenodes[$data{'outgroup'}->[0]];
202
if( ! defined $outgroup) {
203
$self->warn("cannot find '". $data{'outgroup'}->[1]. "'\n");
205
$T->reroot($outgroup->ancestor);
210
return; # if there are no more trees, return undef