annotate variant_effect_predictor/Bio/Tools/Run/StandAloneBlast.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: StandAloneBlast.pm,v 1.23.2.3 2003/03/29 20:18:51 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::Tools::StandAloneBlast
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Peter Schattner
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Peter Schattner
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 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 Bio::Tools::Run::StandAloneBlast - Object for the local execution of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 NCBI Blast program suite (blastall, blastpgp, bl2seq)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 Local-blast "factory object" creation and blast-parameter initialization:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 @params = ('database' => 'swissprot','outfile' => 'blast1.out',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 '_READMETHOD' => 'Blast');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 $factory = Bio::Tools::Run::StandAloneBlast->new(@params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 Blast a sequence against a database:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 $str = Bio::SeqIO->new(-file=>'t/amino.fa' , '-format' => 'Fasta' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 $input = $str->next_seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 $input2 = $str->next_seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 $blast_report = $factory->blastall($input);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 Run an iterated Blast (psiblast) of a sequence against a database:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 $factory->j(3); # 'j' is blast parameter for # of iterations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 $factory->outfile('psiblast1.out');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 $factory = Bio::Tools::Run::StandAloneBlast->new(@params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 $blast_report = $factory->blastpgp($input);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 Use blast to align 2 sequences against each other:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 $factory = Bio::Tools::Run::StandAloneBlast->new('outfile' => 'bl2seq.out');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 $factory->bl2seq($input, $input2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 Various additional options and input formats are available. See the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 DESCRIPTION section for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 This DESCRIPTION only documents Bio::Tools::Run::StandAloneBlast: - a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 Bioperl object for running the NCBI standAlone BLAST package. Blast,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 itself, is a large & complex program - for more information regarding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 BLAST, please see the BLAST documentation which accompanies the BLAST
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 distribution. BLAST is available from ftp://ncbi.nlm.nih.gov/blast/.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 (A source of confusion in documenting a BLAST interface is that the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 term "program" is used in - at least - three different ways in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 BLAST documentation. In this DESCRIPTION, "program" will refer to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 BLAST routine set by BLAST's C<-p> parameter that can be set to blastn,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 blastp, tblastx etc. We will use the term Blast "executable" to refer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 to the various different executable files that may be called - ie
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 blastall, blastpgp or bl2seq. In addition, there are several BLAST
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 capabilities (which are also referred to as "programs") and are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 implemented by using specific combinations of BLAST executables,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 programs and parameters. They will be referred by their specific
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 names - eg PSIBLAST and PHIBLAST. )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 StandAloneBlast has been tested so far only under Linux. I expect
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 that it should also work under other Unix systems. However, since the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 module is implemented using (unix) system calls, modification may be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 necessary before StandAloneBlast would work under non-Unix
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 operating systems (eg Windows, MacOS). Before running
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 StandAloneBlast it is necessary: to install BLAST on your system,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 to edit set the environmental variable $BLASTDIR or your $PATH
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 variable to point to the BLAST directory, and to ensure that users
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 have execute privileges for the BLAST program. If the databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 which will be searched by BLAST are located in the data subdirectory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 of the blast program directory (the default installation location),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 StandAloneBlast will find them; however, if the database files are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 located in any other location, environmental variable $BLASTDATADIR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 will need to be set to point to that directory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 The use of the StandAloneBlast module is as follows: Initially, a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 local blast "factory object" is created. The constructor may be passed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 an optional array of (non-default) parameters to be used by the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 factory, eg:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 @params = ('program' => 'blastn', 'database' => 'ecoli.nt');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 $factory = Bio::Tools::Run::StandAloneBlast->new(@params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 Any parameters not explicitly set will remain as the defaults of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 BLAST executable. Note each BLAST executable has somewhat different
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 parameters and options. See the BLAST Documentation for a description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 or run the BLAST executable from the command line followed solely with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 a "-" to see a list of options and default values for that executable;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 eg E<gt>blastall -.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 BLAST parameters can be changed and/or examined at any time after the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 factory has been created. The program checks that any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 parameter/switch being set/read is valid. Except where specifically
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 noted, StandAloneBlast uses the same single-letter, case-sensitive
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 parameter names as the actual blast program. Currently no checks are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 included to verify that parameters are of the proper type (eg string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 or numeric) or that their values are within the proper range.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 As an example, to change the value of the Blast parameter 'e' ('e' is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 the parameter for expectation-value cutoff)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 $expectvalue = 0.01;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 $factory->e($expectvalue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 Note that for improved script readibility one can modify the name of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 the BLAST parameters as desired as long as the initial letter (and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 case) of the parameter are preserved, eg
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $factory-E<gt>expectvalue($expectvalue); Unfortunately, some of the BLAST
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 parameters are not the single letter one might expect (eg "iteration
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 round" in blastpgp is 'j'). Again one can check by using (eg)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 > blastpgp - .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 Once the factory has been created and the appropriate parameters set,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 one can call one of the supported blast executables. The input
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 sequence(s) to these executables may be fasta file(s) as described in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 the BLAST documentation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 $inputfilename = 't/testquery.fa';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 $blast_report = $factory->blastall($inputfilename);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 In addition, sequence input may be in the form of either a Bio::Seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 object or or an array of Bio::Seq objects, eg
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 $input = Bio::Seq->new(-id=>"test query",-seq=>"ACTACCCTTTAAATCAGTGGGGG");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 $blast_report = $factory->blastall($input);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 For blastall and non-psiblast blastpgp runs, report object is either a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 BPlite.pm or Bio::SearchIO object, selected by the user with the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 parameter _READMETHOD. (The leading underscore is needed to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 distinguish this option from options which are passed to the BLAST
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 executable.) The default parser is Bio::SearchIO::blast. For
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 (multiple iteration) psiblast and bl2seq runs the report is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 automatically parsed by the BPpsilite.pm and BPbl2seq.pm parsers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 respectively, since neither Blast.pm nor BPlite can parse these
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 reports. In any case, the "raw" blast report is also available. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 filename is set by the in the 'outfile' parameter and has the default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 value of "blastreport.out".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 For psiblast execution in BLAST's "jumpstart" mode, the program must
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 be passed (in addition to the query sequence itself) an alignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 containing the query sequence (in the form of a SimpleAlign object) as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 well as a "mask" specifying at what residues position-specific scoring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 matrices (PSSMs) are to used and at what residues default scoring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 matrices (eg BLOSUM) are to be used. See psiblast documentation for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 more details. The mask itself is a string of 0's and 1's which is the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 same length as each sequence in the alignment and has a "1" at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 locations where (PSSMs) are to be used and a "0" at all other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 locations. So for example:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 $str = Bio::AlignIO->new(-file=> "cysprot.msf", '-format' => 'msf' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 $aln = $str->next_aln();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $len = $aln->length_aln();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $mask = '1' x $len; # simple case where PSSM's to be used at all residues
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 $report = $factory->blastpgp("cysprot1.fa", $aln, $mask);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 For bl2seq execution, StandAloneBlast.pm can be combined with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 AlignIO.pm to directly produce a SimpleAlign object from the alignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 of the two sequences produced by bl2seq as in:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 #Get 2 sequences
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 $str = Bio::SeqIO->new(-file=>'t/amino.fa' , '-format' => 'Fasta', );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 my $seq3 = $str->next_seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 my $seq4 = $str->next_seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 # Run bl2seq on them
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 $factory = Bio::Tools::Run::StandAloneBlast->new('outfile' => 'bl2seq.out');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 my $bl2seq_report = $factory->bl2seq($seq3, $seq4);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 # Use AlignIO.pm to create a SimpleAlign object from the bl2seq report
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 $str = Bio::AlignIO->new(-file=> 'bl2seq.out','-format' => 'bl2seq');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 $aln = $str->next_aln();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 For more examples of syntax and use of Blast.pm, the user is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 encouraged to run the scripts standaloneblast.pl in the bioperl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 /examples directory and StandAloneBlast.t in the bioperl /t directory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 Note: There is a similar (but older) perl object interface offered by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 nhgri. The nhgri module only supports blastall and does not support
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 blastpgp, psiblast, phiblast, bl2seq etc. This module can be found at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 http://genome.nhgri.nih.gov/blastall/.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 =head1 DEVELOPERS NOTES
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 B<STILL TO BE WRITTEN>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Note: This module is still under development. If you would like that a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 specific BLAST feature be added to this perl interface, let me know.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 http://bio.perl.org/bioperl-bugs/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 =head1 AUTHOR - Peter Schattner
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 Email schattner@alum.mit.edu
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 package Bio::Tools::Run::StandAloneBlast;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 use vars qw($AUTOLOAD @ISA $PROGRAMDIR $DATADIR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 @BLASTALL_PARAMS @BLASTPGP_PARAMS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 @BL2SEQ_PARAMS @OTHER_PARAMS %OK_FIELD
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 use Bio::Root::IO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 use Bio::Seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 use Bio::SeqIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 use Bio::Tools::BPbl2seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 use Bio::Tools::BPpsilite;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 use Bio::SearchIO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 use Bio::Tools::Run::WrapperBase;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 use Bio::Factory::ApplicationFactoryI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 @BLASTALL_PARAMS = qw( p d i e m o F G E X I q r v b f g Q
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 D a O J M W z K L Y S T l U y Z);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 @BLASTPGP_PARAMS = qw(d i A f e m o y P F G E X N g S H a I h c
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 j J Z O M v b C R W z K L Y p k T Q B l U);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 @BL2SEQ_PARAMS = qw(i j p g o d a G E X W M q r F e S T m);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 # Non BLAST parameters start with underscore to differentiate them
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 # from BLAST parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 @OTHER_PARAMS = qw(_READMETHOD);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 # _READMETHOD = 'BPlite' (default) or 'Blast'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 # my @other_switches = qw(QUIET);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 # Authorize attribute fields
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 foreach my $attr (@BLASTALL_PARAMS, @BLASTPGP_PARAMS,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 @BL2SEQ_PARAMS, @OTHER_PARAMS )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 { $OK_FIELD{$attr}++; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 # You will need to enable Blast to find the Blast program. This can be done
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 # in (at least) two different ways:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 # 1. define an environmental variable blastDIR:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 # export BLASTDIR=/home/peter/blast or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 # 2. include a definition of an environmental variable BLASTDIR in every script that will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 # use StandAloneBlast.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 # BEGIN {$ENV{BLASTDIR} = '/home/peter/blast/'; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 $PROGRAMDIR = $ENV{'BLASTDIR'} || '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 # If local BLAST databases are not stored in the standard
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 # /data directory, the variable BLASTDATADIR will need to be set explicitly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 $DATADIR = $ENV{'BLASTDATADIR'} || $ENV{'BLASTDB'} || '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 @ISA = qw(Bio::Root::Root
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Bio::Tools::Run::WrapperBase
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 Bio::Factory::ApplicationFactoryI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 =head1 BLAST parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 Essentially all BLAST parameter can be set via StandAloneBlast.pm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 Some of the most commonly used parameters are listed below. All
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 parameters have defaults and are optional (I think.) For a complete
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 listing of settable parameters, run the relevant executable BLAST
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 program with the option "-" as in blastall -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 =head2 Blastall
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 -p Program Name [String]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 Input should be one of "blastp", "blastn", "blastx",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 "tblastn", or "tblastx".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 -d Database [String] default = nr
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 The database specified must first be formatted with formatdb.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 Multiple database names (bracketed by quotations) will be accepted.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 An example would be -d "nr est"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 -i Query File [File In] Set by StandAloneBlast.pm from script.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 default = stdin. The query should be in FASTA format. If multiple FASTA entries are in the input
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 file, all queries will be searched.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 -e Expectation value (E) [Real] default = 10.0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 -o BLAST report Output File [File Out] Optional,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 default = ./blastreport.out ; set by StandAloneBlast.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 -S Query strands to search against database (for blast[nx], and tblastx). 3 is both, 1 is top, 2 is bottom [Integer]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 default = 3
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 =head2 Blastpgp (including Psiblast)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 -j is the maximum number of rounds (default 1; i.e., regular BLAST)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 -h is the e-value threshold for including sequences in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 score matrix model (default 0.001)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 -c is the "constant" used in the pseudocount formula specified in the paper (default 10)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 -B Multiple alignment file for PSI-BLAST "jump start mode" Optional
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 -Q Output File for PSI-BLAST Matrix in ASCII [File Out] Optional
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 =head2 Bl2seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 -i First sequence [File In]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 -j Second sequence [File In]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 -p Program name: blastp, blastn, blastx. For blastx 1st argument should be nucleotide [String]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 default = blastp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 -o alignment output file [File Out] default = stdout
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 -e Expectation value (E) [Real] default = 10.0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 -S Query strands to search against database (blastn only). 3 is both, 1 is top, 2 is bottom [Integer]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 default = 3
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 my ($caller, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 # chained new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 my $self = $caller->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 # to facilitiate tempfile cleanup
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 my ($tfh,$tempfile) = $self->io->tempfile();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 close($tfh); # we don't want the filehandle, just a temporary name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 $self->outfile($tempfile);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 $self->_READMETHOD('Blast');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 while (@args) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 my $attr = shift @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 my $value = shift @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 next if( $attr eq '-verbose');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 # the workaround to deal with initializing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 $attr = 'p' if $attr =~ /^\s*program\s*$/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 $self->$attr($value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 sub AUTOLOAD {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 my $attr = $AUTOLOAD;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 $attr =~ s/.*:://;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 my $attr_letter = substr($attr, 0, 1) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 # actual key is first letter of $attr unless first attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 # letter is underscore (as in _READMETHOD), the $attr is a BLAST
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 # parameter and should be truncated to its first letter only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 $attr = ($attr_letter eq '_') ? $attr : $attr_letter;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 $self->throw("Unallowed parameter: $attr !") unless $OK_FIELD{$attr};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 # $self->throw("Unallowed parameter: $attr !") unless $ok_field{$attr_letter};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 $self->{$attr_letter} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 return $self->{$attr_letter};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 =head1 Methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 =head2 executable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 Title : executable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 Usage : my $exe = $blastfactory->executable('blastall');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 Function: Finds the full path to the 'codeml' executable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 Returns : string representing the full path to the exe
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 Args : [optional] name of executable to set path to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 [optional] boolean flag whether or not warn when exe is not found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 sub executable {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 my ($self, $exename, $exe,$warn) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 $exename = 'blastall' unless defined $exename;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 if( defined $exe && -x $exe ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 $self->{'_pathtoexe'}->{$exename} = $exe;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 unless( defined $self->{'_pathtoexe'}->{$exename} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 my $f = $self->program_path($exename);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 $exe = $self->{'_pathtoexe'}->{$exename} = $f if(-e $f && -x $f );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 # This is how I meant to split up these conditionals --jason
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 # if exe is null we will execute this (handle the case where
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 # PROGRAMDIR pointed to something invalid)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 unless( $exe ) { # we didn't find it in that last conditional
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 if( ($exe = $self->io->exists_exe($exename)) && -x $exe ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 $self->{'_pathtoexe'}->{$exename} = $exe;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 $self->warn("Cannot find executable for $exename") if $warn;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 $self->{'_pathtoexe'}->{$exename} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 return $self->{'_pathtoexe'}->{$exename};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 =head2 program_path
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 Title : program_path
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Usage : my $path = $factory->program_path();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 Function: Builds path for executable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 Returns : string representing the full path to the exe
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 sub program_path {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 my ($self,$program_name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 my @path;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 push @path, $self->program_dir if $self->program_dir;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 push @path, $program_name .($^O =~ /mswin/i ?'.exe':'');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 return Bio::Root::IO->catfile(@path);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 =head2 program_dir
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 Title : program_dir
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 Usage : my $dir = $factory->program_dir();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 Function: Abstract get method for dir of program. To be implemented
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 by wrapper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 Returns : string representing program directory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 sub program_dir {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 $PROGRAMDIR;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 sub program {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 if( wantarray ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 return ($self->executable, $self->p());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 return $self->executable(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 =head2 blastall
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 Title : blastall
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 Usage : $blast_report = $factory->blastall('t/testquery.fa');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 $input = Bio::Seq->new(-id=>"test query",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 -seq=>"ACTACCCTTTAAATCAGTGGGGG");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 $blast_report = $factory->blastall($input);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 $seq_array_ref = \@seq_array; # where @seq_array is an array of Bio::Seq objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 $blast_report = $factory->blastall(\@seq_array);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 Returns : Reference to a Blast object or BPlite object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 containing the blast report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 Args : Name of a file or Bio::Seq object or an array of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 Bio::Seq object containing the query sequence(s).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 Throws an exception if argument is not either a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 (eg a filename) or a reference to a Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 (or to an array of Seq objects). If argument is string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 throws exception if file corresponding to string name can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 not be found.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 sub blastall {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 my ($self,$input1) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 $self->io->_io_cleanup();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 my $executable = 'blastall';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 my $input2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 # Create input file pointer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 my $infilename1 = $self->_setinput($executable, $input1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 if (! $infilename1) {$self->throw(" $input1 ($infilename1) not Bio::Seq object or array of Bio::Seq objects or file name!");}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 $self->i($infilename1); # set file name of sequence to be blasted to inputfilename1 (-i param of blastall)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 my $blast_report = &_generic_local_blast($self, $executable,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 $input1, $input2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 =head2 blastpgp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 Title : blastpgp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 Usage : $blast_report = $factory-> blastpgp('t/testquery.fa');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 $input = Bio::Seq->new(-id=>"test query",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 -seq=>"ACTADDEEQQPPTCADEEQQQVVGG");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 $blast_report = $factory->blastpgp ($input);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 $seq_array_ref = \@seq_array; # where @seq_array is an array of Bio::Seq objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 $blast_report = $factory-> blastpgp(\@seq_array);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 Returns : Reference to a Blast object or BPlite object containing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 the blast report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 Args : Name of a file or Bio::Seq object. In psiblast jumpstart
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 mode two additional arguments are required: a SimpleAlign
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 object one of whose elements is the query and a "mask" to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 determine how BLAST should select scoring matrices see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 DESCRIPTION above for more details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 Throws an exception if argument is not either a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 (eg a filename) or a reference to a Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 (or to an array of Seq objects). If argument is string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 throws exception if file corresponding to string name can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 not be found.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 Returns : Reference to either a BPlite.pm, Blast.pm or BPpsilite.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 object containing the blast report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 sub blastpgp {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 my $executable = 'blastpgp';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 my $input1 = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 my $input2 = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 my $mask = shift; # used by blastpgp's -B option to specify which residues are position aligned
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 my ($infilename1, $infilename2 ) = $self->_setinput($executable,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 $input1, $input2,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 $mask);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 if (!$infilename1) {$self->throw(" $input1 not Bio::Seq object or array of Bio::Seq objects or file name!");}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 $self->i($infilename1); # set file name of sequence to be blasted to inputfilename1 (-i param of blastpgp)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 if ($input2) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 unless ($infilename2) {$self->throw("$input2 not SimpleAlign Object in pre-aligned psiblast\n");}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 $self->B($infilename2); # set file name of partial alignment to inputfilename2 (-B param of blastpgp)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 my $blast_report = &_generic_local_blast($self, $executable, $input1, $input2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 =head2 bl2seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 Title : bl2seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 Usage : $factory-> blastpgp('t/seq1.fa', 't/seq2.fa');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 $input1 = Bio::Seq->new(-id=>"test query1",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 -seq=>"ACTADDEEQQPPTCADEEQQQVVGG");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 $input2 = Bio::Seq->new(-id=>"test query2",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 -seq=>"ACTADDEMMMMMMMDEEQQQVVGG");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 $blast_report = $factory->bl2seq ($input1, $input2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 Returns : Reference to a BPbl2seq object containing the blast report.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 Args : Names of 2 files or 2 Bio::Seq objects containing the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 sequences to be aligned by bl2seq.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 Throws an exception if argument is not either a pair of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 strings (eg filenames) or references to Bio::Seq objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 If arguments are strings, throws exception if files
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 corresponding to string names can not be found.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 sub bl2seq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 my $executable = 'bl2seq';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 my $input1 = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 my $input2 = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 # Create input file pointer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 my ($infilename1, $infilename2 ) = $self->_setinput($executable,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 $input1, $input2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 if (!$infilename1){$self->throw(" $input1 not Seq Object or file name!");}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 if (!$infilename2){$self->throw("$input2 not Seq Object or file name!");}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 $self->i($infilename1); # set file name of first sequence to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 # be aligned to inputfilename1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 # (-i param of bl2seq)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 $self->j($infilename2); # set file name of first sequence to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 # be aligned to inputfilename2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 # (-j param of bl2seq)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 my $blast_report = &_generic_local_blast($self, $executable);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 #################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 =head2 _generic_local_blast
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 Title : _generic_local_blast
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 Usage : internal function not called directly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 Returns : Blast or BPlite object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 Args : Reference to calling object and name of BLAST executable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 sub _generic_local_blast {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 my $executable = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 # Create parameter string to pass to Blast program
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 my $param_string = $self->_setparams($executable);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 # run Blast
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 my $blast_report = &_runblast($self, $executable, $param_string);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 =head2 _runblast
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 Title : _runblast
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 Usage : Internal function, not to be called directly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 Function: makes actual system call to Blast program
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 Returns : Report object in the appropriate format (BPlite,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 BPpsilite, Blast, or BPbl2seq)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 Args : Reference to calling object, name of BLAST executable,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 and parameter string for executable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 sub _runblast {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 my ($self,$executable,$param_string) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 my ($blast_obj,$exe);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 if( ! ($exe = $self->executable($executable)) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 $self->warn("cannot find path to $executable");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 my $commandstring = $exe. $param_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 # next line for debugging
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 $self->debug( "$commandstring \n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 my $status = system($commandstring);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 $self->throw("$executable call crashed: $? $commandstring\n") unless ($status==0) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 my $outfile = $self->o() ; # get outputfilename
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 my $signif = $self->e() || 1e-5 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 # set significance cutoff to set expectation value or default value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 # (may want to make this value vary for different executables)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 # If running bl2seq or psiblast (blastpgp with multiple iterations),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 # the specific parsers for these programs must be used (ie BPbl2seq or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 # BPpsilite). Otherwise either the Blast parser or the BPlite
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 # parsers can be selected.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 if ($executable =~ /bl2seq/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 if( $self->verbose > 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 open(OUT, $outfile) || $self->throw("cannot open $outfile");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 while(<OUT>) { $self->debug($_)}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 close(OUT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 # Added program info so BPbl2seq can compute strand info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 $blast_obj = Bio::Tools::BPbl2seq->new(-file => $outfile,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 -REPORT_TYPE => $self->p );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 # $blast_obj = Bio::Tools::BPbl2seq->new(-file => $outfile);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 elsif ($executable =~ /blastpgp/i && defined $self->j() &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 $self->j() > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 print "using psilite parser\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 $blast_obj = Bio::Tools::BPpsilite->new(-file => $outfile);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 elsif ($self->_READMETHOD =~ /^Blast/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 $blast_obj = Bio::SearchIO->new(-file=>$outfile,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 -format => 'blast' ) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 elsif ($self->_READMETHOD =~ /^BPlite/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 $blast_obj = Bio::Tools::BPlite->new(-file=>$outfile);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 $self->warn("Unrecognized readmethod ".$self->_READMETHOD. " or executable $executable\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 return $blast_obj;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 =head2 _setinput
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 Title : _setinput
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 Usage : Internal function, not to be called directly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 Function: Create input file(s) for Blast executable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 Returns : name of file containing Blast data input
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 Args : Seq object reference or input file name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 sub _setinput {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 my ($self, $executable, $input1, $input2) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 my ($seq, $temp, $infilename1, $infilename2,$fh ) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 # If $input1 is not a reference it better be the name of a file with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 # the sequence/ alignment data...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 $self->io->_io_cleanup();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 SWITCH: {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 unless (ref $input1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 $infilename1 = (-e $input1) ? $input1 : 0 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 last SWITCH;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 # $input may be an array of BioSeq objects...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 if (ref($input1) =~ /ARRAY/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 ($fh,$infilename1) = $self->io->tempfile();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 $temp = Bio::SeqIO->new(-fh=> $fh, '-format' => 'Fasta');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 foreach $seq (@$input1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 unless ($seq->isa("Bio::PrimarySeqI")) {return 0;}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 $temp->write_seq($seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 close $fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 $fh = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 last SWITCH;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 # $input may be a single BioSeq object...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 elsif ($input1->isa("Bio::PrimarySeqI")) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 ($fh,$infilename1) = $self->io->tempfile();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 # just in case $input1 is taken from an alignment and has spaces (ie
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 # deletions) indicated within it, we have to remove them - otherwise
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 # the BLAST programs will be unhappy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 my $seq_string = $input1->seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 $seq_string =~ s/\W+//g; # get rid of spaces in sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 $input1->seq($seq_string);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 $temp = Bio::SeqIO->new(-fh=> $fh, '-format' => 'Fasta');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 $temp->write_seq($input1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 close $fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 undef $fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 # $temp->write_seq($input1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 last SWITCH;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 $infilename1 = 0; # Set error flag if you get here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 } # End SWITCH
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 unless ($input2) { return $infilename1; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 SWITCH2: {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 unless (ref $input2) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 $infilename2 = (-e $input2) ? $input2 : 0 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 last SWITCH2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 if ($input2->isa("Bio::PrimarySeqI") && $executable eq 'bl2seq' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 ($fh,$infilename2) = $self->io->tempfile();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 $temp = Bio::SeqIO->new(-fh=> $fh, '-format' => 'Fasta');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 $temp->write_seq($input2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 close $fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 undef $fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 last SWITCH2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 # Option for using psiblast's pre-alignment "jumpstart" feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 elsif ($input2->isa("Bio::SimpleAlign") &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 $executable eq 'blastpgp' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 # a bit of a lie since it won't be a fasta file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 ($fh,$infilename2) = $self->io->tempfile();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 # first we retrieve the "mask" that determines which residues should
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 # by scored according to their position and which should be scored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 # using the non-position-specific matrices
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 my @mask = split("", shift ); # get mask
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 # then we have to convert all the residues in every sequence to upper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 # case at the positions that we want psiblast to use position specific
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 # scoring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 foreach $seq ( $input2->each_seq() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 my @seqstringlist = split("",$seq->seq());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 for (my $i = 0; $i < scalar(@mask); $i++) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 unless ( $seqstringlist[$i] =~ /[a-zA-Z]/ ) {next}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 $seqstringlist[$i] = $mask[$i] ? uc $seqstringlist[$i]: lc $seqstringlist[$i] ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 my $newseqstring = join("", @seqstringlist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 $seq->seq($newseqstring);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 # Now we need to write out the alignment to a file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 # in the "psi format" which psiblast is expecting
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 $input2->map_chars('\.','-');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 $temp = Bio::AlignIO->new(-fh=> $fh, '-format' => 'psi');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 $temp->write_aln($input2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 close $fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 undef $fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 last SWITCH2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 $infilename2 = 0; # Set error flag if you get here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 } # End SWITCH2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 return ($infilename1, $infilename2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 =head2 _setparams
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 Title : _setparams
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 Usage : Internal function, not to be called directly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 Function: Create parameter inputs for Blast program
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 Returns : parameter string to be passed to Blast
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 Args : Reference to calling object and name of BLAST executable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 sub _setparams {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 my ($self,$executable) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 my ($attr, $value, @execparams);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 if ($executable eq 'blastall') {@execparams = @BLASTALL_PARAMS; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 if ($executable eq 'blastpgp') {@execparams = @BLASTPGP_PARAMS; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 if ($executable eq 'bl2seq') {@execparams = @BL2SEQ_PARAMS; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 my $param_string = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 for $attr ( @execparams ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 $value = $self->$attr();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 next unless (defined $value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 # Need to prepend datadirectory to database name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 if ($attr eq 'd' && ($executable ne 'bl2seq')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 # This is added so that you can specify a DB with a full path
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 if (! (-e $value.".nin" || -e $value.".pin")){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 $value = File::Spec->catdir($DATADIR,$value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 # put params in format expected by Blast
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 $attr = '-'. $attr ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 $param_string .= " $attr $value ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 # if ($self->quiet()) { $param_string .= ' >/dev/null';}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 return $param_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 =head1 Bio::Tools::Run::Wrapper methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 =head2 no_param_checks
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 Title : no_param_checks
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 Usage : $obj->no_param_checks($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 Function: Boolean flag as to whether or not we should
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 trust the sanity checks for parameter values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 Returns : value of no_param_checks
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 Args : newvalue (optional)
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 =head2 save_tempfiles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 Title : save_tempfiles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 Usage : $obj->save_tempfiles($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 Returns : value of save_tempfiles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 =head2 outfile_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 Title : outfile_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 Usage : my $outfile = $tcoffee->outfile_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 Function: Get/Set the name of the output file for this run
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 (if you wanted to do something special)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 Returns : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 Args : [optional] string to set value to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 =head2 tempdir
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 Title : tempdir
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 Usage : my $tmpdir = $self->tempdir();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 Function: Retrieve a temporary directory name (which is created)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 Returns : string which is the name of the temporary directory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 =head2 cleanup
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 Title : cleanup
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 Usage : $tcoffee->cleanup();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 Function: Will cleanup the tempdir directory after a PAML run
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 Returns : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 =head2 io
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 Title : io
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 Usage : $obj->io($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 Function: Gets a L<Bio::Root::IO> object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 Returns : L<Bio::Root::IO>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 sub DESTROY {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 my $self= shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 unless ( $self->save_tempfiles ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 $self->cleanup();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 $self->SUPER::DESTROY();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 __END__