mspire 0.4.9 → 0.5.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 (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,189 +0,0 @@
1
- require File.expand_path( File.dirname(__FILE__) + '/../spec_helper' )
2
- require 'spec_id/protein_summary'
3
-
4
- xdescribe ProteinSummary do
5
-
6
- before(:all) do
7
- @tf_proph = Tfiles_l + "/opd1/000_020-prot.xml"
8
- @tf_summary = Tfiles_l + "/opd1/000_020-prot.summary.html"
9
- @tf_bioworks_small = Tfiles + '/bioworks_small.xml'
10
- @tf_bioworks_small_summary_html = Tfiles + '/bioworks_small.summary.html'
11
- @tf_proph_cat_inv = Tfiles + '/opd1/opd1_cat_inv_small-prot.xml'
12
- @tf_proph_cat_inv_summary_html = Tfiles + '/opd1/opd1_cat_inv_small-prot.summary.html'
13
- @tf_proph_cat_inv_summary_png = Tfiles + '/opd1/opd1_cat_inv_small-prot.summary.png'
14
- @tf_peptide_count = Tfiles + "/peptide_counts.tmp.txt"
15
- @no_delete = false
16
- end
17
-
18
- spec_large do
19
- it 'does basic summary on prophet file' do
20
- runit "-c 5.0 #{@tf_proph}"
21
- @tf_summary.exist_as_a_file?.should be_true
22
- string = IO.read(@tf_summary)
23
- string.should =~ /gi\|16132176\|ref\|NP_418775\.1\|/
24
- string.should =~ /16132176/
25
- File.unlink(@tf_summary) unless @no_delete
26
- end
27
- end
28
-
29
- it 'does basic summary on bioworks.xml file' do
30
- runit "#{@tf_bioworks_small}"
31
- @tf_bioworks_small_summary_html.exist_as_a_file?.should be_true
32
- File.unlink @tf_bioworks_small_summary_html unless @no_delete
33
- # @TODO: need to freeze the output here
34
- end
35
-
36
-
37
- it 'calculates precision values with bioworks files' do
38
- ## Could reimplement a separate file approach?
39
- #reply = `#{@cmd} -f #{@tf_bioworks_small} #{@tf_bioworks_small} --precision`
40
- runit "#{@tf_bioworks_small} --precision"
41
- IO.read(@tf_bioworks_small_summary_html).should =~ /# hits.*106/m
42
- # should add more tests here...
43
- @tf_bioworks_small_summary_html.exist_as_a_file?.should be_true
44
- File.unlink @tf_bioworks_small_summary_html unless @no_delete
45
- end
46
-
47
- it 'calculates precision values with prophet files' do
48
- runit "#{@tf_proph_cat_inv} -f INV_ --prefix --precision"
49
- html = IO.read(@tf_proph_cat_inv_summary_html)
50
- html.should =~ /# hits/
51
- html.should =~ /2.*0\.0000/m
52
- html.should =~ /3.*0\.3333/m
53
- html.should =~ /7.*0\.5714/m
54
-
55
- File.unlink @tf_proph_cat_inv_summary_html unless @no_delete
56
- File.unlink @tf_proph_cat_inv_summary_png unless @no_delete
57
- end
58
-
59
- spec_large do
60
- it 'gives correct peptide counts' do
61
- runit "-c 5.0 #{@tf_proph} --peptide_count #{@tf_peptide_count}"
62
- @tf_peptide_count.exist_as_a_file?.should be_true
63
- file = IO.read(@tf_peptide_count)
64
- file.should include("gi|16132176|ref|NP_418775.1|\t2")
65
- file.should include("gi|16131996|ref|NP_418595.1|\t1")
66
- file.should include("gi|16131692|ref|NP_418288.1|\t4")
67
- File.unlink @tf_peptide_count unless @no_delete
68
- end
69
- end
70
-
71
- def runit(string_or_args)
72
- args = if string_or_args.is_a? String
73
- string_or_args.split(/\s+/)
74
- else
75
- string_or_args
76
- end
77
- ProteinSummary.new.create_from_command_line_args(args)
78
- end
79
-
80
-
81
- end
82
-
83
-
84
- =begin
85
-
86
- require 'test/unit'
87
- require 'spec_id/protein_summary'
88
- require File.dirname(__FILE__) + '/test_helper'
89
-
90
-
91
-
92
- class ProphProtSummaryTest < Test::Unit::TestCase
93
-
94
- NODELETE = false
95
-
96
- def initialize(arg)
97
- super(arg)
98
- @tfiles = File.dirname(__FILE__) + '/tfiles/'
99
- @tfiles_l = File.dirname(__FILE__) + '/tfiles_large/'
100
- @tf_proph = @tfiles_l + "opd1/000_020-prot.xml"
101
- @tf_summary = @tfiles_l + "opd1/000_020-prot.summary.html"
102
- @tf_bioworks_small = @tfiles + 'bioworks_small.xml'
103
- @tf_bioworks_small_summary_html = @tfiles + 'bioworks_small.summary.html'
104
- @tf_proph_cat_inv = @tfiles + 'opd1/opd1_cat_inv_small-prot.xml'
105
- @tf_proph_cat_inv_summary_html = @tfiles + 'opd1/opd1_cat_inv_small-prot.summary.html'
106
- @tf_proph_cat_inv_summary_png = @tfiles + 'opd1/opd1_cat_inv_small-prot.summary.png'
107
- @tf_peptide_count = @tfiles + "peptide_counts.tmp.txt"
108
- end
109
-
110
- def runit(string_or_args)
111
- args = if string_or_args.is_a? String
112
- string_or_args.split(/\s+/)
113
- else
114
- string_or_args
115
- end
116
- ProteinSummary.new.create_from_command_line_args(args)
117
- end
118
-
119
-
120
- def test_usage
121
- output = capture_stdout {
122
- runit('')
123
- }
124
- assert_match(/usage:/, output)
125
- end
126
-
127
- def test_proph_basic
128
- if File.exist? @tfiles_l
129
- runit "-c 5.0 #{@tf_proph}"
130
- ProteinSummary.new.create_from_command_line_args([@tf_proph, '-c', '5.0'])
131
- assert(File.exist?(@tf_summary), "file #{@tf_summary} exists")
132
- string = IO.read(@tf_summary)
133
- assert_match(/gi\|16132176\|ref\|NP_418775\.1\|/, string)
134
- assert_match(/16132176/, string)
135
- File.unlink(@tf_summary) unless NODELETE
136
- else
137
- assert_nil( puts("--SKIPPING TEST-- (missing dir: #{@tfiles_l})") )
138
- end
139
- end
140
-
141
- def test_bioworks_basic
142
- runit "#{@tf_bioworks_small}"
143
- assert(File.exist?(@tf_bioworks_small_summary_html), "file #{@tf_bioworks_small_summary_html} exists")
144
- File.unlink @tf_bioworks_small_summary_html unless NODELETE
145
-
146
- # @TODO: need to freeze the output here
147
- end
148
-
149
- def test_bioworks_with_precision
150
- ## Could reimplement a separate file approach?
151
- #reply = `#{@cmd} -f #{@tf_bioworks_small} #{@tf_bioworks_small} --precision`
152
- runit "#{@tf_bioworks_small} --precision"
153
- assert_match(/# hits.*106/m, IO.read(@tf_bioworks_small_summary_html))
154
- #assert_match(/False Positive Rate.*: 0.500/, IO.read(@tf_bioworks_small_summary_html))
155
- #assert_match(/False Positive Rate.*: 0.500/, IO.read(@tf_bioworks_small_summary_html))
156
- assert(File.exist?(@tf_bioworks_small_summary_html), "file #{@tf_bioworks_small_summary_html} exists")
157
- File.unlink @tf_bioworks_small_summary_html unless NODELETE
158
- end
159
-
160
- def test_proph_with_precision
161
- #puts @cmd
162
- runit "#{@tf_proph_cat_inv} -f INV_ --prefix --precision"
163
- html = IO.read(@tf_proph_cat_inv_summary_html)
164
- assert_match(/# hits/, html, "in #{@tf_proph_cat_inv_summary_html}")
165
- assert_match(/2.*0\.0000/m, html, "in #{@tf_proph_cat_inv_summary_html}")
166
- assert_match(/3.*0\.3333/m, html, "in #{@tf_proph_cat_inv_summary_html}")
167
- assert_match(/7.*0\.5714/m, html, "in #{@tf_proph_cat_inv_summary_html}")
168
-
169
- File.unlink @tf_proph_cat_inv_summary_html unless NODELETE
170
- File.unlink @tf_proph_cat_inv_summary_png unless NODELETE
171
- end
172
-
173
- def test_peptide_count
174
- if File.exist? @tfiles_l
175
- runit "-c 5.0 #{@tf_proph} --peptide_count #{@tf_peptide_count}"
176
- assert(File.exist?(@tf_peptide_count), "file #{@tf_peptide_count} exists")
177
- file = IO.read(@tf_peptide_count)
178
- assert_match("gi|16132176|ref|NP_418775.1|\t2", file)
179
- assert_match("gi|16131996|ref|NP_418595.1|\t1", file)
180
- assert_match("gi|16131692|ref|NP_418288.1|\t4", file)
181
- File.unlink @tf_peptide_count unless NODELETE
182
- else
183
- assert_nil( puts("--SKIPPING TEST-- (missing dir: #{@tfiles_l})") )
184
- end
185
- end
186
-
187
- end
188
-
189
- =end
@@ -1,68 +0,0 @@
1
- require File.expand_path( File.dirname(__FILE__) + '/../../spec_helper' )
2
- require 'spec_id/sequest/params'
3
-
4
-
5
- describe "a sequest params object", :shared => true do
6
- before(:each) do
7
- @obj = Sequest::Params.new(@file)
8
- end
9
- it 'gives enzyme_specificity' do
10
- ar = @obj.enzyme_specificity
11
- ar.size.should == 3
12
- ar.should == @enzyme_specificity
13
- end
14
- it 'returns static mods callable by key' do
15
- @obj.add_Cterm_peptide.should == @add_Cterm_peptide
16
- end
17
- end
18
-
19
-
20
- describe Sequest::Params, "with a bioworks 3.1 params" do
21
- before(:all) do
22
- @file = Tfiles + '/bioworks31.params'
23
- @obj = Sequest::Params.new(@file)
24
- @enzyme_specificity = [1, 'KR', '']
25
- @add_Cterm_peptide = '0.0000'
26
- end
27
- it_should_behave_like 'a sequest params object'
28
- end
29
-
30
- describe Sequest::Params, "with a bioworks 3.2 params" do
31
- before(:all) do
32
- @file = Tfiles + '/bioworks32.params'
33
- @obj = Sequest::Params.new(@file)
34
- @enzyme_specificity = [1, 'KR', 'P']
35
- @add_Cterm_peptide = '0.0000'
36
- end
37
- it_should_behave_like 'a sequest params object'
38
- end
39
-
40
- describe Sequest::Params, "with a bioworks 3.3 params" do
41
- before(:all) do
42
- @file = Tfiles + '/bioworks33.params'
43
- @obj = Sequest::Params.new(@file)
44
- @enzyme_specificity = [1, 'KR', '']
45
- @add_Cterm_peptide = '0.0000'
46
- end
47
- it_should_behave_like 'a sequest params object'
48
- end
49
-
50
- describe Sequest::Params, "given a bioworks 3.2 params (from .srf file)" do
51
- before(:all) do
52
- @file = Tfiles + '/7MIX_STD_110802_1.sequest_params_fragment.srf'
53
- @obj = Sequest::Params.new(@file)
54
- @enzyme_specificity = [1, 'KR', 'P']
55
- @add_Cterm_peptide = '0.0000'
56
- end
57
- it_should_behave_like 'a sequest params object'
58
- end
59
-
60
-
61
- describe Sequest::Params do
62
- it '(private) can give a system independent basename' do
63
- Sequest::Params.new._sys_ind_basename("C:\\Xcalibur\\database\\hello.fasta").should == "hello.fasta"
64
- Sequest::Params.new._sys_ind_basename("/work/john/hello.fasta").should == "hello.fasta"
65
- end
66
-
67
- end
68
-
@@ -1,374 +0,0 @@
1
-
2
- require File.expand_path( File.dirname(__FILE__) + '/../../spec_helper' )
3
-
4
- require 'spec_id'
5
- require 'spec_id/sequest/pepxml'
6
- #require 'ms/mzxml'
7
-
8
-
9
- NODELETE = false
10
-
11
- describe Sequest::PepXML, " created from small bioworks.xml" do
12
-
13
- spec_large do
14
- before(:all) do
15
- tf_mzxml_path = Tfiles_l + "/yeast_gly_mzXML"
16
-
17
- tf_params = Tfiles + "/bioworks32.params"
18
- tf_bioworks_xml = Tfiles + "/bioworks_small.xml"
19
- out_path = Tfiles
20
- @pepxml_objs = Sequest::PepXML.set_from_bioworks(tf_bioworks_xml, :params => tf_params, :ms_data => tf_mzxml_path, :out_path => out_path)
21
- end
22
-
23
- it 'gets some spectrum queries' do
24
- @pepxml_objs.each do |obj|
25
- (obj.spectrum_queries.size > 2).should be_true
26
- (obj.spectrum_queries.first.search_results.first.search_hits.size > 0).should be_true
27
- end
28
- #@pepxml_objs.each do |pep| puts pep.to_pepxml end
29
- end
30
- end
31
- end
32
-
33
-
34
-
35
- describe Sequest::PepXML, " created from large bioworks.xml" do
36
- # assert_equal_by_pairs (really any old array)
37
- def assert_equal_pairs(obj, arrs)
38
- arrs.each do |arr|
39
- #if obj.send(arr[1]) != arr[0]
40
- # puts "HELLO"
41
- # puts "OBJ answer"
42
- # p obj.send(arr[1])
43
- # puts "ar0"
44
- # p arr[0]
45
- # puts "ar1"
46
- # p arr[1]
47
- #end
48
- if arr[0].is_a? Float
49
- obj.send(arr[1]).should be_close(arr[0], 0.0000000001)
50
- else
51
- obj.send(arr[1]).should == arr[0]
52
- end
53
- end
54
- end
55
-
56
- #swap the first to guys first
57
- def assert_equal_pairs_swapped(obj, arrs)
58
- arrs.each do |arr|
59
- arr[0], arr[1] = arr[1], arr[0]
60
- end
61
- assert_equal_pairs(obj, arrs)
62
- end
63
-
64
- spec_large do
65
- before(:all) do
66
- st = Time.new
67
- params = Tfiles + "/opd1/sequest.3.2.params"
68
- bioworks_xml = Tfiles_l + "/opd1/bioworks.000.oldparams.xml"
69
- mzxml_path = Tfiles_l + "/opd1"
70
- out_path = Tfiles
71
- @pepxml_version = 18
72
- @pepxml_objs = Sequest::PepXML.set_from_bioworks_xml(bioworks_xml, params, {:ms_data => mzxml_path, :out_path => out_path, :pepxml_version => @pepxml_version})
73
- puts "- takes #{Time.new - st} secs"
74
- end
75
-
76
- it 'extracts MSMSPipelineAnalysis' do
77
- ######## HMMMMM...
78
- Sequest::PepXML.pepxml_version.should == @pepxml_version
79
-
80
- # MSMSPipelineAnalysis
81
- po = @pepxml_objs.first
82
- msms_pipeline = po.msms_pipeline_analysis
83
- msms_pipeline.xmlns.should == 'http://regis-web.systemsbiology.net/pepXML'
84
- msms_pipeline.xmlns_xsi.should == 'http://www.w3.org/2001/XMLSchema-instance'
85
- msms_pipeline.xsi_schema_location.should == 'http://regis-web.systemsbiology.net/pepXML /tools/bin/TPP/tpp/schema/pepXML_v18.xsd'
86
- msms_pipeline.summary_xml.should == '000.xml'
87
- end
88
-
89
- it 'extracts MSmSRunSummary' do
90
- # MSMSRunSummary
91
- rs = @pepxml_objs.first.msms_pipeline_analysis.msms_run_summary
92
- rs.base_name.should =~ /\/000/
93
- assert_equal_pairs(rs, [ ['ThermoFinnigan', :ms_manufacturer], ['LCQ Deca XP Plus', :ms_model], ['ESI', :ms_ionization], ['Ion Trap', :ms_mass_analyzer], ['UNKNOWN', :ms_detector], ['raw', :raw_data_type], ['.mzXML', :raw_data], ])
94
- end
95
-
96
- it 'extracts SampleEnzyme' do
97
- # SampleEnzyme
98
- se = @pepxml_objs.first.msms_pipeline_analysis.msms_run_summary.sample_enzyme
99
- assert_equal_pairs(se, [ ['Trypsin', :name], ['KR', :cut], [nil, :no_cut], ['C', :sense], ])
100
- end
101
-
102
- it 'extracts SearchSummary' do
103
- # SearchSummary
104
- ss = @pepxml_objs.first.msms_pipeline_analysis.msms_run_summary.search_summary
105
- ss.is_a?(Sequest::PepXML::SearchSummary).should be_true
106
- ss.base_name.should =~ /\/000/
107
- ss.peptide_mass_tol.should =~ /1\.500/
108
- assert_equal_pairs_swapped(ss, [ # normal attributes
109
- [:search_engine, "SEQUEST"], [:precursor_mass_type, "average"], [:fragment_mass_type, "average"], [:out_data_type, "out"], [:out_data, ".tgz"], [:search_id, "1"],
110
-
111
- # enzymatic_search_constraint
112
- [:enzyme, 'Trypsin'], [:max_num_internal_cleavages, '2'], [:min_number_termini, '2'],
113
-
114
- # parameters
115
- [:fragment_ion_tol, "1.0000"], [:ion_series, "0 1 1 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0"], [:max_num_differential_AA_per_mod, "3"], [:nucleotide_reading_frame, "0"], [:num_output_lines, "10"], [:remove_precursor_peak, "0"], [:ion_cutoff_percentage, "0.0000"], [:match_peak_count, "0"], [:match_peak_allowed_error, "1"], [:match_peak_tolerance, "1.0000"], [:protein_mass_filter, "0 0"],
116
- ])
117
-
118
- end
119
- it 'extracts SearchDatabase' do
120
- # SearchDatabase
121
- sd = @pepxml_objs.first.msms_pipeline_analysis.msms_run_summary.search_summary.search_database
122
- sd.is_a?(Sequest::PepXML::SearchDatabase).should be_true
123
- assert_equal_pairs_swapped(sd, [ [:local_path, "C:\\Xcalibur\\database\\ecoli_K12.fasta"], [:seq_type, 'AA'], ])
124
- end
125
-
126
- it 'returns SpectrumQueries' do
127
- # SpectrumQueries
128
- sq = @pepxml_objs.first.msms_pipeline_analysis.msms_run_summary.spectrum_queries
129
- spec = sq.first
130
- assert_equal_pairs_swapped(spec, [
131
- [:spectrum, "000.100.100.1"], [:start_scan, "100"], [:end_scan, "100"],
132
- #[:precursor_neutral_mass, "1074.5920"], # out2summary
133
- [:precursor_neutral_mass, 1074.666926], # mine
134
- [:assumed_charge, 1], [:index, "1"],
135
- ])
136
- sh = spec.search_results.first.search_hits.first
137
- assert_equal_pairs_swapped(sh, [
138
- # normal attributes
139
- [:hit_rank, 1],
140
- [:peptide, "SIYFRNFK"],
141
- [:peptide_prev_aa, "R"],
142
- [:peptide_next_aa, "G"],
143
- [:protein, "gi|16130084|ref|NP_416651.1|"],
144
- [:num_tot_proteins, 1],
145
- [:num_matched_ions, 4],
146
- [:tot_num_ions, 14],
147
- #[:calc_neutral_pep_mass, "1074.1920"], # out2summary
148
- [:calc_neutral_pep_mass, 1074.23261], # mine
149
- #[:massdiff, "+0.400000"], # out2summary
150
- [:massdiff, 0.434316000000081], # mine
151
- [:num_tol_term, 2], [:num_missed_cleavages, 1], [:is_rejected, 0],
152
-
153
- # search_score
154
- [:xcorr, 0.4], [:deltacn, 0.023], [:deltacnstar, "0"], [:spscore, 78.8], [:sprank, 1],
155
- ])
156
-
157
- spec = sq[1]
158
- assert_equal_pairs_swapped(spec, [
159
- [:spectrum, "000.1000.1000.1"], [:start_scan, "1000"], [:end_scan, "1000"], #[:precursor_neutral_mass, "663.1920"], # out2summary
160
- [:precursor_neutral_mass, 663.206111], # mine
161
- [:assumed_charge, 1], [:index, "2"],
162
- ])
163
-
164
- sh = spec.search_results.first.search_hits.first
165
- assert_equal_pairs_swapped(sh, [
166
- # normal attributes
167
- [:hit_rank, 1], [:peptide, "ALADFK"], [:peptide_prev_aa, "R"], [:peptide_next_aa, "S"], [:protein, "gi|16128765|ref|NP_415318.1|"], [:num_tot_proteins, 1], [:num_matched_ions, 5], [:tot_num_ions, 10],
168
- [:num_tol_term, 2], [:num_missed_cleavages, 0], [:is_rejected, 0],
169
- #[:massdiff, "-0.600000"], # out2summary
170
- [:massdiff, -0.556499000000031], # mine
171
- #[:calc_neutral_pep_mass, 663.7920], # out2summary
172
- [:calc_neutral_pep_mass, 663.76261], # mine
173
-
174
- # search_score
175
- [:xcorr, 0.965], [:deltacn, 0.132], [:deltacnstar, "0"], [:spscore, 81.1], [:sprank, 1],
176
- ])
177
-
178
- spec = sq[9]
179
- assert_equal_pairs_swapped(spec, [
180
- [:spectrum, "000.1008.1008.2"], [:start_scan, "1008"], [:end_scan, "1008"], [:assumed_charge, 2],
181
- #[:precursor_neutral_mass, "691.0920"], # out2summary
182
- [:precursor_neutral_mass, 691.150992], # mine
183
- ])
184
-
185
- sh = spec.search_results.first.search_hits.first
186
- assert_equal_pairs_swapped(sh, [
187
- # normal attributes
188
- [:hit_rank, 1], [:peptide, "RLFTR"], [:peptide_prev_aa, "R"], [:peptide_next_aa, "A"], [:protein, "gi|16130457|ref|NP_417027.1|"], [:num_tot_proteins, 1], [:num_matched_ions, 5], [:tot_num_ions, 8], [:num_tol_term, 2],
189
-
190
- #[:num_missed_cleavages, "0"], # out2summary misses this!
191
- [:num_missed_cleavages, 1],
192
- [:is_rejected, 0],
193
- #[:calc_neutral_pep_mass, "691.7920"], # out2summary
194
- [:calc_neutral_pep_mass, 691.82261], # mine
195
- #[:massdiff, "-0.700000"], # out2summary
196
- [:massdiff, -0.67161800000008], # mine
197
-
198
- # search_score
199
- [:xcorr, 0.903], [:deltacn, 0.333], [:deltacnstar, "0"], [:spscore, 172.8], [:sprank, 1],
200
- ])
201
- end
202
-
203
- it 'can generate correct pepxml file' do
204
-
205
- ## IF OUR OBJECT IS CORRECT, THEN WE GET THE OUTPUT:
206
- string = @pepxml_objs.first.to_pepxml
207
- ans_lines = IO.read(Tfiles + "/opd1/000.my_answer.100lines.xml").split("\n")
208
- base_name_re = /base_name=".*?files\//o
209
- date_re = /date=".*?"/
210
- string.split("\n").each_with_index do |line,i|
211
- if i > 99 ; break end
212
- ans, exp =
213
- if i == 1
214
- [line.sub(date_re,''), ans_lines[i].sub(date_re,'')]
215
- elsif i == 2
216
- [line.sub(base_name_re,''), ans_lines[i].sub(base_name_re, '').sub(/^\s+/, "\t")]
217
- elsif i == 6
218
- [line.sub(base_name_re,''), ans_lines[i].sub(base_name_re, '').sub(/^\s+/, "\t\t")]
219
- else
220
- [line, ans_lines[i]]
221
- end
222
-
223
- #ans.split('').zip(exp.split('')) do |l,a|
224
- # if l != a
225
- # puts line
226
- # puts ans_lines[i]
227
- # puts l
228
- # puts a
229
- # end
230
- #end
231
- if ans != exp
232
- puts ans
233
- puts exp
234
- end
235
- ans.should == exp
236
- #line.sub(base_name_re,'').should == ans_lines[i].sub(base_name_re,'')
237
- end
238
- end
239
- end
240
- end
241
-
242
-
243
-
244
- describe Sequest::PepXML::Modifications do
245
- before(:each) do
246
- tf_params = Tfiles + "/bioworks32.params"
247
- @params = Sequest::Params.new(tf_params)
248
- # The params object here is completely unnecessary for this test, except
249
- # that it sets up the mass table
250
- @obj = Sequest::PepXML::Modifications.new(@params, "(M* +15.90000) (M# +29.00000) (S@ +80.00000) (C^ +12.00000) (ct[ +12.33000) (nt] +14.20000) ")
251
- end
252
- it 'creates a mod_symbols_hash' do
253
- answ = {[:C, 12.0]=>"^", [:S, 80.0]=>"@", [:M, 29.0]=>"#", [:M, 15.9]=>"*", [:ct, 12.33]=>"[", [:nt, 14.2]=>"]"}
254
- @obj.mod_symbols_hash.should == answ
255
- ## need more here
256
- end
257
-
258
- it 'creates a ModificationInfo object given a special peptide sequence' do
259
- mod_string = "(M* +15.90000) (M# +29.00000) (S@ +80.00000) (C^ +12.00000) (ct[ +12.33000) (nt] +14.20000) "
260
- @params.diff_search_options = "15.90000 M 29.00000 M 80.00000 S 12.00000 C"
261
- @params.term_diff_search_options = "14.20000 12.33000"
262
- mod = Sequest::PepXML::Modifications.new(@params, mod_string)
263
- ## no mods
264
- peptide = "PEPTIDE"
265
- mod.modification_info(peptide).should be_nil
266
- peptide = "]M*EC^S@IDM#M*EMSCM["
267
- modinfo = mod.modification_info(peptide)
268
- modinfo.modified_peptide.should == peptide
269
- modinfo.mod_nterm_mass.should be_close(146.40054, 0.000001)
270
- modinfo.mod_cterm_mass.should be_close(160.52994, 0.000001)
271
- end
272
-
273
- end
274
-
275
- describe Sequest::PepXML::SearchHit::ModificationInfo do
276
-
277
- before(:each) do
278
- modaaobjs = [[3, 150.3], [6, 345.2]].map do |ar|
279
- Sequest::PepXML::SearchHit::ModificationInfo::ModAminoacidMass.new(ar)
280
- end
281
- hash = {
282
- :mod_nterm_mass => 520.2,
283
- :modified_peptide => "MOD*IFI^E&D",
284
- :mod_aminoacid_masses => modaaobjs,
285
- }
286
- #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"
287
- @obj = Sequest::PepXML::SearchHit::ModificationInfo.new(hash)
288
- end
289
-
290
- def _re(st)
291
- /#{Regexp.escape(st)}/
292
- end
293
-
294
- it 'can produce pepxml' do
295
- answ = @obj.to_pepxml
296
- answ.should =~ _re('<modification_info')
297
- answ.should =~ _re(" mod_nterm_mass=\"520.2\"")
298
- answ.should =~ _re(" modified_peptide=\"MOD*IFI^E&amp;D\"")
299
- answ.should =~ _re("<mod_aminoacid_mass")
300
- answ.should =~ _re(" position=\"3\"")
301
- answ.should =~ _re(" mass=\"150.3\"")
302
- answ.should =~ _re(" position=\"6\"")
303
- answ.should =~ _re(" mass=\"345.2\"")
304
- answ.should =~ _re("</modification_info>")
305
- end
306
- end
307
-
308
- describe 'bioworks file with modifications transformed into pepxml' do
309
-
310
- spec_large do
311
- before(:all) do
312
- modfiles_sequest_dir = Tfiles_l + '/opd1_2runs_2mods/sequest33/'
313
- modfiles_data_dir = Tfiles_l + '/opd1_2runs_2mods/data/'
314
- @srgfile = modfiles_sequest_dir + 'tmp.srg'
315
- @out_path = modfiles_sequest_dir + 'pepxml'
316
- modfiles = %w(020 040).map do |file|
317
- modfiles_sequest_dir + file + ".srf"
318
- end
319
- objs = Sequest::PepXML.set_from_bioworks( SRFGroup.new(modfiles).to_srg(@srgfile), {:ms_data => modfiles_data_dir, :out_path => @out_path, :print => true, :backup_db_path => '/project/marcotte/marcotte/ms/database'} )
320
- @out_files = %w(020 040).map do |file|
321
- @out_path + '/' + file + '.xml'
322
- end
323
- end
324
-
325
- after(:all) do
326
- File.unlink(@srgfile) unless NODELETE
327
- FileUtils.rm_r(@out_path)
328
- #@out_files.each do |fn|
329
- # File.unlink(fn) unless NODELETE
330
- #end
331
- end
332
-
333
- # splits string on ' 'and matches the line found by find_line_regexp in
334
- # lines
335
- def match_modline_pieces(lines, find_line_regexp, string)
336
- pieces = string.split(' ').map {|v| /#{Regexp.escape(v)}/ }
337
- lines.each do |line|
338
- if line =~ find_line_regexp
339
- pieces.each do |piece|
340
- line.should =~ piece
341
- end
342
- end
343
- end
344
- end
345
-
346
- it 'gets modifications right in real run' do
347
- @out_files.each do |fn|
348
- fn.exist_as_a_file?.should be_true
349
- beginning = IO.read(fn)
350
- lines = beginning.split("\n")
351
- [
352
- [/aminoacid="M"/, '<aminoacid_modification symbol="*" massdiff="+15.9994" aminoacid="M" variable="Y" binary="N" mass="147.192"'],
353
-
354
- [/aminoacid="S"/, '<aminoacid_modification symbol="#" massdiff="+79.9799" aminoacid="S" variable="Y" binary="N" mass="167.0581"'],
355
- [/aminoacid="T"/, '<aminoacid_modification symbol="#" massdiff="+79.9799" aminoacid="T" variable="Y" binary="N" mass="181.085"'],
356
- [/aminoacid="Y"/, '<aminoacid_modification symbol="#" massdiff="+79.9799" aminoacid="Y" variable="Y" binary="N" mass="243.1559"'],
357
- [/parameter name="diff_search_options"/, '<parameter name="diff_search_options" value="15.999400 M 79.979900 STY 0.000000 M 0.000000 X 0.000000 T 0.000000 Y"/>'],
358
- ].each do |a,b|
359
- match_modline_pieces(lines, a, b)
360
- end
361
- [
362
- '<modification_info modified_peptide="Y#RLGGS#T#K">',
363
- '<mod_aminoacid_mass position="1" mass="243.1559"/>',
364
- '<mod_aminoacid_mass position="7" mass="167.0581"/>',
365
- '</modification_info>',
366
- '<mod_aminoacid_mass position="9" mass="181.085"/>'
367
- ].each do |line|
368
- beginning.should =~ /#{Regexp.escape(line)}/ # "a modification info for a peptide")
369
- end
370
- end
371
- end
372
- end
373
- end
374
-
@@ -1,38 +0,0 @@
1
- require File.expand_path( File.dirname(__FILE__) + '/../spec_helper' )
2
- require 'spec_id'
3
- require 'spec_id/sequest'
4
- require 'set'
5
-
6
- class MockPepHit
7
- attr_accessor :first_scan, :xcorr, :idd
8
- def initialize(*args)
9
- (@first_scan, @xcorr, @idd) = args
10
- end
11
- end
12
-
13
- describe Sequest, ": with small mock set" do
14
- before(:each) do
15
- index = 0
16
- hits = [[0, 5.0, 0], [0, 4.0, 1], [0, 3.0, 2],
17
- [1, 5.0, 3], [1, 4.0, 4],
18
- [2, 5.5, 5],
19
- [3, 5.5, 6], [3, 5.5, 7], [3, 4.0, 8], [3, 2.4, 9], [3, 2.4, 10]
20
- ].map do |hit|
21
- MockPepHit.new(*hit)
22
- end
23
- @peps = hits.sort_by {rand}
24
- end
25
-
26
- it 'returns "other" hits' do
27
- included = [2, 8, 9, 10]
28
- first_index = 2
29
- last_index = 10
30
- reply = Sequest.other_hits(@peps, first_index,last_index,:first_scan, [:xcorr, {:down => :xcorr}])
31
- reply.map {|hit| hit.idd }.to_set.should == included.to_set
32
-
33
- # same, but optimized
34
- reply = Sequest.other_hits_sorted_by_xcorr(@peps, first_index,last_index,:first_scan)
35
- reply.map {|hit| hit.idd }.to_set.should == included.to_set
36
- end
37
-
38
- end