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