quorum 0.7.1 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/.travis.yml +5 -1
- data/Gemfile +4 -2
- data/Gemfile.lock +68 -47
- data/HISTORY.md +9 -0
- data/README.rdoc +1 -1
- data/app/assets/javascripts/quorum/quorum.js +4 -4
- data/app/controllers/quorum/application_controller.rb +1 -0
- data/app/controllers/quorum/jobs_controller.rb +65 -80
- data/app/models/quorum/blastn_job.rb +1 -1
- data/app/models/quorum/blastn_job_report.rb +4 -1
- data/app/models/quorum/blastp_job.rb +1 -1
- data/app/models/quorum/blastp_job_report.rb +4 -1
- data/app/models/quorum/blastx_job.rb +1 -1
- data/app/models/quorum/blastx_job_report.rb +4 -1
- data/app/models/quorum/job.rb +64 -56
- data/app/models/quorum/job_data.rb +22 -0
- data/app/models/quorum/job_fetch_data.rb +11 -0
- data/app/models/quorum/job_queue_observer.rb +11 -0
- data/app/models/quorum/job_queue_service.rb +66 -0
- data/app/models/quorum/job_report_searcher.rb +36 -0
- data/app/models/quorum/job_serializer.rb +96 -0
- data/app/models/quorum/tblastn_job.rb +1 -1
- data/app/models/quorum/tblastn_job_report.rb +4 -1
- data/app/views/quorum/jobs/show.html.erb +3 -0
- data/app/views/quorum/jobs/templates/_blast_detailed_report_template.html.erb +1 -1
- data/app/views/quorum/jobs/templates/_blast_template.html.erb +3 -1
- data/config/initializers/mime_types.rb +2 -0
- data/config/routes.rb +3 -3
- data/db/migrate/20120809155712_add_percent_identity_to_blast_reports.rb +8 -0
- data/db/migrate/20120921182416_add_mismatch_to_blast_reports.rb +8 -0
- data/lib/generators/templates/blast.rb +8 -1
- data/lib/quorum/engine.rb +2 -0
- data/lib/quorum/sequence.rb +35 -0
- data/lib/quorum/version.rb +1 -1
- data/lib/quorum.rb +3 -10
- data/lib/tasks/quorum_blastdb_build.rake +3 -1
- data/lib/workers/system.rb +3 -1
- data/quorum.gemspec +1 -0
- data/spec/dummy/config/environment.rb +18 -5
- data/spec/javascripts/helpers/jasmine-jquery.js +2 -2
- data/spec/javascripts/{jobs_spec.js → suites/jobs_spec.js} +0 -0
- data/spec/javascripts/{quorum_spec.js → suites/quorum_spec.js} +0 -0
- data/spec/javascripts/{string_spec.js → suites/string_spec.js} +0 -0
- data/spec/lib/tasks/travis.rake +9 -4
- data/spec/models/blastn_job_report_spec.rb +7 -3
- data/spec/models/blastp_job_report_spec.rb +8 -3
- data/spec/models/blastx_job_report_spec.rb +8 -3
- data/spec/models/job_data_spec.rb +21 -0
- data/spec/models/job_fetch_data_spec.rb +25 -0
- data/spec/models/job_queue_observer_spec.rb +18 -0
- data/spec/models/job_queue_service_spec.rb +49 -0
- data/spec/models/job_report_searcher_spec.rb +47 -0
- data/spec/models/job_serializer_spec.rb +60 -0
- data/spec/models/job_spec.rb +1 -16
- data/spec/models/tblastn_job_report_spec.rb +8 -3
- data/spec/quorum/quorum_sequence_spec.rb +2 -0
- data/spec/requests/jobs_spec.rb +16 -7
- data/spec/spec_helper.rb +2 -0
- metadata +38 -8
- data/spec/dummy/app/models/blast.rb +0 -2
@@ -81,7 +81,7 @@ jasmine.Fixtures.prototype.createContainer_ = function(html) {
|
|
81
81
|
jQuery('body').append(container);
|
82
82
|
};
|
83
83
|
|
84
|
-
jasmine.Fixtures.prototype.getFixtureHtml_ = function(url) {
|
84
|
+
jasmine.Fixtures.prototype.getFixtureHtml_ = function(url) {
|
85
85
|
if (typeof this.fixturesCache_[url] == 'undefined') {
|
86
86
|
this.loadFixtureIntoCache_(url);
|
87
87
|
}
|
@@ -223,7 +223,7 @@ jasmine.JQuery.matchersClass = {};
|
|
223
223
|
var events = this.actual.data("events");
|
224
224
|
return events && events[eventName].length > 0;
|
225
225
|
},
|
226
|
-
|
226
|
+
|
227
227
|
// tests the existence of a specific event binding + handler
|
228
228
|
toHandleWith: function(eventName, eventHandler) {
|
229
229
|
var stack = this.actual.data("events")[eventName];
|
File without changes
|
File without changes
|
File without changes
|
data/spec/lib/tasks/travis.rake
CHANGED
@@ -95,10 +95,15 @@ namespace :travis do
|
|
95
95
|
task :create_db_config do
|
96
96
|
config = File.expand_path("../../../dummy/config", __FILE__)
|
97
97
|
File.open(File.join(config, "database.yml"), "w+") do |file|
|
98
|
-
file.puts "\
|
99
|
-
"
|
100
|
-
"
|
101
|
-
"
|
98
|
+
file.puts "\nmysql: &mysql\n adapter: mysql2\n" <<
|
99
|
+
" database: quorum_test\n username: root\n"
|
100
|
+
file.puts "\npostgresql: &postgresql\n adapter: postgresql\n" <<
|
101
|
+
" database: quorum_test\n username: postgres\n" <<
|
102
|
+
" min_messages: ERROR\n"
|
103
|
+
file.puts "\ndefaults: &defaults\n pool: 5\n" <<
|
104
|
+
" timeout: 5000\n host: localhost\n" <<
|
105
|
+
" <<: *<%= ENV['DB'] %>\n"
|
106
|
+
file.puts "\ntest:\n <<: *defaults"
|
102
107
|
end
|
103
108
|
end
|
104
109
|
|
@@ -2,12 +2,16 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Quorum::BlastnJobReport do
|
4
4
|
|
5
|
+
before(:all) do
|
6
|
+
@blastn = Quorum::BlastnJobReport
|
7
|
+
end
|
8
|
+
|
5
9
|
it "should respond to default_order" do
|
6
|
-
|
10
|
+
@blastn.respond_to?(:default_order).should be_true
|
7
11
|
end
|
8
12
|
|
9
|
-
it "should
|
10
|
-
|
13
|
+
it "should be searchable" do
|
14
|
+
@blastn.respond_to?(:search).should be_true
|
11
15
|
end
|
12
16
|
|
13
17
|
end
|
@@ -2,12 +2,17 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Quorum::BlastpJobReport do
|
4
4
|
|
5
|
+
before(:all) do
|
6
|
+
@blastp = Quorum::BlastpJobReport
|
7
|
+
end
|
8
|
+
|
5
9
|
it "should respond to default_order" do
|
6
|
-
|
10
|
+
@blastp.respond_to?(:default_order).should be_true
|
7
11
|
end
|
8
12
|
|
9
|
-
it "should
|
10
|
-
|
13
|
+
it "should be searchable" do
|
14
|
+
@blastp.respond_to?(:search).should be_true
|
11
15
|
end
|
12
16
|
|
13
17
|
end
|
18
|
+
|
@@ -2,12 +2,17 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Quorum::BlastxJobReport do
|
4
4
|
|
5
|
-
|
6
|
-
Quorum::BlastxJobReport
|
5
|
+
before(:all) do
|
6
|
+
@blastx = Quorum::BlastxJobReport
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should respond to default_order" do
|
10
|
-
|
10
|
+
@blastx.respond_to?(:default_order).should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should be searchable" do
|
14
|
+
@blastx.respond_to?(:search).should be_true
|
11
15
|
end
|
12
16
|
|
13
17
|
end
|
18
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Quorum::JobData do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@data = Quorum::JobData.new()
|
7
|
+
end
|
8
|
+
|
9
|
+
it "#results stores data in an array" do
|
10
|
+
@data.results.should be_a(Array)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "#no_results returns a hash { results: false }" do
|
14
|
+
@data.no_results.should eq([{ results: false }])
|
15
|
+
end
|
16
|
+
|
17
|
+
it "#not_enqueued returns a hash { results: false, enqueued: false }" do
|
18
|
+
@data.not_enqueued.should eq([{ results: false, enqueued: false }])
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Quorum::JobFetchData do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@fetch = Quorum::JobFetchData.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "validates presence of attributes" do
|
10
|
+
@fetch.should have(1).error_on(:algo)
|
11
|
+
@fetch.should have(1).error_on(:blast_dbs)
|
12
|
+
@fetch.should have(1).error_on(:hit_id)
|
13
|
+
@fetch.should have(1).error_on(:hit_display_id)
|
14
|
+
@fetch.valid?.should be_false
|
15
|
+
end
|
16
|
+
|
17
|
+
it "passes validation when attrs are set" do
|
18
|
+
@fetch.algo = "foo"
|
19
|
+
@fetch.blast_dbs = "foo"
|
20
|
+
@fetch.hit_id = "foo"
|
21
|
+
@fetch.hit_display_id = "foo"
|
22
|
+
@fetch.valid?.should be_true
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Quorum::JobQueueObserver do
|
4
|
+
|
5
|
+
it "should queue workers after create" do
|
6
|
+
job = Quorum::Job.new()
|
7
|
+
job.sequence = ">test\n" + "a" * 50
|
8
|
+
job.build_blastn_job
|
9
|
+
job.blastn_job.queue = true
|
10
|
+
job.blastn_job.blast_dbs = ["test"]
|
11
|
+
|
12
|
+
obs = Quorum::JobQueueObserver.instance
|
13
|
+
|
14
|
+
Quorum::JobQueueService.should_receive(:queue_search_workers).with(job)
|
15
|
+
obs.after_create(job)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Quorum::JobQueueService do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
ResqueSpec.reset!
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "Job Queue" do
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
@job = Quorum::Job.new()
|
13
|
+
@job.sequence = File.open(
|
14
|
+
File.expand_path("../../data/nucl_prot_seqs.txt", __FILE__)
|
15
|
+
).read
|
16
|
+
@job.build_blastn_job
|
17
|
+
@job.blastn_job.queue = true
|
18
|
+
@job.blastn_job.blast_dbs = ["db"]
|
19
|
+
@job.save!
|
20
|
+
end
|
21
|
+
|
22
|
+
it "enqueues job after save" do
|
23
|
+
Quorum::JobQueueService.queue_search_workers(@job)
|
24
|
+
Workers::System.should have_queue_size_of(1)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "Fetch Queue" do
|
30
|
+
|
31
|
+
before(:each) do
|
32
|
+
@fetch = Quorum::JobFetchData.new
|
33
|
+
@fetch.algo = "foo"
|
34
|
+
@fetch.blast_dbs = "foo"
|
35
|
+
@fetch.hit_id = "foo"
|
36
|
+
@fetch.hit_display_id = "foo"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "enqueues valid blast fetch and returns meta_id" do
|
40
|
+
f = Quorum::JobQueueService.queue_fetch_worker(@fetch)
|
41
|
+
Workers::System.should have_queue_size_of(1)
|
42
|
+
f.should have(1).items
|
43
|
+
f[0].keys.should eq([:meta_id])
|
44
|
+
f[0].values.should_not be_empty
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Quorum::JobReportSearcher do
|
4
|
+
|
5
|
+
include Quorum::JobReportSearcher
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@algo = "blastn"
|
9
|
+
blastn = Quorum::BlastnJobReport
|
10
|
+
2.times do
|
11
|
+
blastn.create!({
|
12
|
+
:query => "test",
|
13
|
+
:hit_display_id => "foo",
|
14
|
+
:identity => 0,
|
15
|
+
:align_len => 0,
|
16
|
+
:query_from => 10,
|
17
|
+
:query_to => 100,
|
18
|
+
:hit_from => 900,
|
19
|
+
:hit_to => 1000,
|
20
|
+
:evalue => "1e-100",
|
21
|
+
:bit_score => 1000,
|
22
|
+
:results => true,
|
23
|
+
:blastn_job_id => 1
|
24
|
+
})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it "makes job reports searchable" do
|
29
|
+
p = { :id => 1, :blastn_id => "1,2", :query => "test" }
|
30
|
+
search(@algo, p).count.should eq(2)
|
31
|
+
|
32
|
+
p = { :id => 1, :blastn_id => "2", :query => "test" }
|
33
|
+
search(@algo, p).count.should eq(1)
|
34
|
+
|
35
|
+
p = { :id => 1, :blastn_id => "1,2", :query => nil }
|
36
|
+
search(@algo, p).count.should eq(2)
|
37
|
+
|
38
|
+
p = { :id => 1, :blastn_id => nil, :query => "test" }
|
39
|
+
search(@algo, p).count.should eq(2)
|
40
|
+
|
41
|
+
p = { :id => 1 }
|
42
|
+
search(@algo, p).count.should eq(2)
|
43
|
+
|
44
|
+
search(@algo, {}).count.should eq(0)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Quorum::JobSerializer" do
|
4
|
+
|
5
|
+
include Quorum::JobSerializer
|
6
|
+
before(:each) do
|
7
|
+
@blastn = Quorum::BlastnJobReport
|
8
|
+
2.times do
|
9
|
+
@blastn.create!({
|
10
|
+
:query => "test",
|
11
|
+
:hit_display_id => "foo",
|
12
|
+
:identity => 0,
|
13
|
+
:align_len => 0,
|
14
|
+
:pct_identity => 100.0,
|
15
|
+
:query_from => 10,
|
16
|
+
:query_to => 100,
|
17
|
+
:hit_from => 900,
|
18
|
+
:hit_to => 1000,
|
19
|
+
:evalue => "1e-100",
|
20
|
+
:bit_score => 1000,
|
21
|
+
:results => true
|
22
|
+
})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#as_json" do
|
27
|
+
it "returns error messages as json when present" do
|
28
|
+
Quorum::JobSerializer.as_json(Quorum::Job.create({})).should have_key(:errors)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns object as json" do
|
32
|
+
Quorum::JobSerializer.as_json(@blastn.first).should eq(@blastn.first.as_json)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#as_txt" do
|
37
|
+
it "returns a tab delimited string of Blast results" do
|
38
|
+
Quorum::JobSerializer.as_txt(@blastn.all).match(/[\w\d\W\t\n]*/).should be_true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#as_gff" do
|
43
|
+
it "returns a gff string of Blast results" do
|
44
|
+
Quorum::JobSerializer.as_gff(@blastn.all).match(/##gff-version 3\n\.*/).should be_true
|
45
|
+
# Strand should be +
|
46
|
+
Quorum::JobSerializer.as_gff(@blastn.all).include?("+").should be_true
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#format_hit_start_stop" do
|
51
|
+
it "returns original params when start < stop" do
|
52
|
+
Quorum::JobSerializer.format_hit_start_stop(10, 12).should eq([10,12])
|
53
|
+
end
|
54
|
+
|
55
|
+
it "returns params in acending order when start > stop" do
|
56
|
+
Quorum::JobSerializer.format_hit_start_stop(12, 10).should eq([10,12])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
data/spec/models/job_spec.rb
CHANGED
@@ -4,7 +4,6 @@ describe Quorum::Job do
|
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
@job = Quorum::Job.new()
|
7
|
-
ResqueSpec.reset!
|
8
7
|
end
|
9
8
|
|
10
9
|
it "fails validation without params" do
|
@@ -38,7 +37,7 @@ describe Quorum::Job do
|
|
38
37
|
@job.should have(0).errors_on(:algorithm)
|
39
38
|
end
|
40
39
|
|
41
|
-
it "deletes
|
40
|
+
it "deletes completed jobs" do
|
42
41
|
1.upto(5) do |i|
|
43
42
|
job = Quorum::Job.new()
|
44
43
|
job.sequence = File.open(
|
@@ -56,18 +55,4 @@ describe Quorum::Job do
|
|
56
55
|
Quorum::BlastnJob.count.should eq(3)
|
57
56
|
end
|
58
57
|
|
59
|
-
it "queues workers after save" do
|
60
|
-
@job.sequence = File.open(
|
61
|
-
File.expand_path("../../data/nucl_prot_seqs.txt", __FILE__)
|
62
|
-
).read
|
63
|
-
|
64
|
-
@job.build_blastn_job
|
65
|
-
@job.blastn_job.queue = true
|
66
|
-
@job.blastn_job.blast_dbs = ["test_1", "test_2"]
|
67
|
-
|
68
|
-
@job.save!
|
69
|
-
|
70
|
-
Workers::System.should have_queue_size_of(1)
|
71
|
-
end
|
72
|
-
|
73
58
|
end
|
@@ -2,12 +2,17 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Quorum::TblastnJobReport do
|
4
4
|
|
5
|
-
|
6
|
-
Quorum::TblastnJobReport
|
5
|
+
before(:all) do
|
6
|
+
@tblastn = Quorum::TblastnJobReport
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should respond to default_order" do
|
10
|
-
|
10
|
+
@tblastn.respond_to?(:default_order).should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should be searchable" do
|
14
|
+
@tblastn.respond_to?(:search).should be_true
|
11
15
|
end
|
12
16
|
|
13
17
|
end
|
18
|
+
|
@@ -4,6 +4,7 @@ require 'quorum/sequence'
|
|
4
4
|
include Quorum::Sequence
|
5
5
|
|
6
6
|
describe "Quorum::Sequence" do
|
7
|
+
|
7
8
|
describe "#create_hash" do
|
8
9
|
it "creates a MD5.hexdigest of a sequence" do
|
9
10
|
sequence = File.open(
|
@@ -89,4 +90,5 @@ describe "Quorum::Sequence" do
|
|
89
90
|
discover_input_sequence_type(sequence).should eq("amino_acid")
|
90
91
|
end
|
91
92
|
end
|
93
|
+
|
92
94
|
end
|
data/spec/requests/jobs_spec.rb
CHANGED
@@ -54,6 +54,7 @@ describe "Jobs" do
|
|
54
54
|
Capybara.current_driver = :selenium
|
55
55
|
end
|
56
56
|
before(:each) do
|
57
|
+
ActiveRecord::Base.observers.enable Quorum::JobQueueObserver
|
57
58
|
ResqueSpec.reset!
|
58
59
|
ResqueSpec.inline = true
|
59
60
|
end
|
@@ -135,7 +136,7 @@ describe "Jobs" do
|
|
135
136
|
page.should have_content("hseq")
|
136
137
|
|
137
138
|
# Download sequence
|
138
|
-
find("p.small a
|
139
|
+
find("p.small a.download_sequence").click
|
139
140
|
page.should have_content("Fetching sequence...")
|
140
141
|
page.should have_content("Sequence Downloaded Successfully")
|
141
142
|
|
@@ -150,33 +151,41 @@ describe "Jobs" do
|
|
150
151
|
end
|
151
152
|
after(:all) do
|
152
153
|
Capybara.use_default_driver
|
154
|
+
ActiveRecord::Base.observers.disable :all
|
153
155
|
end
|
154
156
|
end
|
155
157
|
|
156
158
|
describe "GET /quorum/jobs/id" do
|
157
159
|
it "displays notice and renders form with invalid id" do
|
158
|
-
visit job_path('
|
160
|
+
visit job_path('12893')
|
159
161
|
page.should have_content("The data you requested is unavailable. Please check your URL and try again.")
|
160
162
|
current_path.should eq(new_job_path)
|
161
163
|
end
|
162
164
|
end
|
163
165
|
|
164
|
-
describe "GET /quorum/jobs/id/
|
166
|
+
describe "GET /quorum/jobs/id/search" do
|
165
167
|
it "renders JSON results => false with invalid id" do
|
166
|
-
visit "/quorum/jobs/
|
168
|
+
visit "/quorum/jobs/23542/search.json"
|
167
169
|
page.should have_content("[{\"results\":false}]")
|
168
170
|
end
|
169
171
|
end
|
170
172
|
|
171
|
-
describe "GET /quorum/jobs/id/
|
173
|
+
describe "GET /quorum/jobs/id/get_blast_hit_sequence" do
|
172
174
|
it "renders empty JSON with invalid id" do
|
173
|
-
visit "/quorum/jobs/
|
175
|
+
visit "/quorum/jobs/23542/get_blast_hit_sequence.json"
|
174
176
|
page.should have_content("[]")
|
175
177
|
end
|
176
178
|
|
177
179
|
it "renders empty JSON with invalid id and valid params" do
|
178
|
-
visit "/quorum/jobs/
|
180
|
+
visit "/quorum/jobs/23542/get_blast_hit_sequence.json?algo=blastn"
|
179
181
|
page.should have_content("[]")
|
180
182
|
end
|
181
183
|
end
|
184
|
+
|
185
|
+
describe "GET /quorum/jobs/id/send_blast_hit_sequence" do
|
186
|
+
it "renders empty text on error" do
|
187
|
+
visit "/quorum/jobs/23423/send_blast_hit_sequence?meta_id=1231"
|
188
|
+
page.should_not have_content(" ")
|
189
|
+
end
|
190
|
+
end
|
182
191
|
end
|
data/spec/spec_helper.rb
CHANGED
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.8.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-11-
|
12
|
+
date: 2012-11-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -123,6 +123,22 @@ dependencies:
|
|
123
123
|
- - ~>
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: 0.3.11
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: pg
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 0.14.1
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 0.14.1
|
126
142
|
- !ruby/object:Gem::Dependency
|
127
143
|
name: rspec-rails
|
128
144
|
requirement: !ruby/object:Gem::Requirement
|
@@ -255,6 +271,12 @@ files:
|
|
255
271
|
- app/models/quorum/blastx_job.rb
|
256
272
|
- app/models/quorum/blastx_job_report.rb
|
257
273
|
- app/models/quorum/job.rb
|
274
|
+
- app/models/quorum/job_data.rb
|
275
|
+
- app/models/quorum/job_fetch_data.rb
|
276
|
+
- app/models/quorum/job_queue_observer.rb
|
277
|
+
- app/models/quorum/job_queue_service.rb
|
278
|
+
- app/models/quorum/job_report_searcher.rb
|
279
|
+
- app/models/quorum/job_serializer.rb
|
258
280
|
- app/models/quorum/tblastn_job.rb
|
259
281
|
- app/models/quorum/tblastn_job_report.rb
|
260
282
|
- app/views/layouts/quorum/application.html.erb
|
@@ -267,6 +289,7 @@ files:
|
|
267
289
|
- app/views/quorum/jobs/templates/_blast_detailed_report_template.html.erb
|
268
290
|
- app/views/quorum/jobs/templates/_blast_template.html.erb
|
269
291
|
- app/views/shared/_error_messages.html.erb
|
292
|
+
- config/initializers/mime_types.rb
|
270
293
|
- config/locales/en.yml
|
271
294
|
- config/routes.rb
|
272
295
|
- db/migrate/20111031204518_create_jobs.rb
|
@@ -280,8 +303,10 @@ files:
|
|
280
303
|
- db/migrate/20111031204941_create_tblastn_job_reports.rb
|
281
304
|
- db/migrate/20120109232446_add_hit_display_id_to_blast_reports.rb
|
282
305
|
- db/migrate/20120807202555_add_gaps_to_blast_reports.rb
|
306
|
+
- db/migrate/20120809155712_add_percent_identity_to_blast_reports.rb
|
283
307
|
- db/migrate/20120910175911_change_hsp_group_column_type.rb
|
284
308
|
- db/migrate/20120918205556_rename_max_score_column.rb
|
309
|
+
- db/migrate/20120921182416_add_mismatch_to_blast_reports.rb
|
285
310
|
- lib/generators/quorum/images_generator.rb
|
286
311
|
- lib/generators/quorum/install_generator.rb
|
287
312
|
- lib/generators/quorum/styles_generator.rb
|
@@ -329,7 +354,6 @@ files:
|
|
329
354
|
- spec/dummy/app/helpers/application_helper.rb
|
330
355
|
- spec/dummy/app/mailers/.gitkeep
|
331
356
|
- spec/dummy/app/models/.gitkeep
|
332
|
-
- spec/dummy/app/models/blast.rb
|
333
357
|
- spec/dummy/app/views/layouts/application.html.erb
|
334
358
|
- spec/dummy/config.ru
|
335
359
|
- spec/dummy/config/application.rb
|
@@ -358,12 +382,12 @@ files:
|
|
358
382
|
- spec/javascripts/fixtures/quorum_search_form.html
|
359
383
|
- spec/javascripts/fixtures/quorum_tabs.html
|
360
384
|
- spec/javascripts/helpers/jasmine-jquery.js
|
361
|
-
- spec/javascripts/jobs_spec.js
|
362
385
|
- spec/javascripts/jquery/jquery-ui.min.js
|
363
386
|
- spec/javascripts/jquery/jquery.min.js
|
364
387
|
- spec/javascripts/jquery/jquery_ujs.js
|
365
|
-
- spec/javascripts/
|
366
|
-
- spec/javascripts/
|
388
|
+
- spec/javascripts/suites/jobs_spec.js
|
389
|
+
- spec/javascripts/suites/quorum_spec.js
|
390
|
+
- spec/javascripts/suites/string_spec.js
|
367
391
|
- spec/javascripts/support/jasmine.yml
|
368
392
|
- spec/javascripts/support/jasmine_config.rb
|
369
393
|
- spec/javascripts/support/jasmine_runner.rb
|
@@ -374,6 +398,12 @@ files:
|
|
374
398
|
- spec/models/blastp_job_spec.rb
|
375
399
|
- spec/models/blastx_job_report_spec.rb
|
376
400
|
- spec/models/blastx_job_spec.rb
|
401
|
+
- spec/models/job_data_spec.rb
|
402
|
+
- spec/models/job_fetch_data_spec.rb
|
403
|
+
- spec/models/job_queue_observer_spec.rb
|
404
|
+
- spec/models/job_queue_service_spec.rb
|
405
|
+
- spec/models/job_report_searcher_spec.rb
|
406
|
+
- spec/models/job_serializer_spec.rb
|
377
407
|
- spec/models/job_spec.rb
|
378
408
|
- spec/models/tblastn_job_report_spec.rb
|
379
409
|
- spec/models/tblastn_job_spec.rb
|
@@ -403,7 +433,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
403
433
|
version: '0'
|
404
434
|
segments:
|
405
435
|
- 0
|
406
|
-
hash:
|
436
|
+
hash: -3863476940221336517
|
407
437
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
408
438
|
none: false
|
409
439
|
requirements:
|
@@ -412,7 +442,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
412
442
|
version: '0'
|
413
443
|
segments:
|
414
444
|
- 0
|
415
|
-
hash:
|
445
|
+
hash: -3863476940221336517
|
416
446
|
requirements: []
|
417
447
|
rubyforge_project:
|
418
448
|
rubygems_version: 1.8.24
|