mspire 0.5.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +24 -0
- data/Rakefile +51 -0
- data/VERSION +1 -0
- data/lib/cv/description.rb +18 -0
- data/lib/cv/param.rb +33 -0
- data/lib/cv.rb +3 -0
- data/lib/io/bookmark.rb +13 -0
- data/lib/merge.rb +7 -0
- data/lib/ms/cvlist.rb +76 -0
- data/lib/ms/digester.rb +245 -0
- data/lib/ms/fasta.rb +86 -0
- data/lib/ms/ident/peptide/db.rb +243 -0
- data/lib/ms/ident/peptide.rb +72 -0
- data/lib/ms/ident/peptide_hit/qvalue.rb +56 -0
- data/lib/ms/ident/peptide_hit.rb +26 -0
- data/lib/ms/ident/pepxml/modifications.rb +83 -0
- data/lib/ms/ident/pepxml/msms_pipeline_analysis.rb +70 -0
- data/lib/ms/ident/pepxml/msms_run_summary.rb +82 -0
- data/lib/ms/ident/pepxml/parameters.rb +14 -0
- data/lib/ms/ident/pepxml/sample_enzyme.rb +165 -0
- data/lib/ms/ident/pepxml/search_database.rb +49 -0
- data/lib/ms/ident/pepxml/search_hit/modification_info.rb +79 -0
- data/lib/ms/ident/pepxml/search_hit.rb +144 -0
- data/lib/ms/ident/pepxml/search_result.rb +35 -0
- data/lib/ms/ident/pepxml/search_summary.rb +92 -0
- data/lib/ms/ident/pepxml/spectrum_query.rb +85 -0
- data/lib/ms/ident/pepxml.rb +112 -0
- data/lib/ms/ident/protein.rb +33 -0
- data/lib/ms/ident/protein_group.rb +80 -0
- data/lib/ms/ident/search.rb +114 -0
- data/lib/ms/ident.rb +37 -0
- data/lib/ms/isotope/aa.rb +59 -0
- data/lib/ms/mascot.rb +6 -0
- data/lib/ms/mass/aa.rb +79 -0
- data/lib/ms/mass.rb +55 -0
- data/lib/ms/mzml/index_list.rb +98 -0
- data/lib/ms/mzml/plms1.rb +34 -0
- data/lib/ms/mzml.rb +197 -0
- data/lib/ms/obo.rb +38 -0
- data/lib/ms/plms1.rb +156 -0
- data/lib/ms/quant/qspec/protein_group_comparison.rb +22 -0
- data/lib/ms/quant/qspec.rb +112 -0
- data/lib/ms/spectrum.rb +154 -8
- data/lib/ms.rb +3 -10
- data/lib/msplat.rb +2 -0
- data/lib/obo/ims.rb +5 -0
- data/lib/obo/ms.rb +7 -0
- data/lib/obo/ontology.rb +41 -0
- data/lib/obo/unit.rb +5 -0
- data/lib/openany.rb +23 -0
- data/lib/write_file_or_string.rb +18 -0
- data/obo/ims.obo +562 -0
- data/obo/ms.obo +11677 -0
- data/obo/unit.obo +2563 -0
- data/spec/ms/cvlist_spec.rb +60 -0
- data/spec/ms/digester_spec.rb +351 -0
- data/spec/ms/fasta_spec.rb +100 -0
- data/spec/ms/ident/peptide/db_spec.rb +108 -0
- data/spec/ms/ident/pepxml/sample_enzyme_spec.rb +181 -0
- data/spec/ms/ident/pepxml/search_hit/modification_info_spec.rb +37 -0
- data/spec/ms/ident/pepxml_spec.rb +442 -0
- data/spec/ms/ident/protein_group_spec.rb +68 -0
- data/spec/ms/mass_spec.rb +8 -0
- data/spec/ms/mzml/index_list_spec.rb +122 -0
- data/spec/ms/mzml/plms1_spec.rb +62 -0
- data/spec/ms/mzml_spec.rb +50 -0
- data/spec/ms/plms1_spec.rb +38 -0
- data/spec/ms/quant/qspec_spec.rb +25 -0
- data/spec/msplat_spec.rb +24 -0
- data/spec/obo_spec.rb +25 -0
- data/spec/spec_helper.rb +25 -0
- data/spec/testfiles/ms/ident/peptide/db/uni_11_sp_tr.fasta +69 -0
- data/spec/testfiles/ms/ident/peptide/db/uni_11_sp_tr.msd_clvg2.min_aaseq4.yml +728 -0
- data/spec/testfiles/ms/mzml/j24z.idx_comp.3.mzML +271 -0
- data/spec/testfiles/ms/mzml/openms.noidx_nocomp.12.mzML +330 -0
- data/spec/testfiles/ms/quant/kill_extra_tabs.rb +13 -0
- data/spec/testfiles/ms/quant/max_quant_output.provenance.txt +15 -0
- data/spec/testfiles/ms/quant/max_quant_output.txt +199 -0
- data/spec/testfiles/ms/quant/pdcd5_final.killedextratabs.tsv +199 -0
- data/spec/testfiles/ms/quant/pdcd5_final.killedextratabs.tsv_qspecgp +199 -0
- data/spec/testfiles/ms/quant/pdcd5_final.killedextratabs.tsv_qspecgp.csv +199 -0
- data/spec/testfiles/ms/quant/pdcd5_final.txt +199 -0
- data/spec/testfiles/ms/quant/pdcd5_final.txt_qspecgp +0 -0
- data/spec/testfiles/ms/quant/pdcd5_lfq_qspec.CSV.csv +199 -0
- data/spec/testfiles/ms/quant/pdcd5_lfq_qspec.csv +199 -0
- data/spec/testfiles/ms/quant/pdcd5_lfq_qspec.oneprot.csv +199 -0
- data/spec/testfiles/ms/quant/pdcd5_lfq_qspec.oneprot.tsv +199 -0
- data/spec/testfiles/ms/quant/pdcd5_lfq_qspec.oneprot.tsv_qspecgp +199 -0
- data/spec/testfiles/ms/quant/pdcd5_lfq_qspec.oneprot.tsv_qspecgp.csv +199 -0
- data/spec/testfiles/ms/quant/pdcd5_lfq_qspec.txt +199 -0
- data/spec/testfiles/ms/quant/pdcd5_lfq_tabdel.txt +134 -0
- data/spec/testfiles/ms/quant/pdcd5_lfq_tabdel.txt_qspecgp +134 -0
- data/spec/testfiles/ms/quant/remove_rest_of_proteins.rb +13 -0
- data/spec/testfiles/ms/quant/unlog_transform.rb +13 -0
- data/spec/testfiles/plms1/output.key +0 -0
- metadata +157 -40
- data/README +0 -77
- data/changelog.txt +0 -196
- data/lib/ms/calc.rb +0 -32
- data/lib/ms/data/interleaved.rb +0 -60
- data/lib/ms/data/lazy_io.rb +0 -73
- data/lib/ms/data/lazy_string.rb +0 -15
- data/lib/ms/data/simple.rb +0 -59
- data/lib/ms/data/transposed.rb +0 -41
- data/lib/ms/data.rb +0 -57
- data/lib/ms/format/format_error.rb +0 -12
- data/lib/ms/support/binary_search.rb +0 -126
data/lib/ms/data/simple.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
module Ms
|
2
|
-
module Data
|
3
|
-
module_function
|
4
|
-
|
5
|
-
# Initializes a new simple data array.
|
6
|
-
def new_simple(unresolved_data)
|
7
|
-
Simple.new(unresolved_data)
|
8
|
-
end
|
9
|
-
|
10
|
-
# A Simple data array that lazily evaluates unresolved_data, and
|
11
|
-
# each member of unresolved_data using to_a:
|
12
|
-
#
|
13
|
-
# class LazyObject
|
14
|
-
# attr_reader :to_a
|
15
|
-
# def initialize(array)
|
16
|
-
# @to_a = array
|
17
|
-
# end
|
18
|
-
# end
|
19
|
-
#
|
20
|
-
# a = LazyObject.new([1,2,3])
|
21
|
-
# b = LazyObject.new([4,5,6])
|
22
|
-
# s = Ms::Data::Simple.new([a, b])
|
23
|
-
#
|
24
|
-
# s.unresolved_data # => [a, b]
|
25
|
-
# s.data # => []
|
26
|
-
# s[0] # => [1,2,3]
|
27
|
-
# s[1] # => [4,5,6]
|
28
|
-
# s.data # => [[1,2,3], [4,5,6]]
|
29
|
-
#
|
30
|
-
class Simple
|
31
|
-
# The underlying resolved data store.
|
32
|
-
attr_reader :data
|
33
|
-
|
34
|
-
# The underlying unresolved data store.
|
35
|
-
attr_reader :unresolved_data
|
36
|
-
|
37
|
-
def initialize(unresolved_data)
|
38
|
-
@data = []
|
39
|
-
@unresolved_data = unresolved_data
|
40
|
-
end
|
41
|
-
|
42
|
-
def [](index)
|
43
|
-
@data[index] ||= @unresolved_data.to_a[index].to_a
|
44
|
-
end
|
45
|
-
|
46
|
-
def resolve
|
47
|
-
0.upto(@unresolved_data.length - 1) do |index|
|
48
|
-
self[index]
|
49
|
-
end unless resolved?
|
50
|
-
|
51
|
-
self
|
52
|
-
end
|
53
|
-
|
54
|
-
def resolved?
|
55
|
-
@data.compact.length == @unresolved_data.length
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
data/lib/ms/data/transposed.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'ms/data/simple'
|
2
|
-
|
3
|
-
module Ms
|
4
|
-
module Data
|
5
|
-
module_function
|
6
|
-
|
7
|
-
# Initializes a new transposed data array.
|
8
|
-
def new_transposed(unresolved_data)
|
9
|
-
Transposed.new(unresolved_data)
|
10
|
-
end
|
11
|
-
|
12
|
-
# A Transposed data array lazily evaluates it's unresolved data as
|
13
|
-
# a transposed array. The unresolved data is evaluated
|
14
|
-
# into an array using to_a.
|
15
|
-
#
|
16
|
-
# t = Ms::Data::Transposed.new([[1,4],[2,5],[3,6]])
|
17
|
-
#
|
18
|
-
# t.unresolved_data # => [[1,4],[2,5],[3,6]]
|
19
|
-
# t.data # => []
|
20
|
-
# t[0] # => [1,2,3]
|
21
|
-
# t[1] # => [4,5,6]
|
22
|
-
# t.data # => [[1,2,3], [4,5,6]]
|
23
|
-
#
|
24
|
-
class Transposed < Simple
|
25
|
-
|
26
|
-
def [](index)
|
27
|
-
resolve.data[index]
|
28
|
-
end
|
29
|
-
|
30
|
-
def resolved?
|
31
|
-
!@data.empty?
|
32
|
-
end
|
33
|
-
|
34
|
-
def resolve
|
35
|
-
@data = @unresolved_data.to_a.transpose unless resolved?
|
36
|
-
self
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
data/lib/ms/data.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'ms/data/interleaved'
|
2
|
-
require 'ms/data/transposed'
|
3
|
-
|
4
|
-
module Ms
|
5
|
-
|
6
|
-
# The Data module contains a number of classes providing a standard way to
|
7
|
-
# resolve various data storage formats into a 'simple' data array.
|
8
|
-
#
|
9
|
-
# type format
|
10
|
-
# simple [[mzs,...], [intensities...]]
|
11
|
-
# transposed [[mz,intensity], [mz,intensity], ...]
|
12
|
-
# interleaved [mz,intensity,mz,intensity,...]
|
13
|
-
#
|
14
|
-
# For instance:
|
15
|
-
#
|
16
|
-
# s = Data.new([[1,2,3], [4,5,6]], :simple)
|
17
|
-
# s.resolve.data # => [[1,2,3], [4,5,6]]
|
18
|
-
#
|
19
|
-
# t = Data.new([[1,4],[2,5],[3,6]], :transposed)
|
20
|
-
# t.resolve.data # => [[1,2,3], [4,5,6]]
|
21
|
-
#
|
22
|
-
# i = Data.new([1,4,2,5,3,6], :interleaved)
|
23
|
-
# i.resolve.data # => [[1,2,3], [4,5,6]]
|
24
|
-
#
|
25
|
-
# Data is always resolved by calling to_a on the unresolved data object
|
26
|
-
# and then rearranging as needed (in the case of simple data, to_a is
|
27
|
-
# also called on each member of the unresolved data array). This lazy
|
28
|
-
# resolution allows the use of non-array unresolved_data objects such
|
29
|
-
# as Data::LazyString:
|
30
|
-
#
|
31
|
-
# str = [[1,4,2,5,3,6].pack("g*")].pack("m")
|
32
|
-
# unresolved_data = Data::LazyString.new(str)
|
33
|
-
#
|
34
|
-
# i = Data.new(unresolved_data, :interleaved)
|
35
|
-
# i.resolve.data # => [[1,2,3], [4,5,6]]
|
36
|
-
#
|
37
|
-
# Obviously the big advantage of lazy data resolution is that Data objects
|
38
|
-
# may be instantiated cheaply while expensive operations like unpacking and
|
39
|
-
# rearrangement may be put off or not executed at all.
|
40
|
-
#
|
41
|
-
module Data
|
42
|
-
module_function
|
43
|
-
|
44
|
-
# Initializes a new data array of the specified type by forwarding
|
45
|
-
# data to the "new_<type>" method.
|
46
|
-
#
|
47
|
-
# simple = Ms::Data.new([[1,2,3], [4,5,6]], :simple)
|
48
|
-
# simple.class # => Ms::Data::Simple
|
49
|
-
#
|
50
|
-
# interleaved = Ms::Data.new([1,4,2,5,3,6], :interleaved)
|
51
|
-
# interleaved.class # => Ms::Data::Interleaved
|
52
|
-
#
|
53
|
-
def new(data, type=:simple)
|
54
|
-
send("new_#{type}", data)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,126 +0,0 @@
|
|
1
|
-
module Ms
|
2
|
-
module Support
|
3
|
-
|
4
|
-
# A binary search library adapted from: http://0xcc.net/ruby-bsearch/
|
5
|
-
# ---
|
6
|
-
#
|
7
|
-
# Ruby/Bsearch - a binary search library for Ruby.
|
8
|
-
#
|
9
|
-
# Copyright (C) 2001 Satoru Takabayashi <satoru@namazu.org>
|
10
|
-
# All rights reserved.
|
11
|
-
# This is free software with ABSOLUTELY NO WARRANTY.
|
12
|
-
#
|
13
|
-
# You can redistribute it and/or modify it under the terms of
|
14
|
-
# the Ruby's licence.
|
15
|
-
#
|
16
|
-
# Example:
|
17
|
-
#
|
18
|
-
# % irb -r ./bsearch.rb
|
19
|
-
# >> %w(a b c c c d e f).bsearch_first {|x| x <=> "c"}
|
20
|
-
# => 2
|
21
|
-
# >> %w(a b c c c d e f).bsearch_last {|x| x <=> "c"}
|
22
|
-
# => 4
|
23
|
-
# >> %w(a b c e f).bsearch_first {|x| x <=> "c"}
|
24
|
-
# => 2
|
25
|
-
# >> %w(a b e f).bsearch_first {|x| x <=> "c"}
|
26
|
-
# => nil
|
27
|
-
# >> %w(a b e f).bsearch_last {|x| x <=> "c"}
|
28
|
-
# => nil
|
29
|
-
# >> %w(a b e f).bsearch_lower_boundary {|x| x <=> "c"}
|
30
|
-
# => 2
|
31
|
-
# >> %w(a b e f).bsearch_upper_boundary {|x| x <=> "c"}
|
32
|
-
# => 2
|
33
|
-
# >> %w(a b c c c d e f).bsearch_range {|x| x <=> "c"}
|
34
|
-
# => 2...5
|
35
|
-
# >> %w(a b c d e f).bsearch_range {|x| x <=> "c"}
|
36
|
-
# => 2...3
|
37
|
-
# >> %w(a b d e f).bsearch_range {|x| x <=> "c"}
|
38
|
-
# => 2...2
|
39
|
-
#
|
40
|
-
# The binary search algorithm is extracted from Jon Bentley's
|
41
|
-
# Programming Pearls 2nd ed. p.93
|
42
|
-
#
|
43
|
-
module BinarySearch
|
44
|
-
VERSION = '1.5'
|
45
|
-
|
46
|
-
module_function
|
47
|
-
|
48
|
-
#
|
49
|
-
# Return the lower boundary. (inside)
|
50
|
-
#
|
51
|
-
def search_lower_boundary(array, range=nil, &block)
|
52
|
-
range = 0 ... array.length if range == nil
|
53
|
-
|
54
|
-
lower = range.first() -1
|
55
|
-
upper = if range.exclude_end? then range.last else range.last + 1 end
|
56
|
-
while lower + 1 != upper
|
57
|
-
mid = ((lower + upper) / 2).to_i # for working with mathn.rb (Rational)
|
58
|
-
if yield(array[mid]) < 0
|
59
|
-
lower = mid
|
60
|
-
else
|
61
|
-
upper = mid
|
62
|
-
end
|
63
|
-
end
|
64
|
-
return upper
|
65
|
-
end
|
66
|
-
|
67
|
-
#
|
68
|
-
# This method searches the FIRST occurrence which satisfies a
|
69
|
-
# condition given by a block in binary fashion and return the
|
70
|
-
# index of the first occurrence. Return nil if not found.
|
71
|
-
#
|
72
|
-
def search_first(array, range=nil, &block)
|
73
|
-
boundary = search_lower_boundary(array, range, &block)
|
74
|
-
if boundary >= array.length || yield(array[boundary]) != 0
|
75
|
-
return nil
|
76
|
-
else
|
77
|
-
return boundary
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
#
|
82
|
-
# Return the upper boundary. (outside)
|
83
|
-
#
|
84
|
-
def search_upper_boundary(array, range=nil, &block)
|
85
|
-
range = 0 ... array.length if range == nil
|
86
|
-
|
87
|
-
lower = range.first() -1
|
88
|
-
upper = if range.exclude_end? then range.last else range.last + 1 end
|
89
|
-
while lower + 1 != upper
|
90
|
-
mid = ((lower + upper) / 2).to_i # for working with mathn.rb (Rational)
|
91
|
-
if yield(array[mid]) <= 0
|
92
|
-
lower = mid
|
93
|
-
else
|
94
|
-
upper = mid
|
95
|
-
end
|
96
|
-
end
|
97
|
-
return lower + 1 # outside of the matching range.
|
98
|
-
end
|
99
|
-
|
100
|
-
#
|
101
|
-
# This method searches the LAST occurrence which satisfies a
|
102
|
-
# condition given by a block in binary fashion and return the
|
103
|
-
# index of the last occurrence. Return nil if not found.
|
104
|
-
#
|
105
|
-
def search_last(array, range=nil, &block)
|
106
|
-
# `- 1' for canceling `lower + 1' in bsearch_upper_boundary.
|
107
|
-
boundary = search_upper_boundary(array, range, &block) - 1
|
108
|
-
|
109
|
-
if (boundary <= -1 || yield(array[boundary]) != 0)
|
110
|
-
return nil
|
111
|
-
else
|
112
|
-
return boundary
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
#
|
117
|
-
# Return the search result as a Range object.
|
118
|
-
#
|
119
|
-
def search_range(array, range=nil, &block)
|
120
|
-
lower = search_lower_boundary(array, range, &block)
|
121
|
-
upper = search_upper_boundary(array, range, &block)
|
122
|
-
return lower ... upper
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|