[Bioperl-l] Fwd: Problems with HPSTableWriter
Andy Nunberg
anunberg@oriongenomics.com
Tue, 14 May 2002 13:55:25 -0500
>Date: Tue, 14 May 2002 11:01:13 -0500
>To: sac@bioperl.org
>From: Andy Nunberg <anunberg@oriongenomics.com>
>Subject: Problems with HPSTableWriter
>
>Steve,
>thanks for your reply.
>I tried the HSPTable writer with default columns(all) and I get all 0's for
>results.
>When I specify columns I do get data, except for frame(query frame) and bits
>parsing a tblastx blast report using ncbi blast 2.02.12 (I am
>calling frame,bits,score in columns). The score value printed is actually
the bit value
>I am also missing subject strand info on some but not all of the HSP's.
>
>Similarly when parsing a blastx report I am missing bits and score as well
>as frame info.
>
>I tried using the HitWriter calling the same columns as your old table_tiled
>in Bio::Tools::Blast.pm
>Here it looks good except I get no bits returned when parsing a TBLASTX
report.
>
>Is this fixable?
>Andy
>
>ps. Below is the script I used for HSPTable, its essentially the script
>found in the bioperl/examples
>use strict;
>use lib '/u11/bioperl-1.0';
>
>use Bio::SearchIO;
>use Bio::SearchIO::Writer::HSPTableWriter;
>
># These are the columns that will be in the output table of BLAST results.
>my @columns = qw(
> query_name
> query_length
> hit_name
> hit_length
> rank
> expect
> score
> bits
> frac_identical_query
> frac_conserved_query
> length_aln_query
> length_aln_hit
> gaps_query
> gaps_hit
> start_query
> end_query
> start_hit
> end_hit
> strand_query
> strand_hit
> frame
> hit_description
> );
>
>
>print STDERR "\nUsing SearchIO->new()\n";
>
># Note that all parameters for the $in, $out, and $writer objects are
optional.
># Default in = STDIN; Default out = STDOUT; Default writer = all columns
># In this example, we're reading from STDIN and writing to a STDOUT
>my $in = Bio::SearchIO->new( -format => 'psiblast', -file => $ARGV[0] );
>my $writer = Bio::SearchIO::Writer::HSPTableWriter->new(-columns =>
\@columns);
>my $out = Bio::SearchIO->new( -format => 'psiblast',
> -writer => $writer,
> );
>
>while ( my $result = $in->next_result() ) {
> #printf STDERR "\nReport %d: $result\n", $in->report_count;
>
> if( $result->hits ) {
> $out->write_result($result, ($in->report_count - 1 ? 0 : 1) );
> }
> else {
>
> print "Hitless Blast Report: $result\n";
> #print STDERR ($result->no_hits_found ? "\n" : "(filtered)\n");
> }
>
> ## For a simple progress monitor, uncomment this line:
> #print STDERR "."; print STDERR "\n" if $in->report_count % 50 == 0;
>}
>
>printf STDERR "\n%d Blast report(s) processed.\n", $in->report_count;
>printf STDERR "Output sent to file: %s\n", $out->file if $out->file;
>
*******************************************************************
Andy Nunberg, Ph.D
Computational Biologist
Orion Genomics, LLC
(314) 615-6989
http://www.oriongenomics.com