quorum 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.
- data/Gemfile.lock +58 -58
- data/HISTORY.md +4 -0
- data/README.rdoc +31 -31
- data/app/assets/javascripts/quorum/jobs.js +2 -2
- data/app/assets/javascripts/quorum/quorum.js +55 -55
- data/app/assets/stylesheets/quorum/application.css +23 -23
- data/app/assets/stylesheets/quorum/jquery-ui-1.8.16.custom.css +5 -5
- data/app/controllers/quorum/jobs_controller.rb +7 -7
- data/app/models/quorum/blastn_job.rb +1 -1
- data/app/models/quorum/blastp_job.rb +1 -1
- data/app/models/quorum/blastx_job.rb +1 -1
- data/app/models/quorum/job.rb +19 -19
- data/app/models/quorum/tblastn_job.rb +1 -1
- data/app/views/quorum/jobs/form/_blastn_form.html.erb +7 -7
- data/app/views/quorum/jobs/form/_blastp_form.html.erb +7 -7
- data/app/views/quorum/jobs/form/_blastx_form.html.erb +7 -7
- data/app/views/quorum/jobs/form/_tblastn_form.html.erb +7 -7
- data/app/views/quorum/jobs/new.html.erb +9 -9
- data/app/views/quorum/jobs/show.html.erb +7 -7
- data/app/views/quorum/jobs/templates/_blast_detailed_report_template.html.erb +3 -3
- data/app/views/quorum/jobs/templates/_blast_template.html.erb +4 -4
- data/lib/generators/quorum/install_generator.rb +3 -3
- data/lib/generators/quorum/views_generator.rb +7 -6
- data/lib/generators/templates/README +3 -3
- data/lib/generators/templates/blast.rb +7 -7
- data/lib/generators/templates/blast_db.rb +6 -6
- data/lib/generators/templates/fetch +3 -3
- data/lib/generators/templates/quorum_initializer.rb +1 -1
- data/lib/generators/templates/quorum_settings.yml +1 -1
- data/lib/generators/templates/search +8 -8
- data/lib/generators/templates/trollop.rb +4 -4
- data/lib/quorum/sequence.rb +6 -6
- data/lib/quorum/version.rb +1 -1
- data/lib/quorum.rb +1 -1
- data/lib/tasks/blastdb/build_blast_db.rb +7 -7
- data/lib/tasks/quorum_tasks.rake +6 -6
- data/lib/workers/quorum.rb +2 -2
- data/quorum.gemspec +1 -1
- data/spec/dummy/quorum/blastdb/test.nin +0 -0
- data/spec/dummy/quorum/blastdb/test.pin +0 -0
- data/spec/javascripts/fixtures/quorum_search_form.html +8 -8
- data/spec/javascripts/quorum_spec.js +12 -12
- data/spec/javascripts/string_spec.js +2 -2
- data/spec/models/blastn_job_report_spec.rb +3 -3
- data/spec/models/blastp_job_report_spec.rb +3 -3
- data/spec/models/blastx_job_report_spec.rb +3 -3
- data/spec/models/job_spec.rb +1 -1
- data/spec/models/tblastn_job_report_spec.rb +3 -3
- data/spec/quorum/quorum_sequence_spec.rb +1 -1
- data/spec/requests/jobs_spec.rb +12 -11
- data/spec/spec_helper.rb +1 -1
- data/spec/tasks/blastdb_rake_spec.rb +5 -5
- data/spec/templates/blast_spec.rb +5 -5
- data/vendor/assets/javascripts/jquery.autohint.js +16 -16
- data/vendor/assets/javascripts/jquery.tipsy.js +33 -33
- metadata +96 -31
data/lib/quorum/sequence.rb
CHANGED
@@ -13,7 +13,7 @@ module Quorum
|
|
13
13
|
# to ensure FASTA format.
|
14
14
|
#
|
15
15
|
def write_input_sequence_to_file(tmp_dir, hash, sequence)
|
16
|
-
seq = File.join(tmp_dir, hash + ".seq")
|
16
|
+
seq = File.join(tmp_dir, hash + ".seq")
|
17
17
|
File.open(seq, "w") do |f|
|
18
18
|
f << sequence
|
19
19
|
end
|
@@ -35,19 +35,19 @@ module Quorum
|
|
35
35
|
#
|
36
36
|
# Subtracting all AA single letter chars from NA single letter chars
|
37
37
|
# (including ALL ambiguity codes for each!) leaves us with
|
38
|
-
# EQILFP. If a sequence contains EQILFP, it's safe to call it an AA.
|
38
|
+
# EQILFP. If a sequence contains EQILFP, it's safe to call it an AA.
|
39
39
|
#
|
40
40
|
# See single letter char tables for more information:
|
41
41
|
# http://en.wikipedia.org/wiki/Proteinogenic_amino_acid
|
42
42
|
# http://www.chick.manchester.ac.uk/SiteSeer/IUPAC_codes.html
|
43
43
|
#
|
44
|
-
# If a sequence doesn't contain EQILFP, it could be either an AA
|
44
|
+
# If a sequence doesn't contain EQILFP, it could be either an AA
|
45
45
|
# or NA. To distinguish the two, count the number of As Ts Gs Cs
|
46
46
|
# and Ns, divide by the the length of the sequence and * 100.
|
47
47
|
#
|
48
48
|
# If the percentage of A, T, U, G, C or N is >= 15.0, call it a NA.
|
49
|
-
# 15% was choosen based on the data in the table
|
50
|
-
# "Relative proportions (%) of bases in DNA"
|
49
|
+
# 15% was choosen based on the data in the table
|
50
|
+
# "Relative proportions (%) of bases in DNA"
|
51
51
|
# (http://en.wikipedia.org/wiki/Chargaff's_rules) and the
|
52
52
|
# precentage of AAs found in peptides
|
53
53
|
# (http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2590925/).
|
@@ -75,7 +75,7 @@ module Quorum
|
|
75
75
|
|
76
76
|
n = (seq.count("N").to_f / len) * 100
|
77
77
|
|
78
|
-
if (a >= na_percent) || (t >= na_percent) || (u >= na_percent) ||
|
78
|
+
if (a >= na_percent) || (t >= na_percent) || (u >= na_percent) ||
|
79
79
|
(g >= na_percent) || (c >= na_percent) || (n >= na_percent)
|
80
80
|
type = "nucleic_acid"
|
81
81
|
else
|
data/lib/quorum/version.rb
CHANGED
data/lib/quorum.rb
CHANGED
@@ -12,7 +12,7 @@ module Quorum
|
|
12
12
|
## Supported Algorithms ##
|
13
13
|
BLAST_ALGORITHMS = ["blastn", "blastx", "blastp", "tblastn"]
|
14
14
|
|
15
|
-
mattr_accessor :blast_remote, :blast_ssh_host, :blast_ssh_user,
|
15
|
+
mattr_accessor :blast_remote, :blast_ssh_host, :blast_ssh_user,
|
16
16
|
:blast_ssh_options, :blast_bin, :blast_log_dir, :blast_tmp_dir,
|
17
17
|
:blast_db, :tblastn, :blastp, :blastn, :blastx, :blast_threads
|
18
18
|
|
@@ -56,14 +56,14 @@ module Quorum
|
|
56
56
|
Dir.mkdir(@log_dir) unless File.directory?(@log_dir)
|
57
57
|
rescue SystemCallError => e
|
58
58
|
@output.puts e.message
|
59
|
-
raise "Unable to make directory. " <<
|
59
|
+
raise "Unable to make directory. " <<
|
60
60
|
"Perhaps you forgot to execute the quorum initializer. \n\n" <<
|
61
61
|
"rails generate quorum:install"
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
65
|
#
|
66
|
-
# Create directories per tarball and return tarball file name
|
66
|
+
# Create directories per tarball and return tarball file name
|
67
67
|
# minus the file extension.
|
68
68
|
#
|
69
69
|
def create_file_name(file, base_dir)
|
@@ -120,7 +120,7 @@ module Quorum
|
|
120
120
|
contigs = File.join(d, "contigs.fa")
|
121
121
|
peptides = File.join(d, "peptides.fa")
|
122
122
|
|
123
|
-
found = false
|
123
|
+
found = false
|
124
124
|
|
125
125
|
if File.exists?(contigs) && File.readable?(contigs)
|
126
126
|
execute_makeblastdb("nucl", d, contigs)
|
@@ -164,7 +164,7 @@ module Quorum
|
|
164
164
|
end
|
165
165
|
|
166
166
|
unless VALID_TYPES.include?(@type)
|
167
|
-
raise "Unknown type: #{@type}. " <<
|
167
|
+
raise "Unknown type: #{@type}. " <<
|
168
168
|
"Please provide one: both, nucl or prot."
|
169
169
|
end
|
170
170
|
|
@@ -174,7 +174,7 @@ module Quorum
|
|
174
174
|
|
175
175
|
begin
|
176
176
|
@dir.split(':').each do |d|
|
177
|
-
unless File.directory?(d)
|
177
|
+
unless File.directory?(d)
|
178
178
|
raise "Directory not found: #{d}"
|
179
179
|
end
|
180
180
|
|
@@ -187,11 +187,11 @@ module Quorum
|
|
187
187
|
|
188
188
|
@data.each do |s|
|
189
189
|
if s =~ GZIP
|
190
|
-
files = `tar -tzf #{s}`
|
190
|
+
files = `tar -tzf #{s}`
|
191
191
|
flag = "z"
|
192
192
|
elsif s =~ BZIP
|
193
193
|
files = `tar -tjf #{s}`
|
194
|
-
flag = "j"
|
194
|
+
flag = "j"
|
195
195
|
end
|
196
196
|
files = files.split(/\n/)
|
197
197
|
files.each do |f|
|
data/lib/tasks/quorum_tasks.rake
CHANGED
@@ -8,10 +8,10 @@ require 'build_blast_db'
|
|
8
8
|
|
9
9
|
namespace :quorum do
|
10
10
|
namespace :blastdb do
|
11
|
-
desc "Build Blast Database (options: DIR=/path/to/data " <<
|
12
|
-
"{valid extensions: .tar.gz .tgz .tar.bz2 .tbz} " <<
|
13
|
-
"-- separate multiple directories with a colon. " <<
|
14
|
-
"TYPE={both}{prot}{nucl} -- defaults to both. " <<
|
11
|
+
desc "Build Blast Database (options: DIR=/path/to/data " <<
|
12
|
+
"{valid extensions: .tar.gz .tgz .tar.bz2 .tbz} " <<
|
13
|
+
"-- separate multiple directories with a colon. " <<
|
14
|
+
"TYPE={both}{prot}{nucl} -- defaults to both. " <<
|
15
15
|
"PROT_FILE_NAME= -- defaults to peptides.fa. " <<
|
16
16
|
"NUCL_FILE_NAME= -- defaults to contigs.fa. " <<
|
17
17
|
"REBUILD_DB= {true or false} -- remove existing blast database(s). " <<
|
@@ -39,9 +39,9 @@ namespace :quorum do
|
|
39
39
|
args[:nucl_file] = args[:nucl_file].downcase.strip
|
40
40
|
args[:nucl_file] = "NULL" if args[:type] == "prot"
|
41
41
|
args[:prot_file] = "NULL" if args[:type] == "nucl"
|
42
|
-
|
42
|
+
|
43
43
|
puts "Building your Blast database(s). This may take a while..."
|
44
|
-
|
44
|
+
|
45
45
|
build = Quorum::BuildBlastDB.new(args)
|
46
46
|
build.build_blast_db_data
|
47
47
|
end
|
data/lib/workers/quorum.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
module Workers
|
1
|
+
module Workers
|
2
2
|
class System
|
3
3
|
extend Resque::Plugins::Result
|
4
4
|
|
@@ -24,7 +24,7 @@ module Workers
|
|
24
24
|
Net::SSH.start(ssh_host, ssh_user, ssh_options) do |ssh|
|
25
25
|
ssh.open_channel do |ch|
|
26
26
|
ch.exec(cmd) do |ch, success|
|
27
|
-
unless success
|
27
|
+
unless success
|
28
28
|
Rails.logger.warn "Channel Net::SSH exec() failed. :'("
|
29
29
|
else
|
30
30
|
# Capture STDOUT from ch.exec()
|
data/quorum.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.summary = "Flexible bioinformatics search tool."
|
14
14
|
s.description = "Flexible bioinformatics search tool."
|
15
15
|
|
16
|
-
s.files = `git ls-files`.split(/\n/)
|
16
|
+
s.files = `git ls-files`.split(/\n/)
|
17
17
|
|
18
18
|
s.add_dependency "rails", "~> 3.1"
|
19
19
|
s.add_dependency "jquery-rails"
|
Binary file
|
Binary file
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<!-- blastn -->
|
13
13
|
|
14
14
|
<p>
|
15
|
-
<strong>blastn</strong>
|
15
|
+
<strong>blastn</strong>
|
16
16
|
<input name="job[blastn_job_attributes][queue]" type="hidden" value="0" /><input id="job_blastn_job_attributes_queue" name="job[blastn_job_attributes][queue]" type="checkbox" value="1" />
|
17
17
|
</p>
|
18
18
|
<div id="blastn" class="toggle">
|
@@ -57,7 +57,7 @@
|
|
57
57
|
<option value="taxus_x_media-20100126">Taxus x media transcripts, build 20100126</option>
|
58
58
|
<option value="taxus_x_media-20100406">Taxus x media transcripts, build 20100406</option>
|
59
59
|
<option value="taxus_x_media-20101112">Taxus x media transcripts, build 20101112</option>
|
60
|
-
<option value="medp_trire-20110120">Tripterygium regelii transcripts, build 20110120</option></select>
|
60
|
+
<option value="medp_trire-20110120">Tripterygium regelii transcripts, build 20110120</option></select>
|
61
61
|
</td>
|
62
62
|
<td>
|
63
63
|
<label for="job_blastn_job_attributes_filter">DUST</label>
|
@@ -124,7 +124,7 @@
|
|
124
124
|
<!-- blastx -->
|
125
125
|
|
126
126
|
<p>
|
127
|
-
<strong>blastx</strong>
|
127
|
+
<strong>blastx</strong>
|
128
128
|
<input name="job[blastx_job_attributes][queue]" type="hidden" value="0" /><input id="job_blastx_job_attributes_queue" name="job[blastx_job_attributes][queue]" type="checkbox" value="1" />
|
129
129
|
</p>
|
130
130
|
<div id="blastx" class="toggle">
|
@@ -167,7 +167,7 @@
|
|
167
167
|
<option value="podophyllum_peltatum-20101112">Podophyllum peltatum peptides, build 20101112</option>
|
168
168
|
<option value="taxus_x_media-20100406">Taxus x media peptides, build 20100406</option>
|
169
169
|
<option value="taxus_x_media-20101112">Taxus x media peptides, build 20101112</option>
|
170
|
-
<option value="medp_trire-20110120">Tripterygium regelii peptides, build 20110120</option></select>
|
170
|
+
<option value="medp_trire-20110120">Tripterygium regelii peptides, build 20110120</option></select>
|
171
171
|
</td>
|
172
172
|
<td>
|
173
173
|
<label for="job_blastx_job_attributes_filter">SEG</label>
|
@@ -234,7 +234,7 @@
|
|
234
234
|
<!-- tblastn -->
|
235
235
|
|
236
236
|
<p>
|
237
|
-
<strong>tblastn</strong>
|
237
|
+
<strong>tblastn</strong>
|
238
238
|
<input name="job[tblastn_job_attributes][queue]" type="hidden" value="0" /><input id="job_tblastn_job_attributes_queue" name="job[tblastn_job_attributes][queue]" type="checkbox" value="1" />
|
239
239
|
</p>
|
240
240
|
<div id="tblastn" class="toggle">
|
@@ -279,7 +279,7 @@
|
|
279
279
|
<option value="taxus_x_media-20100126">Taxus x media transcripts, build 20100126</option>
|
280
280
|
<option value="taxus_x_media-20100406">Taxus x media transcripts, build 20100406</option>
|
281
281
|
<option value="taxus_x_media-20101112">Taxus x media transcripts, build 20101112</option>
|
282
|
-
<option value="medp_trire-20110120">Tripterygium regelii transcripts, build 20110120</option></select>
|
282
|
+
<option value="medp_trire-20110120">Tripterygium regelii transcripts, build 20110120</option></select>
|
283
283
|
</td>
|
284
284
|
<td>
|
285
285
|
<label for="job_tblastn_job_attributes_filter">SEG</label>
|
@@ -346,7 +346,7 @@
|
|
346
346
|
<!-- blastp -->
|
347
347
|
|
348
348
|
<p>
|
349
|
-
<strong>blastp</strong>
|
349
|
+
<strong>blastp</strong>
|
350
350
|
<input name="job[blastp_job_attributes][queue]" type="hidden" value="0" /><input id="job_blastp_job_attributes_queue" name="job[blastp_job_attributes][queue]" type="checkbox" value="1" />
|
351
351
|
</p>
|
352
352
|
<div id="blastp" class="toggle">
|
@@ -389,7 +389,7 @@
|
|
389
389
|
<option value="podophyllum_peltatum-20101112">Podophyllum peltatum peptides, build 20101112</option>
|
390
390
|
<option value="taxus_x_media-20100406">Taxus x media peptides, build 20100406</option>
|
391
391
|
<option value="taxus_x_media-20101112">Taxus x media peptides, build 20101112</option>
|
392
|
-
<option value="medp_trire-20110120">Tripterygium regelii peptides, build 20110120</option></select>
|
392
|
+
<option value="medp_trire-20110120">Tripterygium regelii peptides, build 20110120</option></select>
|
393
393
|
</td>
|
394
394
|
<td>
|
395
395
|
<label for="job_blastp_job_attributes_filter">SEG</label>
|
@@ -4,50 +4,50 @@
|
|
4
4
|
|
5
5
|
describe("QUORUM", function() {
|
6
6
|
|
7
|
-
//
|
7
|
+
//
|
8
8
|
// Spec covers QUORUM.formatSequenceReport & QUORUM.addBaseTitleIndex.
|
9
9
|
//
|
10
10
|
// Blastn should increment qseq's title by 1 and hseq's title by 1.
|
11
11
|
//
|
12
12
|
it("formats blastn sequence report for Blast detailed report", function() {
|
13
13
|
var report = QUORUM.formatSequenceReport(
|
14
|
-
"ACGT", "|| |", "ACCT", 6, 9, 2, 8, "blastn"
|
14
|
+
"ACGT", "|| |", "ACCT", 6, 9, 2, 8, "blastn"
|
15
15
|
);
|
16
16
|
expect(report).toEqual("<p class='small'>Alignment (Mouse over for positions):</p><span class='small'><pre>\nqseq <a rel='quorum-tipsy' title=6>A</a><a rel='quorum-tipsy' title=7>C</a><a rel='quorum-tipsy' title=8>G</a><a rel='quorum-tipsy' title=9>T</a>\n || |\nhseq <a rel='quorum-tipsy' title=2>A</a><a rel='quorum-tipsy' title=3>C</a><a rel='quorum-tipsy' title=4>C</a><a rel='quorum-tipsy' title=5>T</a>\n\n</pre></span>");
|
17
17
|
});
|
18
18
|
|
19
|
-
//
|
19
|
+
//
|
20
20
|
// Spec covers QUORUM.formatSequenceReport & QUORUM.addBaseTitleIndex.
|
21
21
|
//
|
22
22
|
// Blastx should increment qseq's title by 3 and hseq's title by 1.
|
23
23
|
//
|
24
24
|
it("formats blastx sequence report for Blast detailed report", function() {
|
25
25
|
var report = QUORUM.formatSequenceReport(
|
26
|
-
"ACGT", "|| |", "ACCT", 6, 9, 2, 8, "blastx"
|
26
|
+
"ACGT", "|| |", "ACCT", 6, 9, 2, 8, "blastx"
|
27
27
|
);
|
28
28
|
expect(report).toEqual("<p class='small'>Alignment (Mouse over for positions):</p><span class='small'><pre>\nqseq <a rel='quorum-tipsy' title=6>A</a><a rel='quorum-tipsy' title=9>C</a><a rel='quorum-tipsy' title=12>G</a><a rel='quorum-tipsy' title=15>T</a>\n || |\nhseq <a rel='quorum-tipsy' title=2>A</a><a rel='quorum-tipsy' title=3>C</a><a rel='quorum-tipsy' title=4>C</a><a rel='quorum-tipsy' title=5>T</a>\n\n</pre></span>");
|
29
29
|
});
|
30
30
|
|
31
|
-
//
|
31
|
+
//
|
32
32
|
// Spec covers QUORUM.formatSequenceReport & QUORUM.addBaseTitleIndex.
|
33
33
|
//
|
34
34
|
// Tblastn should increment qseq's title by 1 and hseq's title by 3.
|
35
35
|
//
|
36
36
|
it("formats tblastn sequence report for Blast detailed report", function() {
|
37
37
|
var report = QUORUM.formatSequenceReport(
|
38
|
-
"ELVIS", "ELVIS", "ELVIS", 10, 14, 121, 136, "tblastn"
|
38
|
+
"ELVIS", "ELVIS", "ELVIS", 10, 14, 121, 136, "tblastn"
|
39
39
|
);
|
40
40
|
expect(report).toEqual("<p class='small'>Alignment (Mouse over for positions):</p><span class='small'><pre>\nqseq <a rel='quorum-tipsy' title=10>E</a><a rel='quorum-tipsy' title=11>L</a><a rel='quorum-tipsy' title=12>V</a><a rel='quorum-tipsy' title=13>I</a><a rel='quorum-tipsy' title=14>S</a>\n ELVIS\nhseq <a rel='quorum-tipsy' title=121>E</a><a rel='quorum-tipsy' title=124>L</a><a rel='quorum-tipsy' title=127>V</a><a rel='quorum-tipsy' title=130>I</a><a rel='quorum-tipsy' title=133>S</a>\n\n</pre></span>");
|
41
41
|
});
|
42
42
|
|
43
|
-
//
|
43
|
+
//
|
44
44
|
// Spec covers QUORUM.formatSequenceReport & QUORUM.addBaseTitleIndex.
|
45
45
|
//
|
46
46
|
// Blastp should increment qseq's title by 1 and hseq's title by 1.
|
47
47
|
//
|
48
48
|
it("formats blastx sequence report for Blast detailed report", function() {
|
49
49
|
var report = QUORUM.formatSequenceReport(
|
50
|
-
"ELVIS", "ELVIS", "ELVIS", 10, 14, 121, 125, "blastp"
|
50
|
+
"ELVIS", "ELVIS", "ELVIS", 10, 14, 121, 125, "blastp"
|
51
51
|
);
|
52
52
|
expect(report).toEqual("<p class='small'>Alignment (Mouse over for positions):</p><span class='small'><pre>\nqseq <a rel='quorum-tipsy' title=10>E</a><a rel='quorum-tipsy' title=11>L</a><a rel='quorum-tipsy' title=12>V</a><a rel='quorum-tipsy' title=13>I</a><a rel='quorum-tipsy' title=14>S</a>\n ELVIS\nhseq <a rel='quorum-tipsy' title=121>E</a><a rel='quorum-tipsy' title=122>L</a><a rel='quorum-tipsy' title=123>V</a><a rel='quorum-tipsy' title=124>I</a><a rel='quorum-tipsy' title=125>S</a>\n\n</pre></span>");
|
53
53
|
});
|
@@ -65,19 +65,19 @@ describe("QUORUM", function() {
|
|
65
65
|
|
66
66
|
it("prints hit strand as forward / forward for + / + intergers", function() {
|
67
67
|
expect(QUORUM.formatStrand(1, 1)).toEqual("forward / forward");
|
68
|
-
});
|
68
|
+
});
|
69
69
|
|
70
70
|
it("prints hit strand as forward / reverse for + / - integers", function() {
|
71
71
|
expect(QUORUM.formatStrand(1, -1)).toEqual("forward / reverse");
|
72
|
-
});
|
72
|
+
});
|
73
73
|
|
74
74
|
it("prints hit strand as reverse / forward for - / + integers", function() {
|
75
75
|
expect(QUORUM.formatStrand(-1, 1)).toEqual("reverse / forward");
|
76
|
-
});
|
76
|
+
});
|
77
77
|
|
78
78
|
it("prints hit strand as reverse / reverse for - / - integers", function() {
|
79
79
|
expect(QUORUM.formatStrand(-1, -1)).toEqual("reverse / reverse");
|
80
|
-
});
|
80
|
+
});
|
81
81
|
|
82
82
|
//
|
83
83
|
// Only print links to HSPs whers data id != focus.
|
@@ -2,12 +2,12 @@ describe("String", function() {
|
|
2
2
|
|
3
3
|
it("truncates a string to length n", function() {
|
4
4
|
var str = "this is a long string.";
|
5
|
-
expect(str.trunc(5)).toEqual("this...");
|
5
|
+
expect(str.trunc(5)).toEqual("this...");
|
6
6
|
});
|
7
7
|
|
8
8
|
it("truncates a string to length n", function() {
|
9
9
|
var str = "this is a long string.";
|
10
|
-
expect(str.trunc(15)).toEqual("this is a long...");
|
10
|
+
expect(str.trunc(15)).toEqual("this is a long...");
|
11
11
|
});
|
12
12
|
|
13
13
|
it("doesn't truncate string when length is less than n", function() {
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Quorum::BlastnJobReport do
|
4
|
-
|
4
|
+
|
5
5
|
it "should respond to default_order" do
|
6
|
-
Quorum::BlastnJobReport.methods.should include(:default_order)
|
6
|
+
Quorum::BlastnJobReport.methods.should include(:default_order)
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should respond to by_query" do
|
10
|
-
Quorum::BlastnJobReport.methods.should include(:by_query)
|
10
|
+
Quorum::BlastnJobReport.methods.should include(:by_query)
|
11
11
|
end
|
12
12
|
|
13
13
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Quorum::BlastpJobReport do
|
4
|
-
|
4
|
+
|
5
5
|
it "should respond to default_order" do
|
6
|
-
Quorum::BlastpJobReport.methods.should include(:default_order)
|
6
|
+
Quorum::BlastpJobReport.methods.should include(:default_order)
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should respond to by_query" do
|
10
|
-
Quorum::BlastpJobReport.methods.should include(:by_query)
|
10
|
+
Quorum::BlastpJobReport.methods.should include(:by_query)
|
11
11
|
end
|
12
12
|
|
13
13
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Quorum::BlastxJobReport do
|
4
|
-
|
4
|
+
|
5
5
|
it "should respond to default_order" do
|
6
|
-
Quorum::BlastxJobReport.methods.should include(:default_order)
|
6
|
+
Quorum::BlastxJobReport.methods.should include(:default_order)
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should respond to default_order" do
|
10
|
-
Quorum::BlastxJobReport.methods.should include(:by_query)
|
10
|
+
Quorum::BlastxJobReport.methods.should include(:by_query)
|
11
11
|
end
|
12
12
|
|
13
13
|
end
|
data/spec/models/job_spec.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Quorum::TblastnJobReport do
|
4
|
-
|
4
|
+
|
5
5
|
it "should respond to default_order" do
|
6
|
-
Quorum::TblastnJobReport.methods.should include(:default_order)
|
6
|
+
Quorum::TblastnJobReport.methods.should include(:default_order)
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should respond to default_order" do
|
10
|
-
Quorum::TblastnJobReport.methods.should include(:by_query)
|
10
|
+
Quorum::TblastnJobReport.methods.should include(:by_query)
|
11
11
|
end
|
12
12
|
|
13
13
|
end
|
data/spec/requests/jobs_spec.rb
CHANGED
@@ -16,7 +16,7 @@ describe "Jobs" do
|
|
16
16
|
fill_in "job_sequence", :with => ""
|
17
17
|
click_button "Submit"
|
18
18
|
|
19
|
-
page.should have_content("Please enter your sequence(s) in Plain Text " <<
|
19
|
+
page.should have_content("Please enter your sequence(s) in Plain Text " <<
|
20
20
|
"as FASTA.")
|
21
21
|
end
|
22
22
|
end
|
@@ -29,7 +29,7 @@ describe "Jobs" do
|
|
29
29
|
word_file = File.expand_path("../../data/seqs.docx", __FILE__)
|
30
30
|
attach_file "job_sequence_file", word_file
|
31
31
|
click_button "Submit"
|
32
|
-
page.should have_content("Please enter your sequence(s) in Plain Text " <<
|
32
|
+
page.should have_content("Please enter your sequence(s) in Plain Text " <<
|
33
33
|
"as FASTA.")
|
34
34
|
end
|
35
35
|
end
|
@@ -42,14 +42,15 @@ describe "Jobs" do
|
|
42
42
|
file = File.expand_path("../../data/seqs_not_fa.txt", __FILE__)
|
43
43
|
attach_file "job_sequence_file", file
|
44
44
|
click_button "Submit"
|
45
|
-
page.should have_content("Please enter your sequence(s) in Plain Text " <<
|
45
|
+
page.should have_content("Please enter your sequence(s) in Plain Text " <<
|
46
46
|
"as FASTA.")
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
context "javascript", @javascript do
|
51
51
|
before(:all) do
|
52
|
-
Capybara.current_driver
|
52
|
+
Capybara.current_driver = :selenium
|
53
|
+
Capybara.default_wait_time = 5
|
53
54
|
end
|
54
55
|
before(:each) do
|
55
56
|
ResqueSpec.reset!
|
@@ -65,7 +66,7 @@ describe "Jobs" do
|
|
65
66
|
|
66
67
|
# Blastn
|
67
68
|
check "job_blastn_job_attributes_queue"
|
68
|
-
select "tmp", :from => "job_blastn_job_attributes_blast_dbs"
|
69
|
+
select "tmp", :from => "job_blastn_job_attributes_blast_dbs"
|
69
70
|
check "job_blastn_job_attributes_filter"
|
70
71
|
fill_in "job_blastn_job_attributes_expectation", :with => "5e-20"
|
71
72
|
fill_in "job_blastn_job_attributes_min_bit_score", :with => "0"
|
@@ -75,7 +76,7 @@ describe "Jobs" do
|
|
75
76
|
|
76
77
|
# Blastx
|
77
78
|
check "job_blastx_job_attributes_queue"
|
78
|
-
select "tmp", :from => "job_blastx_job_attributes_blast_dbs"
|
79
|
+
select "tmp", :from => "job_blastx_job_attributes_blast_dbs"
|
79
80
|
check "job_blastx_job_attributes_filter"
|
80
81
|
fill_in "job_blastx_job_attributes_expectation", :with => "5e-20"
|
81
82
|
fill_in "job_blastx_job_attributes_min_bit_score", :with => "0"
|
@@ -85,7 +86,7 @@ describe "Jobs" do
|
|
85
86
|
|
86
87
|
# Tblastn
|
87
88
|
check "job_tblastn_job_attributes_queue"
|
88
|
-
select "tmp", :from => "job_tblastn_job_attributes_blast_dbs"
|
89
|
+
select "tmp", :from => "job_tblastn_job_attributes_blast_dbs"
|
89
90
|
check "job_tblastn_job_attributes_filter"
|
90
91
|
fill_in "job_tblastn_job_attributes_expectation", :with => "5e-20"
|
91
92
|
fill_in "job_tblastn_job_attributes_min_bit_score", :with => "0"
|
@@ -95,7 +96,7 @@ describe "Jobs" do
|
|
95
96
|
|
96
97
|
# Blastp
|
97
98
|
check "job_blastp_job_attributes_queue"
|
98
|
-
select "tmp", :from => "job_blastp_job_attributes_blast_dbs"
|
99
|
+
select "tmp", :from => "job_blastp_job_attributes_blast_dbs"
|
99
100
|
check "job_blastp_job_attributes_filter"
|
100
101
|
fill_in "job_blastp_job_attributes_expectation", :with => "5e-20"
|
101
102
|
fill_in "job_blastp_job_attributes_min_bit_score", :with => "0"
|
@@ -105,13 +106,13 @@ describe "Jobs" do
|
|
105
106
|
|
106
107
|
click_button "Submit"
|
107
108
|
|
108
|
-
page.should have_content("Search Results")
|
109
|
+
page.should have_content("Search Results")
|
109
110
|
|
110
111
|
click_link "Blastx"
|
111
|
-
page.should have_content("Your search returned 0 hits.")
|
112
|
+
page.should have_content("Your search returned 0 hits.")
|
112
113
|
|
113
114
|
click_link "Tblastn"
|
114
|
-
page.should have_content("Your search returned 0 hits.")
|
115
|
+
page.should have_content("Your search returned 0 hits.")
|
115
116
|
|
116
117
|
## Interact with the Blast results. ##
|
117
118
|
click_link "Blastn"
|
data/spec/spec_helper.rb
CHANGED
@@ -23,12 +23,12 @@ describe "blastdb rake tasks" do
|
|
23
23
|
)
|
24
24
|
}
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
it "raises exception without DIR argument" do
|
28
28
|
expect {
|
29
29
|
Quorum::BuildBlastDB.new({}).build_blast_db_data
|
30
30
|
}.to raise_error(
|
31
|
-
RuntimeError,
|
31
|
+
RuntimeError,
|
32
32
|
'DIR must be set to continue. Execute `rake -D` for more information.'
|
33
33
|
)
|
34
34
|
end
|
@@ -38,7 +38,7 @@ describe "blastdb rake tasks" do
|
|
38
38
|
expect {
|
39
39
|
Quorum::BuildBlastDB.new(@args).build_blast_db_data
|
40
40
|
}.to raise_error(
|
41
|
-
RuntimeError,
|
41
|
+
RuntimeError,
|
42
42
|
"Unknown type: #{@args[:type]}. Please provide one: both, nucl or prot."
|
43
43
|
)
|
44
44
|
end
|
@@ -80,7 +80,7 @@ describe "blastdb rake tasks" do
|
|
80
80
|
@build = Quorum::BuildBlastDB.new(@args, output)
|
81
81
|
|
82
82
|
expect {
|
83
|
-
@build.build_blast_db_data
|
83
|
+
@build.build_blast_db_data
|
84
84
|
}.to_not raise_error
|
85
85
|
|
86
86
|
File.directory?(@args[:blastdb_dir]).should be_true
|
@@ -95,7 +95,7 @@ describe "blastdb rake tasks" do
|
|
95
95
|
|
96
96
|
@args[:empty] = false
|
97
97
|
@build = Quorum::BuildBlastDB.new(@args, output)
|
98
|
-
|
98
|
+
|
99
99
|
expect {
|
100
100
|
@build.build_blast_db_data
|
101
101
|
}.to_not raise_error
|
@@ -42,7 +42,7 @@ describe "Quorum::SearchTools::Blast" do
|
|
42
42
|
@job.blastp_job.queue = true
|
43
43
|
@job.blastp_job.blast_dbs = ["test"]
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
it "executes blastn on a given dataset" do
|
47
47
|
@job.stub(:queue_workers)
|
48
48
|
@job.save!
|
@@ -57,7 +57,7 @@ describe "Quorum::SearchTools::Blast" do
|
|
57
57
|
Dir.glob(
|
58
58
|
File.join(@args[:tmp_directory], "*")
|
59
59
|
).length.should be == 0
|
60
|
-
end
|
60
|
+
end
|
61
61
|
|
62
62
|
it "executes blastx on a given dataset" do
|
63
63
|
@job.stub(:queue_workers)
|
@@ -74,7 +74,7 @@ describe "Quorum::SearchTools::Blast" do
|
|
74
74
|
Dir.glob(
|
75
75
|
File.join(@args[:tmp_directory], "*")
|
76
76
|
).length.should be == 0
|
77
|
-
end
|
77
|
+
end
|
78
78
|
|
79
79
|
it "executes tblastn on a given dataset" do
|
80
80
|
@job.stub(:queue_workers)
|
@@ -91,7 +91,7 @@ describe "Quorum::SearchTools::Blast" do
|
|
91
91
|
Dir.glob(
|
92
92
|
File.join(@args[:tmp_directory], "*")
|
93
93
|
).length.should be == 0
|
94
|
-
end
|
94
|
+
end
|
95
95
|
|
96
96
|
it "executes blastp on a given dataset" do
|
97
97
|
@job.stub(:queue_workers)
|
@@ -108,7 +108,7 @@ describe "Quorum::SearchTools::Blast" do
|
|
108
108
|
Dir.glob(
|
109
109
|
File.join(@args[:tmp_directory], "*")
|
110
110
|
).length.should be == 0
|
111
|
-
end
|
111
|
+
end
|
112
112
|
|
113
113
|
end
|
114
114
|
end
|