genevalidator 1.6.12 → 2.1.3

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.
Files changed (91) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +30 -1
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +13 -12
  5. data/Gemfile +4 -1
  6. data/Gemfile.lock +135 -0
  7. data/README.md +104 -122
  8. data/Rakefile +377 -5
  9. data/aux/gv_results.slim +155 -0
  10. data/aux/html_files/css/gv.compiled.min.css +8 -0
  11. data/aux/{files → html_files}/css/src/bootstrap.min.css +0 -0
  12. data/aux/{files → html_files}/css/src/font-awesome.min.css +0 -0
  13. data/aux/{files → html_files}/css/src/style.css +0 -0
  14. data/aux/{files → html_files}/fonts/FontAwesome.otf +0 -0
  15. data/aux/{files → html_files}/fonts/fontawesome-webfont.eot +0 -0
  16. data/aux/{files → html_files}/fonts/fontawesome-webfont.svg +0 -0
  17. data/aux/{files → html_files}/fonts/fontawesome-webfont.ttf +0 -0
  18. data/aux/{files → html_files}/fonts/fontawesome-webfont.woff +0 -0
  19. data/aux/{files → html_files}/img/gene.png +0 -0
  20. data/aux/html_files/js/gv.compiled.min.js +1 -0
  21. data/aux/{files → html_files}/js/src/bootstrap.min.js +0 -0
  22. data/aux/{files → html_files}/js/src/d3.v3.min.js +0 -0
  23. data/aux/{files → html_files}/js/src/jquery-2.1.1.min.js +0 -0
  24. data/aux/{files → html_files}/js/src/jquery.tablesorter.min.js +0 -0
  25. data/aux/{files → html_files}/js/src/plots.js +1 -1
  26. data/aux/{files → html_files}/js/src/script.js +0 -0
  27. data/aux/{files → html_files}/json/.gitkeep +0 -0
  28. data/bin/genevalidator +393 -56
  29. data/exemplar_data/README.md +60 -0
  30. data/{data/mrna_data.fasta → exemplar_data/mrna_data.fa} +1 -1
  31. data/{data/protein_data.fasta → exemplar_data/protein_data.fa} +0 -0
  32. data/genevalidator.gemspec +35 -20
  33. data/install.sh +92 -0
  34. data/lib/genevalidator.rb +171 -56
  35. data/lib/genevalidator/arg_validation.rb +26 -55
  36. data/lib/genevalidator/blast.rb +44 -99
  37. data/lib/genevalidator/clusterization.rb +18 -22
  38. data/lib/genevalidator/exceptions.rb +17 -17
  39. data/lib/genevalidator/ext/array.rb +21 -4
  40. data/lib/genevalidator/get_raw_sequences.rb +32 -31
  41. data/lib/genevalidator/hsp.rb +31 -2
  42. data/lib/genevalidator/json_to_gv_results.rb +38 -122
  43. data/lib/genevalidator/output.rb +158 -172
  44. data/lib/genevalidator/output_files.rb +134 -0
  45. data/lib/genevalidator/pool.rb +2 -5
  46. data/lib/genevalidator/query.rb +1 -1
  47. data/lib/genevalidator/tabular_parser.rb +8 -29
  48. data/lib/genevalidator/validation.rb +48 -90
  49. data/lib/genevalidator/validation_alignment.rb +64 -75
  50. data/lib/genevalidator/validation_blast_reading_frame.rb +13 -9
  51. data/lib/genevalidator/validation_duplication.rb +85 -84
  52. data/lib/genevalidator/validation_gene_merge.rb +46 -35
  53. data/lib/genevalidator/validation_length_cluster.rb +18 -15
  54. data/lib/genevalidator/validation_length_rank.rb +19 -15
  55. data/lib/genevalidator/validation_maker_qi.rb +13 -12
  56. data/lib/genevalidator/validation_open_reading_frame.rb +16 -13
  57. data/lib/genevalidator/validation_report.rb +1 -1
  58. data/lib/genevalidator/validation_test.rb +1 -1
  59. data/lib/genevalidator/version.rb +1 -1
  60. data/test/overall.rb +1 -1
  61. data/test/test_all_validations.rb +36 -24
  62. data/test/test_blast.rb +39 -24
  63. data/test/test_clusterization_2d.rb +4 -4
  64. data/test/test_helper.rb +2 -2
  65. data/test/test_query.rb +16 -20
  66. data/test/test_validation_open_reading_frame.rb +122 -122
  67. data/test/test_validations.rb +12 -10
  68. metadata +94 -79
  69. data/aux/files/css/genevalidator.compiled.min.css +0 -16
  70. data/aux/files/js/genevalidator.compiled.min.js +0 -28
  71. data/aux/json_footer.erb +0 -8
  72. data/aux/json_header.erb +0 -19
  73. data/aux/json_query.erb +0 -15
  74. data/aux/template_footer.erb +0 -8
  75. data/aux/template_header.erb +0 -19
  76. data/aux/template_query.erb +0 -14
  77. data/data/README.md +0 -57
  78. data/data/mrna_data.fasta.blast_tabular +0 -3567
  79. data/data/mrna_data.fasta.blast_tabular.raw_seq +0 -53998
  80. data/data/mrna_data.fasta.blast_tabular.raw_seq.idx +0 -5440
  81. data/data/mrna_data.fasta.blast_xml +0 -39800
  82. data/data/mrna_data.fasta.blast_xml.raw_seq +0 -2554
  83. data/data/mrna_data.fasta.blast_xml.raw_seq.idx +0 -3127
  84. data/data/mrna_data.fasta.json +0 -1
  85. data/data/protein_data.fasta.blast_tabular +0 -3278
  86. data/data/protein_data.fasta.blast_tabular.raw_seq +0 -61295
  87. data/data/protein_data.fasta.blast_tabular.raw_seq.idx +0 -4438
  88. data/data/protein_data.fasta.blast_xml +0 -26228
  89. data/data/protein_data.fasta.blast_xml.raw_seq +0 -9803
  90. data/data/protein_data.fasta.blast_xml.raw_seq.idx +0 -1777
  91. data/data/protein_data.fasta.json +0 -1
@@ -38,14 +38,16 @@ module GeneValidator
38
38
  file_mrna.puts(query_mrna)
39
39
  file_mrna.close
40
40
 
41
- FileUtils.rm_rf("#{filename_mrna}.html") rescue Errno::ENOENT
42
-
43
41
  default_opt = {
44
42
  input_fasta_file: filename_mrna,
45
43
  validations: ['all'],
46
44
  db: 'swissprot -remote',
47
45
  num_threads: 1,
48
- test: true
46
+ min_blast_hits: 5,
47
+ test: true,
48
+ force_rewrite: true,
49
+ output_formats: %w[html csv json stdout],
50
+ output_dir: "#{filename_mrna}.html"
49
51
  }
50
52
 
51
53
  GeneValidator.init(default_opt)
@@ -72,14 +74,16 @@ module GeneValidator
72
74
  file_prot.puts(query_prot)
73
75
  file_prot.close
74
76
 
75
- FileUtils.rm_rf("#{filename_prot}.html") rescue Errno::ENOENT
76
-
77
77
  default_opt = {
78
78
  input_fasta_file: filename_prot,
79
79
  validations: ['all'],
80
80
  db: 'swissprot -remote',
81
81
  num_threads: 1,
82
- test: true
82
+ min_blast_hits: 5,
83
+ test: true,
84
+ force_rewrite: true,
85
+ output_formats: %w[html csv json stdout],
86
+ output_dir: "#{filename_prot}.html"
83
87
  }
84
88
 
85
89
  GeneValidator.init(default_opt)
@@ -95,14 +99,16 @@ module GeneValidator
95
99
  original_stderr = $stderr
96
100
  $stderr.reopen('/dev/null', 'w')
97
101
 
98
- FileUtils.rm_rf("#{filename_prot}.html") rescue Errno::ENOENT
99
-
100
102
  default_opt = {
101
103
  input_fasta_file: mixed_fasta,
102
104
  validations: ['all'],
103
105
  db: 'swissprot -remote',
104
106
  num_threads: 1,
105
- test: true
107
+ min_blast_hits: 5,
108
+ test: true,
109
+ force_rewrite: true,
110
+ output_formats: %w[html csv json stdout],
111
+ output_dir: "#{mixed_fasta}.html"
106
112
  }
107
113
 
108
114
  GeneValidator.init(default_opt)
@@ -115,8 +121,9 @@ module GeneValidator
115
121
 
116
122
  it 'should parse xml input' do
117
123
  output = File.open(filename_prot_xml, 'rb').read
124
+ GeneValidator.config = { type: :protein }
118
125
  iterator = Bio::BlastXMLParser::NokogiriBlastXml.new(output).to_enum
119
- hits = BlastUtils.parse_next(iterator, :protein)
126
+ hits = BlastUtils.parse_next(iterator)
120
127
  assert_equal(500, hits.length)
121
128
  assert_equal(870, hits[19].length_protein)
122
129
  assert_equal('XP_004524940', hits[19].accession_no)
@@ -136,13 +143,13 @@ module GeneValidator
136
143
  assert_equal(20, hits.length)
137
144
  assert_equal(1, hits[0].hsp_list.length)
138
145
  assert_equal(111, hits[0].hsp_list[0].hit_to)
139
- assert(hits[0].hsp_list[0].hit_from.is_a? Fixnum)
146
+ assert(hits[0].hsp_list[0].hit_from.is_a?(Integer))
140
147
 
141
148
  assert_equal(100, hits[0].hsp_list[0].pidentity)
142
- assert(hits[0].hsp_list[0].pidentity.is_a? Float)
149
+ assert(hits[0].hsp_list[0].pidentity.is_a?(Float))
143
150
 
144
151
  assert_equal(2.0e-44, hits[0].hsp_list[0].hsp_evalue)
145
- assert(hits[0].hsp_list[0].hsp_evalue.is_a? Float)
152
+ assert(hits[0].hsp_list[0].hsp_evalue.is_a?(Float))
146
153
  end
147
154
 
148
155
  it 'should parse tabular -6 input with tabular format as argument' do
@@ -191,14 +198,16 @@ module GeneValidator
191
198
  end
192
199
 
193
200
  it 'should remove identical matches (protein sequences)' do
194
- FileUtils.rm_rf("#{filename_fasta}.html") rescue Errno::ENOENT
195
-
196
201
  default_opt = {
197
202
  input_fasta_file: filename_fasta,
198
203
  validations: ['all'],
199
204
  db: 'swissprot -remote',
200
205
  num_threads: 1,
201
- test: true
206
+ min_blast_hits: 5,
207
+ test: true,
208
+ force_rewrite: true,
209
+ output_formats: %w[html csv json stdout],
210
+ output_dir: "#{filename_fasta}.html"
202
211
  }
203
212
 
204
213
  GeneValidator.init(default_opt)
@@ -230,14 +239,16 @@ module GeneValidator
230
239
  end
231
240
 
232
241
  it 'should remove identical matches (nucleotide seqs) - tabular input' do
233
- FileUtils.rm_rf("#{filename_fasta}.html") rescue Errno::ENOENT
234
-
235
242
  default_opt = {
236
243
  input_fasta_file: filename_fasta,
237
244
  validations: ['all'],
238
245
  db: 'swissprot -remote',
239
246
  num_threads: 1,
240
- test: true
247
+ min_blast_hits: 5,
248
+ test: true,
249
+ force_rewrite: true,
250
+ output_formats: %w[html csv json stdout],
251
+ output_dir: "#{filename_fasta}.html"
241
252
  }
242
253
 
243
254
  GeneValidator.init(default_opt)
@@ -263,24 +274,27 @@ module GeneValidator
263
274
  end
264
275
 
265
276
  it 'should remove identical matches (nucleotide seqs) - xml input' do
266
- FileUtils.rm_rf("#{filename_fasta}.html") rescue Errno::ENOENT
267
-
268
277
  # just use a valid opts hash to create the object
269
278
  default_opt = {
270
279
  input_fasta_file: filename_fasta,
271
280
  validations: ['all'],
272
281
  db: 'swissprot -remote',
273
282
  num_threads: 1,
274
- test: true
283
+ min_blast_hits: 5,
284
+ test: true,
285
+ force_rewrite: true,
286
+ output_formats: %w[html csv json stdout],
287
+ output_dir: "#{filename_fasta}.html"
275
288
  }
276
289
 
277
290
  GeneValidator.init(default_opt)
291
+ GeneValidator.config = { type: :protein }
278
292
 
279
293
  prediction = Query.new
280
294
  prediction.length_protein = 219 / 3
281
295
  output = File.open(ncbi_mrna_xml20, 'rb').read
282
296
  iterator = Bio::BlastXMLParser::NokogiriBlastXml.new(output).to_enum
283
- hits = BlastUtils.parse_next(iterator, :protein)
297
+ hits = BlastUtils.parse_next(iterator)
284
298
 
285
299
  assert_equal(20, hits.length)
286
300
 
@@ -300,11 +314,12 @@ module GeneValidator
300
314
  validations: ['all'],
301
315
  db: 'swissprot -remote',
302
316
  num_threads: 1,
317
+ min_blast_hits: 5,
318
+ output_formats: %w[html csv json stdout],
303
319
  test: true
304
320
  }
305
321
 
306
322
  GeneValidator.init(default_opt)
307
-
308
323
  rescue SystemExit
309
324
  error = true
310
325
  end
@@ -29,12 +29,12 @@ module GeneValidator
29
29
  hc = HierarchicalClusterization.new(vec3)
30
30
  clusters = hc.hierarchical_clusterization_2d(2, 1)
31
31
  actual = clusters[0].objects.map { |elem| elem[0] }
32
- .sort { |a, b| a.x <=> b.x }
33
- .sort { |a, b| a.y <=> b.y }
32
+ .sort_by(&:x)
33
+ .sort_by(&:y)
34
34
  ex_array = [Pair.new(1, 1), Pair.new(1.2, 1), Pair.new(1, 1.5),
35
35
  Pair.new(1.1, 1.3), Pair.new(0.9, 0.9)]
36
- expected = ex_array.sort { |a, b| a.x <=> b.x }
37
- .sort { |a, b| a.y <=> b.y }
36
+ expected = ex_array.sort_by(&:x)
37
+ .sort_by(&:y)
38
38
  assert_equal(expected, actual)
39
39
  end
40
40
  end
@@ -1,2 +1,2 @@
1
- require 'codeclimate-test-reporter'
2
- CodeClimate::TestReporter.start
1
+ require 'simplecov'
2
+ SimpleCov.start
@@ -23,14 +23,10 @@ module GeneValidator
23
23
  assert_equal(identifier, seq.identifier)
24
24
  assert_equal(accession_no, seq.accession_no)
25
25
  assert_equal(slen, seq.length_protein)
26
- assert(seq.length_protein.is_a? Fixnum)
26
+ assert(seq.length_protein.is_a?(Integer))
27
27
  end
28
28
 
29
29
  it 'should initialize hsp tabular attributes' do
30
- qseqid = 'sp|Q8GBW6|12S_PROFR'
31
- sseqid = 'sp|A5GSN7|ACCD_SYNR3'
32
- sacc = 'A5GSN7'
33
- slen = '291'
34
30
  qstart = '49'
35
31
  qend = '217'
36
32
  sstart = '65'
@@ -43,10 +39,10 @@ module GeneValidator
43
39
  qseq = 'ERLNNLLDPHSFDEVG---------'
44
40
  sseq = 'ERLRILLDPGSFIPVDGELSPTDPL'
45
41
 
46
- hash = { 'qseqid' => qseqid,
47
- 'sseqid' => sseqid,
48
- 'sacc' => sacc,
49
- 'slen' => slen,
42
+ hash = { 'qseqid' => 'sp|Q8GBW6|12S_PROFR',
43
+ 'sseqid' => 'sp|A5GSN7|ACCD_SYNR3',
44
+ 'sacc' => 'A5GSN7',
45
+ 'slen' => '291',
50
46
  'qstart' => qstart,
51
47
  'qend' => qend,
52
48
  'sstart' => sstart,
@@ -74,17 +70,17 @@ module GeneValidator
74
70
  assert_equal(nident, seq.identity.to_s)
75
71
  assert_equal(evalue, seq.hsp_evalue.to_s)
76
72
 
77
- assert(seq.match_query_from.is_a? Fixnum)
78
- assert(seq.match_query_to.is_a? Fixnum)
79
- assert(seq.query_reading_frame.is_a? Fixnum)
80
- assert(seq.hit_from.is_a? Fixnum)
81
- assert(seq.hit_to.is_a? Fixnum)
82
- assert(seq.query_alignment.is_a? String)
83
- assert(seq.hit_alignment.is_a? String)
84
- assert(seq.align_len.is_a? Fixnum)
85
- assert(seq.pidentity.is_a? Float)
86
- assert(seq.identity.is_a? Float)
87
- assert(seq.hsp_evalue.is_a? Float)
73
+ assert(seq.match_query_from.is_a?(Integer))
74
+ assert(seq.match_query_to.is_a?(Integer))
75
+ assert(seq.query_reading_frame.is_a?(Integer))
76
+ assert(seq.hit_from.is_a?(Integer))
77
+ assert(seq.hit_to.is_a?(Integer))
78
+ assert(seq.query_alignment.is_a?(String))
79
+ assert(seq.hit_alignment.is_a?(String))
80
+ assert(seq.align_len.is_a?(Integer))
81
+ assert(seq.pidentity.is_a?(Float))
82
+ assert(seq.identity.is_a?(Float))
83
+ assert(seq.hsp_evalue.is_a?(Float))
88
84
  end
89
85
  end
90
86
  end
@@ -223,128 +223,128 @@ module GeneValidator
223
223
 
224
224
  validation = OpenReadingFrameValidation.new(prediction, nil)
225
225
  result =
226
- { 1 => { frame: 1, orf_start: 1, orf_end: 20, coverage: 4,
227
- translated_length: 1003 },
228
- 2 => { frame: 1, orf_start: 62, orf_end: 143, coverage: 10,
229
- translated_length: 1003 },
230
- 3 => { frame: 1, orf_start: 165, orf_end: 187, coverage: 5,
231
- translated_length: 1003 },
232
- 4 => { frame: 1, orf_start: 244, orf_end: 277, coverage: 6,
233
- translated_length: 1003 },
234
- 5 => { frame: 1, orf_start: 383, orf_end: 393, coverage: 4,
235
- translated_length: 1003 },
236
- 6 => { frame: 1, orf_start: 415, orf_end: 443, coverage: 5,
237
- translated_length: 1003 },
238
- 7 => { frame: 1, orf_start: 477, orf_end: 510, coverage: 6,
239
- translated_length: 1003 },
240
- 8 => { frame: 1, orf_start: 640, orf_end: 706, coverage: 9,
241
- translated_length: 1003 },
242
- 9 => { frame: 1, orf_start: 728, orf_end: 757, coverage: 5,
243
- translated_length: 1003 },
244
- 10 => { frame: 1, orf_start: 786, orf_end: 813, coverage: 5,
245
- translated_length: 1003 },
246
- 11 => { frame: 2, orf_start: 24, orf_end: 41, coverage: 4,
247
- translated_length: 1003 },
248
- 12 => { frame: 2, orf_start: 115, orf_end: 129, coverage: 4,
249
- translated_length: 1003 },
250
- 13 => { frame: 2, orf_start: 151, orf_end: 161, coverage: 4,
251
- translated_length: 1003 },
252
- 14 => { frame: 2, orf_start: 290, orf_end: 305, coverage: 4,
253
- translated_length: 1003 },
254
- 15 => { frame: 2, orf_start: 327, orf_end: 339, coverage: 4,
255
- translated_length: 1003 },
256
- 16 => { frame: 2, orf_start: 391, orf_end: 417, coverage: 5,
257
- translated_length: 1003 },
258
- 17 => { frame: 2, orf_start: 439, orf_end: 479, coverage: 6,
259
- translated_length: 1003 },
260
- 18 => { frame: 2, orf_start: 501, orf_end: 557, coverage: 8,
261
- translated_length: 1003 },
262
- 19 => { frame: 2, orf_start: 660, orf_end: 678, coverage: 4,
263
- translated_length: 1003 },
264
- 20 => { frame: 2, orf_start: 711, orf_end: 739, coverage: 5,
265
- translated_length: 1003 },
266
- 21 => { frame: 2, orf_start: 800, orf_end: 809, coverage: 3,
267
- translated_length: 1003 },
268
- 22 => { frame: 2, orf_start: 832, orf_end: 841, coverage: 3,
269
- translated_length: 1003 },
270
- 23 => { frame: 2, orf_start: 943, orf_end: 957, coverage: 4,
271
- translated_length: 1003 },
272
- 24 => { frame: 2, orf_start: 979, orf_end: 1003, coverage: 5,
273
- translated_length: 1003 },
274
- 25 => { frame: 3, orf_start: 1, orf_end: 720, coverage: 73,
275
- translated_length: 1003 },
276
- 26 => { frame: 3, orf_start: 749, orf_end: 773, coverage: 5,
277
- translated_length: 1003 },
278
- 27 => { frame: 3, orf_start: 842, orf_end: 869, coverage: 5,
279
- translated_length: 1003 },
280
- 28 => { frame: 3, orf_start: 891, orf_end: 904, coverage: 4,
281
- translated_length: 1003 },
282
- 29 => { frame: 3, orf_start: 982, orf_end: 1003, coverage: 5,
283
- translated_length: 1003 },
284
- 30 => { frame: -1, orf_start: 69, orf_end: 81, coverage: 4,
285
- translated_length: 1003 },
286
- 31 => { frame: -1, orf_start: 106, orf_end: 115, coverage: 3,
287
- translated_length: 1003 },
288
- 32 => { frame: -1, orf_start: 178, orf_end: 219, coverage: 7,
289
- translated_length: 1003 },
290
- 33 => { frame: -1, orf_start: 299, orf_end: 391, coverage: 12,
291
- translated_length: 1003 },
292
- 34 => { frame: -1, orf_start: 436, orf_end: 447, coverage: 4,
293
- translated_length: 1003 },
294
- 35 => { frame: -1, orf_start: 469, orf_end: 540, coverage: 9,
295
- translated_length: 1003 },
296
- 36 => { frame: -1, orf_start: 562, orf_end: 575, coverage: 4,
297
- translated_length: 1003 },
298
- 37 => { frame: -1, orf_start: 597, orf_end: 617, coverage: 5,
299
- translated_length: 1003 },
300
- 38 => { frame: -1, orf_start: 639, orf_end: 655, coverage: 4,
301
- translated_length: 1003 },
302
- 39 => { frame: -1, orf_start: 728, orf_end: 818, coverage: 11,
303
- translated_length: 1003 },
304
- 40 => { frame: -1, orf_start: 863, orf_end: 885, coverage: 5,
305
- translated_length: 1003 },
306
- 41 => { frame: -1, orf_start: 950, orf_end: 963, coverage: 4,
307
- translated_length: 1003 },
308
- 42 => { frame: -1, orf_start: 985, orf_end: 1003, coverage: 4,
309
- translated_length: 1003 },
310
- 43 => { frame: -2, orf_start: 79, orf_end: 99, coverage: 5,
311
- translated_length: 1003 },
312
- 44 => { frame: -2, orf_start: 121, orf_end: 133, coverage: 4,
313
- translated_length: 1003 },
314
- 45 => { frame: -2, orf_start: 355, orf_end: 599, coverage: 26,
315
- translated_length: 1003 },
316
- 46 => { frame: -2, orf_start: 652, orf_end: 736, coverage: 11,
317
- translated_length: 1003 },
318
- 47 => { frame: -2, orf_start: 758, orf_end: 828, coverage: 9,
319
- translated_length: 1003 },
320
- 48 => { frame: -2, orf_start: 868, orf_end: 887, coverage: 4,
321
- translated_length: 1003 },
322
- 49 => { frame: -2, orf_start: 952, orf_end: 1003, coverage: 8,
323
- translated_length: 1003 },
324
- 50 => { frame: -3, orf_start: 1, orf_end: 18, coverage: 4,
325
- translated_length: 1003 },
326
- 51 => { frame: -3, orf_start: 90, orf_end: 100, coverage: 4,
327
- translated_length: 1003 },
328
- 52 => { frame: -3, orf_start: 208, orf_end: 220, coverage: 4,
329
- translated_length: 1003 },
330
- 53 => { frame: -3, orf_start: 279, orf_end: 347, coverage: 9,
331
- translated_length: 1003 },
332
- 54 => { frame: -3, orf_start: 369, orf_end: 382, coverage: 4,
333
- translated_length: 1003 },
334
- 55 => { frame: -3, orf_start: 461, orf_end: 511, coverage: 7,
335
- translated_length: 1003 },
336
- 56 => { frame: -3, orf_start: 533, orf_end: 542, coverage: 3,
337
- translated_length: 1003 },
338
- 57 => { frame: -3, orf_start: 635, orf_end: 708, coverage: 10,
339
- translated_length: 1003 },
340
- 58 => { frame: -3, orf_start: 768, orf_end: 801, coverage: 6,
341
- translated_length: 1003 },
342
- 59 => { frame: -3, orf_start: 830, orf_end: 875, coverage: 7,
343
- translated_length: 1003 },
344
- 60 => { frame: -3, orf_start: 933, orf_end: 945, coverage: 4,
345
- translated_length: 1003 },
346
- 61 => { frame: -3, orf_start: 967, orf_end: 980, coverage: 4,
347
- translated_length: 1003 } }
226
+ { 1 => { frame: 1, orf_start: 1, orf_end: 20, coverage: 4,
227
+ translated_length: 1003 },
228
+ 2 => { frame: 1, orf_start: 62, orf_end: 143, coverage: 10,
229
+ translated_length: 1003 },
230
+ 3 => { frame: 1, orf_start: 165, orf_end: 187, coverage: 5,
231
+ translated_length: 1003 },
232
+ 4 => { frame: 1, orf_start: 244, orf_end: 277, coverage: 6,
233
+ translated_length: 1003 },
234
+ 5 => { frame: 1, orf_start: 383, orf_end: 393, coverage: 4,
235
+ translated_length: 1003 },
236
+ 6 => { frame: 1, orf_start: 415, orf_end: 443, coverage: 5,
237
+ translated_length: 1003 },
238
+ 7 => { frame: 1, orf_start: 477, orf_end: 510, coverage: 6,
239
+ translated_length: 1003 },
240
+ 8 => { frame: 1, orf_start: 640, orf_end: 706, coverage: 9,
241
+ translated_length: 1003 },
242
+ 9 => { frame: 1, orf_start: 728, orf_end: 757, coverage: 5,
243
+ translated_length: 1003 },
244
+ 10 => { frame: 1, orf_start: 786, orf_end: 813, coverage: 5,
245
+ translated_length: 1003 },
246
+ 11 => { frame: 2, orf_start: 24, orf_end: 41, coverage: 4,
247
+ translated_length: 1003 },
248
+ 12 => { frame: 2, orf_start: 115, orf_end: 129, coverage: 4,
249
+ translated_length: 1003 },
250
+ 13 => { frame: 2, orf_start: 151, orf_end: 161, coverage: 4,
251
+ translated_length: 1003 },
252
+ 14 => { frame: 2, orf_start: 290, orf_end: 305, coverage: 4,
253
+ translated_length: 1003 },
254
+ 15 => { frame: 2, orf_start: 327, orf_end: 339, coverage: 4,
255
+ translated_length: 1003 },
256
+ 16 => { frame: 2, orf_start: 391, orf_end: 417, coverage: 5,
257
+ translated_length: 1003 },
258
+ 17 => { frame: 2, orf_start: 439, orf_end: 479, coverage: 6,
259
+ translated_length: 1003 },
260
+ 18 => { frame: 2, orf_start: 501, orf_end: 557, coverage: 8,
261
+ translated_length: 1003 },
262
+ 19 => { frame: 2, orf_start: 660, orf_end: 678, coverage: 4,
263
+ translated_length: 1003 },
264
+ 20 => { frame: 2, orf_start: 711, orf_end: 739, coverage: 5,
265
+ translated_length: 1003 },
266
+ 21 => { frame: 2, orf_start: 800, orf_end: 809, coverage: 3,
267
+ translated_length: 1003 },
268
+ 22 => { frame: 2, orf_start: 832, orf_end: 841, coverage: 3,
269
+ translated_length: 1003 },
270
+ 23 => { frame: 2, orf_start: 943, orf_end: 957, coverage: 4,
271
+ translated_length: 1003 },
272
+ 24 => { frame: 2, orf_start: 979, orf_end: 1003, coverage: 5,
273
+ translated_length: 1003 },
274
+ 25 => { frame: 3, orf_start: 1, orf_end: 720, coverage: 73,
275
+ translated_length: 1003 },
276
+ 26 => { frame: 3, orf_start: 749, orf_end: 773, coverage: 5,
277
+ translated_length: 1003 },
278
+ 27 => { frame: 3, orf_start: 842, orf_end: 869, coverage: 5,
279
+ translated_length: 1003 },
280
+ 28 => { frame: 3, orf_start: 891, orf_end: 904, coverage: 4,
281
+ translated_length: 1003 },
282
+ 29 => { frame: 3, orf_start: 982, orf_end: 1003, coverage: 5,
283
+ translated_length: 1003 },
284
+ 30 => { frame: -1, orf_start: 69, orf_end: 81, coverage: 4,
285
+ translated_length: 1003 },
286
+ 31 => { frame: -1, orf_start: 106, orf_end: 115, coverage: 3,
287
+ translated_length: 1003 },
288
+ 32 => { frame: -1, orf_start: 178, orf_end: 219, coverage: 7,
289
+ translated_length: 1003 },
290
+ 33 => { frame: -1, orf_start: 299, orf_end: 391, coverage: 12,
291
+ translated_length: 1003 },
292
+ 34 => { frame: -1, orf_start: 436, orf_end: 447, coverage: 4,
293
+ translated_length: 1003 },
294
+ 35 => { frame: -1, orf_start: 469, orf_end: 540, coverage: 9,
295
+ translated_length: 1003 },
296
+ 36 => { frame: -1, orf_start: 562, orf_end: 575, coverage: 4,
297
+ translated_length: 1003 },
298
+ 37 => { frame: -1, orf_start: 597, orf_end: 617, coverage: 5,
299
+ translated_length: 1003 },
300
+ 38 => { frame: -1, orf_start: 639, orf_end: 655, coverage: 4,
301
+ translated_length: 1003 },
302
+ 39 => { frame: -1, orf_start: 728, orf_end: 818, coverage: 11,
303
+ translated_length: 1003 },
304
+ 40 => { frame: -1, orf_start: 863, orf_end: 885, coverage: 5,
305
+ translated_length: 1003 },
306
+ 41 => { frame: -1, orf_start: 950, orf_end: 963, coverage: 4,
307
+ translated_length: 1003 },
308
+ 42 => { frame: -1, orf_start: 985, orf_end: 1003, coverage: 4,
309
+ translated_length: 1003 },
310
+ 43 => { frame: -2, orf_start: 79, orf_end: 99, coverage: 5,
311
+ translated_length: 1003 },
312
+ 44 => { frame: -2, orf_start: 121, orf_end: 133, coverage: 4,
313
+ translated_length: 1003 },
314
+ 45 => { frame: -2, orf_start: 355, orf_end: 599, coverage: 26,
315
+ translated_length: 1003 },
316
+ 46 => { frame: -2, orf_start: 652, orf_end: 736, coverage: 11,
317
+ translated_length: 1003 },
318
+ 47 => { frame: -2, orf_start: 758, orf_end: 828, coverage: 9,
319
+ translated_length: 1003 },
320
+ 48 => { frame: -2, orf_start: 868, orf_end: 887, coverage: 4,
321
+ translated_length: 1003 },
322
+ 49 => { frame: -2, orf_start: 952, orf_end: 1003, coverage: 8,
323
+ translated_length: 1003 },
324
+ 50 => { frame: -3, orf_start: 1, orf_end: 18, coverage: 4,
325
+ translated_length: 1003 },
326
+ 51 => { frame: -3, orf_start: 90, orf_end: 100, coverage: 4,
327
+ translated_length: 1003 },
328
+ 52 => { frame: -3, orf_start: 208, orf_end: 220, coverage: 4,
329
+ translated_length: 1003 },
330
+ 53 => { frame: -3, orf_start: 279, orf_end: 347, coverage: 9,
331
+ translated_length: 1003 },
332
+ 54 => { frame: -3, orf_start: 369, orf_end: 382, coverage: 4,
333
+ translated_length: 1003 },
334
+ 55 => { frame: -3, orf_start: 461, orf_end: 511, coverage: 7,
335
+ translated_length: 1003 },
336
+ 56 => { frame: -3, orf_start: 533, orf_end: 542, coverage: 3,
337
+ translated_length: 1003 },
338
+ 57 => { frame: -3, orf_start: 635, orf_end: 708, coverage: 10,
339
+ translated_length: 1003 },
340
+ 58 => { frame: -3, orf_start: 768, orf_end: 801, coverage: 6,
341
+ translated_length: 1003 },
342
+ 59 => { frame: -3, orf_start: 830, orf_end: 875, coverage: 7,
343
+ translated_length: 1003 },
344
+ 60 => { frame: -3, orf_start: 933, orf_end: 945, coverage: 4,
345
+ translated_length: 1003 },
346
+ 61 => { frame: -3, orf_start: 967, orf_end: 980, coverage: 4,
347
+ translated_length: 1003 } }
348
348
  assert_equal(result, validation.get_orfs)
349
349
  end
350
350
  end