qu-pcr 1.0.9 → 1.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e789378488b5828518e32ba64d3471f2e9074fdf
4
- data.tar.gz: e744ab317a3f6f88174fb55538582067b2610a14
3
+ metadata.gz: d0463909bfb89c89aa7739042805062be342224e
4
+ data.tar.gz: 32dccb0916f92057097f2dc90c04ccfad0fd380a
5
5
  SHA512:
6
- metadata.gz: cd0bf147438ec621fb18ebd141ffbe4d8f8f25fd17ba07d1cd9744d33cc0fb5402294b4451e88c7599a3546aad70331ebbdd550c4af7262d5f0c5885ca1d2731
7
- data.tar.gz: 7bd7018d531e1d21baa8776ce7a28517f83c8d1c2bf6f2951c63315dce1b74ab8440243e7cdcaffc71fff2aa75456def1e53b33693ecd3ba9b1a6e3070727077
6
+ metadata.gz: 091ecb385b0aa540fb8032ff13cefd28c370a0714cbd7b61484411dc6f1167f9d37a2345ef7b6b5524a7f3656cf591887b40a767c5b50479f63165fa828f0937
7
+ data.tar.gz: c470f7dbadcde3df10789aba3ca77b7fafa6d5996eb508913694cf444b11a528b01abf45de6f65b8d5078f1f16c314345b06e0308ef4e90e4c969aba3e89fb85
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .DS_Store
@@ -25,32 +25,15 @@ module Qu
25
25
  end
26
26
 
27
27
  def out
28
- p3_string = create_p3_input()
29
- p3_input_file = Tempfile.new('p3_input')
30
- p3_input_file.write(p3_string)
31
- p3_input_file.close
32
-
33
- p3_out = Cmdwrapper::primer3_core(p3_input_file)
34
-
35
- p3_input_file.unlink
28
+ p3_out = Cmdwrapper::primer3_core(@para)
36
29
 
37
30
  return Primer3Parser.new(p3_out).records
38
31
  end
39
32
 
40
- private
41
- def create_p3_input()
42
- lines = []
43
- @para.each_pair do |key, value|
44
- next if value.to_s.empty?
45
- lines << "#{key}=#{value}"
46
- end
47
- lines << "="
48
- return lines.join("\n")
49
- end
50
33
  end # End Primer3 class
51
34
 
52
35
  class Amplicon
53
- attr_reader :fp, :rp, :product
36
+ attr_reader :fp, :rp, :probe, :product
54
37
  def initialize(record, i, type='primer3')
55
38
  if type == 'primer3'
56
39
  (fp_5_pos, fp_size) = record["PRIMER_LEFT_%s" %[i]].split(',')
@@ -70,6 +53,24 @@ module Qu
70
53
  id = record["SEQUENCE_ID"].to_s
71
54
  product_seq = record["SEQUENCE_TEMPLATE"].to_s[fp_5_pos.to_i..rp_5_pos.to_i]
72
55
 
56
+ if record.has_key?("PRIMER_INTERNAL_NUM_RETURNED") && record["PRIMER_INTERNAL_NUM_RETURNED"].to_i > 0
57
+ (probe_5_pos, probe_size) = record["PRIMER_INTERNAL_%s" %[i]].split(',')
58
+ probe_seq = record["PRIMER_INTERNAL_%s_SEQUENCE" % [i]]
59
+ probe_gc = record["PRIMER_INTERNAL_%s_GC_PERCENT" % [i]].to_f
60
+ probe_tm = record["PRIMER_INTERNAL_%s_TM" % [i]].to_f
61
+ probe_penalty = record["PRIMER_INTERNAL_%s_PENALTY" % [i]].to_f
62
+
63
+ @probe = Primer.new(seq = probe_seq,
64
+ type = 'probe',
65
+ gc = probe_gc,
66
+ tm = probe_tm,
67
+ penalty = probe_penalty,
68
+ pos = probe_5_pos,
69
+ )
70
+ else
71
+ @probe = nil
72
+ end
73
+
73
74
  @fp = Primer.new(seq = fp_seq,
74
75
  type = 'forward',
75
76
  gc = fp_gc,
@@ -139,8 +140,8 @@ module Qu
139
140
  $stderr.puts "\tFailed design for %s" % [seq_id]
140
141
  $stderr.puts "\tLeft: #{record['PRIMER_LEFT_EXPLAIN']}"
141
142
  $stderr.puts "\tRight: #{record['PRIMER_RIGHT_EXPLAIN']}"
143
+ $stderr.puts "\INTERNAL: #{record['PRIMER_INTERNAL_EXPLAIN']}" if record.has_key?("PRIMER_INTERNAL_EXPLAIN")
142
144
  $stderr.puts "\tPair: #{record['PRIMER_PAIR_EXPLAIN']}"
143
- #exit
144
145
  end
145
146
  p3_hash[seq_id] = []
146
147
  (0...pp_num).each do |i|
@@ -3,83 +3,198 @@
3
3
  module Qu
4
4
  module Pcr
5
5
  PRIMER3_OPTIONS = {
6
- SEQUENCE_ID: "",
7
- SEQUENCE_TARGET: "",
8
- SEQUENCE_EXCLUDED_REGION: "",
9
- SEQUENCE_FORCE_LEFT_START: -1000000,
10
- SEQUENCE_FORCE_LEFT_END: -1000000,
11
- SEQUENCE_FORCE_RIGHT_START: -1000000,
12
- SEQUENCE_FORCE_RIGHT_END: -1000000,
13
- SEQUENCE_PRIMER: '',
14
- SEQUENCE_PRIMER_REVCOMP: '',
15
- PRIMER_PRODUCT_SIZE_RANGE: '100-200 200-300 300-400 400-500',
16
- PRIMER_MIN_SIZE: 18,
17
- PRIMER_OPT_SIZE: 22,
18
- PRIMER_MAX_SIZE: 28,
19
- PRIMER_MIN_TM: 55,
20
- PRIMER_OPT_TM: 60,
21
- PRIMER_MAX_TM: 65,
22
- PRIMER_MIN_GC: 40,
23
- PRIMER_OPT_GC: 50,
24
- PRIMER_MAX_GC: 60,
25
- PRIMER_MAX_POLY_X: 5,
26
- PRIMER_MAX_HAIRPIN_TH: 47,
27
- PRIMER_MAX_SELF_ANY_TH: 47,
28
- PRIMER_MAX_SELF_END_TH: 47,
29
- PRIMER_PAIR_MAX_COMPL_ANY_TH: 47,
30
- PRIMER_PAIR_MAX_COMPL_END_TH: 47,
31
- SEQUENCE_TEMPLATE: "",
32
- PRIMER_THERMODYNAMIC_PARAMETERS_PATH: Cmdwrapper::THERMO_PATH,
33
- PRIMER_PICK_LEFT_PRIMER: 1,
34
- PRIMER_PICK_INTERNAL_OLIGO: 0,
35
- PRIMER_PICK_RIGHT_PRIMER: 1,
36
- PRIMER_NUM_RETURN: 10,
37
- PRIMER_MAX_NS_ACCEPTED: 0,
38
- # PRIMER_THERMODYNAMIC_ALIGNMENT: 1, # not available since release 2.3.5 2013-01-03
39
- PRIMER_THERMODYNAMIC_OLIGO_ALIGNMENT: 1,
40
- PRIMER_THERMODYNAMIC_TEMPLATE_ALIGNMENT: 1,
41
- PRIMER_TM_FORMULA: 1,
42
- PRIMER_SALT_CORRECTIONS: 1,
43
- PRIMER_SALT_MONOVALENT: 50.0,
44
- PRIMER_SALT_DIVALENT: 1.5,
45
- PRIMER_DNTP_CONC: 0.25,
46
- PRIMER_DNA_CONC: 50.0,
47
- P3_FILE_FLAG: 0,
48
- PRIMER_EXPLAIN_FLAG: 1,
49
- PRIMER_PRODUCT_MAX_TM: 100000,
50
- PRIMER_PICK_ANYWAY: 0,
51
- PRIMER_TASK: "generic",
52
- SEQUENCE_PRIMER_PAIR_OK_REGION_LIST: "",
53
- PRIMER_MIN_THREE_PRIME_DISTANCE: 1,
54
- PRIMER_LOWERCASE_MASKING: 1,
55
- PRIMER_PRODUCT_OPT_TM: 0,
6
+ SEQUENCE_ID: "",
7
+ SEQUENCE_TEMPLATE: "",
8
+ SEQUENCE_INCLUDED_REGION: "",
9
+ SEQUENCE_TARGET: "",
10
+ SEQUENCE_EXCLUDED_REGION: "",
11
+ SEQUENCE_PRIMER_PAIR_OK_REGION_LIST: "",
12
+ SEQUENCE_OVERLAP_JUNCTION_LIST: "",
13
+ SEQUENCE_INTERNAL_EXCLUDED_REGION: "",
14
+ SEQUENCE_PRIMER: "",
15
+ SEQUENCE_INTERNAL_OLIGO: "",
16
+ SEQUENCE_PRIMER_REVCOMP: "",
17
+ SEQUENCE_FORCE_LEFT_START: -1000000,
18
+ SEQUENCE_FORCE_LEFT_END: -1000000,
19
+ SEQUENCE_FORCE_RIGHT_START: -1000000,
20
+ SEQUENCE_FORCE_RIGHT_END: -1000000,
21
+
22
+ PRIMER_TASK: "generic",
23
+ PRIMER_PICK_LEFT_PRIMER: 1,
24
+ PRIMER_PICK_INTERNAL_OLIGO: 0,
25
+ PRIMER_PICK_RIGHT_PRIMER: 1,
26
+ PRIMER_NUM_RETURN: 10,
27
+ PRIMER_MIN_3_PRIME_OVERLAP_OF_JUNCTION: 4,
28
+ PRIMER_MIN_5_PRIME_OVERLAP_OF_JUNCTION: 7,
29
+ PRIMER_MUST_MATCH_FIVE_PRIME: "",
30
+ PRIMER_INTERNAL_MUST_MATCH_FIVE_PRIME: "",
31
+ PRIMER_MUST_MATCH_THREE_PRIME: "",
32
+ PRIMER_INTERNAL_MUST_MATCH_THREE_PRIME: "",
33
+ PRIMER_PRODUCT_SIZE_RANGE: "100-150 151-250 100-300 301-400 401-500 501-600 601-700 701-850 851-1000",
34
+ PRIMER_PRODUCT_OPT_SIZE: 0,
35
+ PRIMER_PAIR_WT_PRODUCT_SIZE_LT: 0.0,
36
+ PRIMER_PAIR_WT_PRODUCT_SIZE_GT: 0.0,
37
+ PRIMER_MIN_SIZE: 15,
38
+ PRIMER_INTERNAL_MIN_SIZE: 18,
39
+ PRIMER_OPT_SIZE: 22,
40
+ PRIMER_INTERNAL_OPT_SIZE: 20,
41
+ PRIMER_MAX_SIZE: 35,
42
+ PRIMER_INTERNAL_MAX_SIZE: 35,
43
+ # Customed by Wubin Qu
44
+ PRIMER_WT_SIZE_LT: 0.0,
45
+ PRIMER_INTERNAL_WT_SIZE_LT: 0.0,
46
+ # Customed by Wubin Qu
47
+ PRIMER_WT_SIZE_GT: 0.0,
48
+ PRIMER_INTERNAL_WT_SIZE_GT: 0.0,
49
+ PRIMER_MIN_GC: 20.0,
50
+ PRIMER_INTERNAL_MIN_GC: 20.0,
51
+ PRIMER_OPT_GC_PERCENT: 50.0,
52
+ PRIMER_INTERNAL_OPT_GC_PERCENT: 50.0,
53
+ PRIMER_MAX_GC: 80.0,
54
+ PRIMER_INTERNAL_MAX_GC: 80.0,
55
+ PRIMER_WT_GC_PERCENT_LT: 0.0,
56
+ PRIMER_INTERNAL_WT_GC_PERCENT_LT: 0.0,
57
+ PRIMER_WT_GC_PERCENT_GT: 0.0,
58
+ PRIMER_INTERNAL_WT_GC_PERCENT_GT: 0.0,
59
+ PRIMER_GC_CLAMP: 0,
60
+ PRIMER_MAX_END_GC: 5,
61
+ PRIMER_MIN_TM: 55.0,
62
+ PRIMER_INTERNAL_MIN_TM: 55.0,
63
+ PRIMER_OPT_TM: 62.0,
64
+ PRIMER_INTERNAL_OPT_TM: 62.0,
65
+ PRIMER_MAX_TM: 65.0,
66
+ PRIMER_INTERNAL_MAX_TM: 65.0,
67
+ PRIMER_PAIR_MAX_DIFF_TM: 10.0,
68
+ PRIMER_WT_TM_LT: 1.0,
69
+ PRIMER_INTERNAL_WT_TM_LT: 1.0,
70
+ PRIMER_WT_TM_GT: 1.0,
71
+ PRIMER_INTERNAL_WT_TM_GT: 1.0,
72
+ PRIMER_PAIR_WT_DIFF_TM: 1.0,
73
+ PRIMER_PRODUCT_MIN_TM: -1000000.0,
74
+ PRIMER_PRODUCT_OPT_TM: 0.0,
75
+ PRIMER_PRODUCT_MAX_TM: 1000000.0,
76
+ PRIMER_PAIR_WT_PRODUCT_TM_LT: 0.0,
77
+ PRIMER_PAIR_WT_PRODUCT_TM_GT: 0.0,
78
+ PRIMER_TM_FORMULA: 1,
79
+ PRIMER_SALT_MONOVALENT: 50.0,
80
+ PRIMER_INTERNAL_SALT_MONOVALENT: 50.0,
81
+ PRIMER_SALT_DIVALENT: 1.5,
82
+ PRIMER_INTERNAL_SALT_DIVALENT: 0.0,
83
+ # Customed by Wubin Qu
84
+ PRIMER_DNTP_CONC: 0.25,
85
+ PRIMER_INTERNAL_DNTP_CONC: 0.0,
86
+ PRIMER_SALT_CORRECTIONS: 1,
87
+ PRIMER_DNA_CONC: 50.0,
88
+ PRIMER_INTERNAL_DNA_CONC: 50.0,
89
+ PRIMER_THERMODYNAMIC_OLIGO_ALIGNMENT: 1,
90
+ PRIMER_THERMODYNAMIC_TEMPLATE_ALIGNMENT: 1,
91
+ PRIMER_THERMODYNAMIC_PARAMETERS_PATH: Cmdwrapper::THERMO_PATH,
92
+ PRIMER_MAX_SELF_ANY: 8.00,
93
+ PRIMER_MAX_SELF_ANY_TH: 47.00,
94
+ PRIMER_INTERNAL_MAX_SELF_ANY: 12.00,
95
+ PRIMER_INTERNAL_MAX_SELF_ANY_TH: 47.00,
96
+ PRIMER_PAIR_MAX_COMPL_ANY: 8.00,
97
+ PRIMER_PAIR_MAX_COMPL_ANY_TH: 47.00,
98
+ PRIMER_WT_SELF_ANY: 0.0,
99
+ PRIMER_WT_SELF_ANY_TH: 0.0,
100
+ PRIMER_INTERNAL_WT_SELF_ANY: 0.0,
101
+ PRIMER_INTERNAL_WT_SELF_ANY_TH: 0.0,
102
+ PRIMER_PAIR_WT_COMPL_ANY: 0.0,
103
+ PRIMER_PAIR_WT_COMPL_ANY_TH: 0.0,
104
+ PRIMER_MAX_SELF_END: 3.0,
105
+ PRIMER_MAX_SELF_END_TH: 47.00,
106
+ PRIMER_INTERNAL_MAX_SELF_END: 12.00,
107
+ PRIMER_INTERNAL_MAX_SELF_END_TH: 47.00,
108
+ PRIMER_PAIR_MAX_COMPL_END: 3.00,
109
+ PRIMER_PAIR_MAX_COMPL_END_TH: 47.00,
110
+ PRIMER_WT_SELF_END: 0.0,
111
+ PRIMER_WT_SELF_END_TH: 0.0,
112
+ PRIMER_INTERNAL_WT_SELF_END: 0.0,
113
+ PRIMER_INTERNAL_WT_SELF_END_TH: 0.0,
114
+ PRIMER_PAIR_WT_COMPL_END: 0.0,
115
+ PRIMER_PAIR_WT_COMPL_END_TH: 0.0,
116
+ PRIMER_MAX_HAIRPIN_TH: 47.0,
117
+ PRIMER_INTERNAL_MAX_HAIRPIN_TH: 47.0,
118
+ PRIMER_WT_HAIRPIN_TH: 0.0,
119
+ PRIMER_INTERNAL_WT_HAIRPIN_TH: 0.0,
120
+ PRIMER_MAX_END_STABILITY: 100.0,
121
+ PRIMER_WT_END_STABILITY: 0.0,
122
+ PRIMER_MAX_NS_ACCEPTED: 0,
123
+ PRIMER_INTERNAL_MAX_NS_ACCEPTED: 0,
124
+ PRIMER_WT_NUM_NS: 0.0,
125
+ PRIMER_INTERNAL_WT_NUM_NS: 0.0,
126
+ PRIMER_MAX_POLY_X: 5,
127
+ PRIMER_INTERNAL_MAX_POLY_X: 5,
128
+ PRIMER_MIN_THREE_PRIME_DISTANCE: 1,
129
+ PRIMER_PICK_ANYWAY: 0,
130
+ PRIMER_LOWERCASE_MASKING: 1,
131
+ PRIMER_EXPLAIN_FLAG: 1,
132
+ PRIMER_LIBERAL_BASE: 0,
133
+ PRIMER_FIRST_BASE_INDEX: 0,
134
+ PRIMER_MAX_TEMPLATE_MISPRIMING: -1.00,
135
+ PRIMER_MAX_TEMPLATE_MISPRIMING_TH: -1.00,
136
+ PRIMER_PAIR_MAX_TEMPLATE_MISPRIMING: -1.00,
137
+ PRIMER_PAIR_MAX_TEMPLATE_MISPRIMING_TH: -1.00,
138
+ PRIMER_WT_TEMPLATE_MISPRIMING: 0.0,
139
+ PRIMER_WT_TEMPLATE_MISPRIMING_TH: 0.0,
140
+ PRIMER_PAIR_WT_TEMPLATE_MISPRIMING: 0.0,
141
+ PRIMER_PAIR_WT_TEMPLATE_MISPRIMING_TH: 0.0,
142
+ PRIMER_MISPRIMING_LIBRARY: "",
143
+ PRIMER_INTERNAL_MISHYB_LIBRARY: "",
144
+ PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS: 0,
145
+ PRIMER_MAX_LIBRARY_MISPRIMING: 12.00,
146
+ PRIMER_INTERNAL_MAX_LIBRARY_MISHYB: 12.00,
147
+ PRIMER_PAIR_MAX_LIBRARY_MISPRIMING: 24.00,
148
+ PRIMER_WT_LIBRARY_MISPRIMING: 0.0,
149
+ PRIMER_INTERNAL_WT_LIBRARY_MISHYB: 0.0,
150
+ PRIMER_PAIR_WT_LIBRARY_MISPRIMING: 0.0,
151
+ PRIMER_MIN_QUALITY: 0,
152
+ PRIMER_INTERNAL_MIN_QUALITY: 0,
153
+ PRIMER_MIN_END_QUALITY: 0,
154
+ PRIMER_QUALITY_RANGE_MIN: 0,
155
+ PRIMER_QUALITY_RANGE_MAX: 100,
156
+ PRIMER_WT_SEQ_QUAL: 0.0,
157
+ PRIMER_INTERNAL_WT_SEQ_QUAL: 0.0,
158
+ PRIMER_PAIR_WT_PR_PENALTY: 1.0,
159
+ PRIMER_PAIR_WT_IO_PENALTY: 0.0,
160
+ PRIMER_INSIDE_PENALTY: -1.0,
161
+ PRIMER_OUTSIDE_PENALTY: 0.0,
162
+ PRIMER_WT_POS_PENALTY: 1.0,
163
+ PRIMER_SEQUENCING_LEAD: 50,
164
+ PRIMER_SEQUENCING_SPACING: 500,
165
+ PRIMER_SEQUENCING_INTERVAL: 250,
166
+ PRIMER_SEQUENCING_ACCURACY: 20,
167
+ PRIMER_WT_END_QUAL: 0.0,
168
+ PRIMER_INTERNAL_WT_END_QUAL: 0.0,
169
+
170
+ P3_FILE_FLAG: 0,
56
171
  }
57
172
 
58
173
  # Parameters not shown to users for editing
59
174
  USER_SPECIFIC_OPTIONS = [
60
- :SEQUENCE_ID,
61
- :SEQUENCE_TARGET,
62
- :SEQUENCE_EXCLUDED_REGION,
63
- :SEQUENCE_FORCE_LEFT_START,
64
- :SEQUENCE_FORCE_LEFT_END,
65
- :SEQUENCE_FORCE_RIGHT_START,
66
- :SEQUENCE_FORCE_RIGHT_END,
67
- :SEQUENCE_PRIMER,
68
- :SEQUENCE_PRIMER_REVCOMP,
69
- :PRIMER_PRODUCT_SIZE_RANGE,
70
- :PRIMER_MIN_SIZE,
71
- :PRIMER_OPT_SIZE,
72
- :PRIMER_MAX_SIZE,
73
- :PRIMER_MIN_TM,
74
- :PRIMER_OPT_TM,
75
- :PRIMER_MAX_TM,
76
- :PRIMER_MIN_GC,
77
- :PRIMER_OPT_GC,
78
- :PRIMER_MAX_GC,
79
- :PRIMER_MAX_POLY_X,
80
- :PRIMER_MAX_HAIRPIN_TH, # I think it's no needed here, becuse they should be checked in MFEprimer (>v3.0), Wubin Qu [2014-5-8]
81
- :PRIMER_MAX_SELF_ANY_TH,
82
- :PRIMER_MAX_SELF_END_TH,
175
+ :SEQUENCE_ID,
176
+ :SEQUENCE_TARGET,
177
+ :SEQUENCE_EXCLUDED_REGION,
178
+ :SEQUENCE_FORCE_LEFT_START,
179
+ :SEQUENCE_FORCE_LEFT_END,
180
+ :SEQUENCE_FORCE_RIGHT_START,
181
+ :SEQUENCE_FORCE_RIGHT_END,
182
+ :SEQUENCE_PRIMER,
183
+ :SEQUENCE_PRIMER_REVCOMP,
184
+ :PRIMER_PRODUCT_SIZE_RANGE,
185
+ :PRIMER_MIN_SIZE,
186
+ :PRIMER_OPT_SIZE,
187
+ :PRIMER_MAX_SIZE,
188
+ :PRIMER_MIN_TM,
189
+ :PRIMER_OPT_TM,
190
+ :PRIMER_MAX_TM,
191
+ :PRIMER_MIN_GC,
192
+ :PRIMER_OPT_GC,
193
+ :PRIMER_MAX_GC,
194
+ :PRIMER_MAX_POLY_X,
195
+ :PRIMER_MAX_HAIRPIN_TH, # I think it's no needed here, becuse they should be checked in MFEprimer (>v3.0), Wubin Qu [2014-5-8]
196
+ :PRIMER_MAX_SELF_ANY_TH,
197
+ :PRIMER_MAX_SELF_END_TH,
83
198
  :PRIMER_PAIR_MAX_COMPL_ANY_TH,
84
199
  :PRIMER_PAIR_MAX_COMPL_END_TH,
85
200
  :PRIMER_PRODUCT_OPT_TM,
@@ -1,5 +1,5 @@
1
1
  module Qu
2
2
  module Pcr
3
- VERSION = "1.0.9"
3
+ VERSION = "1.0.12"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qu-pcr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wubin Qu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-13 00:00:00.000000000 Z
11
+ date: 2014-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: qu-utils
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  version: '0'
105
105
  requirements: []
106
106
  rubyforge_project:
107
- rubygems_version: 2.4.1
107
+ rubygems_version: 2.2.2
108
108
  signing_key:
109
109
  specification_version: 4
110
110
  summary: A ruby library for PCR