miga-base 0.3.10.0 → 0.3.11.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.
- checksums.yaml +4 -4
- data/actions/doctor.rb +35 -33
- data/lib/miga/daemon.rb +10 -3
- data/lib/miga/project/result.rb +3 -1
- data/lib/miga/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ff35e9287b082caf6870106450201c9153fcc4a9dc9788f5774460eb7751b38
|
4
|
+
data.tar.gz: e697b18e2df16c2c1fd4d8ee98ec837c78686e293f724b411a09a7f28bac10f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99face7b9b75edcf2e3f1e9210448a32a08b53ee2853e4548774405b276e6c3e82e475bbe9a876d91ee0c41d0df924756fd965828a1bc121cfcf0d4bc62f82cd
|
7
|
+
data.tar.gz: 42477e3181d69fc1959f78f6e8711d84890cd401467715378f0e4df8e0520944efacbc475cb40f612d4b64449f3b9f5dc3e44b2a6de15852f7442f3a3e10bd75
|
data/actions/doctor.rb
CHANGED
@@ -5,35 +5,37 @@
|
|
5
5
|
|
6
6
|
require "sqlite3"
|
7
7
|
|
8
|
-
|
9
|
-
db:
|
10
|
-
|
8
|
+
tasks = {
|
9
|
+
db: ['databases', 'Check database files integrity'],
|
10
|
+
dist: ['distances', 'Check distance summary tables.'],
|
11
|
+
files: ['files', 'Check for outdated files.'],
|
12
|
+
ess: ['essential-genes', 'Check for unarchived essential genes'],
|
13
|
+
mts: ['mytaxa-scan', 'Check for unarchived MyTaxa scan'],
|
14
|
+
start: ['start', 'Check for lingering .start files'],
|
15
|
+
tax: ['taxonomy', 'Check for taxonomy consistency (not implemented)']
|
16
|
+
}
|
17
|
+
o = {q: true, ld: false}
|
18
|
+
tasks.keys.each{ |i| o[i] = true }
|
19
|
+
tasks_n = Hash[tasks.map{ |k,v| [v[0], k] }]
|
20
|
+
|
11
21
|
OptionParser.new do |opt|
|
12
22
|
opt_banner(opt)
|
13
23
|
opt_object(opt, o, [:project])
|
14
|
-
opt.on(
|
15
|
-
|
16
|
-
opt.on(
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
opt.on(
|
21
|
-
|
22
|
-
|
23
|
-
"Do not check unarchived essential genes."){ |v| o[:ess]=!v }
|
24
|
-
opt.on("--ignore-mytaxa-scan",
|
25
|
-
"Do not check unarchived MyTaxa scan."){ |v| o[:mts]=!v }
|
26
|
-
opt.on("--ignore-start",
|
27
|
-
"Do not check lingering legacy .start files."){ |v| o[:start]=!v }
|
28
|
-
opt.on("--ignore-taxonomy",
|
29
|
-
"Do not check taxonomy consistency."){ |v| o[:tax]=!v }
|
30
|
-
opt_common(opt, o)
|
24
|
+
opt.on('-l', '--list-datasets',
|
25
|
+
'List all fixed datasets on advance.'){ |v| o[:ld]=v }
|
26
|
+
opt.on('--ignore TASK1,TASK2', Array,
|
27
|
+
'Do not perform the task(s) listed. Available tasks are:',
|
28
|
+
* tasks.values.map{ |v| "#{v[0]}: #{v[1]}" }
|
29
|
+
){ |v| v.map{ |i| o[tasks_n[i]] = false } }
|
30
|
+
opt.on('--only TASK',
|
31
|
+
'Perform only the specified task (see --ignore).'
|
32
|
+
){ |v| tasks.keys.each{ |i| o[i] = false }; o[v] = true }
|
31
33
|
end.parse!
|
32
34
|
|
33
35
|
##=> Main <=
|
34
|
-
opt_require(o, project:
|
36
|
+
opt_require(o, project: '-P')
|
35
37
|
|
36
|
-
$stderr.puts
|
38
|
+
$stderr.puts 'Loading project' unless o[:q]
|
37
39
|
p = MiGA::Project.load(o[:project])
|
38
40
|
raise "Impossible to load project: #{o[:project]}" if p.nil?
|
39
41
|
|
@@ -48,7 +50,7 @@ def check_sqlite3_database(db_file, metric)
|
|
48
50
|
end
|
49
51
|
|
50
52
|
if o[:db]
|
51
|
-
$stderr.puts
|
53
|
+
$stderr.puts 'o Checking databases integrity' unless o[:q]
|
52
54
|
p.each_dataset do |d|
|
53
55
|
[:distances, :taxonomy].each do |r_key|
|
54
56
|
r = d.result(r_key) or next
|
@@ -97,20 +99,20 @@ end
|
|
97
99
|
|
98
100
|
unless notok.empty?
|
99
101
|
unless o[:q]
|
100
|
-
$stderr.puts
|
102
|
+
$stderr.puts ' - Unregistered datasets detected: '
|
101
103
|
if notok.size < 3
|
102
|
-
$stderr.puts " - #{notok.keys.join(
|
104
|
+
$stderr.puts " - #{notok.keys.join(', ')}"
|
103
105
|
else
|
104
|
-
$stderr.puts " - #{notok.
|
106
|
+
$stderr.puts " - #{notok.size}, including #{notok.keys.first}"
|
105
107
|
end
|
106
|
-
$stderr.puts
|
108
|
+
$stderr.puts ' - Removing tables, recompute'
|
107
109
|
end
|
108
110
|
res.remove!
|
109
111
|
end
|
110
112
|
end if o[:dist]
|
111
113
|
|
112
114
|
if o[:files]
|
113
|
-
$stderr.puts
|
115
|
+
$stderr.puts 'o Looking for outdated files in results' unless o[:q]
|
114
116
|
p.each_dataset do |d|
|
115
117
|
d.each_result do |r_k, r|
|
116
118
|
ok = true
|
@@ -122,14 +124,14 @@ if o[:files]
|
|
122
124
|
end
|
123
125
|
unless ok
|
124
126
|
$stderr.puts " > Registering again #{d.name}:#{r_k}" if o[:ld]
|
125
|
-
d.add_result(r_k, true, force:true)
|
127
|
+
d.add_result(r_k, true, force: true)
|
126
128
|
end
|
127
129
|
end
|
128
130
|
end
|
129
131
|
end
|
130
132
|
|
131
133
|
if o[:ess]
|
132
|
-
$stderr.puts
|
134
|
+
$stderr.puts 'o Looking for unarchived essential genes.' unless o[:q]
|
133
135
|
p.each_dataset do |d|
|
134
136
|
res = d.result(:essential_genes)
|
135
137
|
next if res.nil?
|
@@ -148,7 +150,7 @@ if o[:ess]
|
|
148
150
|
end
|
149
151
|
|
150
152
|
if o[:mts]
|
151
|
-
$stderr.puts
|
153
|
+
$stderr.puts 'o Looking for unarchived MyTaxa Scan runs.' unless o[:q]
|
152
154
|
p.each_dataset do |d|
|
153
155
|
res = d.result(:mytaxa_scan)
|
154
156
|
next if res.nil?
|
@@ -178,7 +180,7 @@ if o[:mts]
|
|
178
180
|
end
|
179
181
|
|
180
182
|
if o[:start]
|
181
|
-
$stderr.puts
|
183
|
+
$stderr.puts 'o Looking for legacy .start files lingering.' unless o[:q]
|
182
184
|
p.each_dataset do |d|
|
183
185
|
d.each_result do |r_k, r|
|
184
186
|
if File.exist? r.path(:start)
|
@@ -194,5 +196,5 @@ if o[:tax]
|
|
194
196
|
# TODO: Find 95%ANI clusters with entries from different species
|
195
197
|
end
|
196
198
|
|
197
|
-
$stderr.puts
|
199
|
+
$stderr.puts 'Done' unless o[:q]
|
198
200
|
|
data/lib/miga/daemon.rb
CHANGED
@@ -192,9 +192,16 @@ class MiGA::Daemon < MiGA::MiGA
|
|
192
192
|
def flush!
|
193
193
|
# Check for finished jobs
|
194
194
|
@jobs_running.select! do |job|
|
195
|
-
|
196
|
-
|
197
|
-
|
195
|
+
ongoing = case job[:job].to_s
|
196
|
+
when 'd'
|
197
|
+
not job[:ds].next_preprocessing(false).nil?
|
198
|
+
when 'p'
|
199
|
+
not project.next_task(nil, false).nil?
|
200
|
+
else
|
201
|
+
(job[:ds].nil? ? project : job[:ds]).add_result(job[:job], false).nil?
|
202
|
+
end
|
203
|
+
say "Completed pid:#{job[:pid]} for #{job[:task_name]}." unless ongoing
|
204
|
+
ongoing
|
198
205
|
end
|
199
206
|
# Avoid single datasets hogging resources
|
200
207
|
@jobs_to_run.rotate! rand(jobs_to_run.size)
|
data/lib/miga/project/result.rb
CHANGED
@@ -58,8 +58,10 @@ module MiGA::Project::Result
|
|
58
58
|
|
59
59
|
##
|
60
60
|
# Get the next task from +tasks+, saving intermediate results if +save+.
|
61
|
+
# If +tasks+ is +nil+ (default), it uses the entire list of tasks.
|
61
62
|
# Returns a Symbol.
|
62
|
-
def next_task(tasks =
|
63
|
+
def next_task(tasks = nil, save = true)
|
64
|
+
tasks ||= @@DISTANCE_TASKS+@@INCLADE_TASKS
|
63
65
|
tasks.find do |t|
|
64
66
|
if metadata["run_#{t}"] == false or
|
65
67
|
(!is_clade? and @@INCLADE_TASKS.include?(t) and
|
data/lib/miga/version.rb
CHANGED
@@ -10,7 +10,7 @@ module MiGA
|
|
10
10
|
# - Float representing the major.minor version.
|
11
11
|
# - Integer representing gem releases of the current version.
|
12
12
|
# - Integer representing minor changes that require new version number.
|
13
|
-
VERSION = [0.3,
|
13
|
+
VERSION = [0.3, 11, 0]
|
14
14
|
|
15
15
|
##
|
16
16
|
# Nickname for the current major.minor version.
|
@@ -18,7 +18,7 @@ module MiGA
|
|
18
18
|
|
19
19
|
##
|
20
20
|
# Date of the current gem release.
|
21
|
-
VERSION_DATE = Date.new(2019, 04,
|
21
|
+
VERSION_DATE = Date.new(2019, 04, 17)
|
22
22
|
|
23
23
|
##
|
24
24
|
# Reference of MiGA.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: miga-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luis M. Rodriguez-R
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: daemons
|