mspire 0.3.9 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/INSTALL +24 -7
- data/README +15 -13
- data/README.rdoc +18 -0
- data/Rakefile +50 -14
- data/bin/aafreqs.rb +0 -0
- data/bin/bioworks2excel.rb +0 -0
- data/bin/bioworks_to_pepxml.rb +2 -1
- data/bin/bioworks_to_pepxml_gui.rb +0 -0
- data/bin/fasta_shaker.rb +0 -0
- data/bin/filter_and_validate.rb +0 -0
- data/bin/gi2annot.rb +0 -0
- data/bin/id_class_anal.rb +0 -0
- data/bin/id_precision.rb +0 -0
- data/bin/ms_to_lmat.rb +0 -0
- data/bin/pepproph_filter.rb +0 -0
- data/bin/protein_summary.rb +0 -0
- data/bin/protxml2prots_peps.rb +0 -0
- data/bin/raw_to_mzXML.rb +3 -3
- data/bin/run_percolator.rb +122 -0
- data/bin/sqt_group.rb +0 -0
- data/bin/srf_group.rb +0 -0
- data/changelog.txt +29 -0
- data/lib/ms/gradient_program.rb +0 -1
- data/lib/ms/msrun.rb +62 -29
- data/lib/ms/parser/mzdata/axml.rb +55 -0
- data/lib/ms/parser/mzdata/dom.rb +51 -36
- data/lib/ms/parser/mzdata.rb +8 -2
- data/lib/ms/parser/mzxml/axml.rb +59 -0
- data/lib/ms/parser/mzxml/dom.rb +80 -57
- data/lib/ms/parser/mzxml/hpricot.rb +1 -1
- data/lib/ms/parser/mzxml/libxml.rb +6 -2
- data/lib/ms/parser/mzxml.rb +110 -3
- data/lib/ms/parser.rb +4 -4
- data/lib/ms/precursor.rb +19 -4
- data/lib/ms/scan.rb +7 -7
- data/lib/ms/spectrum.rb +249 -58
- data/lib/mspire.rb +1 -1
- data/lib/spec_id/bioworks.rb +2 -2
- data/lib/spec_id/precision/filter/cmdline.rb +8 -1
- data/lib/spec_id/precision/prob/cmdline.rb +2 -2
- data/lib/spec_id/precision/prob.rb +1 -0
- data/lib/spec_id/proph/pep_summary.rb +3 -4
- data/lib/spec_id/proph/prot_summary.rb +3 -3
- data/lib/spec_id/protein_summary.rb +1 -1
- data/lib/spec_id/sequest/pepxml.rb +5 -5
- data/lib/spec_id/sqt.rb +4 -4
- data/lib/spec_id/srf.rb +49 -8
- data/lib/spec_id.rb +5 -0
- data/lib/xml_style_parser.rb +16 -2
- data/script/compile_and_plot_smriti_final.rb +0 -0
- data/script/create_little_pepxml.rb +0 -0
- data/script/degenerate_peptides.rb +0 -0
- data/script/estimate_fpr_by_cysteine.rb +0 -0
- data/script/extract_gradient_programs.rb +1 -1
- data/script/find_cysteine_background.rb +0 -0
- data/script/genuine_tps_and_probs.rb +0 -0
- data/script/get_apex_values_rexml.rb +0 -0
- data/script/mascot_fix_pepxml.rb +123 -0
- data/script/msvis.rb +0 -0
- data/script/mzXML2timeIndex.rb +0 -0
- data/script/peps_per_bin.rb +0 -0
- data/script/prep_dir.rb +0 -0
- data/script/simple_protein_digestion.rb +0 -0
- data/script/smriti_final_analysis.rb +0 -0
- data/script/sqt_to_meta.rb +0 -0
- data/script/top_hit_per_scan.rb +0 -0
- data/script/toppred_to_yaml.rb +0 -0
- data/script/tpp_installer.rb +0 -0
- data/specs/bin/prob_validate_spec.rb +5 -2
- data/specs/bin/protein_summary_spec.rb +5 -1
- data/specs/ms/msrun_spec.rb +176 -133
- data/specs/ms/parser_spec.rb +3 -3
- data/specs/ms/spectrum_spec.rb +0 -2
- data/specs/spec_id/precision/filter_spec.rb +4 -1
- data/specs/spec_id/precision/prob_spec.rb +2 -2
- data/specs/spec_id/sequest/pepxml_spec.rb +1 -1
- data/specs/spec_id/sqt_spec.rb +5 -5
- data/specs/spec_id/srf_spec.rb +56 -93
- data/specs/spec_id/srf_spec_helper.rb +121 -284
- data/specs/spec_id_spec.rb +3 -0
- data/specs/transmem/toppred_spec.rb +1 -0
- data/test_files/opd1_2runs_2mods/data/020.mzData.xml +683 -0
- data/test_files/opd1_2runs_2mods/data/020.readw.mzXML +382 -0
- data/test_files/opd1_2runs_2mods/data/040.mzData.xml +683 -0
- data/test_files/opd1_2runs_2mods/data/040.readw.mzXML +382 -0
- data/test_files/opd1_2runs_2mods/data/README.txt +6 -0
- metadata +247 -229
data/lib/spec_id/sqt.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'spec_id'
|
2
|
-
require '
|
2
|
+
require 'arrayclass'
|
3
3
|
require 'set'
|
4
4
|
|
5
5
|
class SQTGroup
|
@@ -176,7 +176,7 @@ end
|
|
176
176
|
|
177
177
|
# all are cast as expected (total_intensity is a float)
|
178
178
|
# mh = observed mh
|
179
|
-
SQT::Spectrum =
|
179
|
+
SQT::Spectrum = Arrayclass.new(%w[first_scan last_scan charge time_to_process node mh total_intensity lowest_sp num_matched_peptides matches])
|
180
180
|
|
181
181
|
# 0=first_scan 1=last_scan 2=charge 3=time_to_process 4=node 5=mh 6=total_intensity 7=lowest_sp 8=num_matched_peptides 9=matches
|
182
182
|
|
@@ -262,7 +262,7 @@ class SQT::Spectrum
|
|
262
262
|
end
|
263
263
|
|
264
264
|
# SQT format uses only indices 0 - 9
|
265
|
-
SQT::Match =
|
265
|
+
SQT::Match = Arrayclass.new(%w[rxcorr rsp mh deltacn_orig xcorr sp ions_matched ions_total sequence manual_validation_status first_scan last_scan charge deltacn aaseq base_name loci])
|
266
266
|
|
267
267
|
# 0=rxcorr 1=rsp 2=mh 3=deltacn_orig 4=xcorr 5=sp 6=ions_matched 7=ions_total 8=sequence 9=manual_validation_status 10=first_scan 11=last_scan 12=charge 13=deltacn 14=aaseq 15=base_name 16=loci
|
268
268
|
|
@@ -329,7 +329,7 @@ class SQT::Match::Percolator < SQT::Match
|
|
329
329
|
end
|
330
330
|
end
|
331
331
|
|
332
|
-
SQT::Locus =
|
332
|
+
SQT::Locus = Arrayclass.new(%w[locus description peps])
|
333
333
|
|
334
334
|
class SQT::Locus
|
335
335
|
include SpecID::Prot
|
data/lib/spec_id/srf.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
1
3
|
require 'spec_id'
|
2
4
|
require 'spec_id/sequest'
|
3
5
|
require 'fasta'
|
@@ -45,7 +47,7 @@ class SRFGroup
|
|
45
47
|
if filenames.is_a?(String) && filenames =~ /\.srg$/
|
46
48
|
srg_filename = filenames.dup
|
47
49
|
@filename = srg_filename
|
48
|
-
filenames =
|
50
|
+
filenames = SRFGroup.srg_to_paths(filenames)
|
49
51
|
filenames.each do |file|
|
50
52
|
if !File.exist? file
|
51
53
|
puts "File: #{file} in #{srg_filename} does not exist!"
|
@@ -64,6 +66,11 @@ class SRFGroup
|
|
64
66
|
end
|
65
67
|
end
|
66
68
|
|
69
|
+
# reads a srg file and delivers the path names
|
70
|
+
def self.srg_to_paths(file)
|
71
|
+
IO.readlines(file).grep(/\w/).map {|v| v.chomp }
|
72
|
+
end
|
73
|
+
|
67
74
|
# if srfs were read in separately, then the proteins will need to be merged
|
68
75
|
# by their reference
|
69
76
|
def merge_different_sets(srfs)
|
@@ -200,6 +207,23 @@ class SRF
|
|
200
207
|
sprintf("%.#{decimal_places}f", float)
|
201
208
|
end
|
202
209
|
|
210
|
+
# not given an out_folder, will make one with the basename
|
211
|
+
def to_dta_files(out_folder=nil)
|
212
|
+
outdir =
|
213
|
+
if out_folder ; out_folder
|
214
|
+
else base_name
|
215
|
+
end
|
216
|
+
|
217
|
+
FileUtils.mkpath(outdir)
|
218
|
+
Dir.chdir(outdir) do
|
219
|
+
dta_files.zip(index) do |dta,i_ar|
|
220
|
+
File.open([base_name, *i_ar].join('.') << '.dta', 'wb') do |out|
|
221
|
+
dta.write_dta_file(out)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
203
227
|
# the out_filename will be the base_name + .sqt unless 'out_filename' is
|
204
228
|
# defined
|
205
229
|
# :round => round floating point numbers
|
@@ -389,7 +413,7 @@ class SRF
|
|
389
413
|
else
|
390
414
|
@params = Sequest::Params.new.parse_handle(fh)
|
391
415
|
# This is very sensitive to the grab_params method in sequest params
|
392
|
-
fh.read(12) ## gap between last params entry and index
|
416
|
+
fh.read(12) ## gap between last params entry and index
|
393
417
|
@index = read_scan_index(fh,@header.num_dta_files)
|
394
418
|
end
|
395
419
|
end
|
@@ -526,18 +550,26 @@ end
|
|
526
550
|
class SRF::DTAGen
|
527
551
|
|
528
552
|
## not sure if this is correct
|
553
|
+
# Float
|
529
554
|
attr_accessor :start_time
|
530
|
-
#
|
555
|
+
# Float
|
531
556
|
attr_accessor :start_mass
|
557
|
+
# Float
|
532
558
|
attr_accessor :end_mass
|
559
|
+
# Integer
|
533
560
|
attr_accessor :num_dta_files
|
561
|
+
# Integer
|
534
562
|
attr_accessor :group_scan
|
535
563
|
## not sure if this is correct
|
564
|
+
# Integer
|
536
565
|
attr_accessor :min_group_count
|
566
|
+
# Integer
|
537
567
|
attr_accessor :min_ion_threshold
|
538
568
|
#attr_accessor :intensity_threshold # can't find yet
|
539
569
|
#attr_accessor :precursor_tolerance # can't find yet
|
570
|
+
# Integer
|
540
571
|
attr_accessor :start_scan
|
572
|
+
# Integer
|
541
573
|
attr_accessor :end_scan
|
542
574
|
|
543
575
|
#
|
@@ -551,7 +583,7 @@ end
|
|
551
583
|
|
552
584
|
# total_num_possible_charge_states is not correct under 3.5 (Bioworks 3.3.1)
|
553
585
|
# unknown is, well unknown...
|
554
|
-
SRF::DTA =
|
586
|
+
SRF::DTA = Arrayclass.new(%w(mh dta_tic num_peaks charge ms_level unknown total_num_possible_charge_states peaks))
|
555
587
|
|
556
588
|
class SRF::DTA
|
557
589
|
# original
|
@@ -594,9 +626,18 @@ class SRF::DTA
|
|
594
626
|
self
|
595
627
|
end
|
596
628
|
|
629
|
+
# write a class dta file to the io object
|
630
|
+
def write_dta_file(io)
|
631
|
+
io.print("#{mh} #{charge}\r\n")
|
632
|
+
peak_ar = peaks.unpack('e*')
|
633
|
+
(0...(peak_ar.size)).step(2) do |i|
|
634
|
+
io.print( peak_ar[i,2].join(' '), "\r\n" )
|
635
|
+
end
|
636
|
+
end
|
637
|
+
|
597
638
|
end
|
598
639
|
|
599
|
-
SRF::OUT =
|
640
|
+
SRF::OUT = Arrayclass.new( %w(first_scan last_scan charge num_hits computer date_time hits total_inten lowest_sp num_matched_peptides db_locus_count) )
|
600
641
|
# 0=first_scan, 1=last_scan, 2=charge, 3=num_hits, 4=computer, 5=date_time, 6=hits, 7=total_inten, 8=lowest_sp, 9=num_matched_peptides, 10=db_locus_count
|
601
642
|
|
602
643
|
class SRF::OUT
|
@@ -666,7 +707,7 @@ end
|
|
666
707
|
# the first one listed
|
667
708
|
# srf = the srf object this scan came from
|
668
709
|
|
669
|
-
SRF::OUT::Pep =
|
710
|
+
SRF::OUT::Pep = Arrayclass.new(%w( mh deltacn_orig sp xcorr id num_other_loci rsp ions_matched ions_total sequence prots deltamass ppm aaseq base_name first_scan last_scan charge srf deltacn deltacn_orig_updated) )
|
670
711
|
|
671
712
|
# 0=mh 1=deltacn_orig 2=sp 3=xcorr 4=id 5=num_other_loci 6=rsp 7=ions_matched 8=ions_total 9=sequence 10=prots 11=deltamass 12=ppm 13=aaseq 14=base_name 15=first_scan 16=last_scan 17=charge 18=srf 19=deltacn 20=deltacn_orig_updated
|
672
713
|
|
@@ -787,7 +828,7 @@ class SRF::OUT::Pep
|
|
787
828
|
|
788
829
|
end
|
789
830
|
|
790
|
-
SRF::OUT::Prot =
|
831
|
+
SRF::OUT::Prot = Arrayclass.new( %w(reference peps) )
|
791
832
|
|
792
833
|
class SRF::OUT::Prot
|
793
834
|
include SpecID::Prot
|
@@ -798,7 +839,7 @@ class SRF::OUT::Prot
|
|
798
839
|
tmp = $VERBOSE ; $VERBOSE = nil
|
799
840
|
def initialize(reference=nil, peps=[])
|
800
841
|
#super(@@arr_size)
|
801
|
-
super(size)
|
842
|
+
super(self.class.size)
|
802
843
|
#@reference = reference
|
803
844
|
#@peps = peps
|
804
845
|
self[0,2] = reference, peps
|
data/lib/spec_id.rb
CHANGED
@@ -5,12 +5,17 @@ require 'roc'
|
|
5
5
|
require 'sample_enzyme' # for others
|
6
6
|
require 'spec_id/bioworks'
|
7
7
|
require 'spec_id/sequest'
|
8
|
+
|
8
9
|
require 'spec_id/proph/prot_summary'
|
10
|
+
require 'spec_id/proph/pep_summary'
|
11
|
+
|
9
12
|
require 'spec_id_xml'
|
10
13
|
require 'spec_id/sqt'
|
11
14
|
require 'spec_id/mass'
|
12
15
|
require 'fasta'
|
13
16
|
|
17
|
+
|
18
|
+
|
14
19
|
module ProteinReferenceable ; end
|
15
20
|
|
16
21
|
class SampleEnzyme ; end
|
data/lib/xml_style_parser.rb
CHANGED
@@ -82,7 +82,7 @@ module XMLStyleParser
|
|
82
82
|
end
|
83
83
|
|
84
84
|
# seeks a subclass that has the public_method @method
|
85
|
-
def self.choose_parser(const, method)
|
85
|
+
def self.choose_parser(const, method, special_subclass=nil)
|
86
86
|
## First update @@parser_precedence to ensure we should get these guys
|
87
87
|
parser_precedence = available_xml_parsers
|
88
88
|
|
@@ -95,10 +95,24 @@ module XMLStyleParser
|
|
95
95
|
available = available_subclasses.select do |subclass|
|
96
96
|
subclass.public_method_defined? method
|
97
97
|
end
|
98
|
+
if special_subclass
|
99
|
+
available_special_subclasses = []
|
100
|
+
available.each do |subclass|
|
101
|
+
if subclass.const_defined?(special_subclass)
|
102
|
+
available_special_subclasses << subclass.const_get(special_subclass)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
available = available_special_subclasses
|
106
|
+
end
|
98
107
|
if available.size > 0
|
99
108
|
available.first
|
100
109
|
else
|
101
|
-
|
110
|
+
warning = ""
|
111
|
+
if special_subclass
|
112
|
+
warning << "** while looking for special subclass: #{special_subclass} **\n"
|
113
|
+
end
|
114
|
+
warning << "No parser of class #{const} can parse :#{method}\n** Is 'axml' (or another xml parser) installed and working? **"
|
115
|
+
raise NoMethodError, warning
|
102
116
|
end
|
103
117
|
end
|
104
118
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,123 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'ms/msrun'
|
5
|
+
gem 'axml', '= 0.0.2'
|
6
|
+
|
7
|
+
# returns an array containing one or two pairs of [cycle_num, time] that
|
8
|
+
# represent the lowest and highest cycle numbers coupled to lowest and highest
|
9
|
+
# time (in seconds) and the lowest and highest associated experiment numbers
|
10
|
+
def get_cycle_exp_time_triplets(string)
|
11
|
+
hash = {}
|
12
|
+
cycle_index = nil
|
13
|
+
ssplit = string.split(', ')
|
14
|
+
ssplit.each_with_index do |piece,i|
|
15
|
+
if piece =~ /^Cycle\(s\):/
|
16
|
+
cycle_index = i
|
17
|
+
break
|
18
|
+
end
|
19
|
+
end
|
20
|
+
cycle_info = ssplit[cycle_index..-1].join(", ")
|
21
|
+
#Cycle(s): 663, 675 (Experiment 2), 667 (Experiment 4)
|
22
|
+
(header, info) = cycle_info.split(': ')
|
23
|
+
cycles = []
|
24
|
+
cycle_exp_pairs = []
|
25
|
+
info.split('), ').each do |a|
|
26
|
+
(nums, exp_num) = a.split('(')
|
27
|
+
nums = nums.split(', ').map {|v| v.to_i }
|
28
|
+
exp_num = exp_num.split(' ').last.sub(/\)$/,'').to_i
|
29
|
+
nums.each {|v| cycle_exp_pairs << [v, exp_num] }
|
30
|
+
end
|
31
|
+
|
32
|
+
min = cycle_exp_pairs.min
|
33
|
+
max = cycle_exp_pairs.max
|
34
|
+
|
35
|
+
elution = ssplit.select {|v| v.match(/^Elution:(.*)/) }.first
|
36
|
+
times = elution.split(': ').last
|
37
|
+
times.sub!(/ min$/,'')
|
38
|
+
times = times.split(' to ')
|
39
|
+
times.map! do |v|
|
40
|
+
(minutes, minute_decimals) = v.split('.')
|
41
|
+
seconds = minutes.to_f * 60
|
42
|
+
seconds + ( minute_decimals.to_f * 60 / 100 )
|
43
|
+
end
|
44
|
+
|
45
|
+
if max == min
|
46
|
+
[[min.first, min.last, times.first]]
|
47
|
+
else
|
48
|
+
[[min.first, min.last, times.first], [max.first, max.last, times.last]]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def get_scan_num(cycle, cycle_time, time_to_scan_num)
|
53
|
+
# grossly inefficient, but guaranteed to get right answer!
|
54
|
+
below_scan = nil
|
55
|
+
time_to_scan_num.each do |scan_time, scan_num|
|
56
|
+
if scan_time < cycle_time
|
57
|
+
below_scan = scan_num
|
58
|
+
else
|
59
|
+
break # scan_time > cycle_time
|
60
|
+
end
|
61
|
+
end
|
62
|
+
below_scan
|
63
|
+
end
|
64
|
+
|
65
|
+
#####################################################
|
66
|
+
# MAIN:
|
67
|
+
#####################################################
|
68
|
+
|
69
|
+
additional_ext = ".with_scan_nums"
|
70
|
+
|
71
|
+
if ARGV.size != 2
|
72
|
+
puts "usage: #{File.basename(__FILE__)} <file>.pepXML <file>.mzXML"
|
73
|
+
puts ""
|
74
|
+
puts "uses information from the mzXML file to fix the pepXML file"
|
75
|
+
puts "(adds in msms_run_summary: 'base_name' and 'raw_data' attributes;"
|
76
|
+
puts " adds scan numbers based on cycle and experiment times)"
|
77
|
+
puts ""
|
78
|
+
puts "outputs: <file>#{additional_ext}.pepXML"
|
79
|
+
exit
|
80
|
+
end
|
81
|
+
|
82
|
+
# get time_to_scan_num for msLevel=1 from the mzXML file
|
83
|
+
(pepxml, mzxml) = ARGV
|
84
|
+
mzxml_basename = File.basename(mzxml).sub(/\.mzxml$/i, '')
|
85
|
+
|
86
|
+
ext = File.extname(pepxml)
|
87
|
+
output = pepxml.sub(Regexp.new(Regexp.escape(ext)), additional_ext + ext)
|
88
|
+
|
89
|
+
ms = MS::MSRun.new(mzxml, :lazy => :no_spectra)
|
90
|
+
time_to_scan_num = ms.scans.select {|scan| scan.ms_level == 1 }.map do |scan|
|
91
|
+
[scan.time, scan.num]
|
92
|
+
end
|
93
|
+
|
94
|
+
# update spectrum queries based on scan number
|
95
|
+
|
96
|
+
root = AXML.parse_file(pepxml)
|
97
|
+
# fix the basename stuff:
|
98
|
+
msms_r_summary_n = root.child
|
99
|
+
atts = msms_r_summary_n.attrs
|
100
|
+
atts['base_name'] = mzxml_basename
|
101
|
+
atts['raw_data'] = '.mzXML'
|
102
|
+
|
103
|
+
root.child.find("child::spectrum_query").each do |sq|
|
104
|
+
triplets = get_cycle_exp_time_triplets(sq['spectrum'])
|
105
|
+
triplets.map! do |triplet|
|
106
|
+
[get_scan_num(triplet[0], triplet[2], time_to_scan_num), *triplet]
|
107
|
+
end
|
108
|
+
# [scan_num, cycle, exp, time]
|
109
|
+
quad = triplets.first
|
110
|
+
first_scan_num = (quad[0] + quad[2] - 1)
|
111
|
+
sq.attrs['start_scan'] = first_scan_num.to_s
|
112
|
+
sq.attrs['end_scan'] =
|
113
|
+
if triplets.size > 1
|
114
|
+
quad = triplets.last
|
115
|
+
(quad[0] + quad[2] - 1).to_s
|
116
|
+
else
|
117
|
+
first_scan_num.to_s
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
xml_header = '<?xml version="1.0" encoding="UTF-8"?>'
|
122
|
+
File.open(output, 'w') {|out| out.puts(xml_header); out.print root.to_s }
|
123
|
+
|
data/script/msvis.rb
CHANGED
File without changes
|
data/script/mzXML2timeIndex.rb
CHANGED
File without changes
|
data/script/peps_per_bin.rb
CHANGED
File without changes
|
data/script/prep_dir.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
data/script/sqt_to_meta.rb
CHANGED
File without changes
|
data/script/top_hit_per_scan.rb
CHANGED
File without changes
|
data/script/toppred_to_yaml.rb
CHANGED
File without changes
|
data/script/tpp_installer.rb
CHANGED
File without changes
|
@@ -42,7 +42,7 @@ describe 'filter_and_validate.rb on small bioworks file' do
|
|
42
42
|
|
43
43
|
it 'outputs to yaml' do
|
44
44
|
reply = @st_to_yaml.call( @args )
|
45
|
-
keys = [:probabilities, :params, :pephits_precision, :charges, :aaseqs, :count].map {|v| v.to_s }.sort
|
45
|
+
keys = [:probabilities, :params, :pephits, :pephits_precision, :charges, :aaseqs, :count].map {|v| v.to_s }.sort
|
46
46
|
reply.keys.map {|v| v.to_s}.sort.should == keys
|
47
47
|
end
|
48
48
|
|
@@ -55,7 +55,10 @@ describe 'filter_and_validate.rb on small bioworks file' do
|
|
55
55
|
#normal_nsp = @st_to_yaml.call( @args + " --prob nsp" )
|
56
56
|
#normal.should == normal_nsp
|
57
57
|
init = @st_to_yaml.call( @args + " --prob init" )
|
58
|
-
|
58
|
+
|
59
|
+
init[:pephits_precision].first[:values].should_not == normal[:pephits_precision].first[:values]
|
60
|
+
|
61
|
+
|
59
62
|
init[:pephits_precision].first[:values].zip([1.0, 0.95, 0.963333333333333, 0.8025]) do |got,exp|
|
60
63
|
got.should be_close(exp, 0.000000000001)
|
61
64
|
end
|
@@ -1,10 +1,14 @@
|
|
1
1
|
require File.expand_path( File.dirname(__FILE__) + '/../spec_helper' )
|
2
2
|
|
3
|
-
|
3
|
+
describe 'protein_summary.rb' do
|
4
4
|
|
5
5
|
before(:all) do
|
6
6
|
@progname = 'protein_summary.rb'
|
7
7
|
end
|
8
8
|
it_should_behave_like 'a cmdline program'
|
9
9
|
|
10
|
+
it 'outputs basic protein prophet -prot.xml summary' do
|
11
|
+
|
12
|
+
end
|
13
|
+
|
10
14
|
end
|