mspire 0.8.1 → 0.8.2

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.
@@ -41,6 +41,50 @@ describe Mspire::Mzml do
41
41
  end
42
42
  end
43
43
 
44
+ describe 'roundtrip: reading and then writing' do
45
+ before do
46
+ @file = TESTFILES + "/mspire/mzml/j24z.idx_comp.3.mzML"
47
+ end
48
+
49
+ it 'works' do
50
+ outfile = TESTFILES + "/mspire/mzml/j24z.idx_comp.3.ROUNDTRIP.mzML"
51
+ Mspire::Mzml.open(@file) do |mzml|
52
+ mzml.write(outfile)
53
+ end
54
+ # I went through this file line by line to make sure it is correct
55
+ # output.
56
+ file_check(outfile)
57
+ end
58
+ end
59
+
60
+ describe 'global normalizing spectra in a compressed mzML file (read in and write out)' do
61
+ before do
62
+ @file = TESTFILES + "/mspire/mzml/j24z.idx_comp.3.mzML"
63
+ end
64
+
65
+ specify 'adding to source file, software, and data processing'
66
+ #Mspire::Mzml.open(@file) do |mzml|
67
+ # mzml.source
68
+ #end
69
+
70
+ specify 'normalize highest peak of each spectrum to 100' do
71
+ # this is very bad form to not change data_processing etc, but it
72
+ # demonstrates the minimal amount to normalize the spectra.
73
+ outfile = TESTFILES + "/mspire/mzml/j24z.idx_comp.3.NORMALIZED.mzML"
74
+ Mspire::Mzml.open(@file) do |mzml|
75
+ spectra = mzml.map do |spectrum|
76
+ normalizer = 100.0 / spectrum.intensities.max
77
+ spectrum.intensities.map! {|i| i * normalizer }
78
+ spectrum
79
+ end
80
+ mzml.run.spectrum_list = Mspire::Mzml::SpectrumList.new(mzml.run.spectrum_list.default_data_processing, spectra)
81
+ mzml.write(outfile)
82
+ end
83
+ # this output was checked to be accurate with TOPPView
84
+ file_check(outfile)
85
+ end
86
+ end
87
+
44
88
  describe 'reading an indexed, compressed peaks, mzML file' do
45
89
 
46
90
  describe 'reading the header things' do
@@ -302,15 +346,14 @@ describe Mspire::Mzml do
302
346
 
303
347
  describe 'writing mzml' do
304
348
 
305
- def sanitize_version(string)
306
- string.gsub(/"mspire" version="([\.\d]+)"/, %Q{"mspire" version="X.X.X"})
307
- end
308
-
309
349
  it 'writes MS1 and MS2 spectra' do
310
350
  spec1 = Mspire::Mzml::Spectrum.new('scan=1') do |spec|
311
351
  # profile and ms_level 1
312
352
  spec.describe_many!(['MS:1000128', ['MS:1000511', 1]])
313
- spec.data_arrays = [[1,2,3], [4,5,6]]
353
+ spec.data_arrays = [
354
+ Mspire::Mzml::DataArray[1,2,3].describe!('MS:1000514'),
355
+ Mspire::Mzml::DataArray[4,5,6].describe!('MS:1000515')
356
+ ]
314
357
  spec.scan_list = Mspire::Mzml::ScanList.new do |sl|
315
358
  scan = Mspire::Mzml::Scan.new do |scan|
316
359
  # retention time of 42 seconds
@@ -323,7 +366,10 @@ describe Mspire::Mzml do
323
366
  spec2 = Mspire::Mzml::Spectrum.new('scan=2') do |spec|
324
367
  # centroid, ms_level 2, MSn spectrum,
325
368
  spec.describe_many!(['MS:1000127', ['MS:1000511', 2], "MS:1000580"])
326
- spec.data_arrays = [[1,2,3.5], [5,6,5]]
369
+ spec.data_arrays = [
370
+ Mspire::Mzml::DataArray[1,2,3.5].describe!('MS:1000514'),
371
+ Mspire::Mzml::DataArray[5,6,5].describe!('MS:1000515')
372
+ ]
327
373
  spec.scan_list = Mspire::Mzml::ScanList.new do |sl|
328
374
  scan = Mspire::Mzml::Scan.new do |scan|
329
375
  # retention time of 42 seconds
@@ -362,16 +408,13 @@ describe Mspire::Mzml do
362
408
  end
363
409
  end
364
410
 
365
- #check = TESTFILES + '/mspire/mzml/mspire_simulated.noidx.check.mzML'
366
- tmpfile = TESTFILES + '/mspire/mzml/mspire_simulated.MSn.TMP.mzML'
411
+ tmpfile = TESTFILES + '/mspire/mzml/mspire_simulated.MSn.mzML'
367
412
  mzml.to_xml(tmpfile)
368
413
  as_string = mzml.to_xml
369
- check_string = IO.read(TESTFILES + '/mspire/mzml/mspire_simulated.MSn.check.mzML')
370
-
371
- [IO.read(tmpfile), as_string].each do |st|
372
- sanitize_version(check_string).should == sanitize_version(st)
414
+ as_string.should == IO.read(tmpfile)
415
+ file_check(tmpfile) do |string|
416
+ sanitize_mspire_version_xml(string)
373
417
  end
374
- File.unlink(tmpfile) if File.exist?(tmpfile)
375
418
  end
376
419
  end
377
420
  end
data/spec/spec_helper.rb CHANGED
@@ -24,3 +24,25 @@ def benchmark(*args, &block)
24
24
  Benchmark.bmbm(*args, &block)
25
25
  end
26
26
  end
27
+
28
+ # given "filename.ext" returns "filename.CHECK.ext
29
+ # block can be given to sanitize each string
30
+ def file_check(filename, delete=true, &block)
31
+ ext = File.extname(filename)
32
+ base = filename.chomp(ext)
33
+ checkfile = base + ".CHECK" + ext
34
+ File.exist?(filename).should be_true
35
+ fstring = IO.read(filename)
36
+ cstring = IO.read(checkfile)
37
+ if block
38
+ (fstring, cstring) = [fstring, cstring].map do |string|
39
+ block.call(string)
40
+ end
41
+ end
42
+ fstring.should == cstring
43
+ File.unlink(filename) if delete
44
+ end
45
+
46
+ def sanitize_mspire_version_xml(string)
47
+ string.gsub(/"mspire" version="([\.\d]+)"/, %Q{"mspire" version="X.X.X"})
48
+ end