quorum 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +3 -3
- data/HISTORY.md +6 -0
- data/app/models/quorum/job.rb +16 -1
- data/lib/generators/templates/blast.rb +1 -6
- data/lib/generators/templates/quorum_initializer.rb +12 -4
- data/lib/generators/templates/quorum_settings.yml +6 -0
- data/lib/quorum/version.rb +1 -1
- data/lib/quorum.rb +12 -4
- data/spec/config/quorum_settings.yml +3 -0
- data/spec/models/job_spec.rb +16 -0
- data/spec/templates/blast_spec.rb +1 -1
- metadata +4 -4
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
quorum (0.
|
4
|
+
quorum (0.7.0)
|
5
5
|
bio-blastxmlparser (~> 1.1.0)
|
6
6
|
jquery-rails
|
7
7
|
net-ssh (~> 2.3.0)
|
@@ -69,7 +69,7 @@ GEM
|
|
69
69
|
selenium-webdriver (>= 0.1.3)
|
70
70
|
jasmine-core (1.2.0)
|
71
71
|
journey (1.0.4)
|
72
|
-
jquery-rails (2.1.
|
72
|
+
jquery-rails (2.1.3)
|
73
73
|
railties (>= 3.1.0, < 5.0)
|
74
74
|
thor (~> 0.14)
|
75
75
|
json (1.7.5)
|
@@ -93,7 +93,7 @@ GEM
|
|
93
93
|
rack
|
94
94
|
rack-ssl (1.3.2)
|
95
95
|
rack
|
96
|
-
rack-test (0.6.
|
96
|
+
rack-test (0.6.2)
|
97
97
|
rack (>= 1.0)
|
98
98
|
rails (3.2.8)
|
99
99
|
actionmailer (= 3.2.8)
|
data/HISTORY.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## 0.7.0 (2012-10-02)
|
2
|
+
|
3
|
+
* Fixed empty blast report bug. https://github.com/ncgr/quorum/issues/6
|
4
|
+
* Added max_sequence_size to quorum_settings.yml to allow user to specify
|
5
|
+
max input sequence size in bytes. Defaults to 50 KB.
|
6
|
+
|
1
7
|
## 0.6.0 (2012-09-21)
|
2
8
|
|
3
9
|
* Renamed blast report max_score to max_target_seqs to match NCBI Blast
|
data/app/models/quorum/job.rb
CHANGED
@@ -31,7 +31,7 @@ module Quorum
|
|
31
31
|
|
32
32
|
validates_associated :blastn_job, :blastx_job, :tblastn_job, :blastp_job
|
33
33
|
|
34
|
-
validate :filter_input_sequences, :algorithm_selected
|
34
|
+
validate :filter_input_sequences, :algorithm_selected, :sequence_size
|
35
35
|
|
36
36
|
#
|
37
37
|
# Fetch Blast hit_id, hit_display_id, queue Resque worker and
|
@@ -136,6 +136,21 @@ module Quorum
|
|
136
136
|
end
|
137
137
|
end
|
138
138
|
|
139
|
+
#
|
140
|
+
# Validate input sequence size.
|
141
|
+
#
|
142
|
+
# Defaults to 50 KB. See lib/quorum.rb.
|
143
|
+
#
|
144
|
+
def sequence_size
|
145
|
+
if self.sequence.size > Quorum.max_sequence_size
|
146
|
+
errors.add(
|
147
|
+
:sequence,
|
148
|
+
" - Input sequence size too large. " <<
|
149
|
+
"Max size: #{Quorum.max_sequence_size / 1024} KB"
|
150
|
+
)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
139
154
|
#
|
140
155
|
# Queue Resque workers.
|
141
156
|
#
|
@@ -10,13 +10,22 @@ settings = YAML.load_file(
|
|
10
10
|
|
11
11
|
## Sub %{RAILS_ROOT} ##
|
12
12
|
settings.keys.each do |k|
|
13
|
-
settings[k.to_s].each_value
|
14
|
-
|
15
|
-
v.
|
13
|
+
if settings[k.to_s].respond_to?(:each_value)
|
14
|
+
settings[k.to_s].each_value do |v|
|
15
|
+
if v.kind_of?(String)
|
16
|
+
v.to_s.gsub!('%{RAILS_ROOT}', ::Rails.root.to_s)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
else
|
20
|
+
if settings[k.to_s].kind_of?(String)
|
21
|
+
settings[k.to_s].gsub!('%{RAILS_ROOT}', ::Rails.root.to_s)
|
16
22
|
end
|
17
23
|
end
|
18
24
|
end
|
19
25
|
|
26
|
+
## Quorum General Settings ##
|
27
|
+
Quorum.max_sequence_size = settings['max_sequence_size']
|
28
|
+
|
20
29
|
blast = settings['blast']
|
21
30
|
|
22
31
|
## Quorum Blast Settings ##
|
@@ -33,4 +42,3 @@ Quorum.blastp = blast['blastp']
|
|
33
42
|
Quorum.blastn = blast['blastn']
|
34
43
|
Quorum.blastx = blast['blastx']
|
35
44
|
Quorum.blast_threads = blast['blast_threads']
|
36
|
-
|
@@ -3,6 +3,9 @@
|
|
3
3
|
# ==> General
|
4
4
|
# Quorum initializer safely substitutes %{RAILS_ROOT} with ::Rails.root.to_s.
|
5
5
|
#
|
6
|
+
# max_sequence_size: Max input sequence size in bytes.
|
7
|
+
# Defaults to 51200 (50 KB).
|
8
|
+
#
|
6
9
|
# ==> NCBI BLAST+ Settings
|
7
10
|
# blast:
|
8
11
|
# remote: true to execute script on remote machine via
|
@@ -64,6 +67,7 @@
|
|
64
67
|
# Defaults to 1.
|
65
68
|
|
66
69
|
development:
|
70
|
+
max_sequence_size:
|
67
71
|
blast:
|
68
72
|
remote: false
|
69
73
|
ssh_host:
|
@@ -95,6 +99,7 @@ development:
|
|
95
99
|
blast_threads:
|
96
100
|
|
97
101
|
test:
|
102
|
+
max_sequence_size:
|
98
103
|
blast:
|
99
104
|
remote: false
|
100
105
|
ssh_host:
|
@@ -126,6 +131,7 @@ test:
|
|
126
131
|
blast_threads:
|
127
132
|
|
128
133
|
production:
|
134
|
+
max_sequence_size:
|
129
135
|
blast:
|
130
136
|
remote: true
|
131
137
|
ssh_host:
|
data/lib/quorum/version.rb
CHANGED
data/lib/quorum.rb
CHANGED
@@ -11,17 +11,25 @@ require "workers/quorum"
|
|
11
11
|
module Quorum
|
12
12
|
|
13
13
|
## Supported Algorithms ##
|
14
|
-
BLAST_ALGORITHMS = ["blastn", "blastx", "blastp", "tblastn"]
|
14
|
+
BLAST_ALGORITHMS = ["blastn", "blastx", "blastp", "tblastn"].freeze
|
15
15
|
|
16
|
-
mattr_accessor :
|
17
|
-
|
18
|
-
|
16
|
+
mattr_accessor :max_sequence_size, :blast_remote, :blast_ssh_host,
|
17
|
+
:blast_ssh_user, :blast_ssh_options, :blast_bin,
|
18
|
+
:blast_log_dir, :blast_tmp_dir, :blast_db, :tblastn,
|
19
|
+
:blastp, :blastn, :blastx, :blast_threads
|
19
20
|
|
20
21
|
## Deprecated ##
|
21
22
|
mattr_accessor :blast_script
|
22
23
|
|
23
24
|
class << self
|
24
25
|
|
26
|
+
## General ##
|
27
|
+
|
28
|
+
# Max input sequence size.
|
29
|
+
def max_sequence_size
|
30
|
+
@@max_sequence_size || 50.kilobytes
|
31
|
+
end
|
32
|
+
|
25
33
|
## Blast ##
|
26
34
|
|
27
35
|
# Execute remotely.
|
@@ -1,4 +1,5 @@
|
|
1
1
|
development:
|
2
|
+
max_sequence_size:
|
2
3
|
blast:
|
3
4
|
remote: false
|
4
5
|
ssh_host:
|
@@ -19,6 +20,7 @@ development:
|
|
19
20
|
blast_threads: 4
|
20
21
|
|
21
22
|
test:
|
23
|
+
max_sequence_size:
|
22
24
|
blast:
|
23
25
|
remote: false
|
24
26
|
ssh_host:
|
@@ -39,6 +41,7 @@ test:
|
|
39
41
|
blast_threads:
|
40
42
|
|
41
43
|
production:
|
44
|
+
max_sequence_size:
|
42
45
|
blast:
|
43
46
|
remote: true
|
44
47
|
ssh_host:
|
data/spec/models/job_spec.rb
CHANGED
@@ -12,6 +12,22 @@ describe Quorum::Job do
|
|
12
12
|
@job.should have(1).error_on(:algorithm)
|
13
13
|
end
|
14
14
|
|
15
|
+
it "fails validation when input sequence size is too large" do
|
16
|
+
@job.sequence = ">header\n" << "a" * 51200
|
17
|
+
@job.build_blastn_job
|
18
|
+
@job.blastn_job.queue = true
|
19
|
+
@job.should have(1).errors_on(:sequence)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "fails validation with invalid sequence data" do
|
23
|
+
@job.sequence = File.open(
|
24
|
+
File.expand_path("../../data/seqs_not_fa.txt", __FILE__)
|
25
|
+
).read
|
26
|
+
@job.build_blastn_job
|
27
|
+
@job.blastn_job.queue = true
|
28
|
+
@job.should have(1).errors_on(:sequence)
|
29
|
+
end
|
30
|
+
|
15
31
|
it "passes validation with algorithm and valid sequence data" do
|
16
32
|
@job.sequence = File.open(
|
17
33
|
File.expand_path("../../data/nucl_prot_seqs.txt", __FILE__)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quorum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -402,7 +402,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
402
402
|
version: '0'
|
403
403
|
segments:
|
404
404
|
- 0
|
405
|
-
hash:
|
405
|
+
hash: 376462079150931508
|
406
406
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
407
407
|
none: false
|
408
408
|
requirements:
|
@@ -411,7 +411,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
411
411
|
version: '0'
|
412
412
|
segments:
|
413
413
|
- 0
|
414
|
-
hash:
|
414
|
+
hash: 376462079150931508
|
415
415
|
requirements: []
|
416
416
|
rubyforge_project:
|
417
417
|
rubygems_version: 1.8.24
|