[Bioperl-l] How to show branch length value in tree
Roy Chaudhuri
roy.chaudhuri at gmail.com
Thu Aug 4 11:22:23 UTC 2011
Hi Shachi,
Please keep replies on the mailing list, that way others can follow the
discussion.
As I mentioned, it is not possible to draw njplot-style trees with
labelled branches using Bio::Tree::Draw::Cladogram, it currently only
labels nodes (you could perhaps add branch labels as a feature request
on Redmine).
The code I gave overwrites the existing "leaf" node ids (the accessions)
with branch lengths, if you want to also keep the existing labels you
could try something like:
for my $node ($t1->get_nodes) {
if ($node->is_Leaf) {
$node->id($node->branch_length.' '.$node->id);
} else {
$node->id($node->branch_length)
}
}
Cheers,
Roy.
On 04/08/2011 05:36, Shachi Gahoi wrote:
> Thank You so much. Now branch length is coming in tree.
>
> But I want Accesssion number in place of node id.
>
> I attached snapshot of tree as I want. Please tell me how can I do this.
>
>
>
>
> On Wed, Aug 3, 2011 at 7:31 PM, Roy Chaudhuri <roy.chaudhuri at gmail.com
> <mailto:roy.chaudhuri at gmail.com>> wrote:
>
> Sorry, the code had a typo, it should be:
>
>
> my $obj1 = Bio::Tree::Draw::Cladogram->__new(-bootstrap => 1,
> -tree => $t1,
> -compact => 0);
> for my $node ($t1->get_nodes) {
>
> $node->id($node->branch___length) if defined $node->branch_length;
> }
> $obj1->print(-file => "$dir/$stem.eps")
>
> On 03/08/2011 14:58, Roy Chaudhuri wrote:
>
> Hi Shachi,
>
> I don't think you can draw labels on branches using
> Bio::Tree::Draw::Cladogram. However, it will draw node labels,
> so you
> could copy the branch lengths over to the node ids:
>
> my $obj1 = Bio::Tree::Draw::Cladogram->__new(-bootstrap => 1,
> -tree => $t1,
> -compact => 0);
> for my $node ($tree->get_nodes) {
> $node->id($node->branch___length) if defined
> $node->branch_length;
> }
> $obj1->print(-file => "$dir/$stem.eps")
>
> Incidentally, in your script you write the tree out to a file,
> then read
> it back in using TreeIO. This is unnecessary, you can use $tree
> directly
> as input to Bio::Tree::Draw::Cladogram.
>
> Alternatively, you could write out a newick file and use non-Bioperl
> software such as njplot or MEGA to draw your tree with labelled
> branch
> lengths.
>
> Cheers,
> Roy.
>
> On 03/08/2011 07:00, Shachi Gahoi wrote:
>
> Dear All
>
> I am using Bio::Tree modules for constructing and drawing
> tree. *I am unable
> to show branch length value in tree.
> *
> Please tell me How can I do this, if anybody knows.
>
> Here is my script which i am using...and i also attached
> generated tree.
>
> Thanks in advance
>
> ##############################__##############################__##############################__######
>
> use Bio::AlignIO;
> use Bio::Align::ProteinStatistics;
> use Bio::Tree::DistanceFactory;
> use Bio::TreeIO;
> use Bio::Tree::Draw::Cladogram;
>
> # for a dna alignment
> # can also use ProteinStatistics
>
> my $alnio = Bio::AlignIO->new(-file => 'ADP.aln',
> -format=>'clustalw');
>
> my $dfactory = Bio::Tree::DistanceFactory->__new(-method =>
> 'UPGMA');
>
> my $stats = Bio::Align::ProteinStatistics-__>new;
>
> my $treeout = Bio::TreeIO->new(-format => 'newick', -file
> =>'>ADP1.dnd');
>
> while( my $aln = $alnio->next_aln )
> {
> my $mat = $stats->distance(-method => 'Kimura', -align
> => $aln);
>
> my $tree = $dfactory->make_tree($mat);
> $treeout->write_tree($tree);
> }
>
> my $dir = shift || '.';
>
> opendir(DIR, $dir) || die $!;
> for my $file ( readdir(DIR) )
> {
> next unless $file =~ /(\S+)\.dnd$/;
> my $stem = $1;
> my $treeio = Bio::TreeIO->new('-format' => 'newick',
> '-file' => "$dir/$file");
>
> if( my $t1 = $treeio->next_tree )
> {
> my $obj1 =
> Bio::Tree::Draw::Cladogram->__new(-bootstrap => 1,
> -tree
> => $t1,
>
> -compact => 0);
> $obj1->print(-file => "$dir/$stem.eps");
> }
> }
>
> ##############################__##############################__##############################__##############
>
>
>
>
> _________________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> <mailto:Bioperl-l at lists.open-bio.org>
> http://lists.open-bio.org/__mailman/listinfo/bioperl-l
> <http://lists.open-bio.org/mailman/listinfo/bioperl-l>
>
>
>
>
>
>
> --
> Regards,
> Shachi
More information about the Bioperl-l
mailing list