ms-sequest 0.0.17 → 0.0.18

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.
@@ -241,71 +241,6 @@ describe Sequest::PepXML, " created from large bioworks.xml" do
241
241
  end
242
242
 
243
243
 
244
-
245
- describe Sequest::PepXML::Modifications do
246
- before(:each) do
247
- tf_params = Tfiles + "/bioworks32.params"
248
- @params = Sequest::Params.new(tf_params)
249
- # The params object here is completely unnecessary for this test, except
250
- # that it sets up the mass table
251
- @obj = Sequest::PepXML::Modifications.new(@params, "(M* +15.90000) (M# +29.00000) (S@ +80.00000) (C^ +12.00000) (ct[ +12.33000) (nt] +14.20000) ")
252
- end
253
- it 'creates a mod_symbols_hash' do
254
- answ = {[:C, 12.0]=>"^", [:S, 80.0]=>"@", [:M, 29.0]=>"#", [:M, 15.9]=>"*", [:ct, 12.33]=>"[", [:nt, 14.2]=>"]"}
255
- @obj.mod_symbols_hash.should == answ
256
- ## need more here
257
- end
258
-
259
- it 'creates a ModificationInfo object given a special peptide sequence' do
260
- mod_string = "(M* +15.90000) (M# +29.00000) (S@ +80.00000) (C^ +12.00000) (ct[ +12.33000) (nt] +14.20000) "
261
- @params.diff_search_options = "15.90000 M 29.00000 M 80.00000 S 12.00000 C"
262
- @params.term_diff_search_options = "14.20000 12.33000"
263
- mod = Sequest::PepXML::Modifications.new(@params, mod_string)
264
- ## no mods
265
- peptide = "PEPTIDE"
266
- mod.modification_info(peptide).should be_nil
267
- peptide = "]M*EC^S@IDM#M*EMSCM["
268
- modinfo = mod.modification_info(peptide)
269
- modinfo.modified_peptide.should == peptide
270
- modinfo.mod_nterm_mass.should be_close(146.40054, 0.000001)
271
- modinfo.mod_cterm_mass.should be_close(160.52994, 0.000001)
272
- end
273
-
274
- end
275
-
276
- describe Sequest::PepXML::SearchHit::ModificationInfo do
277
-
278
- before(:each) do
279
- modaaobjs = [[3, 150.3], [6, 345.2]].map do |ar|
280
- Sequest::PepXML::SearchHit::ModificationInfo::ModAminoacidMass.new(ar)
281
- end
282
- hash = {
283
- :mod_nterm_mass => 520.2,
284
- :modified_peptide => "MOD*IFI^E&D",
285
- :mod_aminoacid_masses => modaaobjs,
286
- }
287
- #answ = "<modification_info mod_nterm_mass=\"520.2\" modified_peptide=\"MOD*IFI^E&amp;D\">\n\t<mod_aminoacid_mass position=\"3\" mass=\"150.3\"/>\n\t<mod_aminoacid_mass position=\"6\" mass=\"345.2\"/>\n</modification_info>\n"
288
- @obj = Sequest::PepXML::SearchHit::ModificationInfo.new(hash)
289
- end
290
-
291
- def _re(st)
292
- /#{Regexp.escape(st)}/
293
- end
294
-
295
- it 'can produce pepxml' do
296
- answ = @obj.to_pepxml
297
- answ.should =~ _re('<modification_info')
298
- answ.should =~ _re(" mod_nterm_mass=\"520.2\"")
299
- answ.should =~ _re(" modified_peptide=\"MOD*IFI^E&amp;D\"")
300
- answ.should =~ _re("<mod_aminoacid_mass")
301
- answ.should =~ _re(" position=\"3\"")
302
- answ.should =~ _re(" mass=\"150.3\"")
303
- answ.should =~ _re(" position=\"6\"")
304
- answ.should =~ _re(" mass=\"345.2\"")
305
- answ.should =~ _re("</modification_info>")
306
- end
307
- end
308
-
309
244
  describe 'bioworks file with modifications transformed into pepxml' do
310
245
 
311
246
  spec_large do
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+
3
+ require 'ms/sequest/srf/pepxml'
4
+
5
+ describe 'an Ms::Ident::Pepxml object from an srf file with modifications' do
6
+ before do
7
+ FileUtils.mkdir @out_path unless File.exist?(@out_path)
8
+ end
9
+ after do
10
+ FileUtils.rm_rf @out_path
11
+ end
12
+
13
+ @srf_file = SEQUEST_DIR + '/opd1_2runs_2mods/sequest331/020.srf'
14
+ @out_path = TESTFILES + '/tmp'
15
+ @srf = Ms::Sequest::Srf.new(@srf_file)
16
+
17
+ it 'produces xml with all the expected parts' do
18
+ tags = %w(msms_pipeline_analysis msms_run_summary sample_enzyme specificity search_summary search_database enzymatic_search_constraint aminoacid_modification parameter spectrum_query search_result search_hit modification_info mod_aminoacid_mass search_score)
19
+ pepxml = @srf.to_pepxml(:verbose => false)
20
+ xml_string = pepxml.to_xml
21
+ tags.each do |tag|
22
+ xml_string.matches %r{<#{tag}}
23
+ end
24
+ end
25
+
26
+ # takes an xml string of attributes (' key="val" key2="val2" ') and a xml
27
+ # node that is expected to have those attributes
28
+ def has_attributes(node, string)
29
+ if node.nil?
30
+ raise "your xml node is nil!!!"
31
+ end
32
+ if node == []
33
+ raise "you gave me an empty array instead of a node"
34
+ end
35
+ # strips the tail end quote mark, also
36
+ string.strip!
37
+ string.chomp!('"')
38
+ string.split(/"\s+/).each do |str|
39
+ (key,val) = str.split('=',2)
40
+ val=val[1..-1] if val[0,1] == '"'
41
+ if node[key] != val
42
+ puts "FAILING"
43
+ puts "EXPECT: #{key} => #{val} ACTUAL => #{val}"
44
+ puts "NODE KEYS: "
45
+ p node.keys
46
+ puts "NODE VALUES: "
47
+ p node.values
48
+ end
49
+ node[key].is val
50
+ end
51
+ end
52
+
53
+ it 'gets everything right' do
54
+ xml_string = @srf.to_pepxml(:verbose => false).to_xml
55
+ doc = Nokogiri::XML.parse(xml_string, nil, nil, Nokogiri::XML::ParseOptions::DEFAULT_XML | Nokogiri::XML::ParseOptions::NOBLANKS)
56
+
57
+ root = doc.root
58
+
59
+ root.name.is "msms_pipeline_analysis"
60
+ has_attributes( root, 'schemaLocation="http://regis-web.systemsbiology.net/pepXML /tools/bin/TPP/tpp/schema/pepXML_v115.xsd"' )
61
+ root['date'].nil?.is false
62
+ root['summary_xml'].matches "020.xml"
63
+ root.namespaces.is( {"xmlns" => "http://regis-web.systemsbiology.net/pepXML" } )
64
+
65
+ mrs_node = root.child
66
+ mrs_node.name.is 'msms_run_summary'
67
+ has_attributes( mrs_node, 'msManufacturer="Thermo" msModel="LCQ Deca XP" msIonization="ESI" msMassAnalyzer="Ion Trap" msDetector="UNKNOWN" raw_data=".mzXML"' )
68
+ se_node = mrs_node.child
69
+ se_node.name.is 'sample_enzyme'
70
+ has_attributes se_node, 'name="Trypsin"'
71
+ specificity_node = se_node.child
72
+ specificity_node.name.is 'specificity'
73
+ has_attributes specificity_node, 'cut="KR" no_cut="P" sense="C"'
74
+ search_summary_node = se_node.next_sibling
75
+ search_summary_node.name.is 'search_summary'
76
+ has_attributes search_summary_node, 'search_engine="SEQUEST" precursor_mass_type="average" fragment_mass_type="average" search_id="1"'
77
+ search_summary_node['base_name'].matches %r{sequest/opd1_2runs_2mods/sequest331/020$}
78
+ # TODO: expand the search summary check!
79
+ # TODO: finish testing other guys for accurcy
80
+
81
+ end
82
+ end
83
+
84
+
@@ -1,5 +1,5 @@
1
- require File.expand_path( File.dirname(__FILE__) + '/../../spec_helper' )
2
- require File.expand_path( File.dirname(__FILE__) + '/srf_spec_helper' )
1
+ require 'spec_helper'
2
+ require 'ms/sequest/srf_spec_helper' # in spec/
3
3
 
4
4
  require 'ms/sequest/srf'
5
5
 
@@ -12,7 +12,7 @@ class Hash
12
12
  self.all? do |k,v|
13
13
  k = k.to_sym
14
14
  retval =
15
- if k == :peaks or k == :hits or k == :prots
15
+ if k == :peaks or k == :hits or k == :proteins
16
16
  obj.send(k).size == v
17
17
  elsif v.class == Float
18
18
  delta =
@@ -85,7 +85,7 @@ module SRFHelper
85
85
  :rsp=>1,
86
86
  :ions_matched=>5,
87
87
  :ions_total=>35,
88
- :prots=>1,
88
+ :proteins=>1,
89
89
  :deltamass=>-0.00579976654989878,
90
90
  :ppm=>5.16938660859491,
91
91
  :base_name=>"020",
@@ -109,7 +109,7 @@ module SRFHelper
109
109
  :rsp=>11,
110
110
  :ions_matched=>6,
111
111
  :ions_total=>40,
112
- :prots=>1,
112
+ :proteins=>1,
113
113
  :deltamass=>0.00243330985608736,
114
114
  :ppm=>1.91215729542523,
115
115
  :base_name=>"020",
data/spec/spec_helper.rb CHANGED
@@ -1,25 +1,19 @@
1
-
2
1
  require 'rubygems'
3
- require 'spec/more'
4
-
5
- Bacon.summary_on_exit
6
-
7
- # is this already defined??
8
- TESTFILES = File.expand_path(File.dirname(__FILE__)) + "/testfiles"
2
+ require 'bundler'
9
3
 
10
4
  begin
11
- require 'ms/testdata'
12
- rescue(LoadError)
13
- puts %Q{
14
- Tests probably cannot be run because the submodules have
15
- not been initialized. Use these commands and try again:
16
-
17
- % git submodule init
18
- % git submodule update
19
-
20
- }
21
- raise
5
+ Bundler.setup(:default, :development)
6
+ rescue Bundler::BundlerError => e
7
+ $stderr.puts e.message
8
+ $stderr.puts "Run `bundle install` to install missing gems"
9
+ exit e.status_code
22
10
  end
11
+ require 'ms/testdata'
12
+ require 'spec/more'
13
+
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
16
+
23
17
 
24
18
  def capture_stderr
25
19
  begin
@@ -31,3 +25,8 @@ def capture_stderr
31
25
  end
32
26
  end
33
27
 
28
+ TESTFILES = File.dirname(__FILE__) + '/testfiles'
29
+ SEQUEST_DIR = Ms::TESTDATA + '/sequest'
30
+
31
+
32
+ Bacon.summary_on_exit
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 17
9
- version: 0.0.17
8
+ - 18
9
+ version: 0.0.18
10
10
  platform: ruby
11
11
  authors:
12
12
  - John T. Prince
@@ -14,11 +14,11 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-02-24 00:00:00 -07:00
17
+ date: 2011-03-08 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: ms-core
21
+ name: ms-ident
22
22
  requirement: &id001 !ruby/object:Gem::Requirement
23
23
  none: false
24
24
  requirements:
@@ -27,14 +27,29 @@ dependencies:
27
27
  segments:
28
28
  - 0
29
29
  - 0
30
- - 11
31
- version: 0.0.11
30
+ - 17
31
+ version: 0.0.17
32
32
  type: :runtime
33
33
  prerelease: false
34
34
  version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
36
- name: arrayclass
36
+ name: ms-core
37
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 0
44
+ - 0
45
+ - 14
46
+ version: 0.0.14
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: arrayclass
52
+ requirement: &id003 !ruby/object:Gem::Requirement
38
53
  none: false
39
54
  requirements:
40
55
  - - ">="
@@ -46,10 +61,39 @@ dependencies:
46
61
  version: 0.1.0
47
62
  type: :runtime
48
63
  prerelease: false
49
- version_requirements: *id002
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: ms-msrun
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ segments:
73
+ - 0
74
+ - 3
75
+ - 3
76
+ version: 0.3.3
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *id004
80
+ - !ruby/object:Gem::Dependency
81
+ name: trollop
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 1
89
+ - 16
90
+ version: "1.16"
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: *id005
50
94
  - !ruby/object:Gem::Dependency
51
95
  name: ms-testdata
52
- requirement: &id003 !ruby/object:Gem::Requirement
96
+ requirement: &id006 !ruby/object:Gem::Requirement
53
97
  none: false
54
98
  requirements:
55
99
  - - ">="
@@ -61,10 +105,10 @@ dependencies:
61
105
  version: 0.1.1
62
106
  type: :development
63
107
  prerelease: false
64
- version_requirements: *id003
108
+ version_requirements: *id006
65
109
  - !ruby/object:Gem::Dependency
66
110
  name: spec-more
67
- requirement: &id004 !ruby/object:Gem::Requirement
111
+ requirement: &id007 !ruby/object:Gem::Requirement
68
112
  none: false
69
113
  requirements:
70
114
  - - ">="
@@ -74,10 +118,10 @@ dependencies:
74
118
  version: "0"
75
119
  type: :development
76
120
  prerelease: false
77
- version_requirements: *id004
121
+ version_requirements: *id007
78
122
  - !ruby/object:Gem::Dependency
79
123
  name: bundler
80
- requirement: &id005 !ruby/object:Gem::Requirement
124
+ requirement: &id008 !ruby/object:Gem::Requirement
81
125
  none: false
82
126
  requirements:
83
127
  - - ~>
@@ -89,10 +133,10 @@ dependencies:
89
133
  version: 1.0.0
90
134
  type: :development
91
135
  prerelease: false
92
- version_requirements: *id005
136
+ version_requirements: *id008
93
137
  - !ruby/object:Gem::Dependency
94
138
  name: jeweler
95
- requirement: &id006 !ruby/object:Gem::Requirement
139
+ requirement: &id009 !ruby/object:Gem::Requirement
96
140
  none: false
97
141
  requirements:
98
142
  - - ~>
@@ -104,10 +148,10 @@ dependencies:
104
148
  version: 1.5.2
105
149
  type: :development
106
150
  prerelease: false
107
- version_requirements: *id006
151
+ version_requirements: *id009
108
152
  - !ruby/object:Gem::Dependency
109
153
  name: rcov
110
- requirement: &id007 !ruby/object:Gem::Requirement
154
+ requirement: &id010 !ruby/object:Gem::Requirement
111
155
  none: false
112
156
  requirements:
113
157
  - - ">="
@@ -117,10 +161,11 @@ dependencies:
117
161
  version: "0"
118
162
  type: :development
119
163
  prerelease: false
120
- version_requirements: *id007
164
+ version_requirements: *id010
121
165
  description: reads .SRF, .SQT and supports conversions
122
166
  email: jtprince@gmail.com
123
167
  executables:
168
+ - srf_to_pepxml.rb
124
169
  - srf_to_search.rb
125
170
  - srf_to_sqt.rb
126
171
  extensions: []
@@ -138,22 +183,29 @@ files:
138
183
  - README.rdoc
139
184
  - Rakefile
140
185
  - VERSION
186
+ - bin/srf_to_pepxml.rb
141
187
  - bin/srf_to_search.rb
142
188
  - bin/srf_to_sqt.rb
143
189
  - lib/ms/sequest.rb
144
190
  - lib/ms/sequest/bioworks.rb
145
191
  - lib/ms/sequest/params.rb
146
192
  - lib/ms/sequest/pepxml.rb
193
+ - lib/ms/sequest/pepxml/modifications.rb
194
+ - lib/ms/sequest/pepxml/params.rb
147
195
  - lib/ms/sequest/sqt.rb
148
196
  - lib/ms/sequest/srf.rb
197
+ - lib/ms/sequest/srf/pepxml.rb
198
+ - lib/ms/sequest/srf/pepxml/sequest.rb
149
199
  - lib/ms/sequest/srf/search.rb
150
200
  - lib/ms/sequest/srf/sqt.rb
151
201
  - script/fasta_ipi_to_ncbi-ish.rb
152
202
  - spec/ms/sequest/bioworks_spec.rb
153
203
  - spec/ms/sequest/params_spec.rb
204
+ - spec/ms/sequest/pepxml/modifications_spec.rb
154
205
  - spec/ms/sequest/pepxml_spec.rb
155
206
  - spec/ms/sequest/sqt_spec.rb
156
207
  - spec/ms/sequest/sqt_spec_helper.rb
208
+ - spec/ms/sequest/srf/pepxml_spec.rb
157
209
  - spec/ms/sequest/srf/search_spec.rb
158
210
  - spec/ms/sequest/srf/sqt_spec.rb
159
211
  - spec/ms/sequest/srf_spec.rb
@@ -180,7 +232,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
180
232
  requirements:
181
233
  - - ">="
182
234
  - !ruby/object:Gem::Version
183
- hash: 1512994769580445168
235
+ hash: -2543561928840978627
184
236
  segments:
185
237
  - 0
186
238
  version: "0"
@@ -202,9 +254,11 @@ summary: An mspire library supporting SEQUEST, Bioworks, SQT, etc
202
254
  test_files:
203
255
  - spec/ms/sequest/bioworks_spec.rb
204
256
  - spec/ms/sequest/params_spec.rb
257
+ - spec/ms/sequest/pepxml/modifications_spec.rb
205
258
  - spec/ms/sequest/pepxml_spec.rb
206
259
  - spec/ms/sequest/sqt_spec.rb
207
260
  - spec/ms/sequest/sqt_spec_helper.rb
261
+ - spec/ms/sequest/srf/pepxml_spec.rb
208
262
  - spec/ms/sequest/srf/search_spec.rb
209
263
  - spec/ms/sequest/srf/sqt_spec.rb
210
264
  - spec/ms/sequest/srf_spec.rb