bio-polyploid-tools 0.4.4 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c65f3649faacf8bbf2fdb2269a6ed125841ba74c
4
- data.tar.gz: a3ef8e79ccc3feeaece52dca1dafdd1bf74888cd
3
+ metadata.gz: 9e11509fcfcbe8aa33caccd377dd0eca756713ef
4
+ data.tar.gz: ee00b6ac0ca58b233e3154caf2cc3e00b909a869
5
5
  SHA512:
6
- metadata.gz: 0fe43f7748842d15ac6e08feab09c7fba77b7fe9b7879a091df5c622cca453f5d7878c6ae39447dc4bb26ca4239d4a80700d69a84fb20348d7891d7be68d689a
7
- data.tar.gz: 257ec9bc355fa195148b67600d0507edaff4b5144c1a05db4b95ac468bede2ca09dab8b459dd2131d0f98a23018bf777d6fe8e819084bc173049c8d4e0ab8878
6
+ metadata.gz: 50afb04d54bd58599d730cfe44bcf7f8e51ec2aea62af870ebca9af0e685fc7a68e06da8a82b82973f1f8dcd6cb3f3414b1b93753dd64e37b19d12473b46adc1
7
+ data.tar.gz: 3b2313544ce3954ca7e6f0c6ca4e4de32255329468511a662ea15abb87e5cbcc038328371d93d3213c6daba56b453bb2f0bac5660e3009010414f4284fdac2a9
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.4
1
+ 0.4.5
@@ -2,11 +2,11 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: bio-polyploid-tools 0.4.4 ruby lib
5
+ # stub: bio-polyploid-tools 0.4.5 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "bio-polyploid-tools"
9
- s.version = "0.4.4"
9
+ s.version = "0.4.5"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
@@ -265,7 +265,7 @@ module Bio::PolyploidTools
265
265
  str << "=\n"
266
266
 
267
267
 
268
- #In case that we don't have a right primer, wi do both orientation
268
+ #In case that we don't have a right primer, we do both orientations
269
269
  unless opts[:right_pos]
270
270
  sequence = opts[:sequence]
271
271
  left = sequence.size - left - 1
@@ -290,6 +290,7 @@ module Bio::PolyploidTools
290
290
  seq_original = String.new(pr.sequence)
291
291
  #puts seq_original.size.to_s << "-" << primer_3_min_seq_length.to_s
292
292
  return primer_3_propertes if seq_original.size < primer_3_min_seq_length
293
+
293
294
  seq_original[pr.snp_pos] = self.original
294
295
  seq_original_reverse = reverse_complement_string(seq_original)
295
296
 
@@ -141,11 +141,11 @@ module Bio::DB::Primer3
141
141
  values << primer3_line_1.right_primer
142
142
  values << primer3_line_1.type.to_s
143
143
  values << primer3_line_1.orientation.to_s
144
- values << primer3_line_1.shortest_pair.left.tm
144
+ values << primer3_line_1.best_pair.left.tm
145
145
  values << primer_2_tm
146
- values << primer3_line_1.shortest_pair.right.tm
146
+ values << primer3_line_1.best_pair.right.tm
147
147
  values << "first"
148
- values << primer3_line_1.shortest_pair.product_size
148
+ values << primer3_line_1.best_pair.product_size
149
149
  elsif primer_1_tm != "NA"
150
150
  values << primer_1
151
151
  values << primer3_line_2.left_primer
@@ -153,60 +153,62 @@ module Bio::DB::Primer3
153
153
  values << primer3_line_2.type.to_s
154
154
  values << primer3_line_2.orientation.to_s
155
155
  values << primer_1_tm
156
- values << primer3_line_2.shortest_pair.left.tm
157
- values << primer3_line_2.shortest_pair.right.tm
156
+ values << primer3_line_2.best_pair.left.tm
157
+ values << primer3_line_2.best_pair.right.tm
158
158
  values << "second"
159
- values << primer3_line_2.shortest_pair.product_size
159
+ values << primer3_line_2.best_pair.product_size
160
160
  else
161
161
 
162
162
  first_candidate = find_primer_pair_first
163
163
  second_candidate = find_primer_pair_second
164
164
 
165
165
  if first_candidate
166
-
167
- #puts "input to search #{first_candidate.left_coordinates}"
168
166
  primer_2 = primer3_line_2.left_primer_with_coordinates(first_candidate.left_coordinates, first_candidate.orientation)
169
167
  primer_2_tm = find_left_primer_temp(primer_2)
170
- #puts "In the funky if #{primer_2}"
171
168
  end
172
169
  if second_candidate
170
+ #puts "input to search #{first_candidate.left_coordinates}"
173
171
  primer_1 = primer3_line_1.left_primer_with_coordinates(second_candidate.left_coordinates, second_candidate.orientation)
174
172
  primer_1_tm = find_left_primer_temp(primer_1)
173
+ #puts "In the other funky if #{primer_2}"
175
174
  end
176
175
 
177
176
  if first_candidate and second_candidate and first_candidate < second_candidate
177
+ #puts "A"
178
178
  values << first_candidate.left_primer
179
179
  values << primer_2
180
180
  values << first_candidate.right_primer
181
181
  values << first_candidate.type.to_s
182
182
  values << first_candidate.orientation.to_s
183
- values << first_candidate.shortest_pair.left.tm
183
+ values << first_candidate.best_pair.left.tm
184
184
  values << primer_2_tm
185
- values << first_candidate.shortest_pair.right.tm
185
+ values << first_candidate.best_pair.right.tm
186
186
  values << "first"
187
- values << first_candidate.shortest_pair.product_size
187
+ values << first_candidate.best_pair.product_size
188
188
  elsif second_candidate
189
+ #puts "B"
189
190
  values << primer_1
190
191
  values << second_candidate.left_primer
191
192
  values << second_candidate.right_primer
192
193
  values << second_candidate.type.to_s
193
194
  values << second_candidate.orientation.to_s
194
195
  values << primer_1_tm
195
- values << second_candidate.shortest_pair.left.tm
196
- values << second_candidate.shortest_pair.right.tm
196
+ values << second_candidate.best_pair.left.tm
197
+ values << second_candidate.best_pair.right.tm
197
198
  values << "second"
198
- values << second_candidate.shortest_pair.product_size
199
+ values << second_candidate.best_pair.product_size
199
200
  elsif first_candidate
200
- values << primer_2
201
+ #puts "C"
201
202
  values << first_candidate.left_primer
203
+ values << primer_2
202
204
  values << first_candidate.right_primer
203
205
  values << first_candidate.type.to_s
204
206
  values << first_candidate.orientation.to_s
205
207
  values << primer_2_tm
206
- values << first_candidate.shortest_pair.left.tm
207
- values << first_candidate.shortest_pair.right.tm
208
+ values << first_candidate.best_pair.left.tm
209
+ values << first_candidate.best_pair.right.tm
208
210
  values << "first"
209
- values << first_candidate.shortest_pair.product_size
211
+ values << first_candidate.best_pair.product_size
210
212
  # else
211
213
  # values << ""
212
214
  end
@@ -220,12 +222,12 @@ module Bio::DB::Primer3
220
222
  values << primer3_line_1.right_primer
221
223
  values << primer3_line_1.type.to_s
222
224
  values << primer3_line_1.orientation.to_s
223
- values << primer3_line_1.shortest_pair.left.tm
225
+ values << primer3_line_1.best_pair.left.tm
224
226
  values << "NA"
225
- values << primer3_line_1.shortest_pair.right.tm
227
+ values << primer3_line_1.best_pair.right.tm
226
228
 
227
229
  values << "first+"
228
- values << primer3_line_1.shortest_pair.product_size
230
+ values << primer3_line_1.best_pair.product_size
229
231
  elsif primer3_line_2
230
232
  values << primer3_line_2.polymorphism
231
233
  values << primer3_line_2.left_primer_snp(self)
@@ -234,10 +236,10 @@ module Bio::DB::Primer3
234
236
  values << primer3_line_2.type.to_s
235
237
  values << primer3_line_2.orientation.to_s
236
238
  values << "NA"
237
- values << primer3_line_2.shortest_pair.left.tm
238
- values << primer3_line_2.shortest_pair.right.tm
239
+ values << primer3_line_2.best_pair.left.tm
240
+ values << primer3_line_2.best_pair.right.tm
239
241
  values << "second+"
240
- values << primer3_line_2.shortest_pair.product_size
242
+ values << primer3_line_2.best_pair.product_size
241
243
 
242
244
  end
243
245
  values.join(",")
@@ -274,7 +276,9 @@ module Bio::DB::Primer3
274
276
  end
275
277
  case
276
278
  when primer3record.line == @line_1
279
+
277
280
  @line_1_template = primer3record.sequence_template
281
+
278
282
  when primer3record.line == @line_2
279
283
  @line_2_template = primer3record.sequence_template
280
284
  else
@@ -283,10 +287,11 @@ module Bio::DB::Primer3
283
287
 
284
288
  if primer3record.primer_left_num_returned.to_i > 0
285
289
  case
286
- when primer3record.line == @line_1
290
+ when primer3record.line == @line_2
287
291
  primers_line_1 << primer3record
292
+ #puts primer3record.inspect
288
293
  @primer3_line_1 = primer3record if not @primer3_line_1 or @primer3_line_1 > primer3record
289
- when primer3record.line == @line_2
294
+ when primer3record.line == @line_1
290
295
  primers_line_2 << primer3record
291
296
  @primer3_line_2 = primer3record if not @primer3_line_2 or @primer3_line_2 > primer3record
292
297
  else
@@ -299,15 +304,18 @@ module Bio::DB::Primer3
299
304
  class Primer3Record
300
305
  include Comparable
301
306
  attr_accessor :properties, :polymorphism
307
+ attr_accessor :socres
302
308
 
303
- def shortest_pair
304
- return @shortest_pair if @shortest_pair
305
- @shortest_pair = nil
306
- @primerPairs.each do | primer |
307
- @shortest_pair = primer if @shortest_pair == nil
308
- @shortest_pair = primer if primer.size < @shortest_pair.size
309
- end
310
- @shortest_pair
309
+
310
+ def best_pair
311
+ return @best_pair if @best_pair
312
+ #@best_pair = nil
313
+ #@primerPairs.each do | primer |
314
+ # @best_pair = primer if @best_pair == nil
315
+ # @best_pair = primer if primer.size < @best_pair.size
316
+ #end
317
+ @best_pair = @primerPairs.first
318
+ @best_pair
311
319
  end
312
320
 
313
321
  def primer_error
@@ -335,44 +343,16 @@ module Bio::DB::Primer3
335
343
  return nil
336
344
  end
337
345
 
338
- def <=>(anOther)
339
- ret = snp <=> anOther.snp
340
- return ret if ret != 0
341
-
342
-
343
- #Sorting by the types.
344
- if type == :chromosome_specific
345
- if anOther.type != :chromosome_specific
346
- return -1
347
- end
348
- elsif type == :chromosome_semispecific
349
- if anOther.type == :chromosome_specific
350
- return 1
351
- else anOther.type == :chromosome_nonspecific
352
- return -1
353
- end
354
- elsif type == :chromosome_nonspecific
355
- if anOther.type != :chromosome_nonspecific
356
- return 1
357
- end
358
- end
359
-
360
- #Sorting if it is in intron or not This will give priority
361
- #to the cases when we know for sure the sequence from the line
362
- #and reduce the chances of getting messed with a short indel
363
- if self.exon?
364
- unless anOther.exon?
365
- return -1
366
- end
367
- else
368
- if anOther.exon?
369
- return 1
370
- end
371
- end
372
-
373
- #Sorting for how long the product is, the shorter, the better
374
- return product_length <=> anOther.product_length
346
+ def score
347
+ ret = 0
348
+ ret += @scores[type]
349
+ ret += @scores[:exon] if exon?
350
+ ret -= product_length
351
+ ret
352
+ end
375
353
 
354
+ def <=>(anOther)
355
+ return anOther.score <=> score
376
356
  end
377
357
 
378
358
  def parse_coordinates(str)
@@ -385,13 +365,13 @@ module Bio::DB::Primer3
385
365
 
386
366
  def left_coordinates
387
367
  #@left_coordinates = parse_coordinates(self.primer_left_0) unless @left_coordinates
388
- @left_coordinates = shortest_pair.left.coordinates
368
+ @left_coordinates = best_pair.left.coordinates
389
369
  @left_coordinates
390
370
  end
391
371
 
392
372
  def right_coordinates
393
373
  unless @right_coordinates
394
- @right_coordinates = shortest_pair.right.coordinates
374
+ @right_coordinates = best_pair.right.coordinates
395
375
  @right_coordinates[0] = @right_coordinates[0] - @right_coordinates[1] + 1
396
376
  end
397
377
  @right_coordinates
@@ -399,7 +379,7 @@ module Bio::DB::Primer3
399
379
 
400
380
  def left_primer
401
381
  #@left_primer = self.sequence_template[left_coordinates[0],left_coordinates[1]] unless @left_primer
402
- @left_primer = shortest_pair.left.sequence
382
+ @left_primer = best_pair.left.sequence
403
383
  @left_primer
404
384
  end
405
385
 
@@ -448,15 +428,21 @@ module Bio::DB::Primer3
448
428
  end
449
429
 
450
430
  def right_primer
451
- return shortest_pair.right.sequence
431
+ return best_pair.right.sequence
452
432
  end
453
433
 
454
434
  def product_length
455
- return shortest_pair.size
435
+ return best_pair.size
456
436
  end
457
437
 
458
438
  def initialize
459
439
  @properties = Hash.new
440
+ @scores = Hash.new
441
+ @scores[:chromosome_specific] = 1000
442
+ @scores[:chromosome_semispecific] = 100
443
+ @scores[:chromosome_nonspecific] = 0
444
+ @scores[:exon] = 50
445
+
460
446
  end
461
447
 
462
448
  def snp
@@ -587,7 +573,7 @@ module Bio::DB::Primer3
587
573
  end
588
574
 
589
575
  class PrimerPair
590
-
576
+ include Comparable
591
577
  attr_reader :record
592
578
  attr_reader :left, :right
593
579
 
@@ -602,6 +588,10 @@ module Bio::DB::Primer3
602
588
  return product_size.to_i
603
589
  end
604
590
 
591
+ def <=>(anOther)
592
+ penalty.to_f <=> anOther.penalty.to_f
593
+ end
594
+
605
595
  def initialize(record, index)
606
596
  raise Primer3Exception.new(), "Index #{index} is greater than the number of records" unless index < record.size
607
597
  @record = record
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bio-polyploid-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo H. Ramirez-Gonzalez