mspire 0.2.4 → 0.3.0

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 (233) hide show
  1. data/INSTALL +1 -0
  2. data/README +25 -0
  3. data/Rakefile +129 -40
  4. data/bin/{find_aa_freq.rb → aafreqs.rb} +2 -2
  5. data/bin/bioworks_to_pepxml.rb +1 -0
  6. data/bin/fasta_shaker.rb +1 -96
  7. data/bin/filter_and_validate.rb +5 -0
  8. data/bin/{mzxml_to_lmat.rb → ms_to_lmat.rb} +8 -7
  9. data/bin/prob_validate.rb +6 -0
  10. data/bin/raw_to_mzXML.rb +2 -2
  11. data/bin/srf_group.rb +1 -0
  12. data/bin/srf_to_sqt.rb +40 -0
  13. data/changelog.txt +68 -0
  14. data/lib/align/chams.rb +6 -6
  15. data/lib/align.rb +4 -3
  16. data/lib/bsearch.rb +120 -0
  17. data/lib/fasta.rb +318 -86
  18. data/lib/group_by.rb +10 -0
  19. data/lib/index_by.rb +11 -0
  20. data/lib/merge_deep.rb +21 -0
  21. data/lib/{spec → ms/converter}/mzxml.rb +77 -109
  22. data/lib/ms/gradient_program.rb +171 -0
  23. data/lib/ms/msrun.rb +209 -0
  24. data/lib/{spec/msrun.rb → ms/msrun_index.rb} +7 -40
  25. data/lib/ms/parser/mzdata/axml.rb +12 -0
  26. data/lib/ms/parser/mzdata/dom.rb +160 -0
  27. data/lib/ms/parser/mzdata/libxml.rb +7 -0
  28. data/lib/ms/parser/mzdata.rb +25 -0
  29. data/lib/ms/parser/mzxml/axml.rb +11 -0
  30. data/lib/ms/parser/mzxml/dom.rb +159 -0
  31. data/lib/ms/parser/mzxml/hpricot.rb +253 -0
  32. data/lib/ms/parser/mzxml/libxml.rb +15 -0
  33. data/lib/ms/parser/mzxml/regexp.rb +122 -0
  34. data/lib/ms/parser/mzxml/rexml.rb +72 -0
  35. data/lib/ms/parser/mzxml/xmlparser.rb +248 -0
  36. data/lib/ms/parser/mzxml.rb +175 -0
  37. data/lib/ms/parser.rb +108 -0
  38. data/lib/ms/precursor.rb +10 -0
  39. data/lib/ms/scan.rb +81 -0
  40. data/lib/ms/spectrum.rb +193 -0
  41. data/lib/ms.rb +10 -0
  42. data/lib/mspire.rb +4 -0
  43. data/lib/roc.rb +61 -1
  44. data/lib/sample_enzyme.rb +31 -8
  45. data/lib/scan_i.rb +21 -0
  46. data/lib/spec_id/aa_freqs.rb +7 -3
  47. data/lib/spec_id/bioworks.rb +20 -14
  48. data/lib/spec_id/digestor.rb +139 -0
  49. data/lib/spec_id/mass.rb +116 -0
  50. data/lib/spec_id/parser/proph.rb +236 -0
  51. data/lib/spec_id/precision/filter/cmdline.rb +209 -0
  52. data/lib/spec_id/precision/filter/interactive.rb +134 -0
  53. data/lib/spec_id/precision/filter/output.rb +147 -0
  54. data/lib/spec_id/precision/filter.rb +623 -0
  55. data/lib/spec_id/precision/output.rb +60 -0
  56. data/lib/spec_id/precision/prob/cmdline.rb +139 -0
  57. data/lib/spec_id/precision/prob/output.rb +88 -0
  58. data/lib/spec_id/precision/prob.rb +171 -0
  59. data/lib/spec_id/proph/pep_summary.rb +92 -0
  60. data/lib/spec_id/proph/prot_summary.rb +484 -0
  61. data/lib/spec_id/proph.rb +2 -466
  62. data/lib/spec_id/protein_summary.rb +2 -2
  63. data/lib/spec_id/sequest/params.rb +316 -0
  64. data/lib/spec_id/sequest/pepxml.rb +1513 -0
  65. data/lib/spec_id/sequest.rb +2 -1672
  66. data/lib/spec_id/srf.rb +445 -177
  67. data/lib/spec_id.rb +183 -95
  68. data/lib/spec_id_xml.rb +8 -10
  69. data/lib/transmem/phobius.rb +147 -0
  70. data/lib/transmem/toppred.rb +368 -0
  71. data/lib/transmem.rb +157 -0
  72. data/lib/validator/aa.rb +135 -0
  73. data/lib/validator/background.rb +73 -0
  74. data/lib/validator/bias.rb +95 -0
  75. data/lib/validator/cmdline.rb +260 -0
  76. data/lib/validator/decoy.rb +94 -0
  77. data/lib/validator/digestion_based.rb +69 -0
  78. data/lib/validator/probability.rb +48 -0
  79. data/lib/validator/prot_from_pep.rb +234 -0
  80. data/lib/validator/transmem.rb +272 -0
  81. data/lib/validator/true_pos.rb +46 -0
  82. data/lib/validator.rb +214 -0
  83. data/lib/xml.rb +38 -0
  84. data/lib/xml_style_parser.rb +105 -0
  85. data/lib/xmlparser_wrapper.rb +19 -0
  86. data/script/compile_and_plot_smriti_final.rb +97 -0
  87. data/script/extract_gradient_programs.rb +56 -0
  88. data/script/get_apex_values_rexml.rb +44 -0
  89. data/script/mzXML2timeIndex.rb +1 -1
  90. data/script/smriti_final_analysis.rb +103 -0
  91. data/script/toppred_to_yaml.rb +47 -0
  92. data/script/tpp_installer.rb +1 -1
  93. data/{test/tc_align.rb → specs/align_spec.rb} +21 -27
  94. data/{test/tc_bioworks_to_pepxml.rb → specs/bin/bioworks_to_pepxml_spec.rb} +25 -41
  95. data/specs/bin/fasta_shaker_spec.rb +259 -0
  96. data/specs/bin/filter_and_validate__multiple_vals_helper.yaml +202 -0
  97. data/specs/bin/filter_and_validate_spec.rb +124 -0
  98. data/specs/bin/ms_to_lmat_spec.rb +34 -0
  99. data/specs/bin/prob_validate_spec.rb +62 -0
  100. data/specs/bin/protein_summary_spec.rb +10 -0
  101. data/{test/tc_fasta.rb → specs/fasta_spec.rb} +354 -310
  102. data/specs/gi_spec.rb +22 -0
  103. data/specs/load_bin_path.rb +7 -0
  104. data/specs/merge_deep_spec.rb +13 -0
  105. data/specs/ms/gradient_program_spec.rb +77 -0
  106. data/specs/ms/msrun_spec.rb +455 -0
  107. data/specs/ms/parser_spec.rb +92 -0
  108. data/specs/ms/spectrum_spec.rb +89 -0
  109. data/specs/roc_spec.rb +251 -0
  110. data/specs/rspec_autotest.rb +149 -0
  111. data/specs/sample_enzyme_spec.rb +41 -0
  112. data/specs/spec_helper.rb +133 -0
  113. data/specs/spec_id/aa_freqs_spec.rb +52 -0
  114. data/{test/tc_bioworks.rb → specs/spec_id/bioworks_spec.rb} +56 -71
  115. data/specs/spec_id/digestor_spec.rb +75 -0
  116. data/specs/spec_id/precision/filter/cmdline_spec.rb +20 -0
  117. data/specs/spec_id/precision/filter/output_spec.rb +31 -0
  118. data/specs/spec_id/precision/filter_spec.rb +243 -0
  119. data/specs/spec_id/precision/prob_spec.rb +111 -0
  120. data/specs/spec_id/precision/prob_spec_helper.rb +0 -0
  121. data/specs/spec_id/proph/pep_summary_spec.rb +143 -0
  122. data/{test/tc_proph.rb → specs/spec_id/proph/prot_summary_spec.rb} +52 -32
  123. data/{test/tc_protein_summary.rb → specs/spec_id/protein_summary_spec.rb} +85 -0
  124. data/specs/spec_id/sequest/params_spec.rb +68 -0
  125. data/specs/spec_id/sequest/pepxml_spec.rb +452 -0
  126. data/specs/spec_id/sqt_spec.rb +138 -0
  127. data/specs/spec_id/srf_spec.rb +209 -0
  128. data/specs/spec_id/srf_spec_helper.rb +302 -0
  129. data/specs/spec_id_helper.rb +33 -0
  130. data/specs/spec_id_spec.rb +361 -0
  131. data/specs/spec_id_xml_spec.rb +33 -0
  132. data/specs/transmem/phobius_spec.rb +423 -0
  133. data/specs/transmem/toppred_spec.rb +297 -0
  134. data/specs/transmem_spec.rb +60 -0
  135. data/specs/transmem_spec_shared.rb +64 -0
  136. data/specs/validator/aa_spec.rb +107 -0
  137. data/specs/validator/background_spec.rb +51 -0
  138. data/specs/validator/bias_spec.rb +146 -0
  139. data/specs/validator/decoy_spec.rb +51 -0
  140. data/specs/validator/fasta_helper.rb +26 -0
  141. data/specs/validator/prot_from_pep_spec.rb +141 -0
  142. data/specs/validator/transmem_spec.rb +145 -0
  143. data/specs/validator/true_pos_spec.rb +58 -0
  144. data/specs/validator_helper.rb +33 -0
  145. data/specs/xml_spec.rb +12 -0
  146. data/test_files/000_pepxml18_small.xml +206 -0
  147. data/test_files/020a.mzXML.timeIndex +4710 -0
  148. data/test_files/4-03-03_mzXML/000.mzXML.timeIndex +3973 -0
  149. data/test_files/4-03-03_mzXML/020.mzXML.timeIndex +3872 -0
  150. data/test_files/4-03-03_small-prot.xml +321 -0
  151. data/test_files/4-03-03_small.xml +3876 -0
  152. data/test_files/7MIX_STD_110802_1.sequest_params_fragment.srf +0 -0
  153. data/test_files/bioworks-3.3_10prots.xml +5999 -0
  154. data/test_files/bioworks31.params +77 -0
  155. data/test_files/bioworks32.params +62 -0
  156. data/test_files/bioworks33.params +63 -0
  157. data/test_files/bioworks_single_run_small.xml +7237 -0
  158. data/test_files/bioworks_small.fasta +212 -0
  159. data/test_files/bioworks_small.params +63 -0
  160. data/test_files/bioworks_small.phobius +109 -0
  161. data/test_files/bioworks_small.toppred.out +2847 -0
  162. data/test_files/bioworks_small.xml +5610 -0
  163. data/test_files/bioworks_with_INV_small.xml +3753 -0
  164. data/test_files/bioworks_with_SHUFF_small.xml +2503 -0
  165. data/test_files/corrupted_900.srf +0 -0
  166. data/test_files/head_of_7MIX.srf +0 -0
  167. data/test_files/interact-opd1_mods_small-prot.xml +304 -0
  168. data/test_files/messups.fasta +297 -0
  169. data/test_files/opd1/000.my_answer.100lines.xml +101 -0
  170. data/test_files/opd1/000.tpp_1.2.3.first10.xml +115 -0
  171. data/test_files/opd1/000.tpp_2.9.2.first10.xml +126 -0
  172. data/test_files/opd1/000.v2.1.mzXML.timeIndex +3748 -0
  173. data/test_files/opd1/000_020-prot.png +0 -0
  174. data/test_files/opd1/000_020_3prots-prot.mod_initprob.xml +62 -0
  175. data/test_files/opd1/000_020_3prots-prot.xml +62 -0
  176. data/test_files/opd1/opd1_cat_inv_small-prot.xml +139 -0
  177. data/test_files/opd1/sequest.3.1.params +77 -0
  178. data/test_files/opd1/sequest.3.2.params +62 -0
  179. data/test_files/opd1/twenty_scans.mzXML +418 -0
  180. data/test_files/opd1/twenty_scans.v2.1.mzXML +382 -0
  181. data/test_files/opd1/twenty_scans_answ.lmat +0 -0
  182. data/test_files/opd1/twenty_scans_answ.lmata +9 -0
  183. data/test_files/opd1_020_beginning.RAW +0 -0
  184. data/test_files/opd1_2runs_2mods/interact-opd1_mods__small.xml +753 -0
  185. data/test_files/orbitrap_mzData/000_cut.xml +1920 -0
  186. data/test_files/pepproph_small.xml +4691 -0
  187. data/test_files/phobius.small.noheader.txt +50 -0
  188. data/test_files/phobius.small.small.txt +53 -0
  189. data/test_files/s01_anC1_ld020mM.key.txt +25 -0
  190. data/test_files/s01_anC1_ld020mM.meth +0 -0
  191. data/test_files/small.fasta +297 -0
  192. data/test_files/smallraw.RAW +0 -0
  193. data/test_files/tf_bioworks2excel.bioXML +14340 -0
  194. data/test_files/tf_bioworks2excel.txt.actual +1035 -0
  195. data/test_files/toppred.small.out +416 -0
  196. data/test_files/toppred.xml.out +318 -0
  197. data/test_files/validator_hits_separate/bias_bioworks_small_HS.fasta +7 -0
  198. data/test_files/validator_hits_separate/bioworks_small_HS.xml +5651 -0
  199. data/test_files/yeast_gly_small-prot.xml +265 -0
  200. data/test_files/yeast_gly_small.1.0_1.0_1.0.parentTimes +6 -0
  201. data/test_files/yeast_gly_small.xml +3807 -0
  202. data/test_files/yeast_gly_small2.parentTimes +6 -0
  203. metadata +273 -57
  204. data/bin/filter.rb +0 -6
  205. data/bin/precision.rb +0 -5
  206. data/lib/spec/mzdata/parser.rb +0 -108
  207. data/lib/spec/mzdata.rb +0 -48
  208. data/lib/spec/mzxml/parser.rb +0 -449
  209. data/lib/spec/scan.rb +0 -55
  210. data/lib/spec_id/filter.rb +0 -797
  211. data/lib/spec_id/precision.rb +0 -421
  212. data/lib/toppred.rb +0 -18
  213. data/script/filter-peps.rb +0 -164
  214. data/test/tc_aa_freqs.rb +0 -59
  215. data/test/tc_fasta_shaker.rb +0 -149
  216. data/test/tc_filter.rb +0 -203
  217. data/test/tc_filter_peps.rb +0 -46
  218. data/test/tc_gi.rb +0 -17
  219. data/test/tc_id_class_anal.rb +0 -70
  220. data/test/tc_id_precision.rb +0 -89
  221. data/test/tc_msrun.rb +0 -88
  222. data/test/tc_mzxml.rb +0 -88
  223. data/test/tc_mzxml_to_lmat.rb +0 -36
  224. data/test/tc_peptide_parent_times.rb +0 -27
  225. data/test/tc_precision.rb +0 -60
  226. data/test/tc_roc.rb +0 -166
  227. data/test/tc_sample_enzyme.rb +0 -32
  228. data/test/tc_scan.rb +0 -26
  229. data/test/tc_sequest.rb +0 -336
  230. data/test/tc_spec.rb +0 -78
  231. data/test/tc_spec_id.rb +0 -201
  232. data/test/tc_spec_id_xml.rb +0 -36
  233. data/test/tc_srf.rb +0 -262
@@ -0,0 +1,316 @@
1
+ require 'sample_enzyme'
2
+
3
+
4
+ ##
5
+ # In the future, this guy should accept any version of bioworks params file
6
+ # and spit out any param queried.
7
+ module Sequest ; end
8
+ class Sequest::Params
9
+
10
+ Bioworks31_Enzyme_Info_Array = [
11
+ ['No_Enzyme', 0, '-', '-'], # 0
12
+ ['Trypsin', 1, 'KR', '-'], # 1
13
+ ['Trypsin(KRLNH)', 1, 'KRLNH', '-'], # 2
14
+ ['Chymotrypsin', 1, 'FWYL', '-'], # 3
15
+ ['Chymotrypsin(FWY)', 1, 'FWY', 'P'], # 4
16
+ ['Clostripain', 1, 'R', '-'], # 5
17
+ ['Cyanogen_Bromide', 1, 'M', '-'], # 6
18
+ ['IodosoBenzoate', 1, 'W', '-'], # 7
19
+ ['Proline_Endopept', 1, 'P', '-'], # 8
20
+ ['Staph_Protease', 1, 'E', '-'], # 9
21
+ ['Trypsin_K', 1, 'K', 'P'], # 10
22
+ ['Trypsin_R', 1, 'R', 'P'], # 11
23
+ ['GluC', 1, 'ED', '-'], # 12
24
+ ['LysC', 1, 'K', '-'], # 13
25
+ ['AspN', 0, 'D', '-'], # 14
26
+ ['Elastase', 1, 'ALIV', 'P'], # 15
27
+ ['Elastase/Tryp/Chymo', 1, 'ALIVKRWFY', 'P'], # 16
28
+ ]
29
+
30
+ # current attributes supported are:
31
+ # bioworks 3.2:
32
+ @@param_re = / = ?/o
33
+ @@param_two_split = ';'
34
+ @@sequest_line = /\[SEQUEST\]/o
35
+
36
+ # the general options
37
+ attr_accessor :opts
38
+ # the static weights added to amino acids
39
+ attr_accessor :mods
40
+
41
+ # all keys and values stored as strings!
42
+ # will accept a sequest.params file or .srf file
43
+ def initialize(file=nil)
44
+ if file
45
+ parse(file)
46
+ end
47
+ end
48
+
49
+ # returns hash of params up until add_U_user_amino_acid
50
+ def grab_params(fh)
51
+ hash = {}
52
+ in_add_amino_acid_section = false
53
+ add_section_re = /^\s*add_/
54
+ prev_pos = nil
55
+ while line = fh.gets
56
+ if line =~ add_section_re
57
+ in_add_amino_acid_section = true
58
+ end
59
+ if (in_add_amino_acid_section and !(line =~ add_section_re))
60
+ fh.pos = prev_pos
61
+ break
62
+ end
63
+ prev_pos = fh.pos
64
+ if line =~ /\w+/
65
+ one,two = line.split @@param_re
66
+ two,comment = two.split @@param_two_split
67
+ hash[one] = two.rstrip
68
+ end
69
+ end
70
+ hash
71
+ end
72
+
73
+ # returns self
74
+ def parse_handle(fh)
75
+ # seek to the SEQUEST file
76
+ loop do
77
+ if fh.gets =~ @@sequest_line
78
+ # double check that we are in a sequest params file:
79
+ pos = fh.pos
80
+ if fh.gets =~ /^first_database_name/
81
+ fh.pos = pos
82
+ break
83
+ end
84
+ end
85
+ end
86
+ @opts = grab_params(fh)
87
+ @opts["search_engine"] = "SEQUEST"
88
+ # extract out the mods
89
+ @mods = {}
90
+ @opts.each do |k,v|
91
+ if k =~ /^add_/
92
+ @mods[k] = @opts.delete(k)
93
+ end
94
+ end
95
+
96
+ ## this gets rid of the .hdr postfix on indexed databases
97
+ @opts["first_database_name"] = @opts["first_database_name"].sub(/\.hdr$/, '')
98
+ self
99
+ end
100
+
101
+ ## parses file
102
+ ## and drops the .hdr behind indexed fasta files
103
+ ## returns self
104
+ ## can read sequest.params file or .srf file handle
105
+ def parse(file)
106
+ File.open(file) do |fh|
107
+ parse_handle(fh)
108
+ end
109
+ self
110
+ end
111
+
112
+ # returns( offset, cleave_at, except_if_after )
113
+ # offset is an Integer specifying how far after an amino acid to cut
114
+ # cleave_at is a string of all amino acids that should be cut at
115
+ # except_if_after for not cutting after those
116
+ # normal tryptic behavior would be: [1, 'KR', 'P']
117
+ # NOTE: a '-' in a params file is returned as an '' (empty string)
118
+ # AspN is [0,'D','']
119
+ def enzyme_specificity
120
+ enzyme_ar =
121
+ if version == '3.1'
122
+ Bioworks31_Enzyme_Info_Array[@opts['enzyme_number'].to_i][1,3]
123
+ elsif version >= '3.2'
124
+ arr = enzyme_info.split(/\s+/)[2,3]
125
+ arr[0] = arr[0].to_i
126
+ arr
127
+ else
128
+ raise ArgumentError, "don't recognize anything but Bioworks 3.1--3.3"
129
+ end
130
+ enzyme_ar.map! do |str|
131
+ if str == '-' ; ''
132
+ else ; str
133
+ end
134
+ end
135
+ enzyme_ar
136
+ end
137
+
138
+ # Returns the version of the sequest.params file
139
+ # Returns String "3.3" if contains "fragment_ion_units"
140
+ # Returns String "3.2" if contains "enyzme_info"
141
+ # Returns String "3.1" if contains "enzyme_number"
142
+ def version
143
+ if @opts['fragment_ion_units'] ; return '3.3'
144
+ elsif @opts['enzyme_info'] ; return '3.2'
145
+ elsif @opts['enzyme_number'] ; return '3.1'
146
+ end
147
+ end
148
+
149
+ ####################################################
150
+ # TO PEPXML
151
+ ####################################################
152
+ # In some ways, this is merely translating to the older Bioworks
153
+ # sequest.params files
154
+
155
+ # I'm not sure if this is the right mapping for sequence_search_constraint?
156
+ def sequence
157
+ pseq = @opts['partial_sequence']
158
+ if !pseq || pseq == "" ; pseq = "0" end
159
+ pseq
160
+ end
161
+
162
+ def precursor_mass_type
163
+ case @opts['mass_type_parent']
164
+ when '0' ; "average"
165
+ when '1' ; "monoisotopic"
166
+ else ; abort "error in mass_type_parent in sequest!"
167
+ end
168
+ end
169
+
170
+ def fragment_mass_type
171
+ fmtype =
172
+ case @opts['mass_type_fragment']
173
+ when '0' ; "average"
174
+ when '1' ; "monoisotopic"
175
+ else ; abort "error in mass_type_fragment in sequest!"
176
+ end
177
+ end
178
+
179
+ def method_missing(name, *args)
180
+ string = name.to_s
181
+ if @opts.key?(string) ; return @opts[string]
182
+ elsif @mods.key?(string) ; return @mods[string]
183
+ else ; return nil
184
+ end
185
+ end
186
+
187
+ ## We only need to define values if they are different than sequest.params
188
+ ## The method_missing will look them up in the hash!
189
+
190
+ # Returns a system independent basename
191
+ # Splits on "\" or "/"
192
+ def _sys_ind_basename(file)
193
+ return file.split(/[\\\/]/)[-1]
194
+ end
195
+
196
+ # changes the path of the database
197
+ def database_path=(newpath)
198
+ db = @opts["first_database_name"]
199
+ newpath = File.join(newpath, _sys_ind_basename(db))
200
+ @opts["first_database_name"] = newpath
201
+ end
202
+
203
+ def database
204
+ @opts["first_database_name"]
205
+ end
206
+
207
+ # returns the appropriate aminoacid mass lookup table (in spec_id.rb SpecID::MONO or
208
+ # SpecID::AVG based on precursor_mass_type
209
+ def mass_table
210
+ case precursor_mass_type
211
+ when 'average'
212
+ SpecID::AVG
213
+ when 'monoisotopic'
214
+ SpecID::MONO
215
+ end
216
+ end
217
+
218
+ # at least in Bioworks 3.2, the First number after the enzyme
219
+ # is the indication of the enzymatic end stringency (required):
220
+ # 1 = Fully enzymatic
221
+ # 2 = Either end
222
+ # 3 = N terminal only
223
+ # 4 = C terminal only
224
+ # So, to get min_number_termini we map like this:
225
+ # 1 => 2
226
+ # 2 => 1
227
+ def min_number_termini
228
+ termini_number = @opts["enzyme_info"].split(" ")[1]
229
+ if termini_number == "1"
230
+ return "2"
231
+ elsif termini_number == "2"
232
+ return "1"
233
+ else
234
+ puts "WARNING: Enzyme termini info might be imprecise!"
235
+ return "1"
236
+ end
237
+ end
238
+
239
+ # returns a SampleEnzyme object
240
+ def sample_enzyme
241
+ (offset, cleave_at, except_if_after) = enzyme_specificity.map do |v|
242
+ if v == '' ; nil ; else v end
243
+ end
244
+ SampleEnzyme.new do |se|
245
+ se.name = self.enzyme
246
+ se.cut = cleave_at
247
+ se.no_cut = except_if_after
248
+ se.sense =
249
+ if se.name == "No_Enzyme"
250
+ nil
251
+ elsif offset == 1
252
+ 'C'
253
+ elsif offset == 0
254
+ 'N'
255
+ end
256
+ end
257
+ end
258
+
259
+ # returns the enzyme name (but no parentheses connected with the name).
260
+ # this will likely be capitalized.
261
+ def enzyme
262
+ v = self.version
263
+ basic_name =
264
+ if v == '3.1'
265
+ Bioworks31_Enzyme_Info_Array[ @opts['enzyme_number'].to_i ][0]
266
+ elsif v >= '3.2'
267
+ @opts["enzyme_info"]
268
+ end
269
+ basic_name.split('(')[0]
270
+ end
271
+
272
+ def max_num_internal_cleavages
273
+ @opts["max_num_internal_cleavage_sites"]
274
+ end
275
+
276
+ # my take on peptide_mass_units:
277
+ # (see http://www.ionsource.com/tutorial/isotopes/slide2.htm)
278
+ # amu = atomic mass units = (mass_real - mass_measured).abs (??abs??)
279
+ # mmu = milli mass units (amu / 1000)
280
+ # ppm = parts per million = 10^6 * ∆m_accuracy / mass_measured [ where ∆m_accuracy = mass_real – mass_measured ]
281
+
282
+ def peptide_mass_tol
283
+ if @opts["peptide_mass_units"] != "0"
284
+ puts "WARNING: peptide_mass_tol units need to be adjusted!"
285
+ end
286
+ @opts["peptide_mass_tolerance"]
287
+ end
288
+
289
+ def fragment_ion_tol
290
+ @opts["fragment_ion_tolerance"]
291
+ end
292
+
293
+ def max_num_differential_AA_per_mod
294
+ @opts["max_num_differential_per_peptide"]
295
+ end
296
+
297
+ # returns a hash by add_<whatever> of any static mods != 0
298
+ # the values are still as strings
299
+ def static_mods
300
+ hash = {}
301
+ @mods.each do |k,v|
302
+ if v.to_f != 0.0
303
+ hash[k] = v
304
+ end
305
+ end
306
+ hash
307
+ end
308
+
309
+ ## @TODO: We could add some of the parameters not currently being asked for to be more complete
310
+ ## @TODO: We could always add the Bioworks 3.2 specific params as params
311
+
312
+ ####################################################
313
+ ####################################################
314
+
315
+ end
316
+