annotate variant_effect_predictor/Bio/SearchIO/Writer/HTMLResultWriter.pm @ 2:a5976b2dce6f

changing defualt values for ensembl database
author mahtabm
date Thu, 11 Apr 2013 17:15:42 +1000
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: HTMLResultWriter.pm,v 1.12.2.4 2003/09/15 16:08:55 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::SearchIO::Writer::HTMLResultWriter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Jason Stajich <jason@bioperl.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # Changes 2003-07-31 (jason)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 # Gary has cleaned up the code a lot to produce better looking
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 # HTML
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 Bio::SearchIO::Writer::HTMLResultWriter - Object to implement writing a Bio::Search::ResultI in HTML.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 use Bio::SearchIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 use Bio::SearchIO::Writer::HTMLResultWriter;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 my $in = new Bio::SearchIO(-format => 'blast',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 -file => shift @ARGV);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 my $writer = new Bio::SearchIO::Writer::HTMLResultWriter();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 my $out = new Bio::SearchIO(-writer => $writer);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 $out->write_result($in->next_result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 # to filter your output
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 my $MinLength = 100; # need a variable with scope outside the method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 sub hsp_filter {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 my $hsp = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 return 1 if $hsp->length('total') > $MinLength;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 sub result_filter {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 my $result = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 return $hsp->num_hits > 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 my $writer = new Bio::SearchIO::Writer::HTMLResultWriter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 (-filters => { 'HSP' => \&hsp_filter} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 my $out = new Bio::SearchIO(-writer => $writer);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 $out->write_result($in->next_result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 # can also set the filter via the writer object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 $writer->filter('RESULT', \&result_filter);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 This object implements the SearchWriterI interface which will produce
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 a set of HTML for a specific Bio::Search::Report::ReportI interface.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 You can also provide the argument -filters => \%hash to filter the at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 the hsp, hit, or result level. %hash is an associative array which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 contains any or all of the keys (HSP, HIT, RESULT). The values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 pointed to by these keys would be references to a subroutine which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 expects to be passed an object - one of Bio::Search::HSP::HSPI,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 Bio::Search::Hit::HitI, and Bio::Search::Result::ResultI respectively.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 Each function needs to return a boolean value as to whether or not the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 passed element should be included in the output report - true if it is to be included, false if it to be omitted.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 For example to filter on sequences in the database which are too short
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 for your criteria you would do the following.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Define a hit filter method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 sub hit_filter {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 my $hit = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 return $hit->length E<gt> 100; # test if length of the hit sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 # long enough
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 my $writer = new Bio::SearchIO::Writer::TextResultWriter(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 -filters => { 'HIT' =E<gt> \&hit_filter }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 Another example would be to filter HSPs on percent identity, let's
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 only include HSPs which are 75% identical or better.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 sub hsp_filter {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 my $hsp = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 return $hsp->percent_identity E<gt> 75;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 my $writer = new Bio::SearchIO::Writer::TextResultWriter(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 -filters => { 'HSP' =E<gt> \&hsp_filter }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 See L<Bio::SearchIO::SearchWriterI> for more info on the filter method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 =head1 AUTHOR - Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Email jason-at-bioperl-dot-org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 Gary Williams G.Williams@hgmp.mrc.ac.uk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 package Bio::SearchIO::Writer::HTMLResultWriter;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 use vars qw(@ISA %RemoteURLDefault
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 $MaxDescLen $DATE $AlignmentLineWidth $Revision);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $Revision = '$Id: HTMLResultWriter.pm,v 1.12.2.4 2003/09/15 16:08:55 jason Exp $'; #'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 # Object preamble - inherits from Bio::Root::RootI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 $DATE = localtime(time);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 %RemoteURLDefault = ( 'PROTEIN' => 'http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=protein&cmd=search&term=%s',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 'NUCLEOTIDE' => 'http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=nucleotide&cmd=search&term=%s'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 $MaxDescLen = 60;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 $AlignmentLineWidth = 60;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 use Bio::SearchIO::SearchWriterI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 @ISA = qw(Bio::Root::Root Bio::SearchIO::SearchWriterI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Usage : my $obj = new Bio::SearchIO::Writer::HTMLResultWriter();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 Function: Builds a new Bio::SearchIO::Writer::HTMLResultWriter object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Returns : Bio::SearchIO::Writer::HTMLResultWriter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Args : -filters => hashref with any or all of the keys (HSP HIT RESULT)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 which have values pointing to a subroutine reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 which will expect to get a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 my($class,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 my $self = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 my ($p,$n,$filters) = $self->_rearrange([qw(PROTEIN_URL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 NUCLEOTIDE_URL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 FILTERS)],@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 $self->remote_database_url('p',$p || $RemoteURLDefault{'PROTEIN'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 $self->remote_database_url('n',$n || $RemoteURLDefault{'NUCLEOTIDE'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 if( defined $filters ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 if( !ref($filters) =~ /HASH/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 $self->warn("Did not provide a hashref for the FILTERS option, ignoring.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 while( my ($type,$code) = each %{$filters} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 $self->filter($type,$code);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 =head2 remote_database_url
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Title : remote_database_url
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 Usage : $obj->remote_database_url($type,$newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Function: This should return or set a string that contains a %s which can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 filled in with sprintf.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 Returns : value of remote_database_url
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Args : $type - 'PROTEIN' or 'P' for protein URLS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 'NUCLEOTIDE' or 'N' for nucleotide URLS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $value - new value to set [optional]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 sub remote_database_url{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 my ($self,$type,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 if( ! defined $type || $type !~ /^(P|N)/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 $self->warn("Must provide a type (PROTEIN or NUCLEOTIDE)");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 return '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 $type = uc $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 $self->{'remote_database_url'}->{$type} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 return $self->{'remote_database_url'}->{$type};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 =head2 to_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 Purpose : Produces data for each Search::Result::ResultI in a string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 : This is an abstract method. For some useful implementations,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 : see ResultTableWriter.pm, HitTableWriter.pm,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 : and HSPTableWriter.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 Usage : print $writer->to_string( $result_obj, @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 Argument : $result_obj = A Bio::Search::Result::ResultI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 : @args = any additional arguments used by your implementation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 Returns : String containing data for each search Result or any of its
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 : sub-objects (Hits and HSPs).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Throws : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 sub to_string {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 my ($self,$result,$num) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $num ||= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 return unless defined $result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my ($resultfilter,$hitfilter, $hspfilter) = ( $self->filter('RESULT'),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 $self->filter('HIT'),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $self->filter('HSP') );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 return '' if( defined $resultfilter && ! &{$resultfilter}($result) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 my ($qtype,$dbtype,$dbseqtype,$type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 my $alg = $result->algorithm;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 # This is actually wrong for the FASTAs I think
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 if( $alg =~ /T(FAST|BLAST)([XY])/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 $qtype = $dbtype = 'translated';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 $dbseqtype = $type = 'PROTEIN';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 } elsif( $alg =~ /T(FAST|BLAST)N/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 $qtype = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 $dbtype = 'translated';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 $type = 'PROTEIN';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 $dbseqtype = 'NUCLEOTIDE';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 } elsif( $alg =~ /(FAST|BLAST)N/i ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 $alg =~ /(WABA|EXONERATE)/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 $qtype = $dbtype = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 $type = $dbseqtype = 'NUCLEOTIDE';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 } elsif( $alg =~ /(FAST|BLAST)P/ || $alg =~ /SSEARCH/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 $qtype = $dbtype = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 $type = $dbseqtype = 'PROTEIN';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 } elsif( $alg =~ /(FAST|BLAST)[XY]/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 $qtype = 'translated';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $dbtype = 'PROTEIN';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $dbseqtype = $type = 'PROTEIN';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 print STDERR "algorithm was ", $result->algorithm, " couldn't match\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 my %baselens = ( 'Sbjct:' => ( $dbtype eq 'translated' ) ? 3 : 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 'Query:' => ( $qtype eq 'translated' ) ? 3 : 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 my $str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 if( ! defined $num || $num <= 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 $str = &{$self->start_report}($result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 $str .= &{$self->title}($result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 $str .= $result->algorithm_reference || $self->algorithm_reference($result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $str .= &{$self->introduction}($result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 $str .= "<table border=0>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 <tr><th>Sequences producing significant alignments:</th>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 <th>Score<br>(bits)</th><th>E<br>value</th></tr>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 my $hspstr = '<p><p>';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 if( $result->can('rewind')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 $result->rewind(); # support stream based parsing routines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 while( my $hit = $result->next_hit ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 next if( $hitfilter && ! &{$hitfilter}($hit) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 my $nm = $hit->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 $self->debug( "no $nm for name (".$hit->description(). "\n")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 unless $nm;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 my ($gi,$acc) = &{$self->id_parser}($nm);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 my $p = "%-$MaxDescLen". "s";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 my $descsub;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 if( length($hit->description) > ($MaxDescLen - 3) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 $descsub = sprintf($p,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 substr($hit->description,0,$MaxDescLen-3) . "...");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $descsub = sprintf($p,$hit->description);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 my $url_desc = &{$self->hit_link_desc()}($self,$hit, $result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 my $url_align = &{$self->hit_link_align()}($self,$hit, $result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 my @hsps = $hit->hsps;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 # failover to first HSP if the data does not contain a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 # bitscore/significance value for the Hit (NCBI XML data for one)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 $str .= sprintf('<tr><td>%s %s</td><td>%s</td><td><a href="#%s">%.2g</a></td></tr>'."\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 $url_desc, $descsub,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 ($hit->raw_score ? $hit->raw_score :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 (defined $hsps[0] ? $hsps[0]->score : ' ')),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 $acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 ( $hit->significance ? $hit->significance :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 (defined $hsps[0] ? $hsps[0]->evalue : ' '))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 $hspstr .= "<a name=\"$acc\">\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 sprintf("><b>%s</b> %s\n<dd>Length = %s</dd><p>\n\n", $url_align,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 defined $hit->description ? $hit->description : '',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 &_numwithcommas($hit->length));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 my $ct = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 foreach my $hsp (@hsps ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 next if( $hspfilter && ! &{$hspfilter}($hsp) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 $hspstr .= sprintf(" Score = %s bits (%s), Expect = %s",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 $hsp->bits, $hsp->score, $hsp->evalue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 if( defined $hsp->pvalue ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 $hspstr .= ", P = ".$hsp->pvalue;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 $hspstr .= "<br>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 $hspstr .= sprintf(" Identities = %d/%d (%d%%)",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 ( $hsp->frac_identical('total') *
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 $hsp->length('total')),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 $hsp->length('total'),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 $hsp->frac_identical('total') * 100);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 if( $type eq 'PROTEIN' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 $hspstr .= sprintf(", Positives = %d/%d (%d%%)",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 ( $hsp->frac_conserved('total') *
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 $hsp->length('total')),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 $hsp->length('total'),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 $hsp->frac_conserved('total') * 100);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 if( $hsp->gaps ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 $hspstr .= sprintf(", Gaps = %d/%d (%d%%)",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 $hsp->gaps('total'),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 $hsp->length('total'),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 (100 * $hsp->gaps('total') /
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 $hsp->length('total')));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 my ($hframe,$qframe) = ( $hsp->hit->frame, $hsp->query->frame);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 my ($hstrand,$qstrand) = ($hsp->hit->strand,$hsp->query->strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 # so TBLASTX will have Query/Hit frames
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 # BLASTX will have Query frame
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 # TBLASTN will have Hit frame
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 if( $hstrand || $qstrand ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 $hspstr .= ", Frame = ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 my ($signq, $signh);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 unless( $hstrand ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 $hframe = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 # if strand is null or 0 then it is protein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 # and this no frame
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 $signh = $hstrand < 0 ? '-' : '+';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 unless( $qstrand ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 $qframe = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 # if strand is null or 0 then it is protein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 $signq =$qstrand < 0 ? '-' : '+';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 # remember bioperl stores frames as 0,1,2 (GFF way)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 # BLAST reports reports as 1,2,3 so
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 # we have to add 1 to the frame values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 if( defined $hframe && ! defined $qframe) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 $hspstr .= "$signh".($hframe+1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 } elsif( defined $qframe && ! defined $hframe) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 $hspstr .= "$signq".($qframe+1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 $hspstr .= sprintf(" %s%d / %s%d",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 $signq,$qframe+1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $signh, $hframe+1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 # $hspstr .= "</pre></a><p>\n<pre>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 $hspstr .= "</a><p>\n<pre>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 my @hspvals = ( {'name' => 'Query:',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 'seq' => $hsp->query_string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 'start' => ($qstrand >= 0 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $hsp->query->start :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 $hsp->query->end),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 'end' => ($qstrand >= 0 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 $hsp->query->end :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 $hsp->query->start),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 'index' => 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 'direction' => $qstrand || 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 { 'name' => ' 'x6,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 'seq' => $hsp->homology_string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 'start' => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 'end' => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 'index' => 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 'direction' => 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 { 'name' => 'Sbjct:',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 'seq' => $hsp->hit_string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 'start' => ($hstrand >= 0 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 $hsp->hit->start :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 $hsp->hit->end),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 'end' => ($hstrand >= 0 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 $hsp->hit->end :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 $hsp->hit->start),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 'index' => 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 'direction' => $hstrand || 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 # let's set the expected length (in chars) of the starting number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 # in an alignment block so we can have things line up
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 # Just going to try and set to the largest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 my ($numwidth) = sort { $b <=> $a }(length($hspvals[0]->{'start'}),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 length($hspvals[0]->{'end'}),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 length($hspvals[2]->{'start'}),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 length($hspvals[2]->{'end'}));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 my $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 while ( $count <= $hsp->length('total') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 foreach my $v ( @hspvals ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 my $piece = substr($v->{'seq'}, $v->{'index'} + $count,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 $AlignmentLineWidth);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 my $cp = $piece;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 my $plen = scalar ( $cp =~ tr/\-//);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 my ($start,$end) = ('','');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 if( defined $v->{'start'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 $start = $v->{'start'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 # since strand can be + or - use the direction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 # to signify which whether to add or substract from end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 my $d = $v->{'direction'} * ( $AlignmentLineWidth - $plen )*
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 $baselens{$v->{'name'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 if( length($piece) < $AlignmentLineWidth ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 $d = (length($piece) - $plen) * $v->{'direction'} *
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 $baselens{$v->{'name'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 $end = $v->{'start'} + $d - $v->{'direction'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 $v->{'start'} += $d;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 $hspstr .= sprintf("%s %-".$numwidth."s %s %s\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 $v->{'name'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 $piece,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 $end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 $count += $AlignmentLineWidth;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 $hspstr .= "\n\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 $hspstr .= "</pre>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 # $hspstr .= "</pre>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 # make table of search statistics and end the web page
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 $str .= "</table><p>\n".$hspstr."<p><p><hr><h2>Search Parameters</h2><table border=1><tr><th>Parameter</th><th>Value</th>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 foreach my $param ( $result->available_parameters ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 $str .= "<tr><td>$param</td><td>". $result->get_parameter($param) ."</td></tr>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 $str .= "</table><p><h2>Search Statistics</h2><table border=1><tr><th>Statistic</th><th>Value</th></tr>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 foreach my $stat ( sort $result->available_statistics ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 $str .= "<tr><td>$stat</td><td>". $result->get_statistic($stat). "</td></th>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 $str .= "</table><P>".$self->footer() . "<P>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 return $str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 =head2 hit_link_desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 Title : hit_link_desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 Usage : $self->hit_link_desc(\&link_function);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 Function: Get/Set the function which provides an HTML
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 link(s) for the given hit to be used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 within the description section at the top of the BLAST report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 This allows a person reading the report within
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 a web browser to go to one or more database entries for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 the given hit from the description section.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 Returns : Function reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 Args : Function reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 See Also: L<default_hit_link_desc()>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 sub hit_link_desc{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 my( $self, $code ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 if ($code) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 $self->{'_hit_link_desc'} = $code;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 return $self->{'_hit_link_desc'} || \&default_hit_link_desc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 =head2 default_hit_link_desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 Title : defaulthit_link_desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 Usage : $self->default_hit_link_desc($hit, $result)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 Function: Provides an HTML link(s) for the given hit to be used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 within the description section at the top of the BLAST report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 This allows a person reading the report within
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 a web browser to go to one or more database entries for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 the given hit from the description section.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 Returns : string containing HTML markup "<a href...")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 The default implementation returns an HTML link to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 URL supplied by the remote_database_url() method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 and using the identifier supplied by the id_parser() method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 It will use the NCBI GI if present, and the accession if not.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 Args : First argument is a Bio::Search::Hit::HitI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 Second argument is a Bio::Search::Result::ResultI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 See Also: L<hit_link_align>, L<remote_database>, L<id_parser>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 sub default_hit_link_desc {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 my($self, $hit, $result) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 my $type = ( $result->algorithm =~ /(P|X|Y)$/i ) ? 'PROTEIN' : 'NUCLEOTIDE';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 my ($gi,$acc) = &{$self->id_parser}($hit->name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 my $url = length($self->remote_database_url($type)) > 0 ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 sprintf('<a href="%s">%s</a>',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 sprintf($self->remote_database_url($type),$gi || $acc),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 $hit->name()) : $hit->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 return $url;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 =head2 hit_link_align
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 Title : hit_link_align
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 Usage : $self->hit_link_align(\&link_function);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 Function: Get/Set the function which provides an HTML link(s)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 for the given hit to be used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 within the HSP alignment section of the BLAST report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 This allows a person reading the report within
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 a web browser to go to one or more database entries for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 the given hit from the alignment section.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 Returns : string containing HTML markup "<a href...")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 The default implementation delegates to hit_link_desc().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 Args : First argument is a Bio::Search::Hit::HitI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 Second argument is a Bio::Search::Result::ResultI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 See Also: L<hit_link_desc>, L<remote_database>, L<id_parser>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 sub hit_link_align {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 my ($self,$code) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 if ($code) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 $self->{'_hit_link_align'} = $code;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 return $self->{'_hit_link_align'} || \&default_hit_link_desc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 =head2 start_report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 Title : start_report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 Usage : $index->start_report( CODE )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 Function: Stores or returns the code to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 write the start of the <HTML> block, the <TITLE> block
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 and the start of the <BODY> block of HTML. Useful
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 for (for instance) specifying alternative
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 HTML if you are embedding the output in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 an HTML page which you have already started.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 (For example a routine returning a null string).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 Returns \&default_start_report (see below) if not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 Example : $index->start_report( \&my_start_report )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 Returns : ref to CODE if called without arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 Args : CODE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 sub start_report {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 my( $self, $code ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 if ($code) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 $self->{'_start_report'} = $code;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 return $self->{'_start_report'} || \&default_start_report;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 =head2 default_start_report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 Title : default_start_report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 Usage : $self->default_start_report($result)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 Function: The default method to call when starting a report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 Returns : sting
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 Args : First argument is a Bio::Search::Result::ResultI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 sub default_start_report {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 my ($result) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 return sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 qq{<HTML>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 <HEAD> <CENTER><TITLE>Bioperl Reformatted HTML of %s output with Bioperl Bio::SearchIO system</TITLE></CENTER></HEAD>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 <!------------------------------------------------------------------->
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 <!-- Generated by Bio::SearchIO::Writer::HTMLResultWriter -->
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 <!-- %s -->
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 <!-- http://bioperl.org -->
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 <!------------------------------------------------------------------->
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 <BODY BGCOLOR="WHITE">
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 },$result->algorithm,$Revision);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 =head2 title
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 Title : title
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 Usage : $self->title($CODE)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 Function: Stores or returns the code to provide HTML for the given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 BLAST report that will appear at the top of the BLAST report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 HTML output. Useful for (for instance) specifying
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 alternative routines to write your own titles.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 Returns \&default_title (see below) if not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 Example : $index->title( \&my_title )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 Returns : ref to CODE if called without arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 Args : CODE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 sub title {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 my( $self, $code ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 if ($code) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 $self->{'_title'} = $code;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 return $self->{'_title'} || \&default_title;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 =head2 default_title
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 Title : default_title
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 Usage : $self->default_title($result)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 Function: Provides HTML for the given BLAST report that will appear
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 at the top of the BLAST report HTML output.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 Returns : string containing HTML markup
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 The default implementation returns <CENTER> <H1> HTML
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 containing text such as:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 "Bioperl Reformatted HTML of BLASTP Search Report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 for gi|1786183|gb|AAC73113.1|"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 Args : First argument is a Bio::Search::Result::ResultI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 sub default_title {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 my ($result) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 return sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 qq{<CENTER><H1><a href="http://bioperl.org">Bioperl</a> Reformatted HTML of %s Search Report<br> for %s</H1></CENTER>},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 $result->algorithm,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 $result->query_name());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 =head2 introduction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 Title : introduction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 Usage : $self->introduction($CODE)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 Function: Stores or returns the code to provide HTML for the given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 BLAST report detailing the query and the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 database information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 Useful for (for instance) specifying
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 routines returning alternative introductions.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 Returns \&default_introduction (see below) if not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 Example : $index->introduction( \&my_introduction )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 Returns : ref to CODE if called without arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 Args : CODE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 sub introduction {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 my( $self, $code ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 if ($code) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 $self->{'_introduction'} = $code;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 return $self->{'_introduction'} || \&default_introduction;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 =head2 default_introduction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 Title : default_introduction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 Usage : $self->default_introduction($result)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 Function: Outputs HTML to provide the query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 and the database information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 Returns : string containing HTML
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 Args : First argument is a Bio::Search::Result::ResultI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 Second argument is string holding literature citation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 sub default_introduction {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 my ($result) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 return sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 qq{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 <b>Query=</b> %s %s<br><dd>(%s letters)</dd>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 <p>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 <b>Database:</b> %s<br><dd>%s sequences; %s total letters<p></dd>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 <p>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 $result->query_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 $result->query_description,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 &_numwithcommas($result->query_length),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 $result->database_name(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 &_numwithcommas($result->database_entries()),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 &_numwithcommas($result->database_letters()),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 =head2 end_report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 Title : end_report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 Usage : $self->end_report()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 Function: The method to call when ending a report, this is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 mostly for cleanup for formats which require you to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 have something at the end of the document (</BODY></HTML>)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 for HTML
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 Returns : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 sub end_report {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 return "</BODY>\n</HTML>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 # copied from Bio::Index::Fasta
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 # useful here as well
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 =head2 id_parser
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 Title : id_parser
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 Usage : $index->id_parser( CODE )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 Function: Stores or returns the code used by record_id to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 parse the ID for record from a string. Useful
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 for (for instance) specifying a different
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 parser for different flavours of FASTA file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 Returns \&default_id_parser (see below) if not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 set. If you supply your own id_parser
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 subroutine, then it should expect a fasta
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 description line. An entry will be added to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 the index for each string in the list returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 Example : $index->id_parser( \&my_id_parser )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 Returns : ref to CODE if called without arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 Args : CODE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 sub id_parser {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 my( $self, $code ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 if ($code) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 $self->{'_id_parser'} = $code;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 return $self->{'_id_parser'} || \&default_id_parser;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 =head2 default_id_parser
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 Title : default_id_parser
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 Usage : $id = default_id_parser( $header )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 Function: The default Fasta ID parser for Fasta.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 Returns $1 from applying the regexp /^>\s*(\S+)/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 to $header.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 Returns : ID string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 The default implementation checks for NCBI-style
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 identifiers in the given string ('gi|12345|AA54321').
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 For these IDs, it extracts the GI and accession and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 returns a two-element list of strings (GI, acc).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 Args : a fasta header line string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 sub default_id_parser {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 my ($string) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 my ($gi,$acc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 if( $string =~ s/gi\|(\d+)\|?// )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 { $gi = $1; $acc = $1;}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 if( $string =~ /(\w+)\|([A-Z\d\.\_]+)(\|[A-Z\d\_]+)?/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 $acc = defined $2 ? $2 : $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 $acc = $string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 $acc =~ s/^\s+(\S+)/$1/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 $acc =~ s/(\S+)\s+$/$1/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 return ($gi,$acc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 sub MIN { $a <=> $b ? $a : $b; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 sub MAX { $a <=> $b ? $b : $a; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 sub footer {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 return "<hr><h5>Produced by Bioperl module ".ref($self)." on $DATE<br>Revision: $Revision</h5>\n"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 =head2 algorithm_reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 Title : algorithm_reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 Usage : my $reference = $writer->algorithm_reference($result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 Function: Returns the appropriate Bibliographic reference for the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 algorithm format being produced
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 Returns : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 Args : L<Bio::Search::Result::ResultI> to reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 sub algorithm_reference {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 my ($self,$result) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 return '' if( ! defined $result || !ref($result) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 ! $result->isa('Bio::Search::Result::ResultI')) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 if( $result->algorithm =~ /BLAST/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 my $res = $result->algorithm . ' ' . $result->algorithm_version . "<p>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 if( $result->algorithm_version =~ /WashU/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 return $res .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 "Copyright (C) 1996-2000 Washington University, Saint Louis, Missouri USA.<br>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 All Rights Reserved.<p>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 <b>Reference:</b> Gish, W. (1996-2000) <a href=\"http://blast.wustl.edu\">http://blast.wustl.edu</a><p>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 return $res .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 "<b>Reference:</b> Altschul, Stephen F., Thomas L. Madden, Alejandro A. Schaffer,<br>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997),<br>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 \"Gapped BLAST and PSI-BLAST: a new generation of protein database search<br>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 programs\", Nucleic Acids Res. 25:3389-3402.<p>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 } elsif( $result->algorithm =~ /FAST/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 return $result->algorithm . " " . $result->algorithm_version . "<br>" .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 "\n<b>Reference:</b> Pearson et al, Genomics (1997) 46:24-36<p>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 return '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 # from Perl Cookbook 2.17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 sub _numwithcommas {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 my $num = reverse( $_[0] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 $num =~ s/(\d{3})(?=\d)(?!\d*\.)/$1,/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 return scalar reverse $num;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 =head2 Methods Bio::SearchIO::SearchWriterI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 L<Bio::SearchIO::SearchWriterI> inherited methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 =head2 filter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 Title : filter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 Usage : $writer->filter('hsp', \&hsp_filter);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 Function: Filter out either at HSP,Hit,or Result level
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 Args : string => data type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 CODE reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 1;