annotate variant_effect_predictor/Bio/Tools/Primer3.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 # Copyright (c) 1997-2001 bioperl, Chad Matsalla. All Rights Reserved.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # This module is free software; you can redistribute it and/or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 # modify it under the same terms as Perl itself.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 # Copyright Chad Matsalla
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 Bio::Tools::Primer3 - Create input for and work with the output from the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14 program primer3
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18 Chad will put synopses here by the end of the second week of october, 2002.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 Bio::Tools::Primer3 creates the input files needed to design primers using
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 primer3 and provides mechanisms to access data in the primer3 output files.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 Bioperl modules. Send your comments and suggestions preferably to one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 of the Bioperl mailing lists. Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 http://www.bioperl.org/MailList.html - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 Report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 the bugs and their resolution. Bug reports can be submitted via email
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40 or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 bioperl-bugs@bio.perl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 =head1 AUTHOR - Chad Matsalla
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 bioinformatics1@dieselwurks.com
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 The rest of the documentation details each of the object methods.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 package Bio::Tools::Primer3;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 use Bio::Seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 use Bio::SeqFeature::Primer;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 use Bio::Seq::PrimedSeq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 use Bio::Seq::SeqFactory;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 use Bio::Root::Root;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 use Bio::Root::IO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 use Dumpvalue;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73 @ISA = qw(Bio::Root::Root Bio::Root::IO);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 # Chad likes to use this to debug large hashes.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 my $dumper = new Dumpvalue;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 # this was a bunch of the seqio things, now deprecated. delete it soon.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 # sub _initialize {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 # my($self,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 # $self->SUPER::_initialize(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 # if( ! defined $self->sequence_factory ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 # $self->sequence_factory(new Bio::Seq::SeqFactory
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 # (-verbose => $self->verbose(),
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 # -type => 'Bio::Seq'));
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 # }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87 # }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 =head2 new()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 Title : new()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 Notes :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 my($class,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 my $self = $class->SUPER::new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104 my($filename) = $self->_rearrange([qw(FILE)],@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 if (!$filename) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 print("Ahh grasshopper, you are planning to create a primer3 infile\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109 $self->{filename} = $filename;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 # check to see that the file exists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 # I think that catfile should be used here.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 if (!-f $filename) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113 print("That file doesn't exist. Bah.\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 $self->_initialize_io( -file => $filename );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 =head2 null
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 Title :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 Notes :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 =head2 next_primer()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141 Title : next_primer()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 Usage : $primer3 = $stream->next_primer()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 Function: returns the next primer in the stream
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 Returns : Bio::Seq::PrimedSeq containing:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 - 2 Bio::SeqFeature::Primer representing the primers
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 - 1 Bio::Seq representing the target sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 - 1 Bio::Seq representing the amplified region
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 Args : NONE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 Notes :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153 sub next_primer {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 my $fh = $self->_fh();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156 my ($line,%primer);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 # first, read in the next set of primers
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 while ($line = $self->_readline()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 chomp ($line);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 last if ($line =~ /^=/);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 $line =~ m/(^.*)\=(.*$)/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 $primer{$1} = $2;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 # then, get the primers as SeqFeature::Primer objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 my ($left,$right) = &_create_primer_features(\%primer);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 # then, create the sequence to place them on
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168 my $sequence = Bio::Seq->new(-seq => $primer{SEQUENCE},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 -id => $primer{PRIMER_SEQUENCE_ID});
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 # print("Sequence is ".$primer{SEQUENCE}." and id is ".$primer{PRIMER_SEQUENCE_ID}."\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171 my $primedseq = new Bio::Seq::PrimedSeq(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 -target_sequence => $sequence,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 -left_primer => $left,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 -right_primer => $right,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 -primer_sequence_id => $primer{PRIMER_SEQUENCE_ID},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 -primer_comment => $primer{PRIMER_COMMENT},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 -target => $primer{TARGET},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 -primer_product_size_range => $primer{PRIMER_PRODUCT_SIZE_RANGE},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 -primer_file_flag => $primer{PRIMER_FILE_FLAG},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 -primer_liberal_base => $primer{PRIMER_LIBERAL_BASE},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181 -primer_num_return => $primer{PRIMER_NUM_RETURN},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 -primer_first_base_index => $primer{PRIMER_FIRST_BASE_INDEX},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 -primer_explain_flag => $primer{PRIMER_EXPLAIN_FLAG},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 -primer_pair_compl_any => $primer{PRIMER_PAIR_COMPL_ANY},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 -primer_pair_compl_end => $primer{PRIMER_PAIR_COMPL_END},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 -primer_product_size => $primer{PRIMER_PRODUCT_SIZE}
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 return $primedseq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 =head2 _create_primer_features()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194 Title : _create_primer_features()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 Usage : &_create_primer_features()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196 Function: This is an internal method used by next_seq() to create the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 Bio::SeqFeature::Primer objects necessary to represent the primers
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198 themselves.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 Returns : An array of 2 Bio::SeqFeature::Primer objects.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 Args : None.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 Notes : This is an internal method. Do not call this method.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 sub _create_primer_features {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207 my $rdat = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 my (%left,%right,$updir,$downdir,$var,$trunc);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 my @variables = qw(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 PRIMER_DIRECTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 PRIMER_DIRECTION_END_STABILITY
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 PRIMER_DIRECTION_EXPLAIN
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 PRIMER_DIRECTION_GC_PERCENT
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 PRIMER_DIRECTION_PENALTY
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215 PRIMER_DIRECTION_SELF_ANY
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 PRIMER_DIRECTION_SELF_END
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 PRIMER_DIRECTION_SEQUENCE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 PRIMER_DIRECTION_TM
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 PRIMER_FIRST_BASE_INDEX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 # create the hash to pass into the creation routine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 # I do it this way because the primer3 outfile variables are exactly the same for each of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 # left and right. I create two hashes- one for the left and one for the right primer.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 foreach $updir (qw(LEFT RIGHT)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 my %dat;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 foreach (@variables) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 ($var = $_) =~ s/DIRECTION/$updir/e;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 # should you truncate the name of each variable?
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 # for example, should the value be: PRIMER_RIGHT_PENALTY or PENALTY?
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230 # i think it should be the second one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 if (/^PRIMER_DIRECTION$/) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 $trunc = "PRIMER";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 elsif (/^PRIMER_FIRST_BASE_INDEX/) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 $trunc = "FIRST_BASE_INDEX";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 ($trunc = $_) =~ s/PRIMER_DIRECTION_//;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240 $dat{"-$trunc"} = $rdat->{$var};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 if ($updir eq "LEFT") {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 %left = %dat;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 $left{-id} = $rdat->{PRIMER_SEQUENCE_ID}."-left";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 %right = %dat;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 $right{-id} = $rdat->{PRIMER_SEQUENCE_ID}."-right";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 my $primer_left = new Bio::SeqFeature::Primer(%left);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252 my $primer_right = new Bio::SeqFeature::Primer(%right);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 return($primer_left,$primer_right);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 =head2 get_amplified_region()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 Title : get_amplified_region()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 Usage : $primer->get_amplified_region()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268 Function: Returns a Bio::Seq object representing the sequence amplified
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 Returns : (I think) A Bio::Seq object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 Args : None.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271 Notes : This is not implemented at this time.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 Note to chad: implement this simple getter.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 Developer notes: There obviously isn't a way for a single primer to know about
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 its amplified region unless it is paired with another primer. At this time
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 these object will generally be created with another so I will put in this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 method. If there is no sequence null is returned.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 THIS DOES NOT BELONG HERE. Put this into something else.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283 sub get_amplified_region {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 } # end get_amplified_region
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 =head2 get_amplification_error()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 Title : get_amplification_error()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 Notes :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295 Developer Notes:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 THIS DOES NOT BELONG HERE. Put this into something else.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300 sub get_amplification_error {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 my $primer = $_[1];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302 my $error = $Primer3::primers{$primer}{PRIMER_ERROR};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 if ($error) { return $error; }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304 else { return "Some error that primer3 didn't define.\n"; }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 =head2 _set_target()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 Title : _set_target()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310 Usage : &_set_target($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 Notes :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 Developer Notes: Really I have no idea why I put this in here.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 It can is referenced by new_deprecated and by run_primer3
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 sub _set_target {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323 my ($sequence,$primer,$primer_left,$primer_right,$position_left,$position_right,$boggle);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324 $boggle = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325 foreach $primer (sort keys %{$self->{primers}}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 $sequence = $self->{primers}{$primer}{SEQUENCE};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327 $primer_left = $self->{primers}{$primer}{PRIMER_LEFT};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 $primer_right = $self->{primers}{$primer}{PRIMER_RIGHT};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329 if (!$primer_left) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 $self->{primers}{$primer}{design_failed} = "1";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 $primer_left =~ m/(.*)\,(.*)/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 $position_left = $1+$2-1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 $primer_right =~ m/(.*)\,(.*)/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 $position_right = $1-$2;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337 $self->{primers}{$primer}{left} = $position_left;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338 $self->{primers}{$primer}{right} = $position_right;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 $self->{primers}{$primer}{amplified} = substr($sequence,$position_left,$position_right-$position_left);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344 =head2 _read_file($self,$filename)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 Title : _read_file($self,$filename)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 Returns : A scalar containing the contents of $filename
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350 Args : $self and the name of a file to parse.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 Notes :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352 Developer notes: Honestly, I have no idea what this is for.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357 sub _read_file {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358 # my ($self,$filename) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359 # set this to keep track of things....
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360 # $self->{outfilename} = $filename;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 # to make this better for bioperl, chad should really be using catfile and things.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 # my $fh = new FileHandle;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364 # open($fh,$filename) or die "I can't open the primer report ($filename) : $!\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365 # # _parse_report();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 # # my %Primer3::primers;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 # my ($output,$line);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368 # while ($line=<$fh>) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369 # # print("Adding $line\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 # $output .= $line;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371 # } # end while
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372 # # print("\$output is $output\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373 # return $output;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380 =head2 _parse_report()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382 Title : _parse_report()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 Usage : &_parse_report($self,$filename);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384 Function: Parse a primer3 outfile and place everything into an object under
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 {primers} with PRIMER_SEQUENCE_ID being the name of the keys for the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386 {primers} hash.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387 Returns : Nothing.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388 Args : $self and the name of a file to parse.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389 Notes :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393 sub _parse_report {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394 # old
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395 # my ($self,$filename) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396 my ($self,$outputs) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397 # print("\$self is $self, \$outputs are $outputs\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398 # print("in _parse_report, \$self is $self\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399 # set this to keep track of things....
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400 my ($sequence_name,$line,$counter,$variable_name,$variable_value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401 my @output = split/\n/,$outputs;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402 foreach $line (@output) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403 # print("Reading line $line\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404 next if ($line =~ /^\=/);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405 if ($line =~ m/^PRIMER_SEQUENCE_ID/) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
406 $line =~ m/(\S+)=(.*$)/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
407 $variable_name = $1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
408 $sequence_name = $2;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
409 $variable_value = $2;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
410 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
411 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
412 $line =~ m/(\S+)=(.*$)/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
413 $variable_name = $1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
414 $variable_value = $2;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
415 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
416 # print("$sequence_name\t$variable_name\t$variable_value\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
417 $self->{primers}{$sequence_name}{$variable_name} = $variable_value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
418 } # end while <>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
419 } # end parse_report
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
420
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
421 =head2 _construct_empty()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
422
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
423 Title : _construct_empty()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
424 Usage : &_construct_empty($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
425 Function: Construct an empty object that will be used to construct a primer3
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
426 input "file" so that it can be run.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
427 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
428 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
429 Notes :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
430
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
431 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
432
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
433 sub _construct_empty {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
434 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
435 $self->{inputs} = {};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
436 return;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
437 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
438
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
439 =head2 add_target(%stuff)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
440
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
441 Title : add_target(%stuff)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
442 Usage : $o_primer->add_target(%stuff);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
443 Function: Add an target to the infile constructor.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
444 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
445 Args : A hash. Looks something like this:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
446 $o_primer2->add_target(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
447 -PRIMER_SEQUENCE_ID => "sN11902",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
448 -PRIMER_COMMENT => "3831",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
449 -SEQUENCE => "some_sequence",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
450 -TARGET => "513,26",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
451 -PRIMER_PRODUCT_SIZE_RANGE => "100-500",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
452 -PRIMER_FILE_FLAG => "0",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
453 -PRIMER_LIBERAL_BASE => "1",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
454 -PRIMER_NUM_RETURN => "1",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
455 -PRIMER_FIRST_BASE_INDEX => "1",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
456 -PRIMER_EXPLAIN_FLAG => "1");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
457 The add_target() method does not validate the things you put into
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
458 this parameter hash. Read the docs for Primer3 to see which fields
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
459 do what and how they should be used.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
460 Notes : To design primers, first create a new CSM::Primer3 object with the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
461 -construct_infile parameter. Then, add targets using this method
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
462 (add_target()) with the target hash as above in the Args: section.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
463 Be careful. No validation will be done here. All of those parameters
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
464 will be fed straight into primer3.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
465 Once you are done adding targets, invoke the function run_primer3().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
466 Then retrieve the results using something like a loop around the array
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
467 from get_primer_sequence_IDs();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
468
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
469 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
470
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
471
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
472 sub add_target {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
473 my ($self,%args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
474 my ($currkey,$renamed,$sequence_id,$value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
475 if (!$args{-PRIMER_SEQUENCE_ID}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
476 print("You cannot add an element to the primer3 infile without specifying the PRIMER_SEQUENCE_ID. Sorry.\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
477 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
478 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
479 $sequence_id = $args{-PRIMER_SEQUENCE_ID};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
480 foreach $currkey (keys %args) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
481 # print("\$currkey is $currkey\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
482 next if ($currkey eq "-PRIMER_SEQUENCE_ID");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
483 ($renamed = $currkey) =~ s/-//;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
484 # print("Adding $renamed to the hash under $sequence_id\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
485 $value = $args{$currkey};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
486 # print("\$value is $value\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
487 if ($renamed eq "SEQUENCE") { $value =~ s/\n//g; }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
488 $self->{infile}{$sequence_id}{$renamed} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
489 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
490 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
491 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
492
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
493 =head2 get_primer_sequence_IDs()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
494
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
495 Title : get_primer_sequence_IDs()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
496 Usage : $o_phred->get_primer_sequence_IDs();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
497 Function: Return the primer sequence ID's. These normally correspond to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
498 the name of a sequence in a database but can be whatever was used when
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
499 the primer3 infile was constructed.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
500 Returns : An array containing the names of the primer sequence ID's
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
501 Args : None.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
502 Notes : This would be used as the basis for an iterator to loop around each
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
503 primer that was designed.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
504
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
505 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
506
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
507 sub get_primer_sequence_IDs {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
508 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
509 return sort keys %{$self->{primers}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
510 } # end get keys
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
511
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
512 =head2 dump_hash()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
513
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
514 Title : dump_hash()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
515 Usage : $o_primer->dump_hash();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
516 Function: Dump out the CSM::Primer3 object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
517 Returns : Nothing.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
518 Args : None.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
519 Notes : Used extensively in debugging.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
520
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
521 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
522
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
523 sub dump_hash {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
524 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
525 my $dumper = new Dumpvalue;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
526 $dumper->dumpValue($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
527 } # end dump_hash
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
528
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
529 =head2 dump_infile_hash()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
530
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
531 Title : dump_infile_hash()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
532 Usage : $o_primer->dump_infile_hash();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
533 Function: Dump out the contents of the infile hash.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
534 Returns : Nothing.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
535 Args : None.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
536 Notes : Used for debugging the construction of the infile.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
537
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
538 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
539
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
540 sub dump_infile_hash {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
541 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
542 my $dumper = new Dumpvalue;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
543 $dumper->dumpValue($self->{infile});
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
544 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
545
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
546
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
547
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
548 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
549 __END__
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
550
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
551 =head2 placeholder
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
552
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
553 Title : This is a place holder so chad can cut and paste
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
554 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
555 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
556 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
557 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
558 Notes :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
559
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
560 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
561
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
562 =head1 SEE ALSO
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
563
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
564 perl(1).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
565
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
566 =cut