[Bioperl-l] possible filehandle out of scope bug between Bio::AlignIO and Bio::Tools::Run::Hmmer

Jason Stajich jason.stajich at duke.edu
Mon Apr 18 16:52:19 EDT 2005


i think it has more to do with not passing -q into hmmalign which 
causes AlignIO to barf since the first few lines are header from 
hmmalign.

I checked in your changes with some tweaks.  It seems to work for me -- 
added a test and all.

-jason
--
Jason Stajich
jason.stajich at duke.edu
http://www.duke.edu/~jes12/

On Apr 18, 2005, at 3:17 PM, Scott Markel wrote:

> Note: The context for this message assumes the code change
> to Bio::Tools::Run::Hmmer that I just sent to the mailing
> list.
>
> I'm running BioPerl-1.4 on both Windows XP (Perl 5.8.0) and
> cygwin (Perl 5.8.5).  I get the same behavior when I use
> BioPerl-1.5.
>
> When I run the following code, I get the error message
>
>   Can't call method "consensus_string" on an undefined value
>   at runHmmAlign.pl line 14.
>
> If I change $factory to $::factory, so that it doesn't go out
> of scope when the subroutine is done, then everything is fine.
>
> My Perl debugging skills aren't what they should be, so I'm
> not sure how to verify the following, but it looks like the
> destructor for Bio::Tools::Run::Hmmer clobbers the filehandle
> in Bio::AlignIO.  Similar code involving Bio::Tools::Run::Hmmer
> and Bio::SearchIO (for hmmsearch) does not have this problem.
>
> I checked the bug list, but didn't find anything for AlignIO
> and filehandle.
>
> Scott
>
> ==============================
> use strict;
> use warnings;
>
> use Bio::Tools::Run::Hmmer;
>
> my $hmmFile = shift;
> my $sequenceFile = shift;
>
> my $in = Bio::SeqIO->new(-file => $sequenceFile , -format => "fasta");
> my $sequence = $in->next_seq();
>
> my $hmmResults = runHmmAlign($hmmFile, $sequence);
> my $alignment = $hmmResults->next_aln();
> my $consensusString = $alignment->consensus_string();
> print("$consensusString\n");
>
> sub runHmmAlign
> {
>     my ($hmmFile, $sequence) = @_;
>
>     my $hmmResults;
>
>     eval
>     {
>         my $factory = Bio::Tools::Run::Hmmer->new("program" => 
> "hmmalign",
>                                                   "hmm"     => 
> $hmmFile);
>         $hmmResults = $factory->run($sequence);
>     };
>
>     if ($@)
>     {
>         die("hmmalign failed: $@\n");
>     }
>
>     return $hmmResults;
> }
> ==============================
>
> -- 
> Scott Markel, Ph.D.
> Principal Bioinformatics Architect  email:  smarkel at scitegic.com
> SciTegic Inc.                       mobile: +1 858 205 3653
> 9665 Chesapeake Drive, Suite 401    voice:  +1 858 279 8800, ext. 253
> San Diego, CA 92123                 fax:    +1 858 279 8804
> USA                                 web:    http://www.scitegic.com
>
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at portal.open-bio.org
> http://portal.open-bio.org/mailman/listinfo/bioperl-l
>



More information about the Bioperl-l mailing list