Treeio And Bootstrap Values
1
0
Entering edit mode
10.3 years ago
Lee Katz ★ 3.1k

Hi, I posted this on the bioperl mailing list but don't have an answer yet.

I want to change the bootstrap values in my phylogeny to some artificial Fst values I created earlier in the script. This subroutine seems to be doing the trick because Data::Dumper shows that the nodes and the tree have the new bootstraps. However, the resulting Newick tree does not display them. Can anyone help? Are there any bioperl nuances that I'm not aware of, in regards to bootstrap values? Thank you.

http://pastie.org/private/wtn0pqgjwrmpdswodok4mw#

sub printTree{
  my($fst,$tree,$settings)=@_;
  my $treeIn=new Bio::TreeIO(-file=>$tree)->next_tree;
  my $out=Bio::TreeIO->new(-format=>"newick");
  for my $node($treeIn->get_nodes){
    # get all descendents of the node and alpha-sort them
    my @d=sort{$a->id cmp $b->id} $node->each_Descendent;
    next if(!@d);
    # make a comma-separated key
    my $key; $key.=$_->id."," for(@d);
    $key=~s/,$//;
    # next if that key isn't in $fst: not all $fst combos were calculated.
    next if(!$$fst{$key});
    # apply the Fst with that key
    $node->bootstrap($$fst{$key});
  }

  $out->write_tree($treeIn);
}
bioperl fst • 2.4k views
ADD COMMENT
0
Entering edit mode

Or if there is a good way to apply Fst values as bootstrap values using a different mechanism than BioPerl, then I'll take that too (begrudgingly)

ADD REPLY
0
Entering edit mode
10.3 years ago
Lee Katz ★ 3.1k

Apparently I had to do $node->id($$fst{$key}) instead of ->bootstrap which is a really weird quirk to me. Hopefully that will help someone in the future.

ADD COMMENT
0
Entering edit mode

Quoting Jason Stajich's response on the BioPerl mailing list:

Bootstrap is not a fixed newick field - best thing is to set the internal ID to the bootstrap value, that is where it is read from when writing a newick tee.

replace $node->bootstrap( ... ) with $node->id( ... );

Or use NHX format which has separate fields for bootstrap and ID.

There is also a connivence function which will copy IDs to the bootstrap field on the whole tree, (move_id_to_boostrap defined Bio::Tree::TreeFunctionsI) but there is not a corresponding reverse function that would move bootstrap to id at the moment, though it would be trivial to add this patch if you think it is useful enough.

ADD REPLY

Login before adding your answer.

Traffic: 2214 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6