miga-base 0.7.7.0 → 0.7.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/miga/cli/action/wf.rb +4 -0
- data/lib/miga/result.rb +17 -31
- data/lib/miga/version.rb +2 -2
- data/utils/distance/pipeline.rb +11 -1
- data/utils/distance/runner.rb +8 -5
- 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: 5cce1edf29f5f41ad7a53225978513597f2234abd781c5f179c9f45f9d6f1ec2
|
4
|
+
data.tar.gz: 846a570b68efe9dba8acbc1434c55752373d9864df2cea2ff467330bf7e8b1ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 123117d43c4ef4200ebe4a51cb14d19e48b89d249e66fa27b6e0834cf1c3b738535c3f514856e373259428c42543a25886744b4a8a6775f75b587d0a557e4d48
|
7
|
+
data.tar.gz: fa178d1e899da25212983bf7640cc391f3922e560d5d5ee4ff072781b6301013d928212868c9db1590dfcd1f41449e07b5019765dc866d02295226c9ed8a3e2d
|
data/lib/miga/cli/action/wf.rb
CHANGED
@@ -89,6 +89,10 @@ module MiGA::Cli::Action::Wf
|
|
89
89
|
end
|
90
90
|
|
91
91
|
def opts_for_wf_distances(opt)
|
92
|
+
opt.on('--sensitive', 'Alias to: --aai-p blast+ --ani-p blast+') do
|
93
|
+
cli[:aai_p] = 'blast+'
|
94
|
+
cli[:ani_p] = 'blast+'
|
95
|
+
end
|
92
96
|
opt.on('--fast', 'Alias to: --aai-p diamond --ani-p fastani') do
|
93
97
|
cli[:aai_p] = 'diamond'
|
94
98
|
cli[:ani_p] = 'fastani'
|
data/lib/miga/result.rb
CHANGED
@@ -45,10 +45,6 @@ class MiGA::Result < MiGA::MiGA
|
|
45
45
|
# Hash with the result metadata
|
46
46
|
attr_reader :data
|
47
47
|
|
48
|
-
##
|
49
|
-
# Array of MiGA::Result objects nested within the result (if any)
|
50
|
-
attr_reader :results
|
51
|
-
|
52
48
|
##
|
53
49
|
# Load or create the MiGA::Result described by the JSON file +path+
|
54
50
|
def initialize(path)
|
@@ -78,9 +74,9 @@ class MiGA::Result < MiGA::MiGA
|
|
78
74
|
when :json
|
79
75
|
@path
|
80
76
|
when :start
|
81
|
-
@path.sub(/\.json$/,
|
77
|
+
@path.sub(/\.json$/, '.start')
|
82
78
|
when :done
|
83
|
-
@path.sub(/\.json$/,
|
79
|
+
@path.sub(/\.json$/, '.done')
|
84
80
|
end
|
85
81
|
end
|
86
82
|
|
@@ -134,7 +130,7 @@ class MiGA::Result < MiGA::MiGA
|
|
134
130
|
##
|
135
131
|
# Initialize and #save empty result
|
136
132
|
def create
|
137
|
-
@data = { created: Time.now.to_s,
|
133
|
+
@data = { created: Time.now.to_s, stats: {}, files: {} }
|
138
134
|
save
|
139
135
|
end
|
140
136
|
|
@@ -156,20 +152,19 @@ class MiGA::Result < MiGA::MiGA
|
|
156
152
|
def load
|
157
153
|
@data = MiGA::Json.parse(path)
|
158
154
|
@data[:files] ||= {}
|
159
|
-
@results = (self[:results] || []).map { |rs| MiGA::Result.new rs }
|
160
155
|
end
|
161
156
|
|
162
157
|
##
|
163
158
|
# Remove result, including all associated files
|
164
159
|
def remove!
|
165
|
-
each_file
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
160
|
+
each_file { |file| FileUtils.rm_rf(File.join(dir, file)) }
|
161
|
+
unlink
|
162
|
+
end
|
163
|
+
|
164
|
+
# Unlink result by removing the .done and .start timestamps and the
|
165
|
+
# .json descriptor, but don't remove any other associated files
|
166
|
+
def unlink
|
167
|
+
%i(start done).each { |i| f = path(i) and File.unlink(f) }
|
173
168
|
File.unlink path
|
174
169
|
end
|
175
170
|
|
@@ -182,28 +177,19 @@ class MiGA::Result < MiGA::MiGA
|
|
182
177
|
# Note that multiple files may have the same symbol (file_sym), since
|
183
178
|
# arrays of files are supported.
|
184
179
|
def each_file(&blk)
|
180
|
+
return to_enum(:each_file) unless block_given?
|
181
|
+
|
185
182
|
@data[:files] ||= {}
|
186
183
|
self[:files].each do |k, files|
|
187
184
|
files = [files] unless files.kind_of? Array
|
188
185
|
files.each do |file|
|
189
186
|
case blk.arity
|
190
|
-
when 1
|
191
|
-
|
192
|
-
when
|
193
|
-
|
194
|
-
when 3
|
195
|
-
blk.call(k, file, File.expand_path(file, dir))
|
196
|
-
else
|
197
|
-
raise "Wrong number of arguments: #{blk.arity} for 1..3"
|
187
|
+
when 1; blk.call(file)
|
188
|
+
when 2; blk.call(k, file)
|
189
|
+
when 3; blk.call(k, file, File.expand_path(file, dir))
|
190
|
+
else; raise "Wrong number of arguments: #{blk.arity} for 1..3"
|
198
191
|
end
|
199
192
|
end
|
200
193
|
end
|
201
194
|
end
|
202
|
-
|
203
|
-
##
|
204
|
-
# Add the MiGA::Result +result+ as part of the current result
|
205
|
-
def add_result(result)
|
206
|
-
@data[:results] << result.path
|
207
|
-
save
|
208
|
-
end
|
209
195
|
end
|
data/lib/miga/version.rb
CHANGED
@@ -8,7 +8,7 @@ module MiGA
|
|
8
8
|
# - Float representing the major.minor version.
|
9
9
|
# - Integer representing gem releases of the current version.
|
10
10
|
# - Integer representing minor changes that require new version number.
|
11
|
-
VERSION = [0.7,
|
11
|
+
VERSION = [0.7, 8, 0]
|
12
12
|
|
13
13
|
##
|
14
14
|
# Nickname for the current major.minor version.
|
@@ -16,7 +16,7 @@ module MiGA
|
|
16
16
|
|
17
17
|
##
|
18
18
|
# Date of the current gem release.
|
19
|
-
VERSION_DATE = Date.new(2020, 6,
|
19
|
+
VERSION_DATE = Date.new(2020, 6, 7)
|
20
20
|
|
21
21
|
##
|
22
22
|
# Reference of MiGA.
|
data/utils/distance/pipeline.rb
CHANGED
@@ -29,6 +29,16 @@ module MiGA::DistanceRunner::Pipeline
|
|
29
29
|
classify(clades, classif, metric, result_fh, val_cls)
|
30
30
|
end
|
31
31
|
|
32
|
+
# Run distances against datasets listed in metadata's +:dist_req+
|
33
|
+
def distances_by_request(metric)
|
34
|
+
return unless dataset.metadata[:dist_req]
|
35
|
+
|
36
|
+
$stderr.puts 'Running distances by request'
|
37
|
+
dataset.metadata[:dist_req].each do |target|
|
38
|
+
ds = ref_project.dataset(target) and send(metric, ds)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
32
42
|
# Builds a tree with all visited medoids from any classification level
|
33
43
|
def build_medoids_tree(metric)
|
34
44
|
$stderr.puts "Building medoids tree (metric = #{metric})"
|
@@ -99,7 +109,7 @@ module MiGA::DistanceRunner::Pipeline
|
|
99
109
|
|
100
110
|
# Transfer the taxonomy to the current dataset
|
101
111
|
def transfer_taxonomy(tax)
|
102
|
-
$stderr.puts
|
112
|
+
$stderr.puts 'Transferring taxonomy'
|
103
113
|
return if tax.nil?
|
104
114
|
|
105
115
|
pval = (project.metadata[:tax_pvalue] || 0.05).to_f
|
data/utils/distance/runner.rb
CHANGED
@@ -67,7 +67,7 @@ class MiGA::DistanceRunner
|
|
67
67
|
|
68
68
|
# Launch analysis for reference datasets
|
69
69
|
def go_ref!
|
70
|
-
$stderr.puts
|
70
|
+
$stderr.puts 'Launching analysis for reference dataset'
|
71
71
|
# Initialize databases
|
72
72
|
initialize_dbs! true
|
73
73
|
|
@@ -80,13 +80,13 @@ class MiGA::DistanceRunner
|
|
80
80
|
end
|
81
81
|
|
82
82
|
# Finalize
|
83
|
-
[
|
83
|
+
%i[haai aai ani].each { |m| checkpoint! m if db_counts[m] > 0 }
|
84
84
|
end
|
85
85
|
|
86
86
|
##
|
87
87
|
# Launch analysis for query datasets
|
88
88
|
def go_query!
|
89
|
-
$stderr.puts
|
89
|
+
$stderr.puts 'Launching analysis for query dataset'
|
90
90
|
# Check if project is ready
|
91
91
|
tsk = ref_project.is_clade? ? [:subclades, :ani] : [:clade_finding, :aai]
|
92
92
|
res = ref_project.result(tsk[0])
|
@@ -94,6 +94,7 @@ class MiGA::DistanceRunner
|
|
94
94
|
|
95
95
|
# Initialize the databases
|
96
96
|
initialize_dbs! false
|
97
|
+
distances_by_request(tsk[1])
|
97
98
|
# Calculate the classification-informed AAI/ANI traverse
|
98
99
|
results = File.expand_path("#{dataset.name}.#{tsk[1]}-medoids.tsv", home)
|
99
100
|
fh = File.open(results, 'w')
|
@@ -111,7 +112,9 @@ class MiGA::DistanceRunner
|
|
111
112
|
next unless r[1].to_i == val_cls
|
112
113
|
|
113
114
|
ani = ani_after_aai(ref_project.dataset(r[0]), 80.0)
|
114
|
-
|
115
|
+
unless ani.nil? || ani < closest[:ani]
|
116
|
+
closest = { ds: r[0], ani: ani }
|
117
|
+
end
|
115
118
|
end
|
116
119
|
end
|
117
120
|
end
|
@@ -133,7 +136,7 @@ class MiGA::DistanceRunner
|
|
133
136
|
|
134
137
|
# Launch analysis for taxonomy jobs
|
135
138
|
def go_taxonomy!
|
136
|
-
$stderr.puts
|
139
|
+
$stderr.puts 'Launching taxonomy analysis'
|
137
140
|
return unless project.metadata[:ref_project]
|
138
141
|
|
139
142
|
go_query! # <- yeah, it's actually the same, just different ref_project
|
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.7.
|
4
|
+
version: 0.7.8.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: 2020-06-
|
11
|
+
date: 2020-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: daemons
|