[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
>