mspire 0.6.12 → 0.6.18

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.12
1
+ 0.6.18
@@ -9,6 +9,8 @@ require 'ms/mzml/file_description'
9
9
  require 'ms/mzml/software'
10
10
  require 'ms/mzml/scan_list'
11
11
  require 'ms/mzml/scan'
12
+ require 'ms/mzml/scan_settings'
13
+ require 'ms/mzml/processing_method'
12
14
  require 'ms/mzml/run'
13
15
  require 'ms/mzml/spectrum_list'
14
16
  require 'ms/mzml/chromatogram_list'
@@ -1,9 +1,11 @@
1
1
  require 'base64'
2
2
  require 'zlib'
3
+ require 'ms/cv/paramable'
3
4
 
4
5
  module MS
5
6
  class Mzml
6
7
  class DataArray < Array
8
+ include MS::CV::Paramable
7
9
 
8
10
  DEFAULT_DTYPE = :float64
9
11
  DEFAULT_COMPRESSION = true
@@ -18,13 +20,14 @@ module MS
18
20
  # the type of data array (:mz or :intensity)
19
21
  attr_accessor :type
20
22
 
21
- # requires a type, :mz or :intensity
22
- def initialize(_type, ar=[])
23
+ # requires a type, :mz, :intensity, :mz_external, or :intensity_external
24
+ # (external types used in imzml)
25
+ def initialize(_type, opts={params: []})
23
26
  @type = _type
24
- super(ar)
27
+ @external = !!(@type.to_s =~ /external$/)
25
28
  end
26
29
 
27
- def self.to_mzml_string(array_ish, dtype=DEFAULT_DTYPE, compression=DEFAULT_COMPRESSION)
30
+ def self.to_binary(array_ish, dtype=DEFAULT_DTYPE, compression=DEFAULT_COMPRESSION)
28
31
  pack_code =
29
32
  case dtype
30
33
  when :float64 ; 'E*'
@@ -40,12 +43,22 @@ module MS
40
43
  end
41
44
 
42
45
  def to_xml(builder, dtype=DEFAULT_DTYPE, compression=DEFAULT_COMPRESSION)
43
- base64 = self.class.to_mzml_string(self, dtype, compression)
44
- builder.binaryDataArray(encodedLength: base64.bytesize) do |bda_n|
45
- MS::CV::Param[ DTYPE_TO_ACC[dtype] ].to_xml(bda_n)
46
- MS::CV::Param[ compression ? 'MS:1000574' : 'MS:1000576' ].to_xml(bda_n)
47
- MS::CV::Param[ (@type == :mz) ? 'MS:1000514' : 'MS:1000515' ].to_xml(bda_n) # must be m/z or intensity
48
- bda_n.binary(base64)
46
+ encoded_length =
47
+ if @external
48
+ 0
49
+ else
50
+ base64 = self.class.to_binary(self, dtype, compression)
51
+ base64.bytesize
52
+ end
53
+
54
+ builder.binaryDataArray(encodedLength: encoded_length) do |bda_n|
55
+ @params.each {|param| param.to_xml(bda_n) } if @params
56
+ unless @external
57
+ MS::CV::Param[ DTYPE_TO_ACC[dtype] ].to_xml(bda_n)
58
+ MS::CV::Param[ compression ? 'MS:1000574' : 'MS:1000576' ].to_xml(bda_n)
59
+ MS::CV::Param[ (@type == :mz) ? 'MS:1000514' : 'MS:1000515' ].to_xml(bda_n) # must be m/z or intensity
60
+ bda_n.binary(base64)
61
+ end
49
62
  end
50
63
  end
51
64
 
@@ -53,7 +66,14 @@ module MS
53
66
  def self.list_xml(arrays, builder)
54
67
  builder.binaryDataArrayList(count: arrays.size) do |bdal_n|
55
68
  arrays.zip([:mz, :intensity]) do |data_ar, typ|
56
- ar = data_ar.is_a?(MS::Mzml::DataArray) ? data_ar : MS::Mzml::DataArray.new(typ, data_ar)
69
+ ar =
70
+ if data_ar.is_a?(MS::Mzml::DataArray)
71
+ data_ar
72
+ else
73
+ real_data_array = MS::Mzml::DataArray.new(typ)
74
+ real_data_array.replace(data_ar)
75
+ real_data_array
76
+ end
57
77
  ar.type = typ unless ar.type
58
78
  ar.to_xml(bdal_n)
59
79
  end
@@ -32,7 +32,15 @@ module MS
32
32
  end
33
33
 
34
34
  def default_array_length
35
- @data_arrays ? @data_arrays.first.size : 0
35
+ if @data_arrays
36
+ if @data_arrays.first
37
+ @data_arrays.first.size
38
+ else
39
+ 0
40
+ end
41
+ else
42
+ 0
43
+ end
36
44
  end
37
45
 
38
46
  # see SpectrumList for generating the entire list
@@ -19,7 +19,7 @@ module MS
19
19
 
20
20
  def to_xml(builder)
21
21
  builder.scanList(count: self.size) do |sl_n|
22
- @description.to_xml(sl_n) if @description
22
+ @params.each {|param| param.to_xml(sl_n) } if @params
23
23
  self.each do |scan|
24
24
  scan.to_xml(sl_n)
25
25
  end
@@ -299,7 +299,7 @@ relationship: is_a IMS:1000001 ! Ibd Offest Handle
299
299
  relationship: has_units UO:0000189 ! Count
300
300
 
301
301
  [Term]
302
- id: IMS:100104
302
+ id: IMS:1000104
303
303
  name: external encoded length
304
304
  def: "Describes the length of the written data." [COMPUTIS:IMS]
305
305
  xref: value-type:xsd\:nonNegativeInteger "The allowed value-type for this CV term."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mspire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.12
4
+ version: 0.6.18
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ date: 2012-02-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
17
- requirement: &7957300 !ruby/object:Gem::Requirement
17
+ requirement: &19554840 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '1.5'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *7957300
25
+ version_requirements: *19554840
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bsearch
28
- requirement: &8341740 !ruby/object:Gem::Requirement
28
+ requirement: &19553820 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.5.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *8341740
36
+ version_requirements: *19553820
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: andand
39
- requirement: &8425040 !ruby/object:Gem::Requirement
39
+ requirement: &19552180 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 1.3.1
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *8425040
47
+ version_requirements: *19552180
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: obo
50
- requirement: &8500240 !ruby/object:Gem::Requirement
50
+ requirement: &19550640 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 0.1.0
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *8500240
58
+ version_requirements: *19550640
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: rspec
61
- requirement: &8496940 !ruby/object:Gem::Requirement
61
+ requirement: &19565640 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '2.6'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *8496940
69
+ version_requirements: *19565640
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: jeweler
72
- requirement: &8574880 !ruby/object:Gem::Requirement
72
+ requirement: &19564260 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 1.5.2
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *8574880
80
+ version_requirements: *19564260
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rcov
83
- requirement: &8588620 !ruby/object:Gem::Requirement
83
+ requirement: &19563540 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,7 +88,7 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *8588620
91
+ version_requirements: *19563540
92
92
  description: mass spectrometry proteomics, lipidomics, and tools, a rewrite of mspire,
93
93
  merging of ms-* gems
94
94
  email: jtprince@gmail.com