mspire-mascot-dat 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.rspec +1 -0
- data/LICENSE.txt +21 -0
- data/README.md +46 -0
- data/Rakefile +39 -0
- data/VERSION +1 -0
- data/lib/mspire/mascot/dat/index.rb +93 -0
- data/lib/mspire/mascot/dat/peptide.rb +95 -0
- data/lib/mspire/mascot/dat/query.rb +69 -0
- data/lib/mspire/mascot/dat.rb +59 -0
- data/mspire-mascot-dat.gemspec +70 -0
- data/spec/mspire/mascot/dat/index_spec.rb +44 -0
- data/spec/mspire/mascot/dat/peptide_spec.rb +24 -0
- data/spec/mspire/mascot/dat/query_spec.rb +33 -0
- data/spec/mspire/mascot/dat_spec.rb +94 -0
- data/spec/reference/dat_format_reference.md +667 -0
- data/spec/reference/two_spectra_decoy_F004129.png +0 -0
- data/spec/reference/two_spectra_no_decoy_F004128.png +0 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/testfiles/F004128.dat +897 -0
- data/spec/testfiles/F004129.dat +1259 -0
- data/spec/testfiles/two_spectra.mgf +864 -0
- metadata +133 -0
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'mspire/mascot/dat'
|
4
|
+
|
5
|
+
describe 'dat file can be open for reading with block' do
|
6
|
+
let(:file) { TESTFILES + '/F004129.dat' }
|
7
|
+
|
8
|
+
specify '#open(file)' do
|
9
|
+
Mspire::Mascot::Dat.open(file) do |dat|
|
10
|
+
dat.should be_a(Mspire::Mascot::Dat)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'reading a dat file' do
|
16
|
+
before(:each) do
|
17
|
+
@file = TESTFILES + '/F004129.dat'
|
18
|
+
@io = File.open(@file)
|
19
|
+
@dat = Mspire::Mascot::Dat.new(@io)
|
20
|
+
end
|
21
|
+
|
22
|
+
after(:each) do
|
23
|
+
@io.close
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'knows all the sections, with queries grouped' do
|
27
|
+
@dat.sections.should == [:parameters, :masses, :unimod, :enzyme, :header, :summary, :decoy_summary, :peptides, :decoy_peptides, :proteins, :index, :queries]
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'can retrieve queries at random' do
|
31
|
+
@dat.query(1).title.should == '1.2746.2746.2'
|
32
|
+
@dat.query(2).title.should == '1.2745.2745.4'
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'can retrieve every peptide' do
|
36
|
+
start = [ [1,1,'VMLSDADPSLEQYYVNVR'],
|
37
|
+
[2,1,'MDSSSGSQGNGSFMDQNSLGILNMDNLK'],
|
38
|
+
[2,2,'STGAESSEEXLREAYIMASVEHVNLLK'],
|
39
|
+
[2,3,'LSSPPSTSHTYEGKLLTKPTHTNTDLR'],
|
40
|
+
[2,4,'MDSSSGSQGNGSFMDQNSLGILNMDNLK']]
|
41
|
+
|
42
|
+
last = [2,10,'NGSSVAGTSVLSPSIPLTLVVLPALMIAQK']
|
43
|
+
|
44
|
+
last_pep = nil
|
45
|
+
@dat.each_peptide do |peptide|
|
46
|
+
last_pep = peptide
|
47
|
+
(qnum, pnum, aa) = start.shift
|
48
|
+
if qnum
|
49
|
+
peptide.query_num.should == qnum
|
50
|
+
peptide.peptide_num.should == pnum
|
51
|
+
peptide.seq.should == aa
|
52
|
+
end
|
53
|
+
end
|
54
|
+
(qnum, pnum, aa) = last
|
55
|
+
peptide = last_pep
|
56
|
+
peptide.query_num.should == qnum
|
57
|
+
peptide.peptide_num.should == pnum
|
58
|
+
peptide.seq.should == aa
|
59
|
+
|
60
|
+
# this proves that each_peptide can also return an enumerator if asked
|
61
|
+
cnts = @dat.each_peptide.with_index.map do |peptide,i|
|
62
|
+
peptide.should(be_a(Mspire::Mascot::Dat::Peptide)) && i
|
63
|
+
end
|
64
|
+
cnts.should == (0..10).to_a
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'can retrieve decoy peptides' do
|
68
|
+
ions_score_target = @dat.each_peptide(true, 1).map do |peptide|
|
69
|
+
peptide.should(be_a(Mspire::Mascot::Dat::Peptide))
|
70
|
+
peptide.peptide_num.should == 1
|
71
|
+
peptide.ions_score
|
72
|
+
end
|
73
|
+
ions_score_target.should == [0.22, 4.11]
|
74
|
+
|
75
|
+
ions_score_decoy = @dat.each_peptide(false, 1).map do |peptide|
|
76
|
+
peptide.should(be_a(Mspire::Mascot::Dat::Peptide))
|
77
|
+
peptide.peptide_num.should == 1
|
78
|
+
peptide.ions_score
|
79
|
+
end
|
80
|
+
ions_score_decoy.should == [3.52, 4.58]
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'can retrieve just the n peptides' do
|
84
|
+
n = 1
|
85
|
+
cnt = 0
|
86
|
+
@dat.each_peptide(true, n) do |peptide|
|
87
|
+
cnt += 1
|
88
|
+
peptide.should(be_a(Mspire::Mascot::Dat::Peptide))
|
89
|
+
peptide.query_num.should == cnt
|
90
|
+
peptide.peptide_num.should == 1
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|