unipept 2.1.1 → 2.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +9 -0
  3. data/.github/workflows/ci.yml +6 -27
  4. data/.rakeTasks +7 -0
  5. data/.rubocop.yml +2 -0
  6. data/.ruby-version +1 -1
  7. data/CITATION.cff +30 -0
  8. data/Gemfile +2 -2
  9. data/Gemfile.lock +60 -41
  10. data/README.md +2 -2
  11. data/Rakefile +4 -4
  12. data/VERSION +1 -1
  13. data/lib/batch_iterator.rb +16 -0
  14. data/lib/commands/prot2pept.rb +1 -2
  15. data/lib/commands/unipept/api_runner.rb +10 -12
  16. data/lib/commands/unipept/config.rb +1 -1
  17. data/lib/commands/unipept/pept2taxa.rb +1 -5
  18. data/lib/commands/unipept/taxa2tree.rb +74 -0
  19. data/lib/commands/unipept.rb +25 -1
  20. data/lib/commands/uniprot.rb +4 -5
  21. data/lib/configuration.rb +6 -7
  22. data/lib/formatters.rb +108 -36
  23. data/lib/server_message.rb +2 -4
  24. data/test/commands/unipept/test_api_runner.rb +8 -7
  25. data/test/commands/unipept/test_config.rb +1 -1
  26. data/test/commands/unipept/test_pept2ec.rb +11 -11
  27. data/test/commands/unipept/test_pept2funct.rb +15 -15
  28. data/test/commands/unipept/test_pept2go.rb +10 -10
  29. data/test/commands/unipept/test_pept2interpro.rb +26 -26
  30. data/test/commands/unipept/test_pept2lca.rb +2 -2
  31. data/test/commands/unipept/test_pept2prot.rb +2 -2
  32. data/test/commands/unipept/test_pept2taxa.rb +2 -4
  33. data/test/commands/unipept/test_peptinfo.rb +16 -16
  34. data/test/commands/unipept/test_taxa2lca.rb +2 -2
  35. data/test/commands/unipept/test_taxa2tree.rb +68 -0
  36. data/test/commands/unipept/test_taxonomy.rb +2 -2
  37. data/test/helper.rb +10 -0
  38. data/test/support/api_stub.rb +60 -0
  39. data/test/support/resources/pept2ec.json +55 -0
  40. data/test/support/resources/pept2funct.json +73 -0
  41. data/test/support/resources/pept2go.json +43 -0
  42. data/test/support/resources/pept2interpro.json +43 -0
  43. data/test/support/resources/pept2lca.json +14 -0
  44. data/test/support/resources/pept2prot.json +422 -0
  45. data/test/support/resources/pept2taxa.json +194 -0
  46. data/test/support/resources/peptinfo.json +70 -0
  47. data/test/support/resources/taxa2tree.json +194 -0
  48. data/test/support/resources/taxonomy.json +22 -0
  49. data/test/test_configuration.rb +1 -1
  50. data/test/test_formatters.rb +5 -5
  51. data/test/test_output_writer.rb +1 -1
  52. data/test/test_server_message.rb +2 -2
  53. data/test.taxa +4 -0
  54. data/unipept.gemspec +32 -21
  55. metadata +26 -9
data/lib/configuration.rb CHANGED
@@ -2,8 +2,7 @@ require 'yaml'
2
2
 
3
3
  module Unipept
4
4
  class Configuration
5
- attr_reader :config
6
- attr_reader :file_name
5
+ attr_reader :config, :file_name
7
6
 
8
7
  # Creates a new config object, based on a given YAML file. If no filename
9
8
  # given, '.unipeptrc' in the home dir of the user will be used.
@@ -14,17 +13,17 @@ module Unipept
14
13
  # config from
15
14
  def initialize(file = nil)
16
15
  @file_name = file || File.join(Dir.home, '.unipeptrc')
17
- @config = if !File.exist? file_name
18
- {}
16
+ @config = if File.exist? file_name
17
+ YAML.load_file file_name, permitted_classes: [Time]
19
18
  else
20
- YAML.load_file file_name
19
+ {}
21
20
  end
22
21
  end
23
22
 
24
23
  # Saves the config to disk. If the file doesn't exist yet, a new one will be
25
24
  # created
26
25
  def save
27
- File.open(file_name, 'w') { |f| f.write config.to_yaml }
26
+ File.write(file_name, config.to_yaml)
28
27
  end
29
28
 
30
29
  # Deletes a key
@@ -39,7 +38,7 @@ module Unipept
39
38
 
40
39
  # forwards =[] to the internal config hash
41
40
  def []=(*args)
42
- config.[]=(*args)
41
+ config.[]=(*args) # rubocop:disable Layout/SpaceBeforeBrackets
43
42
  end
44
43
  end
45
44
  end
data/lib/formatters.rb CHANGED
@@ -156,7 +156,7 @@ module Unipept
156
156
  # @return [String] The converted input data in the JSON format
157
157
  def convert(data, first)
158
158
  output = data.map(&:to_json).join(',')
159
- first ? output : ',' + output
159
+ first ? output : ",#{output}"
160
160
  end
161
161
  end
162
162
 
@@ -169,20 +169,7 @@ module Unipept
169
169
  'csv'
170
170
  end
171
171
 
172
- # Returns the header row for the given data and fasta_mapper. This row
173
- # contains all the keys of the first element of the data, preceded by
174
- # 'fasta_header' if a fasta_mapper is given.
175
- #
176
- # @param [Array] data The data that we will use to extract the keys from.
177
- #
178
- # @param [Array<Array<String>>] fasta_mapper Optional mapping between input
179
- # data and corresponding fasta header. The data is represented as a list
180
- # containing tuples where the first element is the fasta header and second
181
- # element is the input data If a fasta_mapper is given, the output will be
182
- # preceded with 'fasta_header'.
183
- #
184
- # @return [String] The header row
185
- def header(data, fasta_mapper = nil)
172
+ def get_keys(data, fasta_mapper = nil)
186
173
  # This global variable is necessary because we need to know how many items should be
187
174
  # nil in the convert function.
188
175
  $keys_length = 0 # rubocop:disable Style/GlobalVars
@@ -191,28 +178,47 @@ module Unipept
191
178
 
192
179
  # First we look for items for both ec numbers, go terms and ipr codes that are fully filled in.
193
180
  data.each do |row|
194
- non_empty_items.keys.each do |annotation_type|
181
+ non_empty_items.each_key do |annotation_type|
195
182
  non_empty_items[annotation_type] = row if row[annotation_type] && !row[annotation_type].empty?
196
183
  end
197
184
  end
198
185
 
199
- CSV.generate do |csv|
200
- keys = fasta_mapper ? ['fasta_header'] : []
201
- keys += (data.first.keys - %w[ec go ipr])
202
- processed_keys = keys
186
+ keys = fasta_mapper ? ['fasta_header'] : []
187
+ keys += (data.first.keys - %w[ec go ipr])
188
+ processed_keys = keys
203
189
 
204
- non_empty_items.each do |annotation_type, non_empty_item|
205
- next unless non_empty_item
190
+ non_empty_items.each do |annotation_type, non_empty_item|
191
+ next unless non_empty_item
206
192
 
207
- keys += (non_empty_item.keys - processed_keys)
208
- processed_keys += non_empty_item.keys
193
+ keys += (non_empty_item.keys - processed_keys)
194
+ processed_keys += non_empty_item.keys
209
195
 
210
- idx = keys.index(annotation_type)
211
- keys.delete_at(idx)
212
- keys.insert(idx, *non_empty_item[annotation_type].first.keys.map { |el| %w[ec_number go_term ipr_code].include?(el) ? el : annotation_type + '_' + el })
213
- $keys_length = *non_empty_item[annotation_type].first.keys.length # rubocop:disable Style/GlobalVars
214
- end
196
+ idx = keys.index(annotation_type)
197
+ keys.delete_at(idx)
198
+ keys.insert(idx, *non_empty_item[annotation_type].first.keys.map { |el| %w[ec_number go_term ipr_code].include?(el) ? el : "#{annotation_type}_#{el}" })
199
+ $keys_length = *non_empty_item[annotation_type].first.keys.length # rubocop:disable Style/GlobalVars
200
+ end
215
201
 
202
+ keys
203
+ end
204
+
205
+ # Returns the header row for the given data and fasta_mapper. This row
206
+ # contains all the keys of the first element of the data, preceded by
207
+ # 'fasta_header' if a fasta_mapper is given.
208
+ #
209
+ # @param [Array] data The data that we will use to extract the keys from.
210
+ #
211
+ # @param [Array<Array<String>>] fasta_mapper Optional mapping between input
212
+ # data and corresponding fasta header. The data is represented as a list
213
+ # containing tuples where the first element is the fasta header and second
214
+ # element is the input data If a fasta_mapper is given, the output will be
215
+ # preceded with 'fasta_header'.
216
+ #
217
+ # @return [String] The header row
218
+ def header(data, fasta_mapper = nil)
219
+ keys = get_keys(data, fasta_mapper)
220
+
221
+ CSV.generate do |csv|
216
222
  csv << keys.map(&:to_s) if keys.length.positive?
217
223
  end
218
224
  end
@@ -229,23 +235,25 @@ module Unipept
229
235
  #
230
236
  # @return [String] The converted input data in the CSV format
231
237
  def convert(data, _first)
238
+ keys = get_keys(data)
239
+
232
240
  CSV.generate do |csv|
233
241
  data.each do |o|
234
- row = []
242
+ row = {}
235
243
  o.each do |k, v|
236
244
  if %w[ec go ipr].include? k
237
245
  if v && !v.empty?
238
- v.first.keys.each do |key|
239
- row << (v.map { |el| el[key] }).join(' ').strip
246
+ v.first.each_key do |key|
247
+ row[key == 'protein_count' ? "#{k}_protein_count" : key] = (v.map { |el| el[key] }).join(' ').strip
240
248
  end
241
249
  else
242
- row = row.concat(Array.new($keys_length[0], nil)) # rubocop:disable Style/GlobalVars
250
+ row[k] = row.concat(Array.new($keys_length[0], nil)) # rubocop:disable Style/GlobalVars
243
251
  end
244
252
  else
245
- row << (v == '' ? nil : v)
253
+ row[k] = (v == '' ? nil : v)
246
254
  end
247
255
  end
248
- csv << row
256
+ csv << keys.map { |k| row[k] }
249
257
  end
250
258
  end
251
259
  end
@@ -296,7 +304,7 @@ module Unipept
296
304
  #
297
305
  # @return [String] The converted input data in the XML format
298
306
  def convert(data, _first)
299
- data.map { |row| '<result>' + row.to_xml + '</result>' }.join('')
307
+ data.map { |row| "<result>#{row.to_xml}</result>" }.join
300
308
  end
301
309
  end
302
310
 
@@ -336,4 +344,68 @@ module Unipept
336
344
  .join
337
345
  end
338
346
  end
347
+
348
+ class HtmlFormatter < Formatter
349
+ register :html
350
+
351
+ # @return [String] The type of the current formatter: html
352
+ def type
353
+ 'html'
354
+ end
355
+
356
+ def self.hidden?
357
+ false
358
+ end
359
+
360
+ def header(_data, _fasta_mapper = nil)
361
+ ''
362
+ end
363
+
364
+ def footer
365
+ ''
366
+ end
367
+
368
+ # Converts the given input data to an HTML page that contains the Unipept visualizations
369
+ #
370
+ # @param [Array] data The data we wish to convert
371
+ #
372
+ # @param [Boolean] Is this the first output batch?
373
+ #
374
+ # @return [String] The converted input data in the Blast format
375
+ def convert(data, _first)
376
+ data
377
+ end
378
+ end
379
+
380
+ class UrlFormatter < Formatter
381
+ register :url
382
+
383
+ # @return [String] The type of the current formatter: html
384
+ def type
385
+ 'url'
386
+ end
387
+
388
+ def self.hidden?
389
+ false
390
+ end
391
+
392
+ def header(_data, _fasta_mapper = nil)
393
+ ''
394
+ end
395
+
396
+ def footer
397
+ ''
398
+ end
399
+
400
+ # Converts the given input data to an HTML page that contains the Unipept visualizations
401
+ #
402
+ # @param [Array] data The data we wish to convert
403
+ #
404
+ # @param [Boolean] Is this the first output batch?
405
+ #
406
+ # @return [String] The converted input data in the Blast format
407
+ def convert(data, _first)
408
+ "#{data[0]['gist'].sub!('https://gist.github.com/', 'https://bl.ocks.org/')}\n"
409
+ end
410
+ end
339
411
  end
@@ -4,9 +4,7 @@ require_relative 'configuration'
4
4
 
5
5
  module Unipept
6
6
  class ServerMessage
7
- attr_reader :message_url
8
-
9
- attr_reader :configuration
7
+ attr_reader :message_url, :configuration
10
8
 
11
9
  def initialize(host)
12
10
  @message_url = "#{host}/api/v1/messages.json"
@@ -34,7 +32,7 @@ module Unipept
34
32
  # ago.
35
33
  def recently_fetched?
36
34
  last_fetched = @configuration['last_fetch_date']
37
- !last_fetched.nil? && (last_fetched + 60 * 60 * 24) > Time.now
35
+ !last_fetched.nil? && (last_fetched + (60 * 60 * 24)) > Time.now
38
36
  end
39
37
 
40
38
  # Updates the last checked timestamp
@@ -67,8 +67,8 @@ module Unipept
67
67
  end
68
68
 
69
69
  def test_input_iterator_file
70
- File.open('input_file', 'w') { |file| file.write(%w[a b c].join("\n")) }
71
- runner = new_runner('test', host: 'https://param_host', input: 'input_file')
70
+ File.write('input_file', %w[a b c].join("\n"))
71
+ runner = new_runner('test', host: 'https://param_host', input: 'input_file')
72
72
  output = []
73
73
  runner.input_iterator.each { |el| output << el.chomp }
74
74
  assert_equal(%w[a b c], output)
@@ -84,7 +84,7 @@ module Unipept
84
84
  end
85
85
 
86
86
  def test_input_iterator_arguments_priority
87
- File.open('input_file', 'w') { |file| file.write(%w[1 2 3].join("\n")) }
87
+ File.write('input_file', %w[1 2 3].join("\n"))
88
88
  runner = new_runner('test', { host: 'https://param_host', input: 'input_file' }, %w[a b c])
89
89
  output = []
90
90
  _out, _err = capture_io_with_input(%w[1 2 3]) do
@@ -94,8 +94,8 @@ module Unipept
94
94
  end
95
95
 
96
96
  def test_input_iterator_file_priority
97
- File.open('input_file', 'w') { |file| file.write(%w[a b c].join("\n")) }
98
- runner = new_runner('test', host: 'https://param_host', input: 'input_file')
97
+ File.write('input_file', %w[a b c].join("\n"))
98
+ runner = new_runner('test', host: 'https://param_host', input: 'input_file')
99
99
  output = []
100
100
  _out, _err = capture_io_with_input(%w[1 2 3]) do
101
101
  runner.input_iterator.each { |el| output << el.chomp }
@@ -280,7 +280,7 @@ module Unipept
280
280
  runner.save_error('error message')
281
281
  end
282
282
  assert(err.start_with?('API request failed! log can be found in'))
283
- assert_equal('error message', IO.foreach('errordir/error.log').next.chomp)
283
+ assert_equal('error message', File.foreach('errordir/error.log').next.chomp)
284
284
  end
285
285
  end
286
286
 
@@ -319,7 +319,7 @@ module Unipept
319
319
  end
320
320
 
321
321
  def test_success_no_header_option_handle_response
322
- runner = new_runner('test', Hash[:host, 'test', :'no-header', true])
322
+ runner = new_runner('test', { host: 'test', 'no-header': true })
323
323
  response = new_response(success: true, response_body: '[{"key1":"value1","key2":"value1"},{"key1":"value2","key2":"value2"}]')
324
324
  lambda = runner.handle_response(response, 0, nil)
325
325
  assert(lambda.lambda?)
@@ -409,6 +409,7 @@ module Unipept
409
409
  def new_response(values)
410
410
  response = Class.new do
411
411
  def initialize(values)
412
+ super()
412
413
  @values = values
413
414
  end
414
415
 
@@ -44,7 +44,7 @@ module Unipept
44
44
  out, _err = capture_io_while do
45
45
  Commands::Unipept.run(['config', 'test', value])
46
46
  end
47
- assert_equal('test was set to ' + value, out.chomp)
47
+ assert_equal("test was set to #{value}", out.chomp)
48
48
  assert_equal(value, Unipept::Configuration.new['test'])
49
49
  end
50
50
 
@@ -51,7 +51,7 @@ module Unipept
51
51
  lines = out.each_line
52
52
  assert_equal('', err)
53
53
  assert(lines.next.start_with?('peptide,total_protein_count,ec_number,ec_protein_count'))
54
- assert(lines.next.start_with?('AALTER,1425,2.3.2.27 2.7.13.3 6.2.1.3 6.1.1.6 6.3.2.13 2.7.4.25 6.1.1.22 3.1.26.- 2.3.1.29 2.7.1.15 2.3.1.234 2.1.1.13 4.2.1.17 6.3.2.8 3.1.3.3 2.7.4.16 2.4.-.- 5.3.1.1 3.1.4.- 2.8.1.7 6.5.1.2 6.1.1.2 3.4.11.10 3.4.11.1 1.1.1.100 6.3.2.10 3.6.4.- 6.1.1.23 3.1.1.61 3.1.1.4 2.7.1.50 2.7.1.48 1.8.1.2 2.6.1.- 3.4.-.- 2.4.1.227 6.3.4.2 6.3.4.4 4.1.2.- 1.10.9.1 1.14.13.- 2.5.1.- 2.6.1.16 3.1.-.- 4.2.1.153 3.1.2.6 4.6.1.17 2.4.1.- 2.5.1.75 4.2.1.3 6.3.2.31 6.3.2.34 6.3.3.2 1.2.1.2 5.2.1.8 4.99.1.1 2.3.2.2 2.-.-.- 2.7.3.9 4.1.3.27 1.1.1.262 5.4.99.2 2.7.7.59 3.1.21.3 4.2.99.20 6.1.1.12 1.7.99.4,111 11 11 8 8 7 6 4 4 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1'))
54
+ assert(lines.next.start_with?('AALTER,7,3.1.3.3 6.3.2.13,2 2'))
55
55
  assert_raises(StopIteration) { lines.next }
56
56
  end
57
57
 
@@ -62,9 +62,9 @@ module Unipept
62
62
  lines = out.each_line
63
63
  assert_equal('', err)
64
64
  assert(lines.next.start_with?('fasta_header,peptide,total_protein_count,ec_number,ec_protein_count'))
65
- assert(lines.next.start_with?('>test,AALTER,1425,2.3.2.27 2.7.13.3 6.2.1.3 6.1.1.6 6.3.2.13 2.7.4.25 6.1.1.22 3.1.26.- 2.3.1.29 2.7.1.15 2.3.1.234 2.1.1.13 4.2.1.17 6.3.2.8 3.1.3.3 2.7.4.16 2.4.-.- 5.3.1.1 3.1.4.- 2.8.1.7 6.5.1.2 6.1.1.2 3.4.11.10 3.4.11.1 1.1.1.100 6.3.2.10 3.6.4.- 6.1.1.23 3.1.1.61 3.1.1.4 2.7.1.50 2.7.1.48 1.8.1.2 2.6.1.- 3.4.-.- 2.4.1.227 6.3.4.2 6.3.4.4 4.1.2.- 1.10.9.1 1.14.13.- 2.5.1.- 2.6.1.16 3.1.-.- 4.2.1.153 3.1.2.6 4.6.1.17 2.4.1.- 2.5.1.75 4.2.1.3 6.3.2.31 6.3.2.34 6.3.3.2 1.2.1.2 5.2.1.8 4.99.1.1 2.3.2.2 2.-.-.- 2.7.3.9 4.1.3.27 1.1.1.262 5.4.99.2 2.7.7.59 3.1.21.3 4.2.99.20 6.1.1.12 1.7.99.4,111 11 11 8 8 7 6 4 4 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1'))
66
- assert(lines.next.start_with?('>test,AALER,41797,2.3.1.9 6.1.1.16 2.7.7.38 1.3.5.1 2.7.7.7 2.1.2.10 6.3.4.2 3.1.-.- 2.3.1.16 6.3.5.3 3.6.4.12 2.7.13.3 2.2.1.1 2.1.1.191 2.6.1.- 2.7.7.- 6.1.1.7 5.3.1.5 4.2.1.2 1.18.1.- 4.2.1.19 3.5.4.26 1.1.1.193 5.2.1.8 6.1.1.9 3.6.1.- 2.1.1.- 2.4.2.18 4.1.1.48 1.11.1.7 3.4.24.- 3.1.1.4 2.6.1.11 2.5.1.72 2.6.1.76 5.99.1.3 3.1.3.16 3.6.3.- 3.1.21.3 5.4.99.27 2.3.1.180 2.8.1.7 2.1.1.297 1.1.1.3 5.4.3.8 3.6.3.14 4.3.1.19 3.1.11.6 1.1.1.23 2.7.7.85 1.2.1.88 2.1.1.174 4.2.99.18 2.1.3.15 2.3.1.179 2.7.7.6 1.5.5.2 2.2.1.9 3.1.4.- 6.1.1.6 1.20.4.1 3.6.4.- 3.5.1.5 3.1.1.5 6.1.1.20 2.4.1.21 3.4.11.1 1.1.1.94 2.7.8.7 4.99.1.1 1.6.5.11 3.4.11.10 3.6.-.- 5.4.99.2 3.1.1.61 4.2.1.20 6.5.1.1 6.1.1.- 4.2.2.n1 2.7.7.59 2.7.7.89 3.2.2.27 1.2.1.27 4.2.1.126 5.1.3.11 2.7.7.42 6.1.1.17 2.9.1.1 1.14.99.29 3.6.3.17 2.1.1.198 2.5.1.75 3.5.4.2 1.2.1.- 4.1.3.27 3.1.4.16 1.4.3.16 2.6.1.9 3.4.-.- 6.5.1.2 1.-.-.- 1.14.13.- 2.6.1.16 6.3.4.19 2.4.99.16 6.2.1.5 6.1.1.18 1.5.1.20 1.2.4.1 4.1.1.20 3.1.11.5 6.1.1.1 2.7.9.1 3.1.1.31 2.3.1.234 3.4.21.- 2.2.1.6 4.2.1.46 4.1.99.22 2.1.2.9 6.3.5.1 1.3.1.9 6.1.1.5 4.2.1.1 3.6.4.13 4.1.1.31 4.1.1.47 2.7.4.1 3.1.3.12 4.2.1.24 2.7.11.1 2.6.1.62 3.1.26.- 3.1.26.4 2.5.1.61 6.3.2.13 5.3.1.24 2.3.1.- 3.4.19.12 2.7.1.25 2.3.1.157 1.8.99.2 3.4.21.53 5.3.1.9 3.7.1.3 6.3.2.2 2.5.1.17 3.4.11.2 1.3.99.- 2.7.7.23 3.5.1.4 4.3.1.3 2.7.1.71 2.3.3.9 6.3.5.5 3.6.5.- 3.1.13.1 6.3.2.4 6.3.2.1 2.1.1.197 1.3.99.1 2.7.1.130 2.7.1.100 2.7.3.9 4.1.3.40 6.1.1.19 1.7.-.- 2.3.1.30 2.7.1.23 4.1.1.86 3.6.3.41 2.3.2.31 1.11.1.15 4.2.3.4 6.1.1.3 4.2.1.113 2.4.2.21 3.1.26.3 1.8.4.11 2.4.1.- 1.4.1.13 3.1.4.52 2.7.4.16 4.2.1.17 2.7.7.4 1.4.99.6 1.4.3.5 6.1.1.2 2.4.2.17 3.4.25.1 6.3.2.- 3.1.3.- 6.2.1.3 2.7.1.180 2.7.1.167 4.6.1.1 4.3.2.1 2.7.7.56 2.7.7.70 5.1.1.8 3.1.1.- 2.3.1.20 4.1.1.32 2.4.1.25 5.4.99.15 4.2.1.33 2.7.6.5 2.1.1.182 2.7.1.- 2.7.1.2 5.99.1.2 3.2.1.23 1.1.1.100 2.1.3.- 1.5.8.4 1.4.7.1 2.1.1.228 2.3.1.94 2.3.1.41 2.3.1.39 2.7.1.15 2.7.1.30 2.7.1.24 2.3.1.181 2.4.1.182 2.4.-.- 1.3.98.3 3.6.3.28 2.7.7.3 6.3.5.9 2.5.1.- 2.6.1.37 5.3.3.2 3.1.26.8 4.2.2.- 3.2.1.21 1.1.1.25 1.1.1.157 1.17.1.8 2.10.1.1 3.2.2.4 3.2.2.- 2.7.7.18 6.3.5.11 5.3.1.23 3.5.1.2 3.5.1.- 6.3.1.1 4.3.1.7 2.3.1.47 3.6.1.7 1.2.4.4 4.1.1.36 3.4.16.4 1.13.12.4 2.4.1.129 3.2.1.- 2.6.1.1 6.2.1.30 2.1.1.72 2.1.1.33 3.2.2.23 3.5.1.94 2.4.1.227 6.3.5.7 1.3.1.- 1.2.1.38 1.2.1.12 4.2.1.109 6.3.4.18 2.4.2.4 2.4.2.- 2.1.1.107 6.3.2.5 3.1.3.6 3.5.4.16 4.2.1.- 1.1.1.133 1.1.1.37 6.3.2.10 6.3.2.17 1.2.1.2 1.5.8.3 4.3.3.7 3.6.3.4 1.1.1.267 5.4.99.- 2.7.7.77 4.1.-.- 2.3.1.1 2.1.1.298 1.5.1.2 3.5.2.3 1.1.1.- 2.3.1.29 3.1.1.29 2.3.1.35 2.7.1.35 2.7.1.26 1.14.14.18 1.8.1.9 5.4.99.12 2.4.1.173 2.4.1.57 1.4.1.2 2.7.4.9 3.1.3.48 5.1.3.2 3.5.1.28 3.6.3.25 2.1.1.37 4.2.1.10 3.1.11.1 3.5.1.98 2.7.7.2 4.1.2.- 2.7.11.5 2.7.-.- 1.2.1.70 4.2.1.70 6.1.1.4 2.7.6.3 2.4.2.19 1.4.4.2 1.6.99.5 5.99.1.4 3.6.1.31 2.4.99.17 3.1.3.3 3.1.3.5 3.2.1.52 2.5.1.48 3.5.4.25 6.6.1.2 1.3.3.4 1.1.1.49 1.1.1.40 3.4.21.92 2.8.1.13 3.6.3.8 3.6.3.3 2.7.3.- 2.7.7.48 2.7.7.72 2.7.7.60 2.7.7.65 1.3.5.4 6.1.1.22 6.1.1.15 6.1.1.10 2.7.2.4 5.1.1.1 4.1.99.3 1.7.99.4 2.3.1.31 3.-.-.- 2.7.1.33 2.7.1.36 3.1.6.1 2.7.1.40 2.7.1.45 2.3.1.225 1.14.-.- 4.1.1.37 4.1.1.23 4.1.1.49 1.1.2.3 2.7.7.87 1.7.1.13 1.8.1.4 5.4.99.16 1.17.99.6 2.4.1.54 5.4.2.7 5.4.99.25 5.4.99.61 2.7.4.23 1.4.1.1 2.7.4.25 5.1.1.11 6.2.1.13 1.1.99.14 1.13.11.27 3.5.1.10 3.6.3.54 3.5.1.46 5.3.1.1 4.2.1.32 1.3.8.7 2.1.1.14 1.3.8.4 4.4.1.1 3.7.1.- 4.1.99.17 3.5.1.87 3.5.1.88 2.8.1.8 2.1.2.3 2.1.2.2 1.14.11.- 6.3.5.- 2.4.1.301 1.4.3.- 1.2.7.8 5.4.4.2 1.14.13.7 1.17.7.3 4.2.1.75 1.2.1.10 4.2.1.138 4.2.1.136 2.6.1.83 2.6.1.85 6.3.4.13 3.1.2.6 2.4.2.10 1.1.-.- 2.4.2.30 2.1.1.166 1.6.99.3 3.1.26.5 2.1.1.131 6.3.2.8 6.3.2.9 5.1.99.6 3.2.1.141 2.1.1.192 2.7.13.- 2.5.1.10 3.6.1.11 2.5.1.18 2.5.1.15 3.4.11.- 4.6.1.12 2.5.1.78 2.5.1.47 3.5.4.10 3.5.4.19 3.2.1.28 3.5.4.9 4.2.1.8 1.1.1.22 1.1.1.27 1.1.1.47 6.3.2.12 6.3.3.2 6.3.3.3 1.1.1.60 1.17.1.4 1.2.1.3 3.6.5.n1 2.7.1.165 2.3.2.3 2.7.1.148 3.4.14.- 3.4.14.4 4.3.3.6 3.6.3.5 1.4.1.21 1.1.1.262 3.1.4.11 2.7.7.49 5.3.1.16 2.1.1.200 3.6.4.4 2.1.1.269 6.1.1.23 6.1.1.14 3.5.2.5 3.5.1.1 2.3.1.15 5.1.1.- 4.1.99.1 3.1.1.2 3.1.1.3 2.1.3.12 5.4.2.12 5.4.2.10 5.4.2.11 3.1.22.4 2.7.1.11 1.3.1.10 2.7.1.39 3.3.2.1 2.7.1.29 1.14.14.1 3.1.6.- 2.7.1.69 2.7.1.92 3.5.3.11 3.5.3.12 4.1.1.79 4.1.1.71 4.1.1.68 2.3.1.174 1.12.1.2 1.17.4.2 4.1.1.28 4.1.1.50 2.3.1.189 1.14.13.236 4.1.1.19 1.9.3.1 2.8.3.15 5.1.2.3 1.3.1.91 2.4.1.14 2.4.1.15 2.4.1.12 2.4.1.13 2.4.1.18 2.4.1.20 3.2.1.1 1.8.1.8 5.4.99.13 2.3.3.1 5.3.3.14 1.15.1.1 2.4.1.187 2.4.1.83 1.3.7.7 4.3.99.3 5.4.2.- 2.6.1.7 1.5.3.1 1.5.3.4 5.4.99.24 2.3.1.129 2.3.1.128 1.4.1.- 2.7.4.8 2.7.4.7 6.2.1.17 6.4.1.1 3.1.3.18 1.13.11.11 2.2.1.2 5.1.3.3 5.1.3.1 1.13.11.39 1.14.11.40 2.4.1.250 2.1.1.77 3.5.1.25 2.1.1.71 3.5.1.11 3.5.1.13 1.3.98.1 2.1.1.63 2.7.10.- 3.6.3.24 2.4.1.266 3.5.1.32 2.1.1.43 5.3.1.6 3.6.3.34 3.6.3.31 3.6.3.32 2.4.1.287 2.4.1.278 2.1.1.11 2.1.1.17 4.2.1.11 4.4.1.8 3.1.11.- 4.1.99.11 2.8.1.4 2.1.2.1 1.5.99.2 6.3.4.4 1.11.1.6 1.11.1.- 1.97.1.- 2.7.7.1 2.7.11.25 2.7.7.9 2.7.7.8 1.14.99.3 3.1.26.12 1.8.3.2 2.7.11.7 2.1.1.80 1.7.1.4 3.3.1.1 1.4.99.- 1.4.99.5 6.3.5.4 6.3.5.2 1.2.7.5 1.2.7.1 1.2.7.- 2.5.1.6 2.5.1.3 2.5.1.1 2.4.1.345 1.14.13.2 1.2.1.84 1.2.1.83 1.2.1.86 2.6.1.18 2.6.1.19 1.11.2.4 1.14.13.25 1.2.1.79 1.2.1.41 1.14.13.48 1.1.5.2 4.2.3.1 2.6.1.52 4.2.3.5 1.2.1.22 1.14.13.50 4.2.1.151 1.2.1.16 1.13.11.2 1.13.11.- 2.6.1.84 4.2.1.51 4.2.1.59 3.4.17.- 1.18.1.3 6.3.4.21 2.7.6.1 3.1.2.- 2.4.2.9 3.1.2.4 2.4.2.14 2.4.2.29 3.6.5.5 2.4.2.31 5.3.3.- 5.1.3.14 4.3.1.12 2.1.1.176 2.1.1.171 3.1.13.5 3.5.3.1 3.5.3.8 6.3.2.6 2.1.1.199 2.1.1.193 2.5.1.21 2.5.1.32 3.1.2.28 3.6.1.15 2.5.1.16 3.6.1.66 3.6.1.40 3.4.11.4 3.4.11.6 3.4.11.5 3.4.11.9 2.5.1.89 1.7.3.3 2.5.1.83 2.4.99.18 3.1.3.7 3.1.3.2 3.1.3.1 3.2.1.50 3.5.4.33 3.2.1.20 3.2.1.35 3.5.4.3 3.5.4.4 4.1.2.48 1.1.1.127 3.4.19.3 4.2.1.3 4.2.1.6 4.2.1.9 1.1.1.11 1.1.1.14 1.1.1.26 6.3.2.30 2.3.3.13 1.1.1.30 1.1.1.35 6.3.2.29 1.1.1.58 4.1.2.20 1.1.1.65 1.1.1.69 1.1.1.62 1.3.99.10 1.3.99.23 1.1.1.81 1.1.1.95 2.7.8.- 1.5.3.10 1.5.3.19 2.7.8.23 2.7.8.24 2.7.8.11 6.2.1.1 6.2.1.- 2.7.1.191 2.8.1.11 3.2.2.9 2.3.2.- 2.7.1.170 2.7.1.168 1.6.2.4 4.3.3.5 5.5.1.1 5.5.1.2 2.7.1.107 2.-.-.- 2.4.99.- 4.6.1.2 4.4.1.16 4.4.1.11 3.1.4.53 1.1.1.290 4.3.2.2 1.1.1.269 1.16.8.1 2.7.7.12 1.2.99.7 2.7.7.41 2.7.7.80 5.3.1.22 3.5.2.14 2.1.1.205 3.1.21.7 3.4.13.9 2.1.1.282 6.1.1.21 3.7.1.19 6.1.1.13 6.1.1.11 1.1.1.304 1.5.1.5 3.5.2.9 1.5.1.12 1.1.1.370 1.1.1.338 6.3.1.2 2.3.1.266 2.7.2.3 2.7.2.8 2.7.2.1 5.1.1.7 5.1.1.3 2.3.1.12 3.1.1.85 1.14.13.127 3.1.1.53 2.3.1.51 3.4.23.36 3.1.1.1,810 608 278 155 153 125 123 122 91 86 83 81 79 79 72 68 68 64 59 58 57 57 57 56 50 49 49 44 43 43 41 40 37 37 36 36 35 33 33 32 31 31 29 29 28 28 28 27 27 26 26 26 26 24 24 24 23 21 21 21 21 21 21 21 20 19 19 19 19 19 18 18 18 18 18 17 17 17 17 17 16 16 16 16 16 16 16 15 15 15 15 15 15 15 15 15 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 10 10 10 10 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1'))
67
- assert(lines.next.start_with?('>tost,AALTER,1425,2.3.2.27 2.7.13.3 6.2.1.3 6.1.1.6 6.3.2.13 2.7.4.25 6.1.1.22 3.1.26.- 2.3.1.29 2.7.1.15 2.3.1.234 2.1.1.13 4.2.1.17 6.3.2.8 3.1.3.3 2.7.4.16 2.4.-.- 5.3.1.1 3.1.4.- 2.8.1.7 6.5.1.2 6.1.1.2 3.4.11.10 3.4.11.1 1.1.1.100 6.3.2.10 3.6.4.- 6.1.1.23 3.1.1.61 3.1.1.4 2.7.1.50 2.7.1.48 1.8.1.2 2.6.1.- 3.4.-.- 2.4.1.227 6.3.4.2 6.3.4.4 4.1.2.- 1.10.9.1 1.14.13.- 2.5.1.- 2.6.1.16 3.1.-.- 4.2.1.153 3.1.2.6 4.6.1.17 2.4.1.- 2.5.1.75 4.2.1.3 6.3.2.31 6.3.2.34 6.3.3.2 1.2.1.2 5.2.1.8 4.99.1.1 2.3.2.2 2.-.-.- 2.7.3.9 4.1.3.27 1.1.1.262 5.4.99.2 2.7.7.59 3.1.21.3 4.2.99.20 6.1.1.12 1.7.99.4,111 11 11 8 8 7 6 4 4 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1'))
65
+ assert(lines.next.start_with?('>test,AALTER,7,3.1.3.3 6.3.2.13,2 2'))
66
+ assert(lines.next.start_with?('>test,AALER,208,6.1.1.16 2.7.7.38,44 13'))
67
+ assert(lines.next.start_with?('>tost,AALTER,7,3.1.3.3 6.3.2.13,2 2'))
68
68
  assert_raises(StopIteration) { lines.next }
69
69
  end
70
70
 
@@ -75,9 +75,9 @@ module Unipept
75
75
  lines = out.each_line
76
76
  assert_equal('', err)
77
77
  assert(lines.next.start_with?('fasta_header,peptide,ec_number'))
78
- assert(lines.next.start_with?('>test,AALTER,2.3.2.27 2.7.13.3 6.2.1.3 6.1.1.6 6.3.2.13 2.7.4.25 6.1.1.22 3.1.26.- 2.3.1.29 2.7.1.15 2.3.1.234 2.1.1.13 4.2.1.17 6.3.2.8 3.1.3.3 2.7.4.16 2.4.-.- 5.3.1.1 3.1.4.- 2.8.1.7 6.5.1.2 6.1.1.2 3.4.11.10 3.4.11.1 1.1.1.100 6.3.2.10 3.6.4.- 6.1.1.23 3.1.1.61 3.1.1.4 2.7.1.50 2.7.1.48 1.8.1.2 2.6.1.- 3.4.-.- 2.4.1.227 6.3.4.2 6.3.4.4 4.1.2.- 1.10.9.1 1.14.13.- 2.5.1.- 2.6.1.16 3.1.-.- 4.2.1.153 3.1.2.6 4.6.1.17 2.4.1.- 2.5.1.75 4.2.1.3 6.3.2.31 6.3.2.34 6.3.3.2 1.2.1.2 5.2.1.8 4.99.1.1 2.3.2.2 2.-.-.- 2.7.3.9 4.1.3.27 1.1.1.262 5.4.99.2 2.7.7.59 3.1.21.3 4.2.99.20 6.1.1.12 1.7.99.4'))
79
- assert(lines.next.start_with?('>test,AALER,2.3.1.9 6.1.1.16 2.7.7.38 1.3.5.1 2.7.7.7 2.1.2.10 6.3.4.2 3.1.-.- 2.3.1.16 6.3.5.3 3.6.4.12 2.7.13.3 2.2.1.1 2.1.1.191 2.6.1.- 2.7.7.- 6.1.1.7 5.3.1.5 4.2.1.2 1.18.1.- 4.2.1.19 3.5.4.26 1.1.1.193 5.2.1.8 6.1.1.9 3.6.1.- 2.1.1.- 2.4.2.18 4.1.1.48 1.11.1.7 3.4.24.- 3.1.1.4 2.6.1.11 2.5.1.72 2.6.1.76 5.99.1.3 3.1.3.16 3.6.3.- 3.1.21.3 5.4.99.27 2.3.1.180 2.8.1.7 2.1.1.297 1.1.1.3 5.4.3.8 3.6.3.14 4.3.1.19 3.1.11.6 1.1.1.23 2.7.7.85 1.2.1.88 2.1.1.174 4.2.99.18 2.1.3.15 2.3.1.179 2.7.7.6 1.5.5.2 2.2.1.9 3.1.4.- 6.1.1.6 1.20.4.1 3.6.4.- 3.5.1.5 3.1.1.5 6.1.1.20 2.4.1.21 3.4.11.1 1.1.1.94 2.7.8.7 4.99.1.1 1.6.5.11 3.4.11.10 3.6.-.- 5.4.99.2 3.1.1.61 4.2.1.20 6.5.1.1 6.1.1.- 4.2.2.n1 2.7.7.59 2.7.7.89 3.2.2.27 1.2.1.27 4.2.1.126 5.1.3.11 2.7.7.42 6.1.1.17 2.9.1.1 1.14.99.29 3.6.3.17 2.1.1.198 2.5.1.75 3.5.4.2 1.2.1.- 4.1.3.27 3.1.4.16 1.4.3.16 2.6.1.9 3.4.-.- 6.5.1.2 1.-.-.- 1.14.13.- 2.6.1.16 6.3.4.19 2.4.99.16 6.2.1.5 6.1.1.18 1.5.1.20 1.2.4.1 4.1.1.20 3.1.11.5 6.1.1.1 2.7.9.1 3.1.1.31 2.3.1.234 3.4.21.- 2.2.1.6 4.2.1.46 4.1.99.22 2.1.2.9 6.3.5.1 1.3.1.9 6.1.1.5 4.2.1.1 3.6.4.13 4.1.1.31 4.1.1.47 2.7.4.1 3.1.3.12 4.2.1.24 2.7.11.1 2.6.1.62 3.1.26.- 3.1.26.4 2.5.1.61 6.3.2.13 5.3.1.24 2.3.1.- 3.4.19.12 2.7.1.25 2.3.1.157 1.8.99.2 3.4.21.53 5.3.1.9 3.7.1.3 6.3.2.2 2.5.1.17 3.4.11.2 1.3.99.- 2.7.7.23 3.5.1.4 4.3.1.3 2.7.1.71 2.3.3.9 6.3.5.5 3.6.5.- 3.1.13.1 6.3.2.4 6.3.2.1 2.1.1.197 1.3.99.1 2.7.1.130 2.7.1.100 2.7.3.9 4.1.3.40 6.1.1.19 1.7.-.- 2.3.1.30 2.7.1.23 4.1.1.86 3.6.3.41 2.3.2.31 1.11.1.15 4.2.3.4 6.1.1.3 4.2.1.113 2.4.2.21 3.1.26.3 1.8.4.11 2.4.1.- 1.4.1.13 3.1.4.52 2.7.4.16 4.2.1.17 2.7.7.4 1.4.99.6 1.4.3.5 6.1.1.2 2.4.2.17 3.4.25.1 6.3.2.- 3.1.3.- 6.2.1.3 2.7.1.180 2.7.1.167 4.6.1.1 4.3.2.1 2.7.7.56 2.7.7.70 5.1.1.8 3.1.1.- 2.3.1.20 4.1.1.32 2.4.1.25 5.4.99.15 4.2.1.33 2.7.6.5 2.1.1.182 2.7.1.- 2.7.1.2 5.99.1.2 3.2.1.23 1.1.1.100 2.1.3.- 1.5.8.4 1.4.7.1 2.1.1.228 2.3.1.94 2.3.1.41 2.3.1.39 2.7.1.15 2.7.1.30 2.7.1.24 2.3.1.181 2.4.1.182 2.4.-.- 1.3.98.3 3.6.3.28 2.7.7.3 6.3.5.9 2.5.1.- 2.6.1.37 5.3.3.2 3.1.26.8 4.2.2.- 3.2.1.21 1.1.1.25 1.1.1.157 1.17.1.8 2.10.1.1 3.2.2.4 3.2.2.- 2.7.7.18 6.3.5.11 5.3.1.23 3.5.1.2 3.5.1.- 6.3.1.1 4.3.1.7 2.3.1.47 3.6.1.7 1.2.4.4 4.1.1.36 3.4.16.4 1.13.12.4 2.4.1.129 3.2.1.- 2.6.1.1 6.2.1.30 2.1.1.72 2.1.1.33 3.2.2.23 3.5.1.94 2.4.1.227 6.3.5.7 1.3.1.- 1.2.1.38 1.2.1.12 4.2.1.109 6.3.4.18 2.4.2.4 2.4.2.- 2.1.1.107 6.3.2.5 3.1.3.6 3.5.4.16 4.2.1.- 1.1.1.133 1.1.1.37 6.3.2.10 6.3.2.17 1.2.1.2 1.5.8.3 4.3.3.7 3.6.3.4 1.1.1.267 5.4.99.- 2.7.7.77 4.1.-.- 2.3.1.1 2.1.1.298 1.5.1.2 3.5.2.3 1.1.1.- 2.3.1.29 3.1.1.29 2.3.1.35 2.7.1.35 2.7.1.26 1.14.14.18 1.8.1.9 5.4.99.12 2.4.1.173 2.4.1.57 1.4.1.2 2.7.4.9 3.1.3.48 5.1.3.2 3.5.1.28 3.6.3.25 2.1.1.37 4.2.1.10 3.1.11.1 3.5.1.98 2.7.7.2 4.1.2.- 2.7.11.5 2.7.-.- 1.2.1.70 4.2.1.70 6.1.1.4 2.7.6.3 2.4.2.19 1.4.4.2 1.6.99.5 5.99.1.4 3.6.1.31 2.4.99.17 3.1.3.3 3.1.3.5 3.2.1.52 2.5.1.48 3.5.4.25 6.6.1.2 1.3.3.4 1.1.1.49 1.1.1.40 3.4.21.92 2.8.1.13 3.6.3.8 3.6.3.3 2.7.3.- 2.7.7.48 2.7.7.72 2.7.7.60 2.7.7.65 1.3.5.4 6.1.1.22 6.1.1.15 6.1.1.10 2.7.2.4 5.1.1.1 4.1.99.3 1.7.99.4 2.3.1.31 3.-.-.- 2.7.1.33 2.7.1.36 3.1.6.1 2.7.1.40 2.7.1.45 2.3.1.225 1.14.-.- 4.1.1.37 4.1.1.23 4.1.1.49 1.1.2.3 2.7.7.87 1.7.1.13 1.8.1.4 5.4.99.16 1.17.99.6 2.4.1.54 5.4.2.7 5.4.99.25 5.4.99.61 2.7.4.23 1.4.1.1 2.7.4.25 5.1.1.11 6.2.1.13 1.1.99.14 1.13.11.27 3.5.1.10 3.6.3.54 3.5.1.46 5.3.1.1 4.2.1.32 1.3.8.7 2.1.1.14 1.3.8.4 4.4.1.1 3.7.1.- 4.1.99.17 3.5.1.87 3.5.1.88 2.8.1.8 2.1.2.3 2.1.2.2 1.14.11.- 6.3.5.- 2.4.1.301 1.4.3.- 1.2.7.8 5.4.4.2 1.14.13.7 1.17.7.3 4.2.1.75 1.2.1.10 4.2.1.138 4.2.1.136 2.6.1.83 2.6.1.85 6.3.4.13 3.1.2.6 2.4.2.10 1.1.-.- 2.4.2.30 2.1.1.166 1.6.99.3 3.1.26.5 2.1.1.131 6.3.2.8 6.3.2.9 5.1.99.6 3.2.1.141 2.1.1.192 2.7.13.- 2.5.1.10 3.6.1.11 2.5.1.18 2.5.1.15 3.4.11.- 4.6.1.12 2.5.1.78 2.5.1.47 3.5.4.10 3.5.4.19 3.2.1.28 3.5.4.9 4.2.1.8 1.1.1.22 1.1.1.27 1.1.1.47 6.3.2.12 6.3.3.2 6.3.3.3 1.1.1.60 1.17.1.4 1.2.1.3 3.6.5.n1 2.7.1.165 2.3.2.3 2.7.1.148 3.4.14.- 3.4.14.4 4.3.3.6 3.6.3.5 1.4.1.21 1.1.1.262 3.1.4.11 2.7.7.49 5.3.1.16 2.1.1.200 3.6.4.4 2.1.1.269 6.1.1.23 6.1.1.14 3.5.2.5 3.5.1.1 2.3.1.15 5.1.1.- 4.1.99.1 3.1.1.2 3.1.1.3 2.1.3.12 5.4.2.12 5.4.2.10 5.4.2.11 3.1.22.4 2.7.1.11 1.3.1.10 2.7.1.39 3.3.2.1 2.7.1.29 1.14.14.1 3.1.6.- 2.7.1.69 2.7.1.92 3.5.3.11 3.5.3.12 4.1.1.79 4.1.1.71 4.1.1.68 2.3.1.174 1.12.1.2 1.17.4.2 4.1.1.28 4.1.1.50 2.3.1.189 1.14.13.236 4.1.1.19 1.9.3.1 2.8.3.15 5.1.2.3 1.3.1.91 2.4.1.14 2.4.1.15 2.4.1.12 2.4.1.13 2.4.1.18 2.4.1.20 3.2.1.1 1.8.1.8 5.4.99.13 2.3.3.1 5.3.3.14 1.15.1.1 2.4.1.187 2.4.1.83 1.3.7.7 4.3.99.3 5.4.2.- 2.6.1.7 1.5.3.1 1.5.3.4 5.4.99.24 2.3.1.129 2.3.1.128 1.4.1.- 2.7.4.8 2.7.4.7 6.2.1.17 6.4.1.1 3.1.3.18 1.13.11.11 2.2.1.2 5.1.3.3 5.1.3.1 1.13.11.39 1.14.11.40 2.4.1.250 2.1.1.77 3.5.1.25 2.1.1.71 3.5.1.11 3.5.1.13 1.3.98.1 2.1.1.63 2.7.10.- 3.6.3.24 2.4.1.266 3.5.1.32 2.1.1.43 5.3.1.6 3.6.3.34 3.6.3.31 3.6.3.32 2.4.1.287 2.4.1.278 2.1.1.11 2.1.1.17 4.2.1.11 4.4.1.8 3.1.11.- 4.1.99.11 2.8.1.4 2.1.2.1 1.5.99.2 6.3.4.4 1.11.1.6 1.11.1.- 1.97.1.- 2.7.7.1 2.7.11.25 2.7.7.9 2.7.7.8 1.14.99.3 3.1.26.12 1.8.3.2 2.7.11.7 2.1.1.80 1.7.1.4 3.3.1.1 1.4.99.- 1.4.99.5 6.3.5.4 6.3.5.2 1.2.7.5 1.2.7.1 1.2.7.- 2.5.1.6 2.5.1.3 2.5.1.1 2.4.1.345 1.14.13.2 1.2.1.84 1.2.1.83 1.2.1.86 2.6.1.18 2.6.1.19 1.11.2.4 1.14.13.25 1.2.1.79 1.2.1.41 1.14.13.48 1.1.5.2 4.2.3.1 2.6.1.52 4.2.3.5 1.2.1.22 1.14.13.50 4.2.1.151 1.2.1.16 1.13.11.2 1.13.11.- 2.6.1.84 4.2.1.51 4.2.1.59 3.4.17.- 1.18.1.3 6.3.4.21 2.7.6.1 3.1.2.- 2.4.2.9 3.1.2.4 2.4.2.14 2.4.2.29 3.6.5.5 2.4.2.31 5.3.3.- 5.1.3.14 4.3.1.12 2.1.1.176 2.1.1.171 3.1.13.5 3.5.3.1 3.5.3.8 6.3.2.6 2.1.1.199 2.1.1.193 2.5.1.21 2.5.1.32 3.1.2.28 3.6.1.15 2.5.1.16 3.6.1.66 3.6.1.40 3.4.11.4 3.4.11.6 3.4.11.5 3.4.11.9 2.5.1.89 1.7.3.3 2.5.1.83 2.4.99.18 3.1.3.7 3.1.3.2 3.1.3.1 3.2.1.50 3.5.4.33 3.2.1.20 3.2.1.35 3.5.4.3 3.5.4.4 4.1.2.48 1.1.1.127 3.4.19.3 4.2.1.3 4.2.1.6 4.2.1.9 1.1.1.11 1.1.1.14 1.1.1.26 6.3.2.30 2.3.3.13 1.1.1.30 1.1.1.35 6.3.2.29 1.1.1.58 4.1.2.20 1.1.1.65 1.1.1.69 1.1.1.62 1.3.99.10 1.3.99.23 1.1.1.81 1.1.1.95 2.7.8.- 1.5.3.10 1.5.3.19 2.7.8.23 2.7.8.24 2.7.8.11 6.2.1.1 6.2.1.- 2.7.1.191 2.8.1.11 3.2.2.9 2.3.2.- 2.7.1.170 2.7.1.168 1.6.2.4 4.3.3.5 5.5.1.1 5.5.1.2 2.7.1.107 2.-.-.- 2.4.99.- 4.6.1.2 4.4.1.16 4.4.1.11 3.1.4.53 1.1.1.290 4.3.2.2 1.1.1.269 1.16.8.1 2.7.7.12 1.2.99.7 2.7.7.41 2.7.7.80 5.3.1.22 3.5.2.14 2.1.1.205 3.1.21.7 3.4.13.9 2.1.1.282 6.1.1.21 3.7.1.19 6.1.1.13 6.1.1.11 1.1.1.304 1.5.1.5 3.5.2.9 1.5.1.12 1.1.1.370 1.1.1.338 6.3.1.2 2.3.1.266 2.7.2.3 2.7.2.8 2.7.2.1 5.1.1.7 5.1.1.3 2.3.1.12 3.1.1.85 1.14.13.127 3.1.1.53 2.3.1.51 3.4.23.36 3.1.1.1'))
80
- assert(lines.next.start_with?('>tost,AALTER,2.3.2.27 2.7.13.3 6.2.1.3 6.1.1.6 6.3.2.13 2.7.4.25 6.1.1.22 3.1.26.- 2.3.1.29 2.7.1.15 2.3.1.234 2.1.1.13 4.2.1.17 6.3.2.8 3.1.3.3 2.7.4.16 2.4.-.- 5.3.1.1 3.1.4.- 2.8.1.7 6.5.1.2 6.1.1.2 3.4.11.10 3.4.11.1 1.1.1.100 6.3.2.10 3.6.4.- 6.1.1.23 3.1.1.61 3.1.1.4 2.7.1.50 2.7.1.48 1.8.1.2 2.6.1.- 3.4.-.- 2.4.1.227 6.3.4.2 6.3.4.4 4.1.2.- 1.10.9.1 1.14.13.- 2.5.1.- 2.6.1.16 3.1.-.- 4.2.1.153 3.1.2.6 4.6.1.17 2.4.1.- 2.5.1.75 4.2.1.3 6.3.2.31 6.3.2.34 6.3.3.2 1.2.1.2 5.2.1.8 4.99.1.1 2.3.2.2 2.-.-.- 2.7.3.9 4.1.3.27 1.1.1.262 5.4.99.2 2.7.7.59 3.1.21.3 4.2.99.20 6.1.1.12 1.7.99.4'))
78
+ assert(lines.next.start_with?('>test,AALTER,3.1.3.3 6.3.2.13'))
79
+ assert(lines.next.start_with?('>test,AALER,6.1.1.16 2.7.7.38'))
80
+ assert(lines.next.start_with?('>tost,AALTER,3.1.3.3 6.3.2.13'))
81
81
  assert_raises(StopIteration) { lines.next }
82
82
  end
83
83
 
@@ -87,7 +87,7 @@ module Unipept
87
87
  end
88
88
  lines = out.each_line
89
89
  assert_equal('', err)
90
- output = lines.to_a.join('').chomp
90
+ output = lines.to_a.join.chomp
91
91
  assert(output.start_with?('['))
92
92
  assert(output.end_with?(']'))
93
93
  assert(!output.include?('}{'))
@@ -100,7 +100,7 @@ module Unipept
100
100
  end
101
101
  lines = out.each_line
102
102
  assert_equal('', err)
103
- output = lines.to_a.join('').chomp
103
+ output = lines.to_a.join.chomp
104
104
  assert(output.start_with?('<results>'))
105
105
  assert(output.end_with?('</results>'))
106
106
  assert(output.include?('<fasta_header>'))
@@ -122,7 +122,7 @@ module Unipept
122
122
  lines = out.each_line
123
123
  assert_equal('', err)
124
124
  assert(lines.next.start_with?('peptide,total_protein_count,ec_number,ec_protein_count'))
125
- assert(lines.next.start_with?('AALTER,1425,2.3.2.27 2.7.13.3 6.2.1.3 6.1.1.6 6.3.2.13 2.7.4.25 6.1.1.22 3.1.26.- 2.3.1.29 2.7.1.15 2.3.1.234 2.1.1.13 4.2.1.17 6.3.2.8 3.1.3.3 2.7.4.16 2.4.-.- 5.3.1.1 3.1.4.- 2.8.1.7 6.5.1.2 6.1.1.2 3.4.11.10 3.4.11.1 1.1.1.100 6.3.2.10 3.6.4.- 6.1.1.23 3.1.1.61 3.1.1.4 2.7.1.50 2.7.1.48 1.8.1.2 2.6.1.- 3.4.-.- 2.4.1.227 6.3.4.2 6.3.4.4 4.1.2.- 1.10.9.1 1.14.13.- 2.5.1.- 2.6.1.16 3.1.-.- 4.2.1.153 3.1.2.6 4.6.1.17 2.4.1.- 2.5.1.75 4.2.1.3 6.3.2.31 6.3.2.34 6.3.3.2 1.2.1.2 5.2.1.8 4.99.1.1 2.3.2.2 2.-.-.- 2.7.3.9 4.1.3.27 1.1.1.262 5.4.99.2 2.7.7.59 3.1.21.3 4.2.99.20 6.1.1.12 1.7.99.4,111 11 11 8 8 7 6 4 4 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1'))
125
+ assert(lines.next.start_with?('AALTER,7,3.1.3.3 6.3.2.13,2 2'))
126
126
  assert_raises(StopIteration) { lines.next }
127
127
  end
128
128
 
@@ -133,7 +133,7 @@ module Unipept
133
133
  lines = out.each_line
134
134
  assert_equal('', err)
135
135
  assert(lines.next.start_with?('peptide,total_protein_count'))
136
- assert(lines.next.start_with?('MDGTEYIIVK,4'))
136
+ assert(lines.next.start_with?('MDGTEYIIVK,35'))
137
137
  assert_raises(StopIteration) { lines.next }
138
138
  end
139
139
  end