mspire 0.4.9 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (255) hide show
  1. data/README +27 -17
  2. data/changelog.txt +31 -62
  3. data/lib/ms/calc.rb +32 -0
  4. data/lib/ms/data/interleaved.rb +60 -0
  5. data/lib/ms/data/lazy_io.rb +73 -0
  6. data/lib/ms/data/lazy_string.rb +15 -0
  7. data/lib/ms/data/simple.rb +59 -0
  8. data/lib/ms/data/transposed.rb +41 -0
  9. data/lib/ms/data.rb +57 -0
  10. data/lib/ms/format/format_error.rb +12 -0
  11. data/lib/ms/spectrum.rb +25 -384
  12. data/lib/ms/support/binary_search.rb +126 -0
  13. data/lib/ms.rb +10 -10
  14. metadata +38 -350
  15. data/INSTALL +0 -58
  16. data/README.rdoc +0 -18
  17. data/Rakefile +0 -330
  18. data/bin/aafreqs.rb +0 -23
  19. data/bin/bioworks2excel.rb +0 -14
  20. data/bin/bioworks_to_pepxml.rb +0 -148
  21. data/bin/bioworks_to_pepxml_gui.rb +0 -225
  22. data/bin/fasta_shaker.rb +0 -5
  23. data/bin/filter_and_validate.rb +0 -5
  24. data/bin/gi2annot.rb +0 -14
  25. data/bin/id_class_anal.rb +0 -112
  26. data/bin/id_precision.rb +0 -172
  27. data/bin/ms_to_lmat.rb +0 -67
  28. data/bin/pepproph_filter.rb +0 -16
  29. data/bin/prob_validate.rb +0 -6
  30. data/bin/protein_summary.rb +0 -6
  31. data/bin/protxml2prots_peps.rb +0 -32
  32. data/bin/raw_to_mzXML.rb +0 -55
  33. data/bin/run_percolator.rb +0 -122
  34. data/bin/sqt_group.rb +0 -26
  35. data/bin/srf_group.rb +0 -27
  36. data/bin/srf_to_sqt.rb +0 -40
  37. data/lib/align/chams.rb +0 -78
  38. data/lib/align.rb +0 -154
  39. data/lib/archive/targz.rb +0 -94
  40. data/lib/bsearch.rb +0 -120
  41. data/lib/core_extensions.rb +0 -16
  42. data/lib/fasta.rb +0 -626
  43. data/lib/gi.rb +0 -124
  44. data/lib/group_by.rb +0 -10
  45. data/lib/index_by.rb +0 -11
  46. data/lib/merge_deep.rb +0 -21
  47. data/lib/ms/converter/mzxml.rb +0 -77
  48. data/lib/ms/gradient_program.rb +0 -170
  49. data/lib/ms/msrun.rb +0 -244
  50. data/lib/ms/msrun_index.rb +0 -108
  51. data/lib/ms/parser/mzdata/axml.rb +0 -67
  52. data/lib/ms/parser/mzdata/dom.rb +0 -175
  53. data/lib/ms/parser/mzdata/libxml.rb +0 -7
  54. data/lib/ms/parser/mzdata.rb +0 -31
  55. data/lib/ms/parser/mzxml/axml.rb +0 -70
  56. data/lib/ms/parser/mzxml/dom.rb +0 -182
  57. data/lib/ms/parser/mzxml/hpricot.rb +0 -253
  58. data/lib/ms/parser/mzxml/libxml.rb +0 -19
  59. data/lib/ms/parser/mzxml/regexp.rb +0 -122
  60. data/lib/ms/parser/mzxml/rexml.rb +0 -72
  61. data/lib/ms/parser/mzxml/xmlparser.rb +0 -248
  62. data/lib/ms/parser/mzxml.rb +0 -282
  63. data/lib/ms/parser.rb +0 -108
  64. data/lib/ms/precursor.rb +0 -25
  65. data/lib/ms/scan.rb +0 -81
  66. data/lib/mspire.rb +0 -4
  67. data/lib/pi_zero.rb +0 -244
  68. data/lib/qvalue.rb +0 -161
  69. data/lib/roc.rb +0 -187
  70. data/lib/sample_enzyme.rb +0 -160
  71. data/lib/scan_i.rb +0 -21
  72. data/lib/spec_id/aa_freqs.rb +0 -170
  73. data/lib/spec_id/bioworks.rb +0 -497
  74. data/lib/spec_id/digestor.rb +0 -138
  75. data/lib/spec_id/mass.rb +0 -179
  76. data/lib/spec_id/parser/proph.rb +0 -335
  77. data/lib/spec_id/precision/filter/cmdline.rb +0 -218
  78. data/lib/spec_id/precision/filter/interactive.rb +0 -134
  79. data/lib/spec_id/precision/filter/output.rb +0 -148
  80. data/lib/spec_id/precision/filter.rb +0 -637
  81. data/lib/spec_id/precision/output.rb +0 -60
  82. data/lib/spec_id/precision/prob/cmdline.rb +0 -160
  83. data/lib/spec_id/precision/prob/output.rb +0 -94
  84. data/lib/spec_id/precision/prob.rb +0 -249
  85. data/lib/spec_id/proph/pep_summary.rb +0 -104
  86. data/lib/spec_id/proph/prot_summary.rb +0 -484
  87. data/lib/spec_id/proph.rb +0 -4
  88. data/lib/spec_id/protein_summary.rb +0 -489
  89. data/lib/spec_id/sequest/params.rb +0 -316
  90. data/lib/spec_id/sequest/pepxml.rb +0 -1458
  91. data/lib/spec_id/sequest.rb +0 -33
  92. data/lib/spec_id/sqt.rb +0 -349
  93. data/lib/spec_id/srf.rb +0 -973
  94. data/lib/spec_id.rb +0 -778
  95. data/lib/spec_id_xml.rb +0 -99
  96. data/lib/transmem/phobius.rb +0 -147
  97. data/lib/transmem/toppred.rb +0 -368
  98. data/lib/transmem.rb +0 -157
  99. data/lib/validator/aa.rb +0 -48
  100. data/lib/validator/aa_est.rb +0 -112
  101. data/lib/validator/background.rb +0 -77
  102. data/lib/validator/bias.rb +0 -95
  103. data/lib/validator/cmdline.rb +0 -431
  104. data/lib/validator/decoy.rb +0 -107
  105. data/lib/validator/digestion_based.rb +0 -70
  106. data/lib/validator/probability.rb +0 -51
  107. data/lib/validator/prot_from_pep.rb +0 -234
  108. data/lib/validator/q_value.rb +0 -32
  109. data/lib/validator/transmem.rb +0 -272
  110. data/lib/validator/true_pos.rb +0 -46
  111. data/lib/validator.rb +0 -197
  112. data/lib/xml.rb +0 -38
  113. data/lib/xml_style_parser.rb +0 -119
  114. data/lib/xmlparser_wrapper.rb +0 -19
  115. data/release_notes.txt +0 -2
  116. data/script/compile_and_plot_smriti_final.rb +0 -97
  117. data/script/create_little_pepxml.rb +0 -61
  118. data/script/degenerate_peptides.rb +0 -47
  119. data/script/estimate_fpr_by_cysteine.rb +0 -226
  120. data/script/extract_gradient_programs.rb +0 -56
  121. data/script/find_cysteine_background.rb +0 -137
  122. data/script/genuine_tps_and_probs.rb +0 -136
  123. data/script/get_apex_values_rexml.rb +0 -44
  124. data/script/histogram_probs.rb +0 -61
  125. data/script/mascot_fix_pepxml.rb +0 -123
  126. data/script/msvis.rb +0 -42
  127. data/script/mzXML2timeIndex.rb +0 -25
  128. data/script/peps_per_bin.rb +0 -67
  129. data/script/prep_dir.rb +0 -121
  130. data/script/simple_protein_digestion.rb +0 -27
  131. data/script/smriti_final_analysis.rb +0 -103
  132. data/script/sqt_to_meta.rb +0 -24
  133. data/script/top_hit_per_scan.rb +0 -67
  134. data/script/toppred_to_yaml.rb +0 -47
  135. data/script/tpp_installer.rb +0 -249
  136. data/specs/align_spec.rb +0 -79
  137. data/specs/bin/bioworks_to_pepxml_spec.rb +0 -79
  138. data/specs/bin/fasta_shaker_spec.rb +0 -259
  139. data/specs/bin/filter_and_validate__multiple_vals_helper.yaml +0 -199
  140. data/specs/bin/filter_and_validate_spec.rb +0 -180
  141. data/specs/bin/ms_to_lmat_spec.rb +0 -34
  142. data/specs/bin/prob_validate_spec.rb +0 -86
  143. data/specs/bin/protein_summary_spec.rb +0 -14
  144. data/specs/fasta_spec.rb +0 -354
  145. data/specs/gi_spec.rb +0 -22
  146. data/specs/load_bin_path.rb +0 -7
  147. data/specs/merge_deep_spec.rb +0 -13
  148. data/specs/ms/gradient_program_spec.rb +0 -77
  149. data/specs/ms/msrun_spec.rb +0 -498
  150. data/specs/ms/parser_spec.rb +0 -92
  151. data/specs/ms/spectrum_spec.rb +0 -87
  152. data/specs/pi_zero_spec.rb +0 -115
  153. data/specs/qvalue_spec.rb +0 -39
  154. data/specs/roc_spec.rb +0 -251
  155. data/specs/rspec_autotest.rb +0 -149
  156. data/specs/sample_enzyme_spec.rb +0 -126
  157. data/specs/spec_helper.rb +0 -135
  158. data/specs/spec_id/aa_freqs_spec.rb +0 -52
  159. data/specs/spec_id/bioworks_spec.rb +0 -148
  160. data/specs/spec_id/digestor_spec.rb +0 -75
  161. data/specs/spec_id/precision/filter/cmdline_spec.rb +0 -20
  162. data/specs/spec_id/precision/filter/output_spec.rb +0 -31
  163. data/specs/spec_id/precision/filter_spec.rb +0 -246
  164. data/specs/spec_id/precision/prob_spec.rb +0 -44
  165. data/specs/spec_id/precision/prob_spec_helper.rb +0 -0
  166. data/specs/spec_id/proph/pep_summary_spec.rb +0 -98
  167. data/specs/spec_id/proph/prot_summary_spec.rb +0 -128
  168. data/specs/spec_id/protein_summary_spec.rb +0 -189
  169. data/specs/spec_id/sequest/params_spec.rb +0 -68
  170. data/specs/spec_id/sequest/pepxml_spec.rb +0 -374
  171. data/specs/spec_id/sequest_spec.rb +0 -38
  172. data/specs/spec_id/sqt_spec.rb +0 -246
  173. data/specs/spec_id/srf_spec.rb +0 -172
  174. data/specs/spec_id/srf_spec_helper.rb +0 -139
  175. data/specs/spec_id_helper.rb +0 -33
  176. data/specs/spec_id_spec.rb +0 -366
  177. data/specs/spec_id_xml_spec.rb +0 -33
  178. data/specs/transmem/phobius_spec.rb +0 -425
  179. data/specs/transmem/toppred_spec.rb +0 -298
  180. data/specs/transmem_spec.rb +0 -60
  181. data/specs/transmem_spec_shared.rb +0 -64
  182. data/specs/validator/aa_est_spec.rb +0 -66
  183. data/specs/validator/aa_spec.rb +0 -40
  184. data/specs/validator/background_spec.rb +0 -67
  185. data/specs/validator/bias_spec.rb +0 -122
  186. data/specs/validator/decoy_spec.rb +0 -51
  187. data/specs/validator/fasta_helper.rb +0 -26
  188. data/specs/validator/prot_from_pep_spec.rb +0 -141
  189. data/specs/validator/transmem_spec.rb +0 -146
  190. data/specs/validator/true_pos_spec.rb +0 -58
  191. data/specs/validator_helper.rb +0 -33
  192. data/specs/xml_spec.rb +0 -12
  193. data/test_files/000_pepxml18_small.xml +0 -206
  194. data/test_files/020a.mzXML.timeIndex +0 -4710
  195. data/test_files/4-03-03_mzXML/000.mzXML.timeIndex +0 -3973
  196. data/test_files/4-03-03_mzXML/020.mzXML.timeIndex +0 -3872
  197. data/test_files/4-03-03_small-prot.xml +0 -321
  198. data/test_files/4-03-03_small.xml +0 -3876
  199. data/test_files/7MIX_STD_110802_1.sequest_params_fragment.srf +0 -0
  200. data/test_files/bioworks-3.3_10prots.xml +0 -5999
  201. data/test_files/bioworks31.params +0 -77
  202. data/test_files/bioworks32.params +0 -62
  203. data/test_files/bioworks33.params +0 -63
  204. data/test_files/bioworks_single_run_small.xml +0 -7237
  205. data/test_files/bioworks_small.fasta +0 -212
  206. data/test_files/bioworks_small.params +0 -63
  207. data/test_files/bioworks_small.phobius +0 -109
  208. data/test_files/bioworks_small.toppred.out +0 -2847
  209. data/test_files/bioworks_small.xml +0 -5610
  210. data/test_files/bioworks_with_INV_small.xml +0 -3753
  211. data/test_files/bioworks_with_SHUFF_small.xml +0 -2503
  212. data/test_files/corrupted_900.srf +0 -0
  213. data/test_files/head_of_7MIX.srf +0 -0
  214. data/test_files/interact-opd1_mods_small-prot.xml +0 -304
  215. data/test_files/messups.fasta +0 -297
  216. data/test_files/opd1/000.my_answer.100lines.xml +0 -101
  217. data/test_files/opd1/000.tpp_1.2.3.first10.xml +0 -115
  218. data/test_files/opd1/000.tpp_2.9.2.first10.xml +0 -126
  219. data/test_files/opd1/000.v2.1.mzXML.timeIndex +0 -3748
  220. data/test_files/opd1/000_020-prot.png +0 -0
  221. data/test_files/opd1/000_020_3prots-prot.mod_initprob.xml +0 -62
  222. data/test_files/opd1/000_020_3prots-prot.xml +0 -62
  223. data/test_files/opd1/opd1_cat_inv_small-prot.xml +0 -139
  224. data/test_files/opd1/sequest.3.1.params +0 -77
  225. data/test_files/opd1/sequest.3.2.params +0 -62
  226. data/test_files/opd1/twenty_scans.mzXML +0 -418
  227. data/test_files/opd1/twenty_scans.v2.1.mzXML +0 -382
  228. data/test_files/opd1/twenty_scans_answ.lmat +0 -0
  229. data/test_files/opd1/twenty_scans_answ.lmata +0 -9
  230. data/test_files/opd1_020_beginning.RAW +0 -0
  231. data/test_files/opd1_2runs_2mods/data/020.mzData.xml +0 -683
  232. data/test_files/opd1_2runs_2mods/data/020.readw.mzXML +0 -382
  233. data/test_files/opd1_2runs_2mods/data/040.mzData.xml +0 -683
  234. data/test_files/opd1_2runs_2mods/data/040.readw.mzXML +0 -382
  235. data/test_files/opd1_2runs_2mods/data/README.txt +0 -6
  236. data/test_files/opd1_2runs_2mods/interact-opd1_mods__small.xml +0 -753
  237. data/test_files/orbitrap_mzData/000_cut.xml +0 -1920
  238. data/test_files/pepproph_small.xml +0 -4691
  239. data/test_files/phobius.small.noheader.txt +0 -50
  240. data/test_files/phobius.small.small.txt +0 -53
  241. data/test_files/s01_anC1_ld020mM.key.txt +0 -25
  242. data/test_files/s01_anC1_ld020mM.meth +0 -0
  243. data/test_files/small.fasta +0 -297
  244. data/test_files/small.sqt +0 -87
  245. data/test_files/smallraw.RAW +0 -0
  246. data/test_files/tf_bioworks2excel.bioXML +0 -14340
  247. data/test_files/tf_bioworks2excel.txt.actual +0 -1035
  248. data/test_files/toppred.small.out +0 -416
  249. data/test_files/toppred.xml.out +0 -318
  250. data/test_files/validator_hits_separate/bias_bioworks_small_HS.fasta +0 -7
  251. data/test_files/validator_hits_separate/bioworks_small_HS.xml +0 -5651
  252. data/test_files/yeast_gly_small-prot.xml +0 -265
  253. data/test_files/yeast_gly_small.1.0_1.0_1.0.parentTimes +0 -6
  254. data/test_files/yeast_gly_small.xml +0 -3807
  255. data/test_files/yeast_gly_small2.parentTimes +0 -6
@@ -1,218 +0,0 @@
1
- require 'validator/cmdline'
2
- require 'spec_id'
3
-
4
-
5
- module SpecID
6
- module Precision
7
- class Filter
8
- class CmdlineParser
9
-
10
- DEFAULTS = SpecID::Precision::Filter::FV_DEFAULTS.merge( { :output => [[:text_table,nil]], } )
11
-
12
-
13
- COMMAND_LINE = {
14
- # SEQUEST
15
- :xcorr1 => ["-1", "--xcorr1 N", Float, "xcorr at +1 charge default: #{DEFAULTS[:sequest][:xcorr1]}"],
16
- :xcorr2 => ["-2", "--xcorr2 N", Float, "xcorr at +2 charge default: #{DEFAULTS[:sequest][:xcorr2]}"],
17
- :xcorr3 => ["-3", "--xcorr3 N", Float, "xcorr at +3 charge default: #{DEFAULTS[:sequest][:xcorr3]}"],
18
-
19
- :deltacn => ["-d", "--deltacn N", Float, ">= deltacn default: #{DEFAULTS[:sequest][:deltacn]}"],
20
- :ppm => ["-p", "--ppm N", Float, "<= ppm default: #{DEFAULTS[:sequest][:ppm]}",
21
- "if bioworks.xml, then ppm = deltamass*10^6/mass"],
22
- :no_deltacnstar => ["--no_deltacnstar", "Do not pass deltacn of top hit with no 2nd hit",
23
- "(these are set at 1.1 by bioworks)"],
24
-
25
- # OUTPUT
26
- :proteins => ["--proteins", "includes proteins (and validation)"],
27
- :output => ["-o", "--output format[:FILENAME]", "format to output filtering results.",
28
- "can be used multiple times",
29
- ":FILENAME is the filename to use (defaults to STDOUT)",
30
- "valid formats are:",
31
- " text_table (default)",
32
- " yaml",
33
- #" protein_summary (need to implement)",
34
- #" html_table (need to implement)"
35
- ],
36
-
37
- # VALIDATION MODIFIERS:
38
- :hits_separate => ["--hits_separate", "target/decoy hits are normally together when choosing",
39
- "the top hit per peptide (in prefilter and postfilter)",
40
- "in BOTH catenated and separate searches. This flag",
41
- "separates them when finding the top hit per scan.",
42
- "[This option modifies behavior of --decoy options]"],
43
-
44
- # OTHER:
45
- :prefilter => ["--prefilter", "finds the top hit per file+scan+charge and removes",
46
- "others. Speeds up filtering with '--interactive'."],
47
- :postfilter => ["--postfilter ARG", "ARG = top_per_scan | top_per_aaseq[_charge]",
48
- "'top_per_scan' hashes on filename+scan.",
49
- "'top_per_aaseq' hashes only on aaseq",
50
- "'top_per_aaseq_charge' hashes on aaseq+charge."],
51
- :top_hit_by => ["--top_hit_by ARG", "ARG = xcorr | probability (xcorr default)"],
52
-
53
-
54
-
55
- :interactive => ["-i", "--interactive [FILENAME]", "interactive filtering",
56
- "FILENAME given, then the interactive commands are",
57
- "read out of that file. NOTE: The flag without the",
58
- "filename must not be placed in front of an input",
59
- "file argument! e.g., -i bioworks.xml # -> bad!",
60
- "e.g., bioworks.xml -i # -> ok!"],
61
-
62
- :interactive_verbose => ["--interactive_verbose", "give help and hints in interactive mode"],
63
-
64
- }.merge( Validator::Cmdline::COMMAND_LINE )
65
-
66
-
67
- # returns (spec_id_obj, options, option_parser_obj)
68
- def parse(args)
69
- opts = {}
70
- opts[:output] = []
71
- @out_used = false
72
- opts[:sequest] = {}
73
- opts[:validators] = []
74
- # defaults
75
-
76
- option_parser = OptionParser.new do |op|
77
- def op.opt(arg, &block)
78
- on(*COMMAND_LINE[arg], &block)
79
- end
80
-
81
- def op.val_opt(arg, opts)
82
- on(*COMMAND_LINE[arg]) {|ar| Validator::Cmdline::PrepArgs[arg].call(ar, opts) }
83
- end
84
-
85
- def op.exact_opt(opts, arg)
86
- on(*COMMAND_LINE[arg]) {|v| opts[arg] = v}
87
- end
88
-
89
- op.banner = "USAGE: #{File.basename($0)} [OPTS] <bioworks.xml | bioworks.srg | .srf ....srf>"
90
- op.separator ""
91
- op.separator " EXPECTS: the multiconsensus XML export of Bioworks 3.X (bioworks.xml) -or- *.srf files"
92
- op.separator " grouped together (bioworks.srg) [type 'srf_group.rb' at the cmd line]"
93
-
94
- op.separator " multiple .srf files may also be entered."
95
- op.separator " RETURNS: the number of peptides/proteins ID'd at given thresholds with"
96
- op.separator " (optional) validation of the results."
97
- op.separator ""
98
-
99
- #op.separator("** 'dcn*' is the number of peptides with deltacn == 1.1")
100
- #op.separator(" (these are peptides who are the only hit with xcorr > 0)")
101
- op.separator "SEQUEST OPTIONS: "
102
- op.exact_opt(opts[:sequest], :xcorr1)
103
- op.exact_opt(opts[:sequest], :xcorr2)
104
- op.exact_opt(opts[:sequest], :xcorr3)
105
- op.exact_opt(opts[:sequest], :deltacn)
106
- op.exact_opt(opts[:sequest], :ppm)
107
- op.opt(:no_deltacnstar) {|v| opts[:sequest][:include_deltacnstar] = false}
108
- op.separator ""
109
- op.separator "OUTPUT OPTIONS: "
110
- op.opt(:proteins) {|v| opts[:proteins] = true }
111
- op.opt(:output) do |output|
112
- # copied from rspec:
113
- # This funky regexp checks whether we have a FILE_NAME or not
114
- where = nil
115
- if (output =~ /([a-zA-Z_]+(?:::[a-zA-Z_]+)*):?(.*)/) && ($2 != '')
116
- output = $1
117
- where = $2
118
- else
119
- raise "When using several --output options only one of them can be without a file" if @out_used
120
- @out_used = true
121
- end
122
- opts[:output] << [output, where]
123
- end
124
-
125
- op.separator ""
126
- op.separator "VALIDATION OPTIONS: "
127
- op.separator " each option will calculate the precision"
128
- op.separator ""
129
-
130
- op.val_opt(:decoy, opts)
131
- op.val_opt(:digestion, opts)
132
- op.val_opt(:bias, opts)
133
- op.val_opt(:bad_aa, opts)
134
- op.val_opt(:bad_aa_est, opts)
135
-
136
- op.val_opt(:tmm, opts)
137
- op.val_opt(:fasta, opts)
138
- op.val_opt(:tps, opts)
139
-
140
- op.separator ""
141
- op.separator "VALIDATION MODIFIERS: "
142
- op.val_opt(:false_on_tie, opts) # sets opts[:ties] = false
143
-
144
- op.opt(:hits_separate) { opts[:hits_together] = false } # :top_hits_together
145
-
146
- op.separator ""
147
- op.separator "OTHER OPTIONS: "
148
- op.opt(:interactive) do |v|
149
- opts[:interactive] =
150
- if v
151
- v
152
- else
153
- true
154
- end
155
- end
156
- op.opt(:interactive_verbose) {|v| opts[:interactive_verbose] = v }
157
-
158
- op.opt(:top_hit_by) {|v| opts[:top_hit_by] = v.to_sym}
159
- op.opt(:postfilter) {|v| opts[:postfilter] = v.to_sym}
160
- op.opt(:prefilter) {|v| opts[:prefilter] = true }
161
-
162
-
163
- #op.on("--yaml", "spits out yaml-ized data") {|v| opts[:tabulate = v }
164
- #op.on("--combined_score", "shows the combined score") {|v| opts[:combined_score = v }
165
- #op.on("--marshal", "will write marshaled data or read existing") {|v| opts[:marshal = v }
166
- #op.on("--log <file>", "also writes all output to file") {|v| opts[:log = v }
167
- ### NEED TO IMPLEMENT THIS:
168
- ##op.on("--protein_summary", "writes passing proteins to .summary.html files") {|v| opts[:protein_summary = v }
169
- #op.on("-z", "--occams_razor", "will show minimal set of proteins") {|v| opts[:occams_razor = v }
170
-
171
- end
172
- option_parser.parse!(args)
173
-
174
- # prepare interactive object if necessary:
175
- if v = opts[:interactive]
176
- klass = SpecID::Precision::Filter::Interactive
177
- if v.is_a? String
178
- opts[:interactive] = klass.new(v, opts[:interactive_verbose])
179
- else
180
- opts[:interactive] = klass.new(nil, opts[:interactive_verbose])
181
- end
182
- end
183
-
184
-
185
- opts[:sequest] = DEFAULTS[:sequest].merge(opts[:sequest])
186
-
187
- # prepare validators
188
-
189
- if args.size > 0
190
- spec_id_obj =
191
- if args[0] =~ /\.srf$/i
192
- ::SpecID.new(args)
193
- else
194
- ::SpecID.new(args[0])
195
- end
196
- if opts[:ties] == nil # will be nil or false
197
- opts[:ties] = Validator::Cmdline::DEFAULTS[:ties]
198
- end
199
- opts[:validators] = Validator::Cmdline.prepare_validators(opts, !opts[:ties], opts[:interactive], opts[:postfilter], spec_id_obj)
200
-
201
- if opts[:output].size == 0
202
- opts[:output] = DEFAULTS[:output]
203
- end
204
- else
205
- spec_id_obj = nil
206
- end
207
-
208
- [spec_id_obj, opts, option_parser]
209
- end # parse
210
- end # CmdlineParser
211
- end # Filter
212
- end # Precision
213
- end # SpecID
214
-
215
-
216
-
217
-
218
-
@@ -1,134 +0,0 @@
1
-
2
- module SpecID ; end
3
- module SpecID::Precision ; end
4
-
5
- class SpecID::Precision::Filter
6
- class Interactive
7
- attr_accessor :file
8
- attr_accessor :verbose
9
-
10
- # the file contains the interactive commands
11
- def initialize(file=nil, verbose=false)
12
- @verbose = verbose
13
- if file
14
- @file = file
15
- @lines = IO.readlines(file)
16
- else
17
- @lines = nil
18
- end
19
- end
20
-
21
- def passing(opts, answer)
22
- puts "****************************************************" if @verbose
23
- end
24
- # takes opts and modifies the keys in question, or returns nil
25
- # shortcut map takes each proper key and designates a shortcut (if any)
26
-
27
- def filter_args(opts_to_change, changing_keys, shortcut_map, casting_map)
28
- shortcut_order = changing_keys.map {|k| shortcut_map[k] }
29
- casting_array = changing_keys.map {|k| casting_map[k] }
30
- return_val = true
31
- reply = nil
32
- base_args = opts_to_change.values_at( *changing_keys )
33
- #b = base_args
34
- current_values = changing_keys.map {|v| "#{shortcut_map[v]}:#{opts_to_change[v]}" }
35
- out(current_values.join(" ")) if @verbose
36
- #out "#{b[0]} #{b[1]} #{b[2]} dcn:#{b[3]} ppm:#{b[4]}"
37
- loop do
38
- reply =
39
- if @lines
40
- if @lines.size > 0
41
- @lines.shift.chomp
42
- else
43
- 'q'
44
- end
45
- else
46
- gets.chomp
47
- end
48
- answer = prep_reply(reply, base_args, shortcut_order, casting_array)
49
- if answer == false
50
- out(interactive_help(changing_keys, shortcut_map)) if @verbose
51
- elsif answer == nil
52
- return nil
53
- else
54
- answer.zip(changing_keys) do |newval,changing_key|
55
- opts_to_change[changing_key] = newval
56
- end
57
- return_val = true
58
- break
59
- end
60
- end
61
- return_val
62
- end
63
-
64
- def out(string)
65
- puts string
66
- end
67
-
68
- def interactive_help(changing_keys, shortcut_map)
69
- shortcuts = changing_keys.map {|v| shortcut_map[v] }
70
- as_array = shortcuts.map {|v| "<#{v}>" }
71
- as_hash = shortcuts.map {|v| "#{v}:<#{v}>" }
72
- string = []
73
- string << "******************************************************************************"
74
- string << "INTERACTIVE FILTERING HELP:"
75
- string << "enter as an array of values : #{as_array.join(' ')}"
76
- string << "or as keys and values : #{as_hash.join(' ')}"
77
- string << "or some of the keys and values : #{as_hash.last}"
78
- if changing_keys.size >= 3
79
- string << "or mix array and keys/values : #{as_array[0]} #{as_array[1]} #{as_hash.last}"
80
- end
81
- string << "etc..."
82
- string << "<enter> to (re)run current values"
83
- string << "'q' to quit"
84
- string << "******************************************************************************"
85
- string.join("\n")
86
- end
87
-
88
- # assumes its already chomped
89
- # updates the 5 globals
90
- # returns nil if 'q'
91
- def prep_reply(reply, base, shortcut_order, casting_array)
92
- if reply == 'q'
93
- return nil
94
- end
95
- if reply =~ /^\s*$/
96
- base
97
- elsif reply
98
- arr = reply.split(/\s+/)
99
- to_change_ar = []
100
- to_change_hash = {}
101
- arr.each do |it|
102
- if it.include? ':'
103
- (k,v) = it.split(':')
104
- to_change_hash[k] = v
105
- else
106
- to_change_ar << it
107
- end
108
- end
109
- to_change_ar.each_with_index do |tc,i|
110
- base[i] = tc
111
- end
112
- to_change_hash.each do |k,v|
113
- index = shortcut_order.index(k)
114
- if index.nil?
115
- out("BAD ARG: #{k}:#{v}") if @verbose
116
- end
117
- base[index] = v
118
- end
119
- base.zip(casting_array).map do |v,cast_proc|
120
- begin
121
- cast_proc.call(v)
122
- rescue NoMethodError
123
- out "BAD ARG: #{tc}" if @verbose
124
- return false
125
- end
126
- end
127
- else
128
- false
129
- end
130
- end
131
-
132
- end
133
- end
134
-
@@ -1,148 +0,0 @@
1
- require 'yaml'
2
- require 'table'
3
- require 'spec_id/precision/output'
4
-
5
- module SpecID ; end
6
- module SpecID::Precision ; end
7
- class SpecID::Precision::Filter ; end
8
-
9
- class SpecID::Precision::Filter::Output
10
- include SpecID::Precision::Output
11
-
12
- ProtPrecAbbr = {
13
- :normal => 'nrm',
14
- :normal_stdev => 'nrm_std',
15
- :worst => 'worst',
16
- }
17
-
18
- GTE = '>='
19
- LTE = '<='
20
- MSial_operator = {
21
- 'xcorr1' => GTE,
22
- 'xcorr2' => GTE,
23
- 'xcorr3' => GTE,
24
- 'deltacn' => GTE,
25
- 'ppm' => LTE,
26
- }
27
-
28
- # takes a hash {:normal => x, :normal_stdev => y :worst => z }
29
- # and returns a string
30
- def protein_precision_to_s(hash)
31
- "#{hash[:worst]}--#{hash[:normal]}+/-#{hash[:normal_stdev]}"
32
- end
33
-
34
- # num tps tmm badAA decoy
35
- # pep
36
- # prot
37
- #
38
- def params_as_string(params_hash)
39
- hash = SpecID::Precision::Output.symbol_keys_to_string(params_hash)
40
- cleanup_params_hash(hash)
41
- hash_as_string(hash)
42
- end
43
-
44
- def text_table(fh, answer)
45
- col_headings = ['num']
46
- if answer[:params][:validators]
47
- val_strings = answer[:params][:validators].map do |val|
48
- Validator::Validator_to_string[val.class.to_s]
49
- end
50
- col_headings.push( *val_strings )
51
- end
52
-
53
- data_rows = []
54
- # push on the peptide row
55
- row_headings = ['peps']
56
- pep_row = []
57
- pep_row << answer[:pephits].size
58
- if answer[:params][:validators]
59
- answer[:params][:validators].zip( answer[:pephits_precision] ) do |val, precision|
60
- pep_row << precision
61
- end
62
- end
63
- data_rows << pep_row
64
-
65
- # push on the protein row
66
- if answer[:prothits]
67
- [:worst, :normal, :normal_stdev].each do |guy|
68
- prot_row = []
69
- row_headings << "prots(#{ProtPrecAbbr[guy]})"
70
- if guy == :worst
71
- prot_row << answer[:prothits].size
72
- else
73
- prot_row << '"'
74
- end
75
- answer[:prothits_precision].each do |precision|
76
- prot_row.push(precision[guy])
77
- end
78
- data_rows << prot_row
79
- end
80
- end
81
- params_string = params_as_string(answer[:params])
82
- table = Table.new( data_rows, row_headings, col_headings )
83
- fh.puts params_string
84
- fh.puts ""
85
- fh.puts( table.to_formatted_string )
86
- fh.puts ""
87
- end
88
-
89
- def yaml(fh, answer)
90
- final_output = { :params => answer[:params].dup }
91
- #"PEPHITS"
92
- #answer[:pephits]
93
- final_output[:pephits] = answer[:pephits].size
94
- if answer[:prothits]
95
- final_output[:prothits_precision] = answer[:params][:validators].zip( answer[:prothits_precision] ).map do |val, precision|
96
- {'validator' => Validator::Validator_to_string[val.class.to_s], 'values' => precision }
97
- end
98
- final_output[:prothits] = answer[:prothits].size
99
-
100
- #final_output[:prothits_precision] = {} if answer[:prothits_precision]
101
- #final_output[:prothits] = answer[:prothits].size
102
- #answer[:params][:validators].zip( answer[:prothits_precision] ) do |val, precision|
103
- # final_output[:prothits_precision][Validator::Validator_to_string[val.class.to_s]] = precision
104
- #end
105
- end
106
- final_output[:pephits_precision] = answer[:params][:validators].zip( answer[:pephits_precision] ).map do |val, precision|
107
- { 'validator' => Validator::Validator_to_string[val.class.to_s], 'value' => precision }
108
- end
109
- final_output[:pephits] = answer[:pephits].size
110
- final_output_as_strings = SpecID::Precision::Output.symbol_keys_to_string(final_output)
111
- cleanup_params_hash(final_output_as_strings['params'])
112
- fh.print(final_output_as_strings.to_yaml )
113
- end
114
-
115
-
116
- # returns nil
117
- def cleanup_params_hash(hash)
118
- ################################
119
- # OUTPUT
120
- ################################
121
- hash['output'] = hash['output'].map do |output|
122
- if output[1] == nil
123
- output[1] = 'STDOUT'
124
- end
125
- output.join(" => ")
126
- end
127
- %w(postfilter top_hit_by).each do |st|
128
- hash[st] = hash[st].to_s
129
- end
130
- if hash['interactive']
131
- if file = hash['interactive'].file
132
- hash['interactive'] = file
133
- else
134
- hash['interactive'] = true
135
- end
136
- end
137
- if hash['decoy']
138
- if hash['decoy']['regexp']
139
- hash['decoy']['regexp'] = hash['decoy']['regexp'].inspect
140
- end
141
- end
142
- if x = hash['validators']
143
- hash['validators'] = Validator.sensible_validator_hashes(x)
144
- end
145
- nil
146
- end
147
-
148
- end