[Bioperl-l] PAML nssites model result object
Edward Chuong
echuong at gmail.com
Wed Mar 9 18:37:21 EST 2005
Hi Jason,
Thanks for the help.
The code seems to get stuck at
if( ! $node->ancestor || ! $node->has_tag('t') ) {
(this condition turns out true for every node, not just root, so it
always hits "next")
I used Data::Dumper to check on the node and I've pasted the
results--it seems like those tags aren't being sent in?
Thanks!
-Ed
'_root_cleanup_methods' => [
sub { "DUMMY" }
],
'_creation_id' => 0,
'_branch_length' => '0.613722',
'_desc' => {},
'_id' => 'NP_033437.2_mus',
'_ancestor' => bless( {
'_root_cleanup_methods' => [
$VAR1->{'_root_cleanup_methods'}[0]
],
'_creation_id' => 3,
'_desc' => {
'2' => bless( {
'_root_cleanup_methods' => [
$VAR1->{'_root_cleanup_methods'}[0]
],
'_creation_id' => 2,
'_branch_length' => '0.768322',
'_desc' => {},
'_id' => 'PM_BWp0001H02f',
'_ancestor' => $VAR1->{'_ancestor'},
'_root_verbose' => 0
}, 'Bio::Tree::Node' ),
'0' => $VAR1,
'1' => bless( {
'_root_cleanup_methods' => [
$VAR1->{'_root_cleanup_methods'}[0]
],
'_creation_id' => 1,
'_branch_length' => '0.366319',
'_desc' => {},
'_id' => 'NP_742070.1_rat',
'_ancestor' => $VAR1->{'_ancestor'},
'_root_verbose' => 0
}, 'Bio::Tree::Node' )
},
'_id' => '',
'_height' => undef,
'_root_verbose' => 0
}, 'Bio::Tree::Node' ),
'_root_verbose' => 0
}, 'Bio::Tree::Node' );
On Wed, 9 Mar 2005 18:01:34 -0500, Jason Stajich <jason.stajich at duke.edu> wrote:
> Resend with code pasted....
>
> #!/usr/bin/perl -w
> use strict;
> use Bio::Tools::Phylo::PAML;
>
> my $outcodeml = shift(@ARGV);
>
> my $paml_parser = new Bio::Tools::Phylo::PAML(-file => "./$outcodeml",
> -dir => "./");
> my $result = $paml_parser->next_result();
> my $MLmatrix = $result->get_MLmatrix(); # get MaxLikelihood Matrix
> my @otus = $result->get_seqs;
> if( $#{$MLmatrix} < 0 ) {
> for my $tree ($result->next_tree ) {
> for my $node ( $tree->get_nodes ) {
> my $id;
> if( $node->is_Leaf() ) {
> $id = $node->id;
> } else {
> $id = "(".join(",", map { $_->id } grep { $_->is_Leaf }
> $node->get_all_Descendents) .")";
> }
> if( ! $node->ancestor || ! $node->has_tag('t') ) {
> # skip when no values have been associated with this node
> # (like the root node)
> next;
> }
> # I know this looks complicated
> # but we use the get_tag_values method to pull out the annotations
> # for each branch
> # The ()[0] around the call is because get_tag_values returns a
> list
> # if we want to just get the 1st item in the list we have
> # to tell Perl we are treating it like an array.
> # in the future get_tag_values needs to be smart and just
> # return the 1st item in the array if called in scalar
> # context
>
> printf
> "%s\tt=%.3f\tS=%.1f\tN=%.1f\tdN/
> dS=%.4f\tdN=%.4f\tdS=%.4f\tS*dS=%.1f\tN*dN=%.1f\n",
> $id,
> map { ($node->get_tag_values($_))[0] }
> qw(t S N dN/dS dN dS), 'S*dS', 'N*dN';
> }
> }
> } else {
> my $i =0;
> my @seqs = $result->get_seqs;
> for my $row ( @$MLmatrix ) {
> print $seqs[$i++]->display_id, join("\t",@$row), "\n";
> }
> }
>
> On Mar 9, 2005, at 5:41 PM, Jason Stajich wrote:
>
> > I just updated things last week so this is brand-spanking-new. I
> > don't know if I connected everything up for NSsites stuff quite yet
> > as that is handled in - the branch-specific parsing should work now.
> > I don't know if the synopsis code is really up to snuff either. When
> > I get around to it I will try and see what still needs to be connected
> > in NSsites parsing.
> >
> > I don't think $node->param() is going to work -
> > $node->get_tag_values() is the way I've implemented it.
> >
> > <00parse_codeml.pl>
> >
> > -jason
> > --
> > Jason Stajich
> > jason.stajich at duke.edu
> > http://www.duke.edu/~jes12/
> >
> > On Mar 9, 2005, at 5:23 PM, Edward Chuong wrote:
> >
> >> Hi all,
> >>
> >> I'm trying to parse PAML results, and running into some trouble. I'm
> >> using branch specific omega model, and I want to get the branch
> >> specific ka/ks values out.
> >> http://cvs.bioperl.org/cgi-bin/viewcvs/viewcvs.cgi/bioperl-live/Bio/
> >> Tools/Phylo/PAML.pm?rev=HEAD&cvsroot=bioperl&content-type=text/
> >> vnd.viewcvs-markup
> >> says that $node->param('omega') should work, but Data::Dumper shows
> >> that this value isn't stored in the node (only branch lengths and seq
> >> IDs appear to be stored).
> >>
> >> I'm assuming that I can get these values out of the
> >> get_NSSite_result() Bio::Tools::Phylo::PAML::ModelResult object, but
> >> I'm not sure how to call it. The current synopsis uses
> >> "get_model_params" but it seems to be out of date because it's not in
> >> the current souce. The docs at
> >> http://cvs.bioperl.org/cgi-bin/viewcvs/viewcvs.cgi/bioperl-live/Bio/
> >> Tools/Phylo/PAML/Result.pm?rev=HEAD&cvsroot=bioperl&content-
> >> type=text/vnd.viewcvs-markup
> >> say to use my
> >> @results = @{$self->get_NSSite_results};
> >> --that looks like a mistake, and I've tried
> >> @result = $result->get_NSSite_results but that doesn't work either
> >> (just get undefined objs).
> >>
> >> Am I doing something wrong, or is this functionality still being
> >> worked on? I've tried using both 1.4 and the LIVE versions. Any help
> >> is appreciated, thanks!
> >>
> >> -Ed
> >> _______________________________________________
> >> Bioperl-l mailing list
> >> Bioperl-l at portal.open-bio.org
> >> http://portal.open-bio.org/mailman/listinfo/bioperl-l
> >>
>
>
--
Edward Chuong
(949) 939-2732
AIM: edawad85
More information about the Bioperl-l
mailing list