bio-signalp 0.3.0 → 0.3.1
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 +7 -0
- data/.rspec +1 -0
- data/Gemfile +6 -6
- data/Rakefile +5 -6
- data/VERSION +1 -1
- data/bio-signalp.gemspec +27 -25
- data/lib/bio/appl/common.rb +12 -12
- data/spec/bio-signalp_spec.rb +162 -0
- data/spec/spec_helper.rb +13 -0
- metadata +46 -50
- data/test/helper.rb +0 -18
- data/test/test_bio-signalp.rb +0 -159
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 12404869c309796dffa4497c1021158943df36f5
|
4
|
+
data.tar.gz: 6a09580eb6dceebb59c6620a12f02cddef5e4143
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 741919409e87ba018b96faae87609fe5ae779d780abb49fbce1cb0cd25c9169608347bfd6c68f2c46ff383d8bba4123113954f07c7db2942c7dd708707689acd
|
7
|
+
data.tar.gz: 7308fd484feaa9b7a38c2e2038052e2500b0a06c1100209e60e3f4469cdf03de14593c8912dd9938a7432d2ab4ee65a0cf28449e8ec53824e83e1a0d5c8250a1
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Gemfile
CHANGED
@@ -2,14 +2,14 @@ source "http://rubygems.org"
|
|
2
2
|
# Add dependencies required to use your gem here.
|
3
3
|
# Example:
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
5
|
-
gem "bio", ">= 1.4.1"
|
6
|
-
gem "bio-logger"
|
5
|
+
gem "bio", "~>1.4", ">= 1.4.1"
|
6
|
+
gem "bio-logger", '~>1.0'
|
7
7
|
|
8
8
|
# Add dependencies to develop your gem here.
|
9
9
|
# Include everything needed to run rake, tests, features, etc.
|
10
10
|
group :development do
|
11
|
-
gem "
|
12
|
-
gem "
|
13
|
-
gem "
|
14
|
-
gem "rdoc", "
|
11
|
+
gem "rspec", "~> 2.8"
|
12
|
+
gem "jeweler", "~> 2.0"
|
13
|
+
gem "bundler", "~>1.0", ">= 1.0.21"
|
14
|
+
gem "rdoc", "~> 3.12"
|
15
15
|
end
|
data/Rakefile
CHANGED
@@ -25,11 +25,10 @@ Jeweler::Tasks.new do |gem|
|
|
25
25
|
end
|
26
26
|
Jeweler::RubygemsDotOrgTasks.new
|
27
27
|
|
28
|
-
require '
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
test.verbose = true
|
28
|
+
require 'rspec/core'
|
29
|
+
require 'rspec/core/rake_task'
|
30
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
31
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
33
32
|
end
|
34
33
|
|
35
|
-
task :default => :
|
34
|
+
task :default => :spec
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
data/bio-signalp.gemspec
CHANGED
@@ -2,14 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: bio-signalp 0.3.1 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = "bio-signalp"
|
8
|
-
s.version = "0.3.
|
9
|
+
s.version = "0.3.1"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
11
13
|
s.authors = ["Ben J Woodcroft"]
|
12
|
-
s.date = "
|
14
|
+
s.date = "2014-08-04"
|
13
15
|
s.description = "A wrapper for the signal peptide prediction algorith SignalP. Not very well supported, but seems to work for the author, at least."
|
14
16
|
s.email = "donttrustben near gmail.com"
|
15
17
|
s.executables = ["signalp.rb"]
|
@@ -19,6 +21,7 @@ Gem::Specification.new do |s|
|
|
19
21
|
]
|
20
22
|
s.files = [
|
21
23
|
".document",
|
24
|
+
".rspec",
|
22
25
|
"Gemfile",
|
23
26
|
"LICENSE.txt",
|
24
27
|
"README.md",
|
@@ -30,40 +33,39 @@ Gem::Specification.new do |s|
|
|
30
33
|
"lib/bio/appl/common.rb",
|
31
34
|
"lib/bio/appl/signalp3.rb",
|
32
35
|
"lib/bio/appl/signalp4.rb",
|
33
|
-
"
|
34
|
-
"
|
36
|
+
"spec/bio-signalp_spec.rb",
|
37
|
+
"spec/spec_helper.rb"
|
35
38
|
]
|
36
39
|
s.homepage = "http://github.com/wwood/bioruby-signalp"
|
37
40
|
s.licenses = ["MIT"]
|
38
|
-
s.
|
39
|
-
s.rubygems_version = "1.8.24"
|
41
|
+
s.rubygems_version = "2.2.2"
|
40
42
|
s.summary = "A wrapper for the signal peptide prediction algorith SignalP"
|
41
43
|
|
42
44
|
if s.respond_to? :specification_version then
|
43
|
-
s.specification_version =
|
45
|
+
s.specification_version = 4
|
44
46
|
|
45
47
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
|
-
s.add_runtime_dependency(%q<bio>, [">= 1.4.1"])
|
47
|
-
s.add_runtime_dependency(%q<bio-logger>, ["
|
48
|
-
s.add_development_dependency(%q<
|
49
|
-
s.add_development_dependency(%q<
|
50
|
-
s.add_development_dependency(%q<
|
51
|
-
s.add_development_dependency(%q<rdoc>, ["
|
48
|
+
s.add_runtime_dependency(%q<bio>, [">= 1.4.1", "~> 1.4"])
|
49
|
+
s.add_runtime_dependency(%q<bio-logger>, ["~> 1.0"])
|
50
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.8"])
|
51
|
+
s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
|
52
|
+
s.add_development_dependency(%q<bundler>, [">= 1.0.21", "~> 1.0"])
|
53
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
52
54
|
else
|
53
|
-
s.add_dependency(%q<bio>, [">= 1.4.1"])
|
54
|
-
s.add_dependency(%q<bio-logger>, ["
|
55
|
-
s.add_dependency(%q<
|
56
|
-
s.add_dependency(%q<
|
57
|
-
s.add_dependency(%q<
|
58
|
-
s.add_dependency(%q<rdoc>, ["
|
55
|
+
s.add_dependency(%q<bio>, [">= 1.4.1", "~> 1.4"])
|
56
|
+
s.add_dependency(%q<bio-logger>, ["~> 1.0"])
|
57
|
+
s.add_dependency(%q<rspec>, ["~> 2.8"])
|
58
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
59
|
+
s.add_dependency(%q<bundler>, [">= 1.0.21", "~> 1.0"])
|
60
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
59
61
|
end
|
60
62
|
else
|
61
|
-
s.add_dependency(%q<bio>, [">= 1.4.1"])
|
62
|
-
s.add_dependency(%q<bio-logger>, ["
|
63
|
-
s.add_dependency(%q<
|
64
|
-
s.add_dependency(%q<
|
65
|
-
s.add_dependency(%q<
|
66
|
-
s.add_dependency(%q<rdoc>, ["
|
63
|
+
s.add_dependency(%q<bio>, [">= 1.4.1", "~> 1.4"])
|
64
|
+
s.add_dependency(%q<bio-logger>, ["~> 1.0"])
|
65
|
+
s.add_dependency(%q<rspec>, ["~> 2.8"])
|
66
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
67
|
+
s.add_dependency(%q<bundler>, [">= 1.0.21", "~> 1.0"])
|
68
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
67
69
|
end
|
68
70
|
end
|
69
71
|
|
data/lib/bio/appl/common.rb
CHANGED
@@ -2,12 +2,12 @@ module Bio
|
|
2
2
|
module SignalP
|
3
3
|
NUM_FIELDS_IN_VERSION3_SHORT_OUTPUT = 21
|
4
4
|
NUM_FIELDS_IN_VERSION4_SHORT_OUTPUT = 12
|
5
|
-
|
5
|
+
|
6
6
|
class Wrapper
|
7
7
|
def log
|
8
8
|
log = Bio::Log::LoggerPlus['bio-signalp']
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
# Given an amino acid sequence, return a SignalP Result
|
12
12
|
# representing it taken from the file. The version of SignalP used
|
13
13
|
# is auto-detected (versions 3 and 4 are supported)
|
@@ -18,35 +18,35 @@ module Bio
|
|
18
18
|
# Returns nil if the sequence is empty
|
19
19
|
def calculate(sequence, options={})
|
20
20
|
return nil if sequence.nil? or sequence == ''
|
21
|
-
|
21
|
+
|
22
22
|
default_options = {
|
23
23
|
:binary_path => 'signalp'
|
24
24
|
}
|
25
25
|
options = default_options.merge options
|
26
26
|
raise "Unexpected option parameters passed in #{options.inspect}" unless options.length == default_options.length
|
27
27
|
options[:binary_path] ||= default_options[:binary_path] #in case nil is passed here
|
28
|
-
|
28
|
+
|
29
29
|
# This command needs to work with all versions of SignalP (currently v3 and v4)
|
30
30
|
command = "#{options[:binary_path]} -f short -t euk"
|
31
31
|
log.debug "Running signalp command: #{command}" if log.debug?
|
32
32
|
Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|
|
33
33
|
stdin.puts '>wrapperSeq'
|
34
|
-
stdin.puts "#{sequence}"
|
34
|
+
stdin.puts "#{sequence[0..500]}" #Only give the first 500 amino acids because v3 fails on massive aaseqs
|
35
35
|
stdin.close
|
36
|
-
|
36
|
+
|
37
37
|
result = stdout.readlines
|
38
38
|
error = stderr.readlines
|
39
|
-
|
39
|
+
|
40
40
|
unless error.empty?
|
41
41
|
raise Exception, "There appears to be a problem while running signalp:\n#{error}"
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
# Error checking
|
45
45
|
num_expected_result_lines = 3
|
46
46
|
unless result.length == num_expected_result_lines
|
47
47
|
raise Exception, "Unexpected number of lines found in SignalP output (#{result.length}, expected #{num_expected_result_lines}):\n#{result}"
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
splits = result[2].strip.split(/[ \t]+/)
|
51
51
|
if splits.length == NUM_FIELDS_IN_VERSION3_SHORT_OUTPUT
|
52
52
|
# SignalP 3 detected, use that
|
@@ -63,7 +63,7 @@ module Bio
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
# A module for methods common to different SignalP version Result classes.
|
68
68
|
module Common
|
69
69
|
# Given an amino acid sequence (as a string),
|
@@ -76,7 +76,7 @@ module Bio
|
|
76
76
|
return sequence
|
77
77
|
end
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
# Simple method: 'Y' => true, 'N' => false, else nil
|
81
81
|
def to_bool(string)
|
82
82
|
if string === 'Y'
|
@@ -89,4 +89,4 @@ module Bio
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end
|
92
|
-
end
|
92
|
+
end
|
@@ -0,0 +1,162 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'open3'
|
3
|
+
|
4
|
+
SIGNALP3_PATH = File.join(ENV['HOME'],'bioinfo','signalp-3.0','signalp')
|
5
|
+
SIGNALP4_PATH = File.join(ENV['HOME'],'bioinfo','signalp-4.0','signalp')
|
6
|
+
SIGNALP_BINARIES = [
|
7
|
+
SIGNALP3_PATH,
|
8
|
+
SIGNALP4_PATH,
|
9
|
+
]
|
10
|
+
|
11
|
+
describe 'bio-signalp library' do
|
12
|
+
def setup
|
13
|
+
log_name = 'bio-signalp'
|
14
|
+
Bio::Log::CLI.logger('stderr')
|
15
|
+
#Bio::Log::CLI.configure(log_name) # when commented out no debug is printed out
|
16
|
+
end
|
17
|
+
|
18
|
+
it "positive control" do
|
19
|
+
# Known to have a signal peptide
|
20
|
+
acp_sequence = 'MKILLLCIIFLYYVNAFKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ'
|
21
|
+
|
22
|
+
Bio::SignalP::Wrapper.new.calculate(acp_sequence).signal?.should == true
|
23
|
+
end
|
24
|
+
|
25
|
+
it "negative control" do
|
26
|
+
# Known to have a signal peptide
|
27
|
+
non_signal_sequence = 'KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK'
|
28
|
+
|
29
|
+
Bio::SignalP::Wrapper.new.calculate(non_signal_sequence).signal?.should == false
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'work with different SignalP versions, this test is specific to Ben\'s machines probably' do
|
33
|
+
binaries = {
|
34
|
+
SIGNALP_BINARIES[0] => Bio::SignalP::Version3::Result,
|
35
|
+
SIGNALP_BINARIES[1] => Bio::SignalP::Version4::Result,
|
36
|
+
}
|
37
|
+
binaries.each do |binary, clazz|
|
38
|
+
acp_sequence = 'MKILLLCIIFLYYVNAFKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ'
|
39
|
+
positive_result = Bio::SignalP::Wrapper.new.calculate(acp_sequence, :binary_path => binary)
|
40
|
+
positive_result.signal?.should == true
|
41
|
+
positive_result.should be_kind_of(clazz)
|
42
|
+
positive_result.cleavage_site.should == 17
|
43
|
+
positive_result.cleave(acp_sequence).should == 'FKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ'
|
44
|
+
non_signal_sequence = 'KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK'
|
45
|
+
Bio::SignalP::Wrapper.new.calculate(non_signal_sequence, :binary_path => binary).signal?.should == false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'give different predictions for v3 and v4' do
|
50
|
+
different = <<EOF
|
51
|
+
MMKGMVEAAVKWMKAGLPLRILKLVLYAKVIDGDLQGHSLRRFSEVLKTFTELKERYEMQ
|
52
|
+
LLLPKAVPLEFDVYLSFSEEDKEVAKVIREKLSGAKDGVRIYDSSHQGINKDTVFQEDMY
|
53
|
+
SIMMKSARVVTVLSPNYLRNKACIEQYNIALCCNRRALRDMLAPIYVDSVEMMPTYMGLV
|
54
|
+
QYVDCRPHDPSKIGEACSQLTVSLSVTFHTELRVAEFDPLRYDVFLSYSHRDTEKANRFV
|
55
|
+
EMLQKLAPDLKLFFDVQELKTGKSWQRTLYHSIDGSRCMLALISEPYLKSAVCQEEFALA
|
56
|
+
QAKHCAKGKQHLQLISICLDDLDTIQPEFTHIPMVKGTPDVFDDMVKTVCPAVIQWLNGE
|
57
|
+
RVDQTETIKTLFDDQNITTLSADAEMEKFRQSHFQKEFGTQDSLISSKSPFPPKLSDILP
|
58
|
+
EPGKEVKDKRPKSASDCDLIFSYHSDDEKYVSFIVKILQLNAPSLKVKAVCSDENKLSAF
|
59
|
+
ERAHCIVPVLSPNYLESPECVEEFHIAIWRQRISNPEAGALLPICVHTLPQKPTYFHLVQ
|
60
|
+
SAVSMTDGIWAQLSGQHNFGLPQKIVDFSLAAGKTPLSQVDMLALYMAAYYILKRFAKAR
|
61
|
+
SCKEVEFSMKPALFNIMKLQEQIKQLTQPDYTDQLCKTLLEIHFNDIPDSWREGGHYLRP
|
62
|
+
KEPEDTTPAIMAPVEGASDSQTHNALNERTQDSSGKDKSEVQGEKAQRSASEGVSHDTVQ
|
63
|
+
QMDQDHDLKAAQGQDTAEGQDAAEGQDSEGGQDSEGGWDSDGGRDSVGNKTDAEKITGNH
|
64
|
+
GDEGGDGQVGGSEESKEKTEDEDEDISKRNRAPRSVACVCL
|
65
|
+
EOF
|
66
|
+
Bio::SignalP::Wrapper.new.calculate(different, :binary_path => SIGNALP3_PATH).signal?.should == true
|
67
|
+
Bio::SignalP::Wrapper.new.calculate(different, :binary_path => SIGNALP4_PATH).signal?.should == false
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'work when given a very large sequence for signalp 3' do
|
71
|
+
big_seq = 'MTPEMPNPLDPSLAFNMAPGDVQLATGPQQPAAVFASPLQDAMVKPTQAQIPLHHENDKGNQELGPDRDQVYHIRTTSFKSLGCWKDTWDRAIPLMERKHPLLYEDDYKSRTNALMKCAEAALDNNFSIFSVQNGGQCFSGKDADRTYMKYGVSRTCKACQTAIDLVFLIDGSASVERYGIGNFRRLIDFVRDVVIGFRVSRGNTRVGAIVFGTKPYVLFGFNKYTNNGALFNKLNQGVQYPKSGSRIGRALLMAQNRLFRKNSRRSRTTKVVVVITDGSSMDDVAGPSNALKALGVRIYCVGVGRYINGRQLDILASPPRKNHIFTADWKHLSVIVNDLRNAVCLGTGGNLVAATHRVCLCPYTHPTEKPSTKPPLRPGFPRVVALYPLSKRTKGKDISGNRNPNGELSGVYPAPGPDGLPDGSYYFSGRKTSYIQFPNDGKLDSYYSLTMLAWIYPEGSGPIFHFFPGGVRFWVVRPNTLIITFVRRTGRPAQQLISHKLIPKRWNYVGASYDERTGIATLWRDSRPIESVYIGRIRLATNRPVRMGALPRDLRYFRGRISCMQVYSVPLSGPEIKRAEKVCFRTVRMGAKIGDRRCFRGWITCMQVYDQPLPLRLIRIAKRLCFKAYPTPSPSTTPTILRPGKLCRARIDLGLLVDGTNNRYRFKKILNVVNQLIRYFDISRVYTRIGVIAYSSSSIPYFNFKRFARKYDVLGAVRKISFPQGVSYTGRALRFAGRYLFPGTRRTYARSKVLVVFTGAQSKDSVARPAQMLKRSGVEIFAVGTGSWSSRSYLESIAYDRYHVFNTDSRLGLKTVLDRLVAKICVATPIGKPTTATRPTTTKSTTPTQRIVPPPAMAIYPLNGIDRGKDIGPFKNPTAKLENVVSKSGPDGLPAGSYQLQGFANSYISFPNTGRLDTQNSITIICWLFPESAGPVFHYKPQGVGVNLRMISRKVIRAEFVSRDGRITKRISKRIRSRVWNYIAGTYDYNTGLATIWLDAIPITQRNIGRMRLATNYPAVSGRKSGDPRHFRGRIACVQIYNVALNSYQIRKLKRLCFRARPPYTPTPTRPSLPRIVAIYPLDEQNKGRDISQNRNPTGQLLGVRPAPGPDGWPNTATEFFGNENSYIEFPNSGKLDTINSITVLAWVFHSGVSGPIFNFNVGPGRGVQFWMMGPRKLYARFVRRDGLLTTPLVTHGATVPYKAWAYLGTTYDGNTGVASLYVNNRPVVRTNIGRIRLATNKPVRMGAKKGDRRYFRGRVSCVQVYSLALNRRQISRAAKRCFKIVCKPVVDLGFLIDGSGSIEYHGRGNFKLMLNFIKSMVASLPISRTQSRIGAVLFSDKPIPLFRFGQLNSVTHVIQAIDSIRYPRGGTYIGRALSFIRRYLFSGRRKSNRKRILILLTDGLSKDGVRREASLLKKRDVEVFAVGIVPLPSSLAVYALDGYRRGKDISGSNNPTASLIGTGTAPGPDGRRDGSIKFYGRRNSYVRITNSGRLDAQFSITIIVWMFHDGVNGPFVHYNPQGLGVELAMTGRREIVARFVKRSSSYSVPLKSRQIKYRAWNYVATTFEQRTGLAKLYINSRQVAYKTVGRMRLATNYPLRLGAREDDRRYFRGRLFCLQIYSMPLTGRQIEAAKRRCFLPTPTPTKPTPTRVPPPPPPRVCRARIDLGFLVDASSSRLNSGAIRQFIKETVRRFEVSSTLVRIGVVTYSYSPKLLVGFGRSYSRPQIYRLVDRMQVKGYGGRYLGKALDYTRRYLFSATPRCGRRRVLMVLTTGESRDAVRPYALKMFGSGVEVYAIGIGRVRRKSLFQIATRYRLAFRVNAGRLIYLTRKIKDRICSYPGKAVAVYPFNSASYGRDVSKFKNPTAQLVGLSFIKGPDGHQQGAYFFPGKGRRGVRSSYALIPNNGCLDTRYSITITCWVYPEAPGPILHFNPNGWGLHLWLTRTDELFFRVIPRQGSRQKAKPVISRSVKPFKWNYISGTYDHLTGLATLWVDGVPCAQRNVGKFPLGLATNYPAVVGRRPGDNRVFRGRITCLQVYNVALTRPQIIARKEKCFRRVPLPRTLAVYPLDLRRRGQDISRRRNPSARIGDIKYGRGPDGRQTGSTVFSGRRGSYVEIPNRGNLDARYSITILIWLFHLGTSGPIVHFNPNGYGVHMWMTSQRELFVRFVRRGGAMTTPIRSKRLTYKAWNYVGASYDDRSGIGTLWINSRSVARRNLGKIRLSTNYPIRLGATKRSRTYFRGKLFCFQIYSVPLTQKQVFEAKKRCFLPGPTPTKPTPTRKPTPPPRMILTRGAVATYTFSRASRGRDISQYKNPTARLVGISYTRGPDRNPQGAYYFPGVKRIRGRTITSYVLLPNNGCLDTRFSFTVLFWLFGESPGTLVHFNPNGAGVEVRLSRLTQLYFHVVPRGRSGRSVRPLIGNGVRPRTWNYIAATYDIRTGLATFYVNDFPVAQRNVGKFRSGVATNYPILIGKSPGNRRVFRGRLACLQIFNVALSRSKIVSLKKRCFQTRRTTRGRKRTLLVITDGVSSDRVKQPSLSLKRNGVQIFALGVGSGFRRSQLQLIATSPADVFTAGFGRLGTLVKAIKEKICLPSIPTPTRPPRAVALYPLNSRTQGRDIGPRKNKPARLTGVRLAPGPDGFPRGSIYFSGWRGSFAYFPNNGGIDTRNAITILVWIKPEKDGPIFHYNTQGSGVSVRIVRKKVLYVKFVRRSGKGSYVLKTVGLRPRVWNYFGVTYDGRTGLATIWRESTPLAQGNIGRGLRLATNYPAIMGSRPGSNTYFRGSIACLQVFDLALNGLRIRKRRNVCFRGAPPPVPSPPGTKDITNNNQPGIPSNVRPAPGPDGRKKGSTLFTGSINSYIEFPNNGKLDTRRSTTILAWVFHSGKSGPIFNYDRRGFGVHLWMVGPRVLFVRFVRRSKRRTASVATYAKKPNYRAWNYIGASYDYSSGVATLWLNSEPVARQSIGRFDLATDYPVRMGARVGDKNAFRGKISCLQVYSVALTAKQIRGARKRCFKKVIEPTHTMCGTPVDLGFLIDGSGSIEYQGKGNFVRILNFVKSIISFFEVSRGKSRVGCVLFSSRTIPIFGFRRYSSKAKILKAIGRIRFPRGGTKIGKALDFTRDYLFKGRSTRGKKRILTLITDGISMDKVGPAASRLKAAGVEVFTIGLGRKFKLSQLYQVATDPYHVLTASFSSMMTLIMKLKNQICQRGGPPITTPPPTTRPSRLPRIPTTSPSGKPTTRAVVTYAFRTKPIISFARSYTLSRVYSALRGMQVLGGRRRLGSALYSVKQNLFAAKPLCGQRRVLIVVNGGESVDRVRKPAQTLEGAGVEIFVVGVDGVGRRTASQLVTDRAHLFMVRFARLNTIIKTLKDRICYSPAIVRRGAVAVYPFTLTSKNRDISGYVNPPATFVGRLKYSFGPNKHPQGALYFSGERNTYVLIPNNGCLDTRFSITIAFWVYPLQPGSLVHFNPDGSGMDVSIVMPFKVSVRLISRSGKSVISLEKRIPKDKWTYLTVTSDHKTRLATLWFDSIPFDQRRIDGFRYGFATNYPISIGGTRRGTRRFKGKISCLQIYNYALTKAQIYSKMTRCFSSGVYSELPFLLVDDATHHFRNPLGCLLCALFSSIFGVEVFIARSYFSIYTERLPSTLAVYPLDRKRKGKDISSSRNPSADLNSVGYNEGPDGRRFGSVEFSGQSNSYAIIPNNGNLDARYSITVLVHVFYQGGSGSFFNYNPKEKGLLLRMISATKLEVEIIDRKRRTSIKVQTPGRVFQREAWNYVGMTYSERRQLVSIWVNLKLVATKRVGKVELDTGHPIRLSGYKNSRGYFRGRLFCLQLYSVALTGEKIKEAMKKCFLKGPITIPTSPSLPTPAPRVCTARIDLGFVLETSSTAMRNGNRYYTRFLRKIVQVFTITKDTTRVGIVTYATRTYGNIAFTGSYTRRLVYSAISRIRQLGRGRRLGKALTYARTYLFKGKPQCGRRRILIVLTAGGSTDKVRQARQGLQKAGVEIFVVGVGGVSRRTLMQVATDRQHIFKIQFAQLHTIVNTLKDIMCYSPVRTPSPPIPSTPPVKLPRTLAVYPFDKKRGRTDISRGKNPPAVFGKVVAYGEGPDSRKDGSFQFSGRKDSYIVIPNDGRLDAKYSITVLIWAFPVSRSGVILTYNPAGKGFQLRIIYPQRLQVILVERTRRTTITINTPRPVIQYKAWNYIGVTYSESAQKITIYVDSKAVATKTIGKVQLNTRYPIRLGGRGGVILRRGAIAVYQFTGVSRNRDISGYLNPPAMFYGVSYLTGPDKNPRGALYFKGKRGSYVSIPNNGCLDTKYSITIIFWVYPRSLGPLIHFNPNGRGVDLSIENPFTLYARFVPRSGKFVRPVRKTIPQRQWSYIAASYDSTTGLASLFRNGFLVAQTRIGRFRFGLATNYPILIGRRPRDRRYFNGEISCLQIYNYALDGVQIRSKMTSCFTPESLPSTLAVYPLDEERQGRDISKEKNPTATLVRVSFGEGPFGRETGSTQFDKRSSYVKISNNGKLDAKYSITVLIWVYMERWGNILKYGPTGKGFEVSIISQRKLQVEIVERTRRTRFTIITPRPVIEPKVWRYIGVTYSERAERMIIWVNSKAVAFKIIRKVQLDTKYQIRLGGQDGKGQYFRGRLFCLQIYSVALLEKQIRYAGKNVSLKVHPLHVRLQPHDQRDLHQIDLGFLIDATTTVLRSRSQNYQQVVKFLREILKYFKVSRTATRIGIVTYASRIRTVMSFSRSYRRREVYNAILGIRELGGRRQLGKALTYARTNLFRGRPQCGRRRILMVLTAGGSVDQVQGSSLSLLASGVEIFMIGVGRVSRQTLLQVTTDRRHVFVIGFTQLYTIAKTLKDNSCYNPVIRRRGAVAVYQFTGTSGNRDVSRYVNPPARFEGVYFYRGPDNDARGSLSFRGTRNSFVLIPNNGCLDTRYSITILFWVYPVSIGPLVHFNPNGLGVHVWIIKPFTIYCRVMPRSGKSVKPLYYKIKPRQWSYIGLTYNHKTGVATLWVFSIPVVQHVIGRFRLGLATNYPIYIGQKPNDKRRFRGRISCLQIYNYAMDGVEMRSKMTRCYKPDKIPKALAVYPLDDKRDGSDISSNQNSPAKLYNIKYAEGPDMRKKGSSQFDGQSRTYVFIPNTGKLDTKYSITVLVWMYPEGRRGFVFKYSSNKFVVRVIRPRVLQVEIRGRLRRTTITVNTPGNVIRYKAWNYIGVTCDRRSNVVTIWVNSKPVAKTGLRKVQLDTRKDITLGGGNFRGRLFCLQVYSVPLSQRQIEGARKKCFLKEPNITLPPPITTPTPAPSVCTARIDLGFIVEATSSAMRSQSRQIKQFLRETVRRFTISTTAARIGLITYASRAVGLLRFTGAYTRRLVNNAINRIRELSGQRRLGRALYYAKRYLFVGNPQCGRRRILIILTAGRSIDRVLQPAQSLKGAGVEIFSVDVGRVGSHTLFKVATDRHHVFRVAFAKLFTILRPLKERICYSPVVIRHGAVAIYPLTSASKNRDTSPYKNPPATFFNVEFSYGPDNHQKGALSFKGRRNSYVFIPNNGCLDTRYSMTIILWIYPVGLGPVIHFNPKGRGVDIDIGSGFRLYARFRSRSGNFVKVLYKKIKPRQWNYVAASYDYRLGIATLWRDSRPSVQRRIGRFGLATKYSIVIGQKTGYTRYFQGKITCLQIYNFAMTGEQIRSKKKWCFRQVPLVPTTPVFPKVPTGKVPGVLALYPLDYKRGGSDISSNQNSPAKLYNIKYAEGPDMRKKGSSQFDGQSRTTHNHPTYPADANPCTEICSVPVDLGFLIDATTTVMRSGSRYYRQFLREIVKRLIVSRSRTRVAVYTFASRTSRNIGFAGSYSRGQVYSAVNGIRQLSGARYLGKALRDTKTYMFRGKPQCGRRRILIVLTGGGSVDRARGPALSLLGSGVEIFVIGVGRISSQSLIHVTTDRQHVFVVGYSRLYSIVQTLMDKICCQSVIRRRRAVAVYQFTGASNNRDVSGSVNPPAIFVGVYYSVGPDKRPRGALSFRGTSKSVRPVSKTIPSNRWSYIAASYDYSSGLASLWSYNTLVDQRRIGRFRLGLATNYPIYIGRKPGDRRRFRGEISCLQIYNFAMTGPQIRSKMARCYNPATGPTTRPITLPYTPTVPMPPSLAVYPLDKKRGGIDITGRNPSARFKGTVFGDGPDGRKQGSTKLSGRSNSYVLIPNTGKLDPRYSITVLIWVYPIRSRGIVLTYNPNRKGFQLRIISPRKLLLEMVERTRRTTIRVSTPRPVIERKIWNYIGVTYSMKSKRVTFWVNSKAIATKVIGKVELDTRGSIRLGGYRGSRDFFKGRLSCLQVYSVELTSRQIEEAKKRCFLKVPITVPIPSPSPTRPPRVCTARVDLGFLIDATSASLRSNNRNYMEQFMQQLLRRFVISGRSTRVGLLTFSARTHRLLGFAGSYTTKGLGPLVHFNPFGSGVQISLVSPFRLSARFVPRSGKWVNAVYANITPRRWYYVATTFDHTNGVVSIFVNNALLSQRRIGPFRFGLATNKPVVIGGKPGSRRSFRGKISCLQVYNYPMNLLQIRSKEKLCFRAVLTPSPTITTPYTGSKPPIPSPSSKQPPAYPAFPFNRYNSKASVVRAVDRVRFPYGGTRTGNALRFTSGYLFPRGRIRGRKPFLVIITDGKSQDGVAAPAASLKRKGVDIFALGYGTKFRRLDLQQMASSPSYVMTASFGKISAILAAVKKKACQPFVPPTTPATVPACSLSIDVGLVLDSSARVGRWGFRQIKRFARLIARSFTISQKYGRVGVIVYGSYPRVEFGLNRYFNARYVDRTIERLRFIGGLRRTGKALEMALSGLFRGSRKKRVLVFVTNGPAADGIRLPSLRIHQSGIETFAIGIGSRSSHRELSAIATNARHTYMVTFRTLKSIVKSIVRKACKGFPEPVAIYTLHRKGGTVDISPGKNVPGQSSNVRYAPGPYGQSYKSTEFLGNRNSYIRFPNNGKLSVKHSITLLAWVYPMKPGPIFEYLRGVKFWCFRSDSLYVHFARRDRRRTRVLRKRRLRPYRWNYVGATYDQRTGIATLWLNSSPILSVNIGKGITLATTKDAYMGTGFRGRISCMQIYSSALTGPQISKLKNLCSKPGPFTPSIPVPRLPPAMAFYPLNVRYNTRDVSSNRNPPGRMGNVRPAFGPDLRPGGSFRFKGRSDSYIEFPNNGRLDTRKSLSIVAWINPAGPVGPIFNYKPDGFDVHMWMIRPRVLLVRFVNRLRRFTAPIETNLIKPKAWNFVTATYDQRSGDARIFIDSREVARKRIGQIRLATKYPAIMGARKGGKRFFQGRITCLQIYDIPLGPRQIREAKKLCLKTTCRANMDLAFLIDNSYYFRQRGQGAFSLLTRYIARILYSLRISRQGTRVSMATYASNARLLFPLSRYSRVSDILSALKRIRPRRGRLHLGRALYYVSSKIFPGRRRCGRKRVLVVFVSRRSQDSVERAARVLKRIGVEVFVVGIGGRVSRKELMKIATNGFHVFMASLRTLSTVLDTIRNKACSVTGSAAARAVFPLNGVTGGRDISINHNKAATLVNVKPAPGPDGLPLGSFLLRGIANSYIYFPNRGCMDTKNSMTIALWVYPESAGPIFHYFPKGRGVHLWMKDINTILVKFVPRSLQTISAVTSRRIKPTAWNFVAATYDYETGLASLWNDATLISQRNIGKIELATNYAAISGKKPRDKRIFRGRIACLQIFDRALTGRQLRAIKRKCFRARPSPTTPPPVLPLLVAVYPLDRINGVRDISPRRCPTGRRSNVGYAPGPDGRKDGATRFFGNAGSYIEIPNNGKLDTMVSTTILLWAYHEGLKGPLVNYRPGPGWGVNVWMMGPRTLLARFVRRDGVFTKAVMVTSRKIRYRAWNYFGATYDYKTGVAKLWVNSRLLVVQSIGRFRLATNYPIRLGARRNGKRFFKGRMFCLQIYSRALSRKEILAARSSCFRRFPTTTPTRKTKTPTTTPSPTRPKGPFRAAAFYPLNYLSRGRDRSLFRNPPGILGYVRSAPGPDKLPGGSYQFYGRPDSYIYLPNRGKLDTRKSISIIAWIRNDGGAGPIFHYMPNGWGVYLWMLSSNTVGVRFTRRQRRASTTMLSSRVITPHKWQYIAATYDYISGDARLYLDGNVIARKRLGRIRLATNYPVRIGAKKRDRRNFRGRISCVMVFDVALNSNQIARRKKRCFRRGPRGPSEKVCEPKIDLVFVVDACSENDRFTKANFRRVKNFLIGLIGDFVVSSKKVRISLVLFAQYPKLVLRFSTKKAFVFRIIRNMKLVCGARYSGAALKYAYRQILQRTTRKPVLVMMTTGGSRDDVRGPTALINRKRVETFAIGVGRRYSFRELQYIATDPRHVYTAAFRNLGSTVKLLKRKICKSDTLYHPA'
|
72
|
+
Bio::SignalP::Wrapper.new.calculate(big_seq, :binary_path => SIGNALP3_PATH).signal?.should == false
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe 'bio-signalp script' do
|
77
|
+
# Known to have a signal peptide
|
78
|
+
acp_sequence = 'MKILLLCIIFLYYVNAFKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ'
|
79
|
+
|
80
|
+
it "positive control" do
|
81
|
+
command = File.join(File.dirname(__FILE__),'..','bin','signalp.rb')
|
82
|
+
|
83
|
+
Open3.popen3(command) do |stdin, stdout, stderr|
|
84
|
+
stdin.puts '>positive'
|
85
|
+
stdin.puts acp_sequence
|
86
|
+
stdin.close
|
87
|
+
|
88
|
+
@result = stdout.readlines # convert to string?
|
89
|
+
@error = stderr.readlines
|
90
|
+
end
|
91
|
+
@result.should == [">positive\n", "FKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ\n"]
|
92
|
+
@error.should == []
|
93
|
+
end
|
94
|
+
|
95
|
+
it "return gracefully when empty sequences are given" do
|
96
|
+
command = File.join(File.dirname(__FILE__),'..','bin','signalp.rb')
|
97
|
+
|
98
|
+
Open3.popen3(command) do |stdin, stdout, stderr|
|
99
|
+
stdin.puts '>positive'
|
100
|
+
stdin.puts acp_sequence
|
101
|
+
stdin.puts '>empty'
|
102
|
+
stdin.puts '>positive2'
|
103
|
+
stdin.puts acp_sequence
|
104
|
+
stdin.close
|
105
|
+
|
106
|
+
@result = stdout.readlines # convert to string?
|
107
|
+
@error = stderr.readlines
|
108
|
+
end
|
109
|
+
@result.should == [">positive\n", "FKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ\n",
|
110
|
+
">positive2\n", "FKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ\n"]
|
111
|
+
@error.should == ["Unexpected empty sequence detected, ignoring: empty\n"]
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
it 'give the right -s output for signalp 3' do
|
118
|
+
command = File.join(File.dirname(__FILE__),'..','bin','signalp.rb')
|
119
|
+
|
120
|
+
# This also tests the -b flag
|
121
|
+
command = "#{command} -b #{SIGNALP3_PATH} -s"
|
122
|
+
Open3.popen3(command) do |stdin, stdout, stderr|
|
123
|
+
stdin.puts '>positive'
|
124
|
+
stdin.puts acp_sequence
|
125
|
+
stdin.close
|
126
|
+
|
127
|
+
@result = stdout.readlines # convert to string?
|
128
|
+
@error = stderr.readlines
|
129
|
+
end
|
130
|
+
|
131
|
+
expected = [
|
132
|
+
"Name\tNN Prediction\tHMM Prediction\n",
|
133
|
+
"positive\tT\tT\n"
|
134
|
+
]
|
135
|
+
@result.should == expected
|
136
|
+
@error.should == []
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
|
142
|
+
it 'give the right -s output for signalp 4' do
|
143
|
+
command = File.join(File.dirname(__FILE__),'..','bin','signalp.rb')
|
144
|
+
|
145
|
+
command = "#{command} -b #{SIGNALP4_PATH} -s"
|
146
|
+
Open3.popen3(command) do |stdin, stdout, stderr|
|
147
|
+
stdin.puts '>positive'
|
148
|
+
stdin.puts acp_sequence
|
149
|
+
stdin.close
|
150
|
+
|
151
|
+
@result = stdout.readlines # convert to string?
|
152
|
+
@error = stderr.readlines
|
153
|
+
end
|
154
|
+
|
155
|
+
expected = [
|
156
|
+
"Name\tPredicted?\n",
|
157
|
+
"positive\tT\n"
|
158
|
+
]
|
159
|
+
@result.should == expected
|
160
|
+
@error.should == []
|
161
|
+
end
|
162
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
|
4
|
+
require 'rspec'
|
5
|
+
require 'bio-signalp'
|
6
|
+
|
7
|
+
# Requires supporting files with custom matchers and macros, etc,
|
8
|
+
# in ./support/ and its subdirectories.
|
9
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
10
|
+
|
11
|
+
RSpec.configure do |config|
|
12
|
+
|
13
|
+
end
|
metadata
CHANGED
@@ -1,110 +1,109 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bio-signalp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ben J Woodcroft
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-08-04 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bio
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 1.4.1
|
20
|
+
- - "~>"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.4'
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
25
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 1.4.1
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.4'
|
30
33
|
- !ruby/object:Gem::Dependency
|
31
34
|
name: bio-logger
|
32
35
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
36
|
requirements:
|
35
|
-
- -
|
37
|
+
- - "~>"
|
36
38
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
39
|
+
version: '1.0'
|
38
40
|
type: :runtime
|
39
41
|
prerelease: false
|
40
42
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
43
|
requirements:
|
43
|
-
- -
|
44
|
+
- - "~>"
|
44
45
|
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
+
version: '1.0'
|
46
47
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
48
|
+
name: rspec
|
48
49
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '2.8'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
57
|
requirements:
|
59
|
-
- -
|
58
|
+
- - "~>"
|
60
59
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
60
|
+
version: '2.8'
|
62
61
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
62
|
+
name: jeweler
|
64
63
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
64
|
requirements:
|
67
|
-
- -
|
65
|
+
- - "~>"
|
68
66
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
67
|
+
version: '2.0'
|
70
68
|
type: :development
|
71
69
|
prerelease: false
|
72
70
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
71
|
requirements:
|
75
|
-
- -
|
72
|
+
- - "~>"
|
76
73
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
74
|
+
version: '2.0'
|
78
75
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
76
|
+
name: bundler
|
80
77
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
78
|
requirements:
|
83
|
-
- -
|
79
|
+
- - ">="
|
84
80
|
- !ruby/object:Gem::Version
|
85
|
-
version: 1.
|
81
|
+
version: 1.0.21
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '1.0'
|
86
85
|
type: :development
|
87
86
|
prerelease: false
|
88
87
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
88
|
requirements:
|
91
|
-
- -
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: 1.0.21
|
92
|
+
- - "~>"
|
92
93
|
- !ruby/object:Gem::Version
|
93
|
-
version: 1.
|
94
|
+
version: '1.0'
|
94
95
|
- !ruby/object:Gem::Dependency
|
95
96
|
name: rdoc
|
96
97
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
98
|
requirements:
|
99
|
-
- -
|
99
|
+
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: '3.12'
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
105
|
requirements:
|
107
|
-
- -
|
106
|
+
- - "~>"
|
108
107
|
- !ruby/object:Gem::Version
|
109
108
|
version: '3.12'
|
110
109
|
description: A wrapper for the signal peptide prediction algorith SignalP. Not very
|
@@ -117,7 +116,8 @@ extra_rdoc_files:
|
|
117
116
|
- LICENSE.txt
|
118
117
|
- README.md
|
119
118
|
files:
|
120
|
-
- .document
|
119
|
+
- ".document"
|
120
|
+
- ".rspec"
|
121
121
|
- Gemfile
|
122
122
|
- LICENSE.txt
|
123
123
|
- README.md
|
@@ -129,34 +129,30 @@ files:
|
|
129
129
|
- lib/bio/appl/common.rb
|
130
130
|
- lib/bio/appl/signalp3.rb
|
131
131
|
- lib/bio/appl/signalp4.rb
|
132
|
-
-
|
133
|
-
-
|
132
|
+
- spec/bio-signalp_spec.rb
|
133
|
+
- spec/spec_helper.rb
|
134
134
|
homepage: http://github.com/wwood/bioruby-signalp
|
135
135
|
licenses:
|
136
136
|
- MIT
|
137
|
+
metadata: {}
|
137
138
|
post_install_message:
|
138
139
|
rdoc_options: []
|
139
140
|
require_paths:
|
140
141
|
- lib
|
141
142
|
required_ruby_version: !ruby/object:Gem::Requirement
|
142
|
-
none: false
|
143
143
|
requirements:
|
144
|
-
- -
|
144
|
+
- - ">="
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '0'
|
147
|
-
segments:
|
148
|
-
- 0
|
149
|
-
hash: -969867473
|
150
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
-
none: false
|
152
148
|
requirements:
|
153
|
-
- -
|
149
|
+
- - ">="
|
154
150
|
- !ruby/object:Gem::Version
|
155
151
|
version: '0'
|
156
152
|
requirements: []
|
157
153
|
rubyforge_project:
|
158
|
-
rubygems_version:
|
154
|
+
rubygems_version: 2.2.2
|
159
155
|
signing_key:
|
160
|
-
specification_version:
|
156
|
+
specification_version: 4
|
161
157
|
summary: A wrapper for the signal peptide prediction algorith SignalP
|
162
158
|
test_files: []
|
data/test/helper.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'test/unit'
|
11
|
-
require 'shoulda'
|
12
|
-
|
13
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
-
require 'bio-signalp'
|
16
|
-
|
17
|
-
class Test::Unit::TestCase
|
18
|
-
end
|
data/test/test_bio-signalp.rb
DELETED
@@ -1,159 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
require 'open3'
|
3
|
-
|
4
|
-
@@signalp3_path = File.join(ENV['HOME'],'bioinfo','signalp-3.0','signalp')
|
5
|
-
@@signalp4_path = File.join(ENV['HOME'],'bioinfo','signalp-4.0','signalp')
|
6
|
-
@@binaries = [
|
7
|
-
@@signalp3_path,
|
8
|
-
@@signalp4_path,
|
9
|
-
]
|
10
|
-
|
11
|
-
class TestBioSignalp < Test::Unit::TestCase
|
12
|
-
def setup
|
13
|
-
log_name = 'bio-signalp'
|
14
|
-
Bio::Log::CLI.logger('stderr')
|
15
|
-
#Bio::Log::CLI.configure(log_name) # when commented out no debug is printed out
|
16
|
-
end
|
17
|
-
|
18
|
-
should "positive control" do
|
19
|
-
# Known to have a signal peptide
|
20
|
-
acp_sequence = 'MKILLLCIIFLYYVNAFKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ'
|
21
|
-
|
22
|
-
assert_equal true, Bio::SignalP::Wrapper.new.calculate(acp_sequence).signal?
|
23
|
-
end
|
24
|
-
|
25
|
-
should "negative control" do
|
26
|
-
# Known to have a signal peptide
|
27
|
-
non_signal_sequence = 'KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK'
|
28
|
-
|
29
|
-
assert_equal false, Bio::SignalP::Wrapper.new.calculate(non_signal_sequence).signal?
|
30
|
-
end
|
31
|
-
|
32
|
-
should 'work with different SignalP versions, this test is specific to Ben\'s machines probably' do
|
33
|
-
binaries = {
|
34
|
-
@@binaries[0] => Bio::SignalP::Version3::Result,
|
35
|
-
@@binaries[1] => Bio::SignalP::Version4::Result,
|
36
|
-
}
|
37
|
-
binaries.each do |binary, clazz|
|
38
|
-
acp_sequence = 'MKILLLCIIFLYYVNAFKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ'
|
39
|
-
positive_result = Bio::SignalP::Wrapper.new.calculate(acp_sequence, :binary_path => binary)
|
40
|
-
assert_equal true, positive_result.signal?, binary
|
41
|
-
assert_kind_of clazz, positive_result, binary
|
42
|
-
assert_equal 17, positive_result.cleavage_site, binary
|
43
|
-
assert_equal 'FKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ',
|
44
|
-
positive_result.cleave(acp_sequence), binary
|
45
|
-
non_signal_sequence = 'KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK'
|
46
|
-
assert_equal false, Bio::SignalP::Wrapper.new.calculate(non_signal_sequence, :binary_path => binary).signal?, binary
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
should 'give different predictions for v3 and v4' do
|
51
|
-
different = <<EOF
|
52
|
-
MMKGMVEAAVKWMKAGLPLRILKLVLYAKVIDGDLQGHSLRRFSEVLKTFTELKERYEMQ
|
53
|
-
LLLPKAVPLEFDVYLSFSEEDKEVAKVIREKLSGAKDGVRIYDSSHQGINKDTVFQEDMY
|
54
|
-
SIMMKSARVVTVLSPNYLRNKACIEQYNIALCCNRRALRDMLAPIYVDSVEMMPTYMGLV
|
55
|
-
QYVDCRPHDPSKIGEACSQLTVSLSVTFHTELRVAEFDPLRYDVFLSYSHRDTEKANRFV
|
56
|
-
EMLQKLAPDLKLFFDVQELKTGKSWQRTLYHSIDGSRCMLALISEPYLKSAVCQEEFALA
|
57
|
-
QAKHCAKGKQHLQLISICLDDLDTIQPEFTHIPMVKGTPDVFDDMVKTVCPAVIQWLNGE
|
58
|
-
RVDQTETIKTLFDDQNITTLSADAEMEKFRQSHFQKEFGTQDSLISSKSPFPPKLSDILP
|
59
|
-
EPGKEVKDKRPKSASDCDLIFSYHSDDEKYVSFIVKILQLNAPSLKVKAVCSDENKLSAF
|
60
|
-
ERAHCIVPVLSPNYLESPECVEEFHIAIWRQRISNPEAGALLPICVHTLPQKPTYFHLVQ
|
61
|
-
SAVSMTDGIWAQLSGQHNFGLPQKIVDFSLAAGKTPLSQVDMLALYMAAYYILKRFAKAR
|
62
|
-
SCKEVEFSMKPALFNIMKLQEQIKQLTQPDYTDQLCKTLLEIHFNDIPDSWREGGHYLRP
|
63
|
-
KEPEDTTPAIMAPVEGASDSQTHNALNERTQDSSGKDKSEVQGEKAQRSASEGVSHDTVQ
|
64
|
-
QMDQDHDLKAAQGQDTAEGQDAAEGQDSEGGQDSEGGWDSDGGRDSVGNKTDAEKITGNH
|
65
|
-
GDEGGDGQVGGSEESKEKTEDEDEDISKRNRAPRSVACVCL
|
66
|
-
EOF
|
67
|
-
assert_equal true, Bio::SignalP::Wrapper.new.calculate(different, :binary_path => @@signalp3_path).signal?
|
68
|
-
assert_equal false, Bio::SignalP::Wrapper.new.calculate(different, :binary_path => @@signalp4_path).signal?
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
class TestSignalPScript < Test::Unit::TestCase
|
73
|
-
# Known to have a signal peptide
|
74
|
-
acp_sequence = 'MKILLLCIIFLYYVNAFKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ'
|
75
|
-
|
76
|
-
should "positive control" do
|
77
|
-
command = File.join(File.dirname(__FILE__),'..','bin','signalp.rb')
|
78
|
-
|
79
|
-
Open3.popen3(command) do |stdin, stdout, stderr|
|
80
|
-
stdin.puts '>positive'
|
81
|
-
stdin.puts acp_sequence
|
82
|
-
stdin.close
|
83
|
-
|
84
|
-
@result = stdout.readlines # convert to string?
|
85
|
-
@error = stderr.readlines
|
86
|
-
end
|
87
|
-
assert_equal [">positive\n", "FKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ\n"], @result
|
88
|
-
assert_equal [], @error
|
89
|
-
end
|
90
|
-
|
91
|
-
should "return gracefully when empty sequences are given" do
|
92
|
-
command = File.join(File.dirname(__FILE__),'..','bin','signalp.rb')
|
93
|
-
|
94
|
-
Open3.popen3(command) do |stdin, stdout, stderr|
|
95
|
-
stdin.puts '>positive'
|
96
|
-
stdin.puts acp_sequence
|
97
|
-
stdin.puts '>empty'
|
98
|
-
stdin.puts '>positive2'
|
99
|
-
stdin.puts acp_sequence
|
100
|
-
stdin.close
|
101
|
-
|
102
|
-
@result = stdout.readlines # convert to string?
|
103
|
-
@error = stderr.readlines
|
104
|
-
end
|
105
|
-
assert_equal [">positive\n", "FKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ\n",
|
106
|
-
">positive2\n", "FKNTQKDGVSLQILKKKRSNQVNFLNRKNDYNLIKNKNPSSSLKSTFDDIKKIISKQLSVEEDKIQMNSNFTKDLGADSLDLVELIMALEEKFNVTISDQDALKINTVQDAIDYIEKNNKQ\n"], @result
|
107
|
-
assert_equal ["Unexpected empty sequence detected, ignoring: empty\n"], @error
|
108
|
-
end
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
should 'give the right -s output for signalp 3' do
|
114
|
-
command = File.join(File.dirname(__FILE__),'..','bin','signalp.rb')
|
115
|
-
|
116
|
-
# This also tests the -b flag
|
117
|
-
command = "#{command} -b #{@@signalp3_path} -s"
|
118
|
-
Open3.popen3(command) do |stdin, stdout, stderr|
|
119
|
-
stdin.puts '>positive'
|
120
|
-
stdin.puts acp_sequence
|
121
|
-
stdin.close
|
122
|
-
|
123
|
-
@result = stdout.readlines # convert to string?
|
124
|
-
@error = stderr.readlines
|
125
|
-
end
|
126
|
-
|
127
|
-
expected = [
|
128
|
-
"Name\tNN Prediction\tHMM Prediction\n",
|
129
|
-
"positive\tT\tT\n"
|
130
|
-
]
|
131
|
-
assert_equal expected, @result
|
132
|
-
assert_equal [], @error
|
133
|
-
end
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
should 'give the right -s output for signalp 4' do
|
139
|
-
command = File.join(File.dirname(__FILE__),'..','bin','signalp.rb')
|
140
|
-
|
141
|
-
command = "#{command} -b #{@@signalp4_path} -s"
|
142
|
-
Open3.popen3(command) do |stdin, stdout, stderr|
|
143
|
-
stdin.puts '>positive'
|
144
|
-
stdin.puts acp_sequence
|
145
|
-
stdin.close
|
146
|
-
|
147
|
-
@result = stdout.readlines # convert to string?
|
148
|
-
@error = stderr.readlines
|
149
|
-
end
|
150
|
-
|
151
|
-
expected = [
|
152
|
-
"Name\tPredicted?\n",
|
153
|
-
"positive\tT\n"
|
154
|
-
]
|
155
|
-
assert_equal [], @error
|
156
|
-
assert_equal expected, @result
|
157
|
-
end
|
158
|
-
|
159
|
-
end
|