protk 1.4.4.beta2 → 1.4.4
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.
- checksums.yaml +4 -4
- data/README.md +7 -1
- data/bin/maker_to_proteindb.rb +148 -0
- data/bin/msgfplus_search.rb +6 -4
- data/bin/protein_prophet.rb +13 -0
- data/bin/protxml_to_gff.rb +11 -2
- data/bin/sixframe.rb +6 -1
- data/bin/tandem_search.rb +5 -3
- data/lib/protk/constants.rb +12 -0
- data/lib/protk/data/tandem_isb_kscore_defaults.xml +0 -0
- data/lib/protk/data/tandem_isb_native_defaults.xml +0 -0
- data/lib/protk/gff_to_proteindb_tool.rb +56 -0
- data/lib/protk/peptide.rb +141 -19
- data/lib/protk/peptide_mod.rb +42 -0
- data/lib/protk/setup_rakefile.rake +13 -2
- metadata +43 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b59cd3751adc7a13c6dce81a90c2a4d739e1efe
|
4
|
+
data.tar.gz: 3ac1aba71a95b729101a6c64699cebaf1929fe34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ab966131e53b6e379ba1df7717cc71e0a7ead11b603d16d474f4fdce487623546ca472c8624421d62af1e238f7e2917f8ed1e66c52a82d0fc4798cd7b1fdf6b
|
7
|
+
data.tar.gz: 05b98a731eb99063f17942fed42dce0e450488e61b11452b918269bd27788a300d7d2ebf4c2a67930c14bc5291dfab7bf8b13b992300356e96b0d274e68c6d96
|
data/README.md
CHANGED
@@ -16,10 +16,16 @@ Protk is a suite of tools for proteomics. It aims to present a simple and consis
|
|
16
16
|
|
17
17
|
Protk is a ruby gem and requires ruby 2.0 or higher with support for libxml2. To avoid installation problems we recommend using [rvm](https://rvm.io) to install ruby.
|
18
18
|
|
19
|
-
```
|
19
|
+
```shell
|
20
20
|
gem install protk
|
21
21
|
```
|
22
22
|
|
23
|
+
On macOS you may need to do
|
24
|
+
|
25
|
+
```bash
|
26
|
+
brew install coreutils
|
27
|
+
```
|
28
|
+
|
23
29
|
## Ruby Compatibility
|
24
30
|
|
25
31
|
In general Protk requires ruby with a version >=2.0.
|
@@ -0,0 +1,148 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file is part of protk
|
4
|
+
# Created by Ira Cooke 4/9/2013
|
5
|
+
#
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'protk/constants'
|
9
|
+
require 'protk/tool'
|
10
|
+
require 'protk/gff_to_proteindb_tool'
|
11
|
+
require 'bio'
|
12
|
+
|
13
|
+
tool=GffToProteinDBTool.new([:explicit_output,:debug,:add_transcript_info])
|
14
|
+
tool.option_parser.banner = "Create a protein database from Maker gene prediction \
|
15
|
+
output that is suitable for later processing by proteogenomics tools.\
|
16
|
+
\n\nUsage: maker_to_proteindb.rb [options] maker.gff3"
|
17
|
+
|
18
|
+
tool.add_value_option(:proteins_file,nil,['-p', '--prot-fasta proteins', 'A fasta file \
|
19
|
+
containing protein sequences for each transcript'])
|
20
|
+
|
21
|
+
# tool.add_value_option(:explicit_output,nil,['-o', '--output out', 'An explicitly named output file. \
|
22
|
+
# The default is to write to standard output'])
|
23
|
+
|
24
|
+
exit unless tool.check_options(true)
|
25
|
+
|
26
|
+
inname=ARGV.shift
|
27
|
+
|
28
|
+
$protk = Constants.instance
|
29
|
+
log_level = tool.debug ? :debug : :fatal
|
30
|
+
$protk.info_level= log_level
|
31
|
+
|
32
|
+
tool.print_progress=true
|
33
|
+
|
34
|
+
outfile=nil
|
35
|
+
if ( tool.explicit_output != nil)
|
36
|
+
outfile=File.open(tool.explicit_output,'w')
|
37
|
+
else
|
38
|
+
outfile=$stdout
|
39
|
+
tool.print_progress=false
|
40
|
+
end
|
41
|
+
|
42
|
+
gene_lines=[]
|
43
|
+
|
44
|
+
def get_protein_sequence(transcript_id,proteins_file)
|
45
|
+
%x[samtools faidx #{proteins_file} #{transcript_id} | tail -n +2]
|
46
|
+
end
|
47
|
+
|
48
|
+
def cds_to_header_text(coding_sequence,transcript_id)
|
49
|
+
# require 'debugger';debugger
|
50
|
+
imatch=coding_sequence.match(/CDS\t(\d+)\t(\d+).*?([-\+]{1}.*?Parent=#{transcript_id})$/)
|
51
|
+
if imatch==nil
|
52
|
+
return ""
|
53
|
+
end
|
54
|
+
istart=imatch[1]
|
55
|
+
iend=imatch[2]
|
56
|
+
"#{istart}|#{iend}"
|
57
|
+
end
|
58
|
+
|
59
|
+
def sequence_fasta_header(tool,transcript_line,coding_sequences)
|
60
|
+
|
61
|
+
tmatch=transcript_line.match(/mRNA\t(\d+)\t(\d+).*?([-\+]{1}).*?ID=(.*?);/)
|
62
|
+
# require 'debugger'; debugger
|
63
|
+
tstart,tend,tstrand = transcript_line.match(/mRNA\t(\d+)\t(\d+).*?([-\+]{1})/).captures
|
64
|
+
|
65
|
+
# tstart=tmatch[1]
|
66
|
+
# tend=tmatch[2]
|
67
|
+
# tsidfield = transcript_line.split("\t")[8]
|
68
|
+
|
69
|
+
tid = transcript_line.match(/ID=([^;]+)/).captures[0]
|
70
|
+
# if tsidfield =~ /ID=/
|
71
|
+
# tid = tsidfield.match(/ID=(.*?);/).captures[0]
|
72
|
+
# else
|
73
|
+
# tid = tsidfield.gsub(" ","_").gsub(";","_")
|
74
|
+
# end
|
75
|
+
|
76
|
+
# require 'byebug';byebug
|
77
|
+
|
78
|
+
tstrandfr="fwd"
|
79
|
+
tstrandfr = "rev" if tstrand=="-"
|
80
|
+
|
81
|
+
scaffold=transcript_line.split("\t")[0]
|
82
|
+
|
83
|
+
# tid=tmatch[4]
|
84
|
+
header=">lcl|#{scaffold}_#{tstrandfr}_#{tid} #{tstart}|#{tend}"
|
85
|
+
if tool.add_transcript_info
|
86
|
+
coding_sequences.each { |coding_sequence| header << " #{cds_to_header_text(coding_sequence,tid)}" }
|
87
|
+
end
|
88
|
+
header
|
89
|
+
end
|
90
|
+
|
91
|
+
def protein_sequence(protein_lines)
|
92
|
+
seq=""
|
93
|
+
protein_lines.each_with_index do |line, i|
|
94
|
+
seq << line.match(/(\w+)\]?$/)[1]
|
95
|
+
end
|
96
|
+
|
97
|
+
seq
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
def parse_gene(tool,gene_lines)
|
102
|
+
|
103
|
+
# require 'byebug';byebug
|
104
|
+
geneid=gene_lines[0].match(/ID=([^;]+)/).captures[0]
|
105
|
+
|
106
|
+
scaffold_id = gene_lines[1].split("\t")[0]
|
107
|
+
|
108
|
+
transcripts=tool.get_lines_matching(/mRNA/,gene_lines)
|
109
|
+
|
110
|
+
coding_sequences=tool.get_lines_matching(/CDS/,gene_lines)
|
111
|
+
|
112
|
+
fasta_string=""
|
113
|
+
|
114
|
+
transcripts.each_with_index do |ts, i|
|
115
|
+
|
116
|
+
prot_id=ts.match(/ID=([^;]+)/).captures[0]
|
117
|
+
|
118
|
+
begin
|
119
|
+
fh=sequence_fasta_header(tool,ts,coding_sequences)
|
120
|
+
fasta_string << "#{fh}\n"
|
121
|
+
ps=get_protein_sequence(prot_id,tool.proteins_file)
|
122
|
+
fasta_string << "#{ps}"
|
123
|
+
rescue => e
|
124
|
+
$protk.log "Unable to retrieve protein for #{prot_id} #{e}" , :debug
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
fasta_string
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
File.open(inname).each_with_index do |line, line_i|
|
134
|
+
line.chomp!
|
135
|
+
|
136
|
+
if tool.start_new_gene(line)
|
137
|
+
if gene_lines.length > 0
|
138
|
+
gene_string=parse_gene(tool,gene_lines)
|
139
|
+
outfile.write gene_string
|
140
|
+
gene_lines=[]
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
if line =~ /maker/
|
145
|
+
gene_lines << line
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
data/bin/msgfplus_search.rb
CHANGED
@@ -93,11 +93,13 @@ if for_galaxy || Pathname.new(database_path).extname.to_s.downcase != ".fasta"
|
|
93
93
|
# database_path="#{database_path}.fasta"
|
94
94
|
end
|
95
95
|
|
96
|
+
db_noext = "#{Pathname.new(database_path).sub_ext('')}"
|
97
|
+
|
96
98
|
# Database must be indexed
|
97
|
-
unless FileTest.exists?("#{
|
98
|
-
# dbdir = Pathname.new(database_path).dirname.to_s
|
99
|
+
unless FileTest.exists?("#{db_noext}.canno")
|
99
100
|
tdavalue=search_tool.decoy_search ? 1 : 0;
|
100
|
-
|
101
|
+
genv.log "Database index not found at #{db_noext}. Building new index" , :info
|
102
|
+
make_msgfdb_cmd << "java -Xmx#{search_tool.java_mem} -cp #{genv.msgfplusjar} edu.ucsd.msjava.msdbsearch.BuildSA -d #{database_path} -tda #{tdavalue}; "
|
101
103
|
end
|
102
104
|
|
103
105
|
|
@@ -262,4 +264,4 @@ ARGV.each do |filename|
|
|
262
264
|
#
|
263
265
|
make_msgfdb_cmd=""
|
264
266
|
|
265
|
-
end
|
267
|
+
end
|
data/bin/protein_prophet.rb
CHANGED
@@ -54,6 +54,19 @@ else
|
|
54
54
|
output_file=Tool.default_output_path(inputs,".prot.xml",prophet_tool.output_prefix,@output_suffix)
|
55
55
|
end
|
56
56
|
|
57
|
+
genv.log("Checking input files ...",:info)
|
58
|
+
inputs.each {|file_name|
|
59
|
+
|
60
|
+
throw "Missing input file #{file_name}" unless File.exist?(file_name)
|
61
|
+
|
62
|
+
file_pepxml = PepXML.new(file_name)
|
63
|
+
|
64
|
+
db_path=file_pepxml.extract_db()
|
65
|
+
throw "Unable to find database #{db_path} used for searching. Fix paths in input files first" unless File.exist?(db_path)
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
|
57
70
|
if ( !Pathname.new(output_file).exist? || prophet_tool.over_write )
|
58
71
|
|
59
72
|
cmd="ProteinProphet "
|
data/bin/protxml_to_gff.rb
CHANGED
@@ -38,7 +38,7 @@ end
|
|
38
38
|
|
39
39
|
def protein_id_to_gffid(protein_id,gff_idregex)
|
40
40
|
return protein_id if gff_idregex.nil?
|
41
|
-
|
41
|
+
# require 'byebug'; byebug
|
42
42
|
m = protein_id.match(/#{gff_idregex}/)
|
43
43
|
if m
|
44
44
|
return m.captures[0]
|
@@ -77,7 +77,9 @@ def prepare_fasta(database_path,type)
|
|
77
77
|
end
|
78
78
|
|
79
79
|
|
80
|
-
db_indexfilename = type=='prot' ? "#{db_filename}.pin" : "#{db_filename}.nhr"
|
80
|
+
db_indexfilename = type=='prot' ? "#{db_filename}.00.pin" : "#{db_filename}.nhr"
|
81
|
+
|
82
|
+
# require 'byebug';byebug
|
81
83
|
|
82
84
|
if File.exist?(db_indexfilename)
|
83
85
|
orf_lookup = FastaDB.new(db_filename)
|
@@ -101,6 +103,7 @@ tool.add_value_option(:protein_probability_threshold,0.99,['--prot-threshold pro
|
|
101
103
|
tool.add_value_option(:gff_idregex,nil,['--gff-idregex pre','Regex with capture group for parsing gff ids from protein ids'])
|
102
104
|
tool.add_value_option(:genome_idregex,nil,['--genome-idregex pre','Regex with capture group for parsing genomic ids from protein ids'])
|
103
105
|
tool.add_value_option(:ignore_regex,nil,['--ignore-regex pre','Regex to match protein ids that we should ignore completely'])
|
106
|
+
tool.add_value_option(:include_mods,false,['--include-mods','Output gff entries for peptide modification sites'])
|
104
107
|
|
105
108
|
exit unless tool.check_options(true,[:database,:coords_file])
|
106
109
|
|
@@ -170,6 +173,12 @@ proteins.each do |protein|
|
|
170
173
|
peptide_entries.each do |peptide_entry|
|
171
174
|
output_fh.write peptide_entry.to_s
|
172
175
|
end
|
176
|
+
if tool.include_mods
|
177
|
+
mod_entries = peptide.mods_to_gff3_records(protein_entry.aaseq,gff_parent_entry,gff_cds_entries)
|
178
|
+
mod_entries.each do |mod_entry|
|
179
|
+
output_fh.write mod_entry.to_s
|
180
|
+
end
|
181
|
+
end
|
173
182
|
end
|
174
183
|
end
|
175
184
|
|
data/bin/sixframe.rb
CHANGED
@@ -64,7 +64,12 @@ file.each do |entry|
|
|
64
64
|
length = entry.naseq.length
|
65
65
|
|
66
66
|
(1...7).each do |frame|
|
67
|
-
|
67
|
+
begin
|
68
|
+
translated_seq= entry.naseq.translate(frame)
|
69
|
+
rescue => exception
|
70
|
+
puts "#{entry}"
|
71
|
+
exit 1
|
72
|
+
end
|
68
73
|
orfs=translated_seq.split("*")
|
69
74
|
orf_index = 0
|
70
75
|
position = ((frame - 1) % 3) + 1
|
data/bin/tandem_search.rb
CHANGED
@@ -22,8 +22,10 @@ exit unless search_tool.check_options(true)
|
|
22
22
|
|
23
23
|
# Our environment should be setup so that tandem or tandem.exe is on the path
|
24
24
|
#
|
25
|
-
tandem_bin=%x[which tandem].chomp
|
26
|
-
tandem_bin=%x[which tandem.exe].chomp unless tandem_bin && tandem_bin.length>0
|
25
|
+
# tandem_bin=%x[which tandem].chomp
|
26
|
+
# tandem_bin=%x[which tandem.exe].chomp unless tandem_bin && tandem_bin.length>0
|
27
|
+
|
28
|
+
# tandem_bin
|
27
29
|
|
28
30
|
@output_suffix="_tandem"
|
29
31
|
|
@@ -70,7 +72,7 @@ ARGV.each do |filename|
|
|
70
72
|
|
71
73
|
# The basic command
|
72
74
|
#
|
73
|
-
cmd= "#{tandem_bin} #{params_path}"
|
75
|
+
cmd= "#{genv.tandem_bin} #{params_path}"
|
74
76
|
|
75
77
|
# Add a cleanup command unless the user wants to keep params files
|
76
78
|
#
|
data/lib/protk/constants.rb
CHANGED
@@ -63,6 +63,18 @@ class Constants
|
|
63
63
|
"#{@protk_dir}/tools/msgfplus"
|
64
64
|
end
|
65
65
|
|
66
|
+
def get_path_for_executable(exec_name_list)
|
67
|
+
exec_name_list.each do |exec_name|
|
68
|
+
exec_path=%x[which #{exec_name}].chomp
|
69
|
+
return exec_path unless !exec_path || exec_path.length==0
|
70
|
+
end
|
71
|
+
throw "Unable to locate #{exec_name_list}"
|
72
|
+
end
|
73
|
+
|
74
|
+
def tandem_bin
|
75
|
+
get_path_for_executable ["tandem","tandem.exe"]
|
76
|
+
end
|
77
|
+
|
66
78
|
def msgfplusjar
|
67
79
|
msgfplus_path=%x[which MSGFPlus.jar]
|
68
80
|
msgfplus_path.chomp
|
File without changes
|
File without changes
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#
|
2
|
+
# This file is part of protk
|
3
|
+
# Created by Ira Cooke 9/3/2017
|
4
|
+
#
|
5
|
+
# Provides common functionality used by tools that convert gff to a protein database
|
6
|
+
#
|
7
|
+
# These tools read a gff and then write out protein entries in the following format
|
8
|
+
#
|
9
|
+
# >lcl|<scaffold_id>_<orientation>_<transcript_id> gene_start|gene_end cds1_start|cds1_end cds2_start|cds2_end ...
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'optparse'
|
13
|
+
require 'pathname'
|
14
|
+
require 'protk/tool'
|
15
|
+
|
16
|
+
class GffToProteinDBTool < Tool
|
17
|
+
|
18
|
+
attr_accessor :print_progress
|
19
|
+
|
20
|
+
# Initializes commandline options common to all such tools.
|
21
|
+
# Individual search tools can add their own options, but should use Capital letters to avoid conflicts
|
22
|
+
#
|
23
|
+
def initialize(option_support=[])
|
24
|
+
super(option_support)
|
25
|
+
|
26
|
+
if ( option_support.include? :add_transcript_info )
|
27
|
+
add_boolean_option(:add_transcript_info,false,['--info','Include CDS Coordinates'])
|
28
|
+
end
|
29
|
+
|
30
|
+
@option_parser.summary_width=40
|
31
|
+
|
32
|
+
@capturing_gene=false
|
33
|
+
@current_gene=nil
|
34
|
+
end
|
35
|
+
|
36
|
+
def start_new_gene(line)
|
37
|
+
if (line =~ /maker\sgene/)
|
38
|
+
new_gene = line.match(/ID=([^;]+)/).captures[0]
|
39
|
+
if new_gene!=@current_gene
|
40
|
+
@current_gene=new_gene
|
41
|
+
return true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def get_lines_matching(pattern,gene_lines)
|
47
|
+
match_lines=[]
|
48
|
+
gene_lines.each do |line|
|
49
|
+
if line =~ pattern
|
50
|
+
match_lines << line
|
51
|
+
end
|
52
|
+
end
|
53
|
+
match_lines
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
data/lib/protk/peptide.rb
CHANGED
@@ -3,12 +3,15 @@ require 'bio'
|
|
3
3
|
require 'protk/bio_gff3_extensions'
|
4
4
|
require 'protk/mzidentml_doc'
|
5
5
|
require 'protk/error'
|
6
|
+
require 'protk/peptide_mod'
|
7
|
+
# require 'protk/indistinguishable_peptide'
|
6
8
|
|
7
9
|
include LibXML
|
8
10
|
|
9
11
|
class PeptideNotInProteinError < ProtkError
|
10
12
|
end
|
11
13
|
|
14
|
+
|
12
15
|
class Peptide
|
13
16
|
|
14
17
|
# Stripped sequence (no modifications)
|
@@ -17,6 +20,9 @@ class Peptide
|
|
17
20
|
attr_accessor :charge
|
18
21
|
attr_accessor :probability
|
19
22
|
attr_accessor :theoretical_neutral_mass
|
23
|
+
attr_accessor :modifications
|
24
|
+
attr_accessor :modified_sequence
|
25
|
+
attr_accessor :indistinguishable_peptides
|
20
26
|
|
21
27
|
def as_protxml
|
22
28
|
node = XML::Node.new('peptide')
|
@@ -33,6 +39,27 @@ class Peptide
|
|
33
39
|
pep.sequence=xmlnode['peptide_sequence']
|
34
40
|
pep.probability=xmlnode['nsp_adjusted_probability'].to_f
|
35
41
|
pep.charge=xmlnode['charge'].to_i
|
42
|
+
|
43
|
+
# This deal with the case where mods are on the primary peptide
|
44
|
+
#
|
45
|
+
mod_info_node = xmlnode.find('protxml:modification_info','protxml:http://regis-web.systemsbiology.net/protXML')
|
46
|
+
|
47
|
+
# The pepXML spec says there can be multiple modification_info's but in practice there never is.
|
48
|
+
# We assume either 1 or 0
|
49
|
+
if ( mod_info_node.length > 0 )
|
50
|
+
throw "Encountered multiple modification_info nodes for a peptide" if mod_info_node.length > 1
|
51
|
+
pep.modified_sequence = mod_info_node[0]['modified_peptide']
|
52
|
+
mod_nodes = mod_info_node[0].find('protxml:mod_aminoacid_mass','protxml:http://regis-web.systemsbiology.net/protXML')
|
53
|
+
# require 'byebug';byebug
|
54
|
+
pep.modifications = mod_nodes.collect { |e| PeptideMod.from_protxml(e) }
|
55
|
+
end
|
56
|
+
|
57
|
+
# This deals with indistinguishable peptides
|
58
|
+
#
|
59
|
+
ips = xmlnode.find('protxml:indistinguishable_peptide','protxml:http://regis-web.systemsbiology.net/protXML')
|
60
|
+
# require 'byebug';byebug
|
61
|
+
pep.indistinguishable_peptides = ips.collect { |e| IndistinguishablePeptide.from_protxml(e) }
|
62
|
+
|
36
63
|
pep
|
37
64
|
end
|
38
65
|
|
@@ -55,17 +82,23 @@ class Peptide
|
|
55
82
|
pep.charge = best_psm.attributes['chargeState'].to_i
|
56
83
|
pep.protein_name = mzid_doc.get_dbsequence(xmlnode.parent,xmlnode.parent.attributes['dBSequence_ref']).attributes['accession']
|
57
84
|
|
58
|
-
# pep.charge = MzIdentMLDoc.get_charge_for_psm(best_psm)
|
59
85
|
|
60
86
|
pep
|
61
87
|
end
|
62
88
|
|
63
89
|
def from_sequence(seq,charge=nil)
|
64
90
|
pep=new()
|
65
|
-
|
91
|
+
|
92
|
+
pep.modifications = pep.modifications_from_sequence(seq)
|
93
|
+
pep.modified_sequence = seq
|
94
|
+
|
95
|
+
seq = seq.sub(/^n\[[0-9]+?\]/,"")
|
96
|
+
pep.sequence = seq.gsub(/[0-9\.\[\]]/,"")
|
66
97
|
pep.charge=charge
|
67
98
|
pep
|
68
99
|
end
|
100
|
+
|
101
|
+
|
69
102
|
private :new
|
70
103
|
end
|
71
104
|
|
@@ -73,6 +106,26 @@ class Peptide
|
|
73
106
|
|
74
107
|
end
|
75
108
|
|
109
|
+
def modifications_from_sequence(seq)
|
110
|
+
|
111
|
+
seq = seq.sub(/^n\[[0-9]+?\]/,"")
|
112
|
+
offset = 0
|
113
|
+
mods = seq.enum_for(:scan, /([A-Z])\[([0-9\.]+)\]/).map {
|
114
|
+
pm = PeptideMod.from_data(Regexp.last_match.begin(0)+1-offset,Regexp.last_match.captures[0],Regexp.last_match.captures[1].to_f)
|
115
|
+
offset += Regexp.last_match.captures[1].length+2
|
116
|
+
pm
|
117
|
+
}
|
118
|
+
|
119
|
+
# if ( seq == "N[115]VMN[115]LTPAETQ[129]QLHAALESQLSPGELAK" )
|
120
|
+
# require 'byebug';byebug
|
121
|
+
# puts "hi"
|
122
|
+
# end
|
123
|
+
|
124
|
+
|
125
|
+
mods
|
126
|
+
end
|
127
|
+
|
128
|
+
|
76
129
|
# Expects prot_seq not to contain explicit stop codon (ie * at end)
|
77
130
|
# AA coords are 0-based unlike genomic coords which are 1 based
|
78
131
|
#
|
@@ -112,23 +165,61 @@ class Peptide
|
|
112
165
|
throw "Expected GFF3 Record but got #{parent_record.class}" unless parent_record.class==Bio::GFF::GFF3::Record
|
113
166
|
throw "Expected Array but got #{cds_records.class}" unless cds_records.class==Array
|
114
167
|
|
115
|
-
on_reverse_strand = (parent_record.strand=="-") ? true : false
|
116
168
|
aa_coords = coords_in_protein(prot_seq,false) # Always use forward protein coordinates
|
117
169
|
|
170
|
+
gff_records_for_coords_in_protein(aa_coords,self.sequence.length,parent_record,cds_records)
|
171
|
+
end
|
172
|
+
|
173
|
+
def mods_to_gff3_records(prot_seq,parent_record,cds_records)
|
174
|
+
|
175
|
+
throw "Expected GFF3 Record but got #{parent_record.class}" unless parent_record.class==Bio::GFF::GFF3::Record
|
176
|
+
throw "Expected Array but got #{cds_records.class}" unless cds_records.class==Array
|
177
|
+
|
178
|
+
pep_aa_coords = coords_in_protein(prot_seq,false)
|
179
|
+
|
180
|
+
mod_records = []
|
181
|
+
|
182
|
+
unless ( self.modifications.nil? )
|
183
|
+
self.modifications.each { |mod|
|
184
|
+
prot_position = mod.position+pep_aa_coords[:start]
|
185
|
+
mod_aa_coords = {:start => prot_position, :end => prot_position+1}
|
186
|
+
mod_records << gff_records_for_coords_in_protein(mod_aa_coords,1,parent_record,cds_records, {:type => "modified_amino_acid_feature", :mod => mod, :modified_sequence => self.modified_sequence})
|
187
|
+
}
|
188
|
+
end
|
189
|
+
|
190
|
+
unless ( self.indistinguishable_peptides.nil? )
|
191
|
+
self.indistinguishable_peptides.each { |ip|
|
192
|
+
unless ( ip.modifications.nil? )
|
193
|
+
ip.modifications.each { |mod|
|
194
|
+
prot_position = mod.position+pep_aa_coords[:start]-1
|
195
|
+
mod_aa_coords = {:start => prot_position, :end => prot_position+1}
|
196
|
+
mod_records << gff_records_for_coords_in_protein(mod_aa_coords,1,parent_record,cds_records, {:type => "modified_amino_acid_feature", :mod => mod, :modified_sequence => ip.modified_sequence})
|
197
|
+
}
|
198
|
+
end
|
199
|
+
}
|
200
|
+
end
|
201
|
+
|
202
|
+
mod_records.flatten
|
203
|
+
|
204
|
+
end
|
205
|
+
|
206
|
+
|
207
|
+
def gff_records_for_coords_in_protein(aa_coords,seqlen,parent_record,cds_records,record_info ={:type => "polypeptide"})
|
208
|
+
on_reverse_strand = (parent_record.strand=="-") ? true : false
|
118
209
|
ordered_cds_records = on_reverse_strand ? cds_records.sort.reverse : cds_records.sort
|
119
210
|
|
120
211
|
# Initial position is the number of NA's from the start of translation
|
121
212
|
#
|
122
|
-
pep_nalen =
|
213
|
+
pep_nalen = seqlen*3
|
123
214
|
|
124
215
|
i = 0; #Current protein position (in nucleic acids)
|
125
216
|
|
126
217
|
pep_start_i = aa_coords[:start]*3
|
127
|
-
pep_end_i = pep_start_i+
|
128
|
-
|
218
|
+
pep_end_i = pep_start_i+seqlen*3
|
219
|
+
gff_records=[]
|
129
220
|
ordered_cds_records.each do |cds_record|
|
130
221
|
|
131
|
-
|
222
|
+
gff_record = nil
|
132
223
|
fragment_len = 0
|
133
224
|
if on_reverse_strand
|
134
225
|
|
@@ -139,16 +230,16 @@ class Peptide
|
|
139
230
|
fragment_end = cds_record.end
|
140
231
|
fragment_len = [cds_record.length,pep_end_i-i].min
|
141
232
|
fragment_start = fragment_end-fragment_len+1
|
142
|
-
|
233
|
+
gff_record = gff_record_for_peptide_fragment(fragment_start,fragment_end,cds_record,record_info)
|
143
234
|
elsif before_len>0
|
144
235
|
fragment_end = cds_record.end - before_len
|
145
236
|
fragment_len = [cds_record.length-before_len,pep_end_i-i-before_len].min
|
146
237
|
fragment_start = fragment_end - fragment_len + 1
|
147
238
|
if fragment_len>0
|
148
|
-
|
239
|
+
gff_record = gff_record_for_peptide_fragment(fragment_start,fragment_end,cds_record,record_info)
|
149
240
|
end
|
150
241
|
else
|
151
|
-
|
242
|
+
gff_record=nil
|
152
243
|
end
|
153
244
|
else
|
154
245
|
in_peptide = (i<pep_end_i) && (i>=pep_start_i)
|
@@ -157,33 +248,64 @@ class Peptide
|
|
157
248
|
fragment_start = cds_record.start
|
158
249
|
fragment_len = [cds_record.length,pep_end_i-i].min
|
159
250
|
fragment_end = fragment_start+fragment_len-1
|
160
|
-
|
251
|
+
gff_record = gff_record_for_peptide_fragment(fragment_start,fragment_end,cds_record,record_info)
|
161
252
|
elsif before_len>0
|
162
253
|
fragment_start = cds_record.start + before_len
|
163
254
|
fragment_len = [cds_record.length-before_len,pep_end_i-i-before_len].min
|
164
255
|
fragment_end = fragment_start + fragment_len-1
|
165
256
|
if fragment_len>0
|
166
|
-
|
257
|
+
gff_record = gff_record_for_peptide_fragment(fragment_start,fragment_end,cds_record,record_info)
|
167
258
|
end
|
168
259
|
else
|
169
|
-
|
260
|
+
gff_record = nil
|
170
261
|
end
|
171
262
|
|
172
263
|
end
|
173
264
|
i+=cds_record.length
|
174
|
-
|
265
|
+
gff_records << gff_record unless gff_record.nil?
|
175
266
|
end
|
176
|
-
|
267
|
+
gff_records
|
177
268
|
end
|
178
269
|
|
179
|
-
def gff_record_for_peptide_fragment(start_i,end_i,parent_record)
|
270
|
+
def gff_record_for_peptide_fragment(start_i,end_i,parent_record,record_info)
|
180
271
|
cds_id = parent_record.id
|
181
|
-
|
272
|
+
mod_sequence = record_info[:modified_sequence]
|
273
|
+
this_id = mod_sequence ? "#{cds_id}.#{mod_sequence}" : "#{cds_id}.#{self.sequence}"
|
182
274
|
this_id << ".#{self.charge}" unless self.charge.nil?
|
275
|
+
mod = record_info[:mod]
|
276
|
+
this_id << ".#{mod.position}.#{mod.mass}" unless mod.nil?
|
183
277
|
score = self.probability.nil? ? "." : self.probability.to_s
|
184
|
-
|
278
|
+
record_type = mod.nil? ? record_info[:type] : "#{record_info[:type]}_#{mod.amino_acid}"
|
279
|
+
gff_string = "#{parent_record.seqid}\tMSMS\t#{record_type}\t#{start_i}\t#{end_i}\t#{score}\t#{parent_record.strand}\t0\tID=#{this_id};Parent=#{cds_id}"
|
185
280
|
Bio::GFF::GFF3::Record.new(gff_string)
|
186
281
|
end
|
187
282
|
|
283
|
+
end
|
284
|
+
|
188
285
|
|
189
|
-
|
286
|
+
# <indistinguishable_peptide peptide_sequence="MEYENTLTAAMK" charge="2" calc_neutral_pep_mass="1416.63">
|
287
|
+
# <modification_info modified_peptide="M[147]EYENTLTAAMK"/>
|
288
|
+
# </indistinguishable_peptide>
|
289
|
+
class IndistinguishablePeptide < Peptide
|
290
|
+
class << self
|
291
|
+
def from_protxml(xmlnode)
|
292
|
+
pep=new()
|
293
|
+
pep.sequence=xmlnode['peptide_sequence']
|
294
|
+
pep.charge=xmlnode['charge'].to_i
|
295
|
+
|
296
|
+
mod_info_node = xmlnode.find('protxml:modification_info','protxml:http://regis-web.systemsbiology.net/protXML')
|
297
|
+
|
298
|
+
if ( mod_info_node.length > 0 )
|
299
|
+
throw "Encountered multiple modification_info nodes for an indistinguishable peptide" if mod_info_node.length > 1
|
300
|
+
pep.modified_sequence = mod_info_node[0]['modified_peptide']
|
301
|
+
mod_nodes = mod_info_node[0].find('protxml:mod_aminoacid_mass','protxml:http://regis-web.systemsbiology.net/protXML')
|
302
|
+
if ( mod_nodes.length > 0 )
|
303
|
+
pep.modifications = mod_nodes.collect { |e| PeptideMod.from_protxml(e) }
|
304
|
+
else
|
305
|
+
pep.modifications = pep.modifications_from_sequence(pep.modified_sequence)
|
306
|
+
end
|
307
|
+
end
|
308
|
+
pep
|
309
|
+
end
|
310
|
+
end
|
311
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'libxml'
|
2
|
+
require 'bio'
|
3
|
+
|
4
|
+
include LibXML
|
5
|
+
|
6
|
+
class PeptideMod
|
7
|
+
|
8
|
+
# Fully Modified Sequence
|
9
|
+
attr_accessor :position
|
10
|
+
attr_accessor :amino_acid
|
11
|
+
attr_accessor :mass
|
12
|
+
|
13
|
+
class << self
|
14
|
+
|
15
|
+
# <modification_info modified_peptide="GFGFVTYSC[160]VEEVDAAMC[160]ARPHK">
|
16
|
+
# <mod_aminoacid_mass position="9" mass="160.030600"/>
|
17
|
+
# <mod_aminoacid_mass position="18" mass="160.030600"/>
|
18
|
+
# </modification_info>
|
19
|
+
|
20
|
+
def from_protxml(xmlnode)
|
21
|
+
pepmod = new()
|
22
|
+
pepmod.position=xmlnode['position'].to_i
|
23
|
+
pepmod.mass=xmlnode['mass'].to_f
|
24
|
+
pepmod
|
25
|
+
end
|
26
|
+
|
27
|
+
def from_data(position,amino_acid,mass)
|
28
|
+
pepmod = new()
|
29
|
+
pepmod.position = position
|
30
|
+
pepmod.amino_acid = amino_acid
|
31
|
+
pepmod.mass = mass
|
32
|
+
pepmod
|
33
|
+
end
|
34
|
+
|
35
|
+
private :new
|
36
|
+
end
|
37
|
+
|
38
|
+
def initialize()
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -153,6 +153,12 @@ file tpp_installed_file => [@build_dir,tpp_download_file] do
|
|
153
153
|
|
154
154
|
sh %{cd #{@build_dir};tar -xvzf TPP-#{tpp_version}.tgz}
|
155
155
|
|
156
|
+
sh %{cp ~/Desktop/singleton.hpp #{@build_dir}/TPP-#{tpp_version}/trans_proteomic_pipeline/src/../extern/ProteoWizard/pwiz/libraries/boost_aux/boost/utility/singleton.hpp}
|
157
|
+
|
158
|
+
sh %{cp ~/Desktop/MascotScoreParser.h #{@build_dir}/TPP-#{tpp_version}/trans_proteomic_pipeline/src/Validation/DiscriminateFunction/Mascot/MascotScoreParser.h}
|
159
|
+
sh %{cp ~/Desktop/PTMProphetParser.cxx #{@build_dir}/TPP-#{tpp_version}/trans_proteomic_pipeline/src/Validation/PTMProphetParser/PTMProphetParser.cxx}
|
160
|
+
sh %{cp ~/Desktop/RespectFilter.h #{@build_dir}/TPP-#{tpp_version}/trans_proteomic_pipeline/src/Validation/Respect/RespectFilter.h}
|
161
|
+
|
156
162
|
File.open("#{@build_dir}/TPP-#{tpp_version}/trans_proteomic_pipeline/src/Makefile.config.incl","wb") do |f|
|
157
163
|
f.write "TPP_ROOT=#{env.tpp_root}/\nTPP_WEB=/tpp/\nXSLT_PROC=/usr/bin/xsltproc\nCGI_USERS_DIR=${TPP_ROOT}cgi-bin/"
|
158
164
|
end
|
@@ -173,13 +179,18 @@ file tpp_installed_file => [@build_dir,tpp_download_file] do
|
|
173
179
|
makefile_text = File.read("#{makefile_path}")
|
174
180
|
|
175
181
|
File.open("#{makefile_path}","w+") do |f|
|
176
|
-
subs_text = makefile_text.gsub("cp -rfu","cp -rf")
|
182
|
+
subs_text = makefile_text.gsub("cp -rfu","cp -rf").gsub("-Werror","")
|
183
|
+
# subs_text = subs_text.gsub("-Werror","")
|
177
184
|
f.write subs_text
|
178
185
|
end
|
186
|
+
|
187
|
+
|
188
|
+
|
179
189
|
end
|
180
190
|
sh %{cd #{@build_dir}/TPP-#{tpp_version}/trans_proteomic_pipeline/src;echo '' > ../perl/tpp_models.pl;echo '' > ../perl/exporTPP.pl;echo '' > ../CGI/show_nspbin.pl;echo '' > ../CGI/tpp_gui/tpp_gui.pl}
|
181
191
|
|
182
|
-
build_cmd = "#{use_perl_locallib_cmd};cd #{@build_dir}/TPP-#{tpp_version}/trans_proteomic_pipeline/src ; make -s"
|
192
|
+
# build_cmd = "#{use_perl_locallib_cmd};cd #{@build_dir}/TPP-#{tpp_version}/trans_proteomic_pipeline/src ; make -s"
|
193
|
+
build_cmd = "#{use_perl_locallib_cmd};cd #{@build_dir}/TPP-#{tpp_version}/trans_proteomic_pipeline/src ; make"
|
183
194
|
install_cmd = "#{use_perl_locallib_cmd};cd #{@build_dir}/TPP-#{tpp_version}/trans_proteomic_pipeline/src ; make install"
|
184
195
|
env.log build_cmd, :info
|
185
196
|
sh %{#{build_cmd}}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.4
|
4
|
+
version: 1.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ira Cooke
|
@@ -14,170 +14,170 @@ dependencies:
|
|
14
14
|
name: open4
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
|
-
- -
|
20
|
+
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 1.3.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - ~>
|
27
|
+
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '1.3'
|
30
|
-
- -
|
30
|
+
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 1.3.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: bio
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - ~>
|
37
|
+
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: 1.4.3
|
40
|
-
- -
|
40
|
+
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: 1.4.3
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - ~>
|
47
|
+
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: 1.4.3
|
50
|
-
- -
|
50
|
+
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: 1.4.3
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: rest-client
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
|
-
- - ~>
|
57
|
+
- - "~>"
|
58
58
|
- !ruby/object:Gem::Version
|
59
59
|
version: 1.6.7
|
60
|
-
- -
|
60
|
+
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: 1.6.7
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - ~>
|
67
|
+
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: 1.6.7
|
70
|
-
- -
|
70
|
+
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: 1.6.7
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: net-ftp-list
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
76
76
|
requirements:
|
77
|
-
- - ~>
|
77
|
+
- - "~>"
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: 3.2.5
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 3.2.5
|
83
83
|
type: :runtime
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 3.2.5
|
90
|
-
- -
|
90
|
+
- - ">="
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: 3.2.5
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: libxml-ruby
|
95
95
|
requirement: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
|
-
- - ~>
|
97
|
+
- - "~>"
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: '2.
|
100
|
-
- -
|
99
|
+
version: '2.9'
|
100
|
+
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 2.
|
102
|
+
version: 2.9.0
|
103
103
|
type: :runtime
|
104
104
|
prerelease: false
|
105
105
|
version_requirements: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
|
-
- - ~>
|
107
|
+
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '2.
|
110
|
-
- -
|
109
|
+
version: '2.9'
|
110
|
+
- - ">="
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 2.
|
112
|
+
version: 2.9.0
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: rspec
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
|
-
- - ~>
|
117
|
+
- - "~>"
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '3.0'
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- - ~>
|
124
|
+
- - "~>"
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '3.0'
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
128
|
name: rspec-mocks
|
129
129
|
requirement: !ruby/object:Gem::Requirement
|
130
130
|
requirements:
|
131
|
-
- - ~>
|
131
|
+
- - "~>"
|
132
132
|
- !ruby/object:Gem::Version
|
133
133
|
version: '3.0'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
|
-
- - ~>
|
138
|
+
- - "~>"
|
139
139
|
- !ruby/object:Gem::Version
|
140
140
|
version: '3.0'
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
142
|
name: rake-compiler
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
144
144
|
requirements:
|
145
|
-
- - ~>
|
145
|
+
- - "~>"
|
146
146
|
- !ruby/object:Gem::Version
|
147
147
|
version: '0'
|
148
148
|
type: :development
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
|
-
- - ~>
|
152
|
+
- - "~>"
|
153
153
|
- !ruby/object:Gem::Version
|
154
154
|
version: '0'
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
156
|
name: byebug
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
|
-
- - ~>
|
159
|
+
- - "~>"
|
160
160
|
- !ruby/object:Gem::Version
|
161
161
|
version: '3.5'
|
162
162
|
type: :development
|
163
163
|
prerelease: false
|
164
164
|
version_requirements: !ruby/object:Gem::Requirement
|
165
165
|
requirements:
|
166
|
-
- - ~>
|
166
|
+
- - "~>"
|
167
167
|
- !ruby/object:Gem::Version
|
168
168
|
version: '3.5'
|
169
169
|
- !ruby/object:Gem::Dependency
|
170
170
|
name: sqlite3
|
171
171
|
requirement: !ruby/object:Gem::Requirement
|
172
172
|
requirements:
|
173
|
-
- - ~>
|
173
|
+
- - "~>"
|
174
174
|
- !ruby/object:Gem::Version
|
175
175
|
version: '0'
|
176
176
|
type: :runtime
|
177
177
|
prerelease: false
|
178
178
|
version_requirements: !ruby/object:Gem::Requirement
|
179
179
|
requirements:
|
180
|
-
- - ~>
|
180
|
+
- - "~>"
|
181
181
|
- !ruby/object:Gem::Version
|
182
182
|
version: '0'
|
183
183
|
description: Commandline tools for proteomics
|
@@ -202,6 +202,7 @@ executables:
|
|
202
202
|
- uniprot_mapper.rb
|
203
203
|
- sixframe.rb
|
204
204
|
- augustus_to_proteindb.rb
|
205
|
+
- maker_to_proteindb.rb
|
205
206
|
- protxml_to_gff.rb
|
206
207
|
- protxml_to_table.rb
|
207
208
|
- swissprot_to_table.rb
|
@@ -222,6 +223,7 @@ files:
|
|
222
223
|
- bin/filter_psms.rb
|
223
224
|
- bin/interprophet.rb
|
224
225
|
- bin/make_decoy.rb
|
226
|
+
- bin/maker_to_proteindb.rb
|
225
227
|
- bin/manage_db.rb
|
226
228
|
- bin/mascot_search.rb
|
227
229
|
- bin/mascot_to_pepxml.rb
|
@@ -283,6 +285,7 @@ files:
|
|
283
285
|
- lib/protk/fastadb.rb
|
284
286
|
- lib/protk/galaxy_stager.rb
|
285
287
|
- lib/protk/galaxy_util.rb
|
288
|
+
- lib/protk/gff_to_proteindb_tool.rb
|
286
289
|
- lib/protk/gffdb.rb
|
287
290
|
- lib/protk/manage_db_rakefile.rake
|
288
291
|
- lib/protk/manage_db_tool.rb
|
@@ -292,6 +295,7 @@ files:
|
|
292
295
|
- lib/protk/omssa_util.rb
|
293
296
|
- lib/protk/openms_defaults.rb
|
294
297
|
- lib/protk/peptide.rb
|
298
|
+
- lib/protk/peptide_mod.rb
|
295
299
|
- lib/protk/pepxml.rb
|
296
300
|
- lib/protk/pepxml_writer.rb
|
297
301
|
- lib/protk/physical_constants.rb
|
@@ -324,19 +328,18 @@ require_paths:
|
|
324
328
|
- lib
|
325
329
|
required_ruby_version: !ruby/object:Gem::Requirement
|
326
330
|
requirements:
|
327
|
-
- -
|
331
|
+
- - ">="
|
328
332
|
- !ruby/object:Gem::Version
|
329
333
|
version: '0'
|
330
334
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
331
335
|
requirements:
|
332
|
-
- -
|
336
|
+
- - ">="
|
333
337
|
- !ruby/object:Gem::Version
|
334
|
-
version:
|
338
|
+
version: '0'
|
335
339
|
requirements: []
|
336
340
|
rubyforge_project:
|
337
|
-
rubygems_version: 2.
|
341
|
+
rubygems_version: 2.5.1
|
338
342
|
signing_key:
|
339
343
|
specification_version: 4
|
340
344
|
summary: Proteomics Toolkit
|
341
345
|
test_files: []
|
342
|
-
has_rdoc:
|