[Bioperl-l] Error calling alignment method

Jason Stajich jason.stajich at gmail.com
Tue May 31 16:31:26 UTC 2011


Please provide exactly the script you are using or an exact simplified script that causes the error -  we can't reproduce your problem without.

On May 31, 2011, at 4:26 AM, Lorenzo Carretero Paulet wrote:

> Hi,
> 
> The last versions of my script had the typo corrected:
> 
>   my $kaks_factory = new Bio::Tools::Run::Phylo::PAML::Codeml
> 
>                          (     -params =>       {
> 
>                                              #'verbose' =>  0,
> 
>                                              #'noisy' =>  0,
> 
>                                              'runmode' =>  -2,
> 
>                                             'seqtype' =>  1,
> 
>                                             #'model' =>  0,
> 
>                                             #'NSsites' =>  0,
> 
>                                             #'icode' =>  0,
> 
>                                             #'fix_alpha' =>  0,
> 
>                                             #'fix_kappa' =>  0,
> 
>                                             #'RateAncestor' =>  0,
> 
>                                            'CodonFreq' =>  2,
> 
>                                            'cleandata' =>  1,
> 
>                                            'ndata' =>  1
> 
>                                           },
> 
>                            
>                          );
> 
>                      
>   $kaks_factory->alignment($dna_aln);
> 
> 
> but still returns the same error.
> Best,
> Lorenzo
> 
> 
> 
> 
>   El 27/05/11 21:45, Jason Stajich escribió:
> 
>> Lorenzo -
>> 
>> The problem is not that $dna_alignment is not defined - that is not
>> what the error message is saying.
>> It is saying you can't call 'alignment' on an undefined value
>> 
>> This is the line:
>>   my $kaks_factory->alignment($dna_aln);
>> Should be
>>  $ks_factory->alignment($dna_aln);
>> 
>> If you star with the simple code in the perldoc you can see how the
>> steps are intended to be run.
>>          my $codeml = Bio::Tools::Run::Phylo::PAML::Codeml->new();
>>          $codeml->alignment($aln);
>>          my ($rc,$parser) = $codeml->run();
>>          my $result = $parser->next_result;
>>          my $MLmatrix = $result->get_MLmatrix();
>>          print "Ka = ", $MLmatrix->[0]->[1]->{'dN'},"\n";
>> 
>> You can also initialize the Codeml object with the alignment directly
>>   my $ks_factory = new Bio::Tools::Run::Phylo::PAML::Codeml(-alignment
>> =>  $dna_aln,
>>                -params =>  .... ); # as you did before
>> 
>> 
>> On May 25, 10:58 am, Lorenzo Carretero Paulet<locar... at upvnet.upv.es>
>> wrote:
>>> Hi all,
>>> I'm trying to create the following subroutine but I get the error message:
>>> "Can't call method "alignment" on an undefined value at
>>> /Users/marioafares/Documents/workspace/PlantEvolGen/test.pl line 80,
>>> <GEN1>  line 2."
>>> which indicates $dna_aln is undefined. However, I manage to print it
>>> using Dumper, so I guess it is actually defined.
>>> Can anyone see where the problem is?
>>> I attach the two files I'm using in the test.
>>> Thanks in advance,
>>> Lorenzo
>>> 
>>>     #!/usr/local/bin/perl -w
>>>     use 5.010;
>>>     use strict;
>>>     use Data::Dumper;
>>>     # definition of the environmental variable CLUSTALDIR
>>>     BEGIN {$ENV{CLUSTALDIR} =
>>>     '/Applications/Bioinformatics/clustalw-2.1-macosx/'}
>>>     use Bio::Tools::Run::Alignment::Clustalw;
>>>     use Bio::Align::Utilities qw(aa_to_dna_aln);
>>> 
>>>     BEGIN {$ENV{PAMLDIR} = '/Applications/Bioinformatics/paml44/bin/'}
>>>     use Bio::Tools::Run::Phylo::PAML::Codeml;
>>> 
>>>     my $sequencesfilenameAA =
>>>     "/Users/marioafares/Documents/SequenceDatabase/plaza_public_02_Apr27/plaza_ public_02/BLAST_Parsed_results/PerSpecies/test_vs_test.par.aa.1.fas";
>>> 
>>>     my $sequencesfilenameNT =
>>>     "/Users/marioafares/Documents/SequenceDatabase/plaza_public_02_Apr27/plaza_ public_02/BLAST_Parsed_results/PerSpecies/test_vs_test.par.nt.1.fas";
>>> 
>>>     my $format = 'fasta';
>>> 
>>>     GettingBioperlAlignmentAAtoDNAplusPAMLcalculation
>>>     ($sequencesfilenameAA, $sequencesfilenameNT, $format);
>>> 
>>>     sub GettingBioperlAlignmentAAtoDNAplusPAMLcalculation
>>>     {
>>>     my ( $sequencesfilenameAA, $sequencesfilenameNT, $format, $ktuple,
>>>     $matrix  ) = @_;
>>>     my %hashNTseqs = ();
>>>     my $likelihood;
>>>     my $Ks;
>>>     my $Ka;
>>>     my $omega;
>>>     my $factory = Bio::Tools::Run::Alignment::Clustalw->new (); #use
>>>     default parameters in here
>>>     my $pep_aln = $factory->align($sequencesfilenameAA);
>>> 
>>>     my $inseq = Bio::SeqIO->new(-file =>  "<$sequencesfilenameNT",
>>>                                  -format =>  $format );
>>>          while (my $seq = $inseq->next_seq)
>>>              {
>>>              my $seq_id = $seq->display_id();
>>>              $hashNTseqs{$seq_id} = $seq;
>>>              }
>>>     my $dna_aln = aa_to_dna_aln($pep_aln, \%hashNTseqs);
>>>     say Dumper \%hashNTseqs;
>>>     say Dumper $dna_aln;
>>>     ###########################################################
>>>     #my $codeml_runs = 5;
>>>     my $ks_factory = new Bio::Tools::Run::Phylo::PAML::Codeml
>>>                            (     -params =>       {
>>>                                                #'verbose' =>  0,
>>>                                                #'noisy' =>  0,
>>>                                                'runmode' =>  -2,
>>>                                               'seqtype' =>  1,
>>>                                               #'model' =>  0,
>>>                                               #'NSsites' =>  0,
>>>                                               #'icode' =>  0,
>>>                                               #'fix_alpha' =>  0,
>>>                                               #'fix_kappa' =>  0,
>>>                                               #'RateAncestor' =>  0,
>>>                                              'CodonFreq' =>  2,
>>>                                              'cleandata' =>  1,
>>>                                              'ndata' =>  1
>>>                                             },
>>> 
>>>                            );
>>> 
>>>     my $kaks_factory->alignment($dna_aln);
>>> 
>>>     say "\nCalculating Ks-values of current cluster ...";
>>> 
>>>          # The estimation of the Ks-values is repeated $codeml_runs
>>>     times ...
>>>     #    for(my $k=1;$k<= $codeml_runs;$k++)
>>>     #    {
>>>     #        print "\nCodeml-Run $k:\n\n";
>>> 
>>>              # Ka and Ks-vlaues are calculated using codeml
>>>              my ($rc,$parser) = $kaks_factory->run();
>>>              #$kaks_factory->cleanup();
>>>              # If the calculation was succsessful ...
>>>     #        if($rc != 0)
>>>     #        {
>>>                  my $result = $parser->next_result;#not sure what it
>>>     does here
>>>                  #my $NGmatrix = $result->get_MLmatrix();
>>>                  my $MLmatrix = $result->get_MLmatrix();
>>>                      $likelihood = $MLmatrix->[0]->[1]->{'lnL'};
>>>                      $Ks = $MLmatrix->[0]->[1]->{'dS'};
>>>                      $Ka = $MLmatrix->[0]->[1]->{'dA'};
>>>                      $omega = $MLmatrix->[0]->[1]->{'omega'};
>>>                      print " likelihood = $likelihood, Ka = $Ka, Ks =
>>>     $Ks, Ka/Ks = $omega\n";
>>>     #        }
>>>     #        else # If an error occured during the Ks-calculation ...
>>>     #        {
>>>     #            return (-1);
>>>     #        }
>>>     #    }
>>>     return ( $likelihood, $Ks, $Ka, $omega );
>>>     }
>>> 
>>> --
>>> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
>>> Lorenzo Carretero Paulet
>>> Institute for Plant Molecular and Cell Biology - IBMCP (CSIC-UPV)
>>> Integrative Systems Biology Group
>>> C/ Ingeniero Fausto Elio s/n.
>>> 46022 Valencia, Spain
>>> 
>>> Phone:  +34 963879934
>>> Fax:    +34 963877859
>>> e-mail:locar... at upvnet.upv.es
>>> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
>>> 
>>>  test_vs_test.par.nt.1.fas
>>> 3KViewDownload
>>> 
>>>  test_vs_test.par.aa.1.fas
>>> 1KViewDownload
>>> 
>>> _______________________________________________
>>> Bioperl-l mailing list
>>> Bioper... at lists.open-bio.orghttp://lists.open-bio.org/mailman/listinfo/bioperl-l
>> _______________________________________________
>> Bioperl-l mailing list
>> Bioperl-l at lists.open-bio.org
>> http://lists.open-bio.org/mailman/listinfo/bioperl-l
> 
> 
> -- 
> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
> Lorenzo Carretero Paulet
> Institute for Plant Molecular and Cell Biology - IBMCP (CSIC-UPV)
> Integrative Systems Biology Group
> C/ Ingeniero Fausto Elio s/n.
> 46022 Valencia, Spain
> 
> Phone:  +34 963879934
> Fax:    +34 963877859
> e-mail: locarpau at upvnet.upv.es
> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
> 
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l





More information about the Bioperl-l mailing list