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 CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- quorum (0.6.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.2)
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.1)
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
@@ -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
  #
@@ -318,12 +318,7 @@ module Quorum
318
318
  @tmp_files
319
319
  )
320
320
  end
321
- @logger.log(
322
- "NCBI Blast",
323
- "#{@algorithm} report empty.",
324
- 0,
325
- @tmp_files
326
- )
321
+ @logger.log("NCBI Blast", "#{@algorithm} report empty.")
327
322
  end
328
323
 
329
324
  #
@@ -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 do |v|
14
- if v.kind_of?(String)
15
- v.to_s.gsub!('%{RAILS_ROOT}', ::Rails.root.to_s)
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:
@@ -1,3 +1,3 @@
1
1
  module Quorum
2
- VERSION = "0.6.0"
2
+ VERSION = "0.7.0"
3
3
  end
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 :blast_remote, :blast_ssh_host, :blast_ssh_user,
17
- :blast_ssh_options, :blast_bin, :blast_log_dir, :blast_tmp_dir,
18
- :blast_db, :tblastn, :blastp, :blastn, :blastx, :blast_threads
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:
@@ -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__)
@@ -149,7 +149,7 @@ describe "Quorum::SearchTools::Blast" do
149
149
  blast = Quorum::SearchTools::Blast.new(@args)
150
150
  expect {
151
151
  blast.execute_blast
152
- }.to raise_error
152
+ }.to_not raise_error
153
153
 
154
154
  Dir.glob(
155
155
  File.join(@args[:tmp_directory], "*")
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.6.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-09-21 00:00:00.000000000 Z
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: -238619027488195291
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: -238619027488195291
414
+ hash: 376462079150931508
415
415
  requirements: []
416
416
  rubyforge_project:
417
417
  rubygems_version: 1.8.24