quorum 0.6.0 → 0.7.0

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.
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