[Bioperl-l] BioPerl and NHX tree

Laurence Amilhat Laurence.Amilhat at toulouse.inra.fr
Fri Jan 4 08:33:22 UTC 2008


Thank you Aaron,

it's working now. I've changed to species instead of taxid, so I can 
color the species on my tree using the ATV viewer.
thanks again,

Regards,

Laurence.



aaron.j.mackey at gsk.com a écrit :
> Instead of using TreeIO::newick to read the tree, use TreeIO::nhx -- that 
> way, your tree's nodes are already NodeNHX's.  Instead of creating a new 
> $nodenhx, you can use the $node variable directly from the tree ...
>
> -Aaron
>
> bioperl-l-bounces at lists.open-bio.org wrote on 01/03/2008 09:29:09 AM:
>
>   
>> Dear all,
>>
>> I am trying to convert a newick tree into an NHX tree, so I can add the 
>> taxid tag for each leaf.
>>
>> I am using the modules: Bio::TreeIO  & Bio::Tree::NodeNHX
>> The idea is
>> 1) to read the newick tree
>> 2) get the leaf, and get the corresponding taxid for it
>> 3) add the nhx species tag
>> 4) write the nhx tree
>>
>> I was able to do the first 2 steps, and I could create an object 
>> node_nhx and add the tag T,
>> but I don't know how to write an nhx Tree with the node_nhx previously 
>> created...
>>
>> Does anyone have an idea? any help are welcome.
>>
>> Thanks,
>>
>> laurence.
>>
>>
>> Here are my code and the samples files for better understanding:
>> newick2nhx.pl -f test_tree.nwk -o tata -c seq_taxid.txt
>>
>> _newick2nhx.pl:_
>> use strict;
>> use Bio::TreeIO;
>> use Bio::Tree::NodeNHX;
>> use Getopt::Long;
>>
>>
>> my $tree_file;
>> my $outfile;
>> my $codefile;
>> my %corresp;
>>
>> GetOptions('f|file:s' =>\$tree_file, 'o|out:s' =>\$outfile, 'c|code:s' 
>> =>\$codefile);
>>
>> open (CODE, "< $codefile");
>> while (<CODE>)
>> {
>>     chomp;
>>     my($a, $b)=split (/\t/);
>>     $corresp{$a}=$b;
>> }
>>
>>
>> my $treeio = new Bio::TreeIO (-format => 'newick', -file => 
>>     
> "$tree_file");
>   
>> my $treeout= new Bio::TreeIO (-format => 'nhx', -file =>">$outfile");
>>
>> while (my $tree= $treeio->next_tree)
>> {
>>     my @nodes=$tree->get_nodes();
>>     foreach my $nd(@nodes)
>>     {
>>         if ($nd->is_Leaf())
>>         {
>>             my $id=$nd->id();
>>             print "$id TAXID ",$corresp{$id},"\n";
>>
>>             my $nodenhx=new Bio::Tree::NodeNHX();
>>             $nodenhx->nhx_tag({T=>$corresp{$id}});
>>         }
>>     }
>>     $treeout->write_tree($tree);
>> }
>>
>>
>> _test_tree.nwk_:
>>
>>     
> (((((42558930:100.0,42558943:100.0):100.0,(42558969:100.0,(42558981:100.0,
>   
> 42558942:100.0):100.0):72.0):81.0,(((((90185247:100.0,56405380:100.0):100.0,
>   
>> (42558987:100.0,148887393:100.0):100.0):90.0,66774197:100.0):100.0,
>> AAEL015662:100.0):100.0,
>> 42558970:100.0):82.0):100.0,(42558929:100.0,42558958:100.0):79.0):100.0,
>> 42558941:100.0);
>>
>> _seq_taxid.txt:_
>> AAEL015662      7159
>> 42558969        9606
>> 42558981        10090
>> 42558942        9606
>> 42558970        6239
>> 42558929        10116
>> 42558987        9606
>> 42558930        10116
>> 42558943        9606
>> 148887393       10090
>> 42558958        10090
>> 42558941        9606
>> 56405380        10090
>> 90185247        9606
>> 66774197        6239
>>
>>
>> _And the tata resulting file:_
>> (((((42558930:100.0,42558943:100.0):100.0[&&NHX],(42558969:100.0,
>>
>>     
> (42558981:100.0,42558942:100.0):100.0[&&NHX]):72.0[&&NHX]):81.0[&&NHX],(((((
>   
>> 90185247:100.0,56405380:100.0):100.0[&&NHX],(42558987:100.0,
>> 148887393:100.0):100.0[&&NHX]):90.0[&&NHX],66774197:100.0):100.
>> 0[&&NHX],AAEL01566
>> 2:100.0):100.0[&&NHX],42558970:100.0):82.0[&&NHX]):100.0[&&NHX],
>>
>>     
> (42558929:100.0,42558958:100.0):79.0[&&NHX]):100.0[&&NHX],42558941:100.0);
>   
>>
>>
>> -- 
>> ====================================================================
>> = Laurence Amilhat    INRA Toulouse 31326 Castanet-Tolosan           = 
>> = Tel: 33 5 61 28 53 34   Email: laurence.amilhat at toulouse.inra.fr =
>> ====================================================================
>>
>>
>>
>> _______________________________________________
>> Bioperl-l mailing list
>> Bioperl-l at lists.open-bio.org
>> http://lists.open-bio.org/mailman/listinfo/bioperl-l
>>
>>     
>
>
>   


-- 
====================================================================
= Laurence Amilhat    INRA Toulouse 31326 Castanet-Tolosan     	   = 
= Tel: 33 5 61 28 53 34   Email: laurence.amilhat at toulouse.inra.fr =
====================================================================






More information about the Bioperl-l mailing list