Fields, Christopher J | 13 Feb 18:08 2013

Re: PhyloXML

On Feb 13, 2013, at 10:21 AM, Moretti S├ębastien <sebastien.moretti <at>> wrote:

>>>>> # Add annotation
>>>>> $treeio->add_phyloXML_annotation(-obj => $tree,
>>>>>                                -xml => '<name>SUMF family</name>',
>>>>>                               );
>>>> If you really have $treeio in your script in this line and not $tree, then that's at least one problem.
But the stack suggests that the above isn't the exact line in your script - can you confirm that?
>>>> 	-hilmar
>>> I replaced $treeio by $tree in the above line but still get an error.
>>> Don't see what you mean by "the stack suggests that the above isn't the exact line in your script"
>>> The only think I changed is the length of the xml string I try to insert. But get the same error with an empty
xml string.
>>> my $treeio = new Bio::TreeIO(-file   => "$infile",
>>>                             -format => 'phyloxml',
>>>                            );
>>> my $tree = $treeio->next_tree;
>>> # Add annotation
>>> $tree->add_phyloXML_annotation(-obj => $tree,
>>>                               -xml => '<name>SUMF family</name>',
>>>                              );
>>> Can't locate object method "add_phyloXML_annotation" via package
>>> 	"Bio::Tree::Tree" at ./ line 40, <GEN0> line 1 (#1)
>>>    (F) You called a method correctly, and it correctly indicated a package
>>>    functioning as a class, but that package doesn't define that particular
>>>    method, nor does any of its base classes.  See perlobj.
>>> Uncaught exception from user code:
>>> at ./ line 40
>> Will have to look into this.  One problem we have is that phyloXML support has dwindled, so if anyone wants
to take this on I would be more than happy to help them get started.
>> chris
> You mean that BioPerl 1.6.901 has not a full support of PhyloXML ?
> The problem I have is "expected" ?
> -- 
> S├ębastien Moretti

I think it handles most of phyloXML fine, but the implementation of the parser is a little tricky.  I tried
cleaning this up a few years back but didn't make much progress.

The function is in Bio::TreeIO::phyloxml, so the correct call should be (as you previously had it):

    $treeio->add_phyloXML_annotation(-obj => $tree,
                              -xml => '<name>SUMF family</name>',

My guess is that Bio::Tree::Tree was AnnotatableI at one point but that was removed, will have to trace that
back.  Can you file a bug on this?