[Bioperl-l] GenericHit vs. BlastHit

Paul Boutros pcboutro@engmail.uwaterloo.ca
Thu, 22 Aug 2002 13:28:45 -0400 (EDT)


Okay, I understand now the object design a bit better.  My problem was
that I was calling methods that were only found in BlastHit like ->bits()
rather than ->raw_score() and ->hit_length() instead of ->length().  It's
working fine now.

Thanks!
Paul

On Thu, 22 Aug 2002, Jason Stajich wrote:

> This is by design - Steve and I wrote different objects - the BlastHit and
> BlastHSP are Steve's but they shouldn't be fundamentally different from
> the GenericHit and GenericHSP.  The design is pretty different as Steve
> does lazy parsing in the objects + SearchIO::psiblast while I try and do
> event based parsing in the SearchIO::blast.pm.  We've agreed that the
> event based parsing is the way to go and
> BlastXX objects and related SearchIO::psiblast parser will be deprecated
> in 1.2 -- I have moved most of the necessary functions over to the
> GenericXX objects I just haven't tested and reimplemented all of them.
> This will happen for 1.2 though.
> 
> All the data from the blast report is stored in the Generic objects --
> what you are missing are the extra functions - but everything that is
> defined in the HSP::HSPI or Hit::HitI interfaces should be implemented by
> both objects.
> 
> The additional functions Steve implemented in BlastXX objects (seq_ind,
> hsp tiling, etc) hadn't been ported over from the BlastXX objects to
> GenericXX objects before 1.0 series was released.  A lot of it is on the
> main trunk and 1.1 release though.  What would like to do that you can't
> seem to do with the GenericXX objects?
> 
> -jason
> 
> On Thu, 22 Aug 2002, Paul Boutros wrote:
> 
> > Hi again,
> >
> > I'm doing some parsing of BLAST results with the SearchIO system, and it
> > appears that SearchIO is returning me GenericResult and GenericHit
> > objects, rather than the more detailed & specific BlastResult & BlastHit
> > objects.  Is this a feature, or is there some particular way of getting it
> > to return the BlastXXXX objects instead?  I'd prefer the Blast objects
> > because they have some methods that are not available through the generic
> > objects, like ->bits() for the bit-score.
> >
> > My code is:
> > use strict;
> > use Bio::SearchIO;
> >
> > my $searchio = new Bio::SearchIO(
> > 			'-format'	=> 'blast',
> > 			'-file'		=> '15k5prime.pre',
> > 			);
> >
> > while (my $result = $searchio->next_result()) {
> >
> > 	print $result->query_name(), "n";
> >
> > 	while (my $hit = $result->next_hit()) {
> > 		print $hit->significance(), "\n";
> > 		print $hit->hit_length(), "\n";
> > 		}
> >
> > 	}
> >
> > System:
> > Perl: 5.6.1
> > BioPerl: 1.00.2
> > OS: W2K (sp3)
> >
> > <Off topic> Incidentally, as a comment on the whole "question about the
> > nature of bioperl" thread, I have to point out that two days ago I hadn't
> > used BioPerl for anything.  Today, I couldn't imagine parsing my blast
> > output by hand again.  It works, and it's useful.  Search me about the
> > stuff I haven't used, but it took a day to learn which isn't remotely
> > significant for any large library.  I like it.</off topic>
> >
> > _______________________________________________
> > Bioperl-l mailing list
> > Bioperl-l@bioperl.org
> > http://bioperl.org/mailman/listinfo/bioperl-l
> >
> 
> -- 
> Jason Stajich
> Duke University
> jason at cgt.mc.duke.edu
>