miga-base 0.2.2.2 → 0.2.3.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/create_dataset.rb +45 -6
- data/actions/daemon.rb +3 -3
- data/actions/result_stats.rb +17 -3
- data/lib/miga/daemon.rb +1 -1
- data/lib/miga/dataset_result.rb +2 -1
- data/lib/miga/project.rb +3 -58
- data/lib/miga/project_result.rb +67 -0
- data/lib/miga/version.rb +2 -2
- data/scripts/_distances_functions.bash +22 -22
- data/scripts/_distances_noref_nomulti.bash +19 -19
- data/scripts/_distances_ref_nomulti.bash +19 -17
- data/test/daemon_test.rb +2 -2
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 08a4a7fe880fa3b6653122e96d4e25fc39832020
|
4
|
+
data.tar.gz: 9a154fe5ec29b9b4bcb56cf01f11eb9a5ce77e3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19b8971dca597bc26a30cefc6b4c9973774a54cfd104ca5f45c8cea844205a01f58370556457426621009e7c7bfbc1c3f28afad93ff76fe818514b392b1fcaa0
|
7
|
+
data.tar.gz: ed05189ab71cbe8f8721dd7b584441cc3bf338a2746be46a08aeb1550545a9261c5d86f4d7133f99c5b6d4237fe975353832d7516400cbd1e3c037aef8d6bf38
|
data/actions/create_dataset.rb
CHANGED
@@ -23,6 +23,22 @@ OptionParser.new do |opt|
|
|
23
23
|
opt.on("--update",
|
24
24
|
"Updates the dataset if it already exists."){ o[:update]=true }
|
25
25
|
opt_common(opt, o)
|
26
|
+
opt.separator ""
|
27
|
+
opt.separator "External input data"
|
28
|
+
opt.on("--raw-reads FILE1,FILE2", Array,
|
29
|
+
"Comma-delimited paths to the raw reads in FastQ format.",
|
30
|
+
"One file is assumed to be single reads, two are assumed to be paired."
|
31
|
+
){ |v| o[:raw_reads] = v }
|
32
|
+
opt.on("--trimmed-fasta-single FILE", Array,
|
33
|
+
"Path to the single trimmed reads in FastA format."
|
34
|
+
){ |v| o[:trimmed_fasta_s] = v }
|
35
|
+
opt.on("--trimmed-fasta-coupled FILE1,FILE2", Array,
|
36
|
+
"Comma-delimited paths to the coupled trimmed reads in FastA format.",
|
37
|
+
"One file is assumed to be interposed, two are assumed to contain sisters."
|
38
|
+
){ |v| o[:trimmed_fasta_c] = v }
|
39
|
+
opt.on("--assembly FILE", Array,
|
40
|
+
"Path to the contigs (or scaffolds) of the assembly in FastA format."
|
41
|
+
){ |v| o[:assembly] = v }
|
26
42
|
end.parse!
|
27
43
|
|
28
44
|
##=> Main <=
|
@@ -38,16 +54,39 @@ $stderr.puts "Loading dataset." unless o[:q]
|
|
38
54
|
d = o[:update] ? p.dataset(o[:dataset]) :
|
39
55
|
MiGA::Dataset.new(p, o[:dataset], o[:ref], {})
|
40
56
|
raise "Dataset does not exist." if d.nil?
|
57
|
+
|
58
|
+
in_files = [:raw_reads, :trimmed_fasta_s, :trimmed_fasta_c, :assembly]
|
59
|
+
def cp_result(o, d, p, sym, res_sym, ext)
|
60
|
+
return if o[sym].nil? or o[sym].empty?
|
61
|
+
r_dir = MiGA::Dataset.RESULT_DIRS[res_sym]
|
62
|
+
r_path = File.expand_path("data/#{r_dir}/#{d.name}", p.path)
|
63
|
+
ext.each_index do |i|
|
64
|
+
FileUtils.cp o[sym][i], "#{r_path}#{ext[i]}" unless o[sym][i].nil?
|
65
|
+
end
|
66
|
+
File.open("#{r_path}.done", "w") { |f| f.print Time.now.to_s }
|
67
|
+
end
|
68
|
+
if in_files.any? { |i| not o[i].nil? }
|
69
|
+
$stderr.puts "Copying files." unless o[:q]
|
70
|
+
# :raw_reads
|
71
|
+
cp_result(o, d, p, :raw_reads, :raw_reads, %w[.1.fastq .2.fastq])
|
72
|
+
# :trimmed_fasta
|
73
|
+
cp_result(o, d, p, :trimmed_fasta_s, :trimmed_fasta, %w[.SingleReads.fa])
|
74
|
+
if (o[:trimmed_fasta_c] || []).size > 1
|
75
|
+
cp_result(o, d, p, :trimmed_fasta_c, :trimmed_fasta, %w[.1.fasta .2.fasta])
|
76
|
+
else
|
77
|
+
cp_result(o, d, p, :trimmed_fasta_c, :trimmed_fasta, %w[.CoupledReads.fa])
|
78
|
+
end
|
79
|
+
# :assembly
|
80
|
+
cp_result(o, d, p, :assembly, :assembly, %w[.LargeContigs.fna])
|
81
|
+
end
|
82
|
+
|
41
83
|
unless o[:metadata].nil?
|
42
84
|
o[:metadata].split(",").each do |pair|
|
43
85
|
(k,v) = pair.split("=")
|
44
86
|
case v
|
45
|
-
|
46
|
-
v =
|
47
|
-
|
48
|
-
v = false
|
49
|
-
when "nil"
|
50
|
-
v = nil
|
87
|
+
when "true"; v = true
|
88
|
+
when "false"; v = false
|
89
|
+
when "nil"; v = nil
|
51
90
|
end
|
52
91
|
d.metadata[k] = v
|
53
92
|
end
|
data/actions/daemon.rb
CHANGED
@@ -32,10 +32,10 @@ OptionParser.new do |opt|
|
|
32
32
|
opt_common(opt, o)
|
33
33
|
opt.separator "Daemon options:"
|
34
34
|
opt.on("-t", "--ontop",
|
35
|
-
"Stay on top (does not daemonize)"){ o[:daemon_opts] << '-t' }
|
36
|
-
opt.on("-f", "--force", "Force operation"){ o[:daemon_opts] << '-f' }
|
35
|
+
"Stay on top (does not daemonize)."){ o[:daemon_opts] << '-t' }
|
36
|
+
opt.on("-f", "--force", "Force operation."){ o[:daemon_opts] << '-f' }
|
37
37
|
opt.on("-n", "--no_wait",
|
38
|
-
"Do not wait for processes to stop"){ o[:daemon_opts] << '-n' }
|
38
|
+
"Do not wait for processes to stop."){ o[:daemon_opts] << '-n' }
|
39
39
|
opt.on("--shush", "Silence the daemon."){ o[:daemon_opts] << '--shush' }
|
40
40
|
end.parse!
|
41
41
|
|
data/actions/result_stats.rb
CHANGED
@@ -3,12 +3,17 @@
|
|
3
3
|
# @package MiGA
|
4
4
|
# @license Artistic-2.0
|
5
5
|
|
6
|
-
o = {q:true}
|
6
|
+
o = {q:true, try_load:false}
|
7
7
|
opts = OptionParser.new do |opt|
|
8
8
|
opt_banner(opt)
|
9
9
|
opt_object(opt, o, [:project, :dataset_opt, :result])
|
10
|
+
opt.on("--key STRING",
|
11
|
+
"Returns only the value of the requested key."){ |v| o[:key] = v }
|
10
12
|
opt.on("--compute-and-save",
|
11
13
|
"Computes and saves the statistics."){ |v| o[:compute] = v }
|
14
|
+
opt.on("--try-load",
|
15
|
+
"Checks if stat exists instead of computing on --compute-and-save."
|
16
|
+
){ |v| o[:try_load] = v }
|
12
17
|
opt_common(opt, o)
|
13
18
|
end.parse!
|
14
19
|
|
@@ -29,6 +34,9 @@ else
|
|
29
34
|
end
|
30
35
|
raise "Cannot load result." if r.nil?
|
31
36
|
|
37
|
+
o[:compute] = false if o[:try_load] and
|
38
|
+
(not r[:stats].nil?) and (not r[:stats].empty?)
|
39
|
+
|
32
40
|
if o[:compute]
|
33
41
|
$stderr.puts "Computing statistics." unless o[:q]
|
34
42
|
stats = {}
|
@@ -78,8 +86,14 @@ if o[:compute]
|
|
78
86
|
end
|
79
87
|
end
|
80
88
|
|
81
|
-
|
82
|
-
|
89
|
+
if o[:key].nil?
|
90
|
+
r[:stats].each do |k,v|
|
91
|
+
puts "#{k.to_s.unmiga_name.capitalize}: #{
|
92
|
+
v.is_a?(Array) ? v.join(" ") : v}."
|
93
|
+
end
|
94
|
+
else
|
95
|
+
v = r[:stats][o[:key].downcase.miga_name.to_sym]
|
96
|
+
puts v.is_a?(Array) ? v.first : v
|
83
97
|
end
|
84
98
|
|
85
99
|
$stderr.puts "Done." unless o[:q]
|
data/lib/miga/daemon.rb
CHANGED
data/lib/miga/dataset_result.rb
CHANGED
@@ -25,6 +25,7 @@ module MiGA::DatasetResult
|
|
25
25
|
{:pair1=>".1.clipped.fastq", :pair2=>".2.clipped.fastq"}) if
|
26
26
|
result_files_exist?(base, ".2.clipped.fastq")
|
27
27
|
r.add_file(:single, name + ".1.clipped.single.fastq")
|
28
|
+
r.add_file(:trimming_sumary, name + ".1.fastq.trimmed.summary.txt")
|
28
29
|
add_result(:raw_reads) #-> Post gunzip
|
29
30
|
r
|
30
31
|
end
|
@@ -60,7 +61,7 @@ module MiGA::DatasetResult
|
|
60
61
|
return nil unless result_files_exist?(base, ".LargeContigs.fna")
|
61
62
|
r = MiGA::Result.new(base + ".json")
|
62
63
|
r = add_files_to_ds_result(r, name, {:largecontigs=>".LargeContigs.fna",
|
63
|
-
:allcontigs=>".AllContigs.fna"})
|
64
|
+
:allcontigs=>".AllContigs.fna", :assembly_data=>""})
|
64
65
|
add_result(:trimmed_fasta) #-> Post interposing
|
65
66
|
r
|
66
67
|
end
|
data/lib/miga/project.rb
CHANGED
@@ -2,11 +2,14 @@
|
|
2
2
|
# @license Artistic-2.0
|
3
3
|
|
4
4
|
require "miga/dataset"
|
5
|
+
require "miga/project_result"
|
5
6
|
|
6
7
|
##
|
7
8
|
# MiGA representation of a project.
|
8
9
|
class MiGA::Project < MiGA::MiGA
|
9
10
|
|
11
|
+
include MiGA::ProjectResult
|
12
|
+
|
10
13
|
# Class-level
|
11
14
|
|
12
15
|
##
|
@@ -365,62 +368,4 @@ class MiGA::Project < MiGA::MiGA
|
|
365
368
|
plugins.each { |pl| require File.expand_path("lib-plugin.rb", pl) }
|
366
369
|
end
|
367
370
|
|
368
|
-
private
|
369
|
-
|
370
|
-
##
|
371
|
-
# Internal alias for all add_result_*_distances.
|
372
|
-
def add_result_distances(base)
|
373
|
-
return nil unless result_files_exist?(base, %w[.Rdata .log .txt])
|
374
|
-
r = Result.new(base + ".json")
|
375
|
-
r.add_file(:rdata, "miga-project.Rdata")
|
376
|
-
r.add_file(:matrix, "miga-project.txt")
|
377
|
-
r.add_file(:log, "miga-project.log")
|
378
|
-
r.add_file(:hist, "miga-project.hist")
|
379
|
-
r
|
380
|
-
end
|
381
|
-
|
382
|
-
def add_result_clade_finding(base)
|
383
|
-
return nil unless result_files_exist?(base,
|
384
|
-
%w[.proposed-clades])
|
385
|
-
return nil unless is_clade? or result_files_exist?(base,
|
386
|
-
%w[.pdf .classif .medoids .class.tsv .class.nwk])
|
387
|
-
r = add_result_iter_clades(base)
|
388
|
-
r.add_file(:aai_tree, "miga-project.aai.nwk")
|
389
|
-
r.add_file(:proposal, "miga-project.proposed-clades")
|
390
|
-
r.add_file(:clades_aai90, "miga-project.aai90-clades")
|
391
|
-
r.add_file(:clades_ani95, "miga-project.ani95-clades")
|
392
|
-
r
|
393
|
-
end
|
394
|
-
|
395
|
-
def add_result_subclades(base)
|
396
|
-
return nil unless result_files_exist?(base,
|
397
|
-
%w[.pdf .classif .medoids .class.tsv .class.nwk])
|
398
|
-
r = add_result_iter_clades(base)
|
399
|
-
r.add_file(:ani_tree, "miga-project.ani.nwk")
|
400
|
-
r
|
401
|
-
end
|
402
|
-
|
403
|
-
def add_result_iter_clades(base)
|
404
|
-
r = Result.new(base + ".json")
|
405
|
-
r.add_file(:report, "miga-project.pdf")
|
406
|
-
r.add_file(:class_table, "miga-project.class.tsv")
|
407
|
-
r.add_file(:class_tree, "miga-project.class.nwk")
|
408
|
-
r.add_file(:classif, "miga-project.classif")
|
409
|
-
r.add_file(:medoids, "miga-project.medoids")
|
410
|
-
r
|
411
|
-
end
|
412
|
-
|
413
|
-
def add_result_ogs(base)
|
414
|
-
return nil unless result_files_exist?(base, %w[.ogs .stats])
|
415
|
-
r = Result.new(base + ".json")
|
416
|
-
r.add_file(:ogs, "miga-project.ogs")
|
417
|
-
r.add_file(:stats, "miga-project.stats")
|
418
|
-
r.add_file(:rbm, "miga-project.rbm")
|
419
|
-
r
|
420
|
-
end
|
421
|
-
|
422
|
-
alias add_result_haai_distances add_result_distances
|
423
|
-
alias add_result_aai_distances add_result_distances
|
424
|
-
alias add_result_ani_distances add_result_distances
|
425
|
-
alias add_result_ssu_distances add_result_distances
|
426
371
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# @package MiGA
|
2
|
+
# @license Artistic-2.0
|
3
|
+
|
4
|
+
##
|
5
|
+
# Helper module including specific functions to add project results.
|
6
|
+
module MiGA::ProjectResult
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
##
|
11
|
+
# Internal alias for all add_result_*_distances.
|
12
|
+
def add_result_distances(base)
|
13
|
+
return nil unless result_files_exist?(base, %w[.Rdata .log .txt])
|
14
|
+
r = Result.new(base + ".json")
|
15
|
+
r.add_file(:rdata, "miga-project.Rdata")
|
16
|
+
r.add_file(:matrix, "miga-project.txt")
|
17
|
+
r.add_file(:log, "miga-project.log")
|
18
|
+
r.add_file(:hist, "miga-project.hist")
|
19
|
+
r
|
20
|
+
end
|
21
|
+
|
22
|
+
def add_result_clade_finding(base)
|
23
|
+
return nil unless result_files_exist?(base,
|
24
|
+
%w[.proposed-clades])
|
25
|
+
return nil unless is_clade? or result_files_exist?(base,
|
26
|
+
%w[.pdf .classif .medoids .class.tsv .class.nwk])
|
27
|
+
r = add_result_iter_clades(base)
|
28
|
+
r.add_file(:aai_tree, "miga-project.aai.nwk")
|
29
|
+
r.add_file(:proposal, "miga-project.proposed-clades")
|
30
|
+
r.add_file(:clades_aai90, "miga-project.aai90-clades")
|
31
|
+
r.add_file(:clades_ani95, "miga-project.ani95-clades")
|
32
|
+
r
|
33
|
+
end
|
34
|
+
|
35
|
+
def add_result_subclades(base)
|
36
|
+
return nil unless result_files_exist?(base,
|
37
|
+
%w[.pdf .classif .medoids .class.tsv .class.nwk])
|
38
|
+
r = add_result_iter_clades(base)
|
39
|
+
r.add_file(:ani_tree, "miga-project.ani.nwk")
|
40
|
+
r
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_result_iter_clades(base)
|
44
|
+
r = Result.new(base + ".json")
|
45
|
+
r.add_file(:report, "miga-project.pdf")
|
46
|
+
r.add_file(:class_table, "miga-project.class.tsv")
|
47
|
+
r.add_file(:class_tree, "miga-project.class.nwk")
|
48
|
+
r.add_file(:classif, "miga-project.classif")
|
49
|
+
r.add_file(:medoids, "miga-project.medoids")
|
50
|
+
r
|
51
|
+
end
|
52
|
+
|
53
|
+
def add_result_ogs(base)
|
54
|
+
return nil unless result_files_exist?(base, %w[.ogs .stats])
|
55
|
+
r = Result.new(base + ".json")
|
56
|
+
r.add_file(:ogs, "miga-project.ogs")
|
57
|
+
r.add_file(:stats, "miga-project.stats")
|
58
|
+
r.add_file(:rbm, "miga-project.rbm")
|
59
|
+
r
|
60
|
+
end
|
61
|
+
|
62
|
+
alias add_result_haai_distances add_result_distances
|
63
|
+
alias add_result_aai_distances add_result_distances
|
64
|
+
alias add_result_ani_distances add_result_distances
|
65
|
+
alias add_result_ssu_distances add_result_distances
|
66
|
+
|
67
|
+
end
|
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.2,
|
13
|
+
VERSION = [0.2, 3, 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(
|
21
|
+
VERSION_DATE = Date.new(2017, 3, 14)
|
22
22
|
|
23
23
|
##
|
24
24
|
# Reference of MiGA.
|
@@ -16,11 +16,11 @@ fi
|
|
16
16
|
fx_exists miga-make_empty_aai_db || function miga-make_empty_aai_db {
|
17
17
|
local DB=$1
|
18
18
|
echo "create table if not exists aai(seq1 varchar(256), seq2 varchar(256)," \
|
19
|
-
" aai float, sd float, n int, omega int);" | sqlite3 $DB
|
19
|
+
" aai float, sd float, n int, omega int);" | sqlite3 "$DB"
|
20
20
|
}
|
21
21
|
|
22
22
|
fx_exists miga-ds_name || function miga-ds_name {
|
23
|
-
basename $1 | perl -pe "s/[^A-Za-z0-9_].*//"
|
23
|
+
basename "$1" | perl -pe "s/[^A-Za-z0-9_].*//"
|
24
24
|
}
|
25
25
|
|
26
26
|
fx_exists miga-aai || function miga-aai {
|
@@ -28,10 +28,10 @@ fx_exists miga-aai || function miga-aai {
|
|
28
28
|
local F2=$2
|
29
29
|
local TH=$3
|
30
30
|
local DB=$4
|
31
|
-
local N1=$(miga-ds_name $F1)
|
32
|
-
local N2=$(miga-ds_name $F2)
|
33
|
-
aai.rb -1 $F1 -2 $F2 -t $TH -a --lookup-first -S $DB --name1 $N1
|
34
|
-
--$MIGA_AAI_SAVE_RBM || echo "0"
|
31
|
+
local N1=$(miga-ds_name "$F1")
|
32
|
+
local N2=$(miga-ds_name "$F2")
|
33
|
+
aai.rb -1 "$F1" -2 "$F2" -t "$TH" -a --lookup-first -S "$DB" --name1 "$N1" \
|
34
|
+
--name2 "$N2" --$MIGA_AAI_SAVE_RBM || echo "0"
|
35
35
|
}
|
36
36
|
|
37
37
|
fx_exists miga-ani || function miga-ani {
|
@@ -39,10 +39,10 @@ fx_exists miga-ani || function miga-ani {
|
|
39
39
|
local F2=$2
|
40
40
|
local TH=$3
|
41
41
|
local DB=$4
|
42
|
-
local N1=$(miga-ds_name $F1)
|
43
|
-
local N2=$(miga-ds_name $F2)
|
44
|
-
ani.rb -1 $F1 -2 $F2 -t $TH -a --no-save-regions --no-save-rbm \
|
45
|
-
--lookup-first -S $DB --name1 $N1 --name2 $N2 || echo "0"
|
42
|
+
local N1=$(miga-ds_name "$F1")
|
43
|
+
local N2=$(miga-ds_name "$F2")
|
44
|
+
ani.rb -1 "$F1" -2 "$F2" -t "$TH" -a --no-save-regions --no-save-rbm \
|
45
|
+
--lookup-first -S "$DB" --name1 "$N1" --name2 "$N2" || echo "0"
|
46
46
|
}
|
47
47
|
|
48
48
|
fx_exists miga-haai || function miga-haai {
|
@@ -51,14 +51,14 @@ fx_exists miga-haai || function miga-haai {
|
|
51
51
|
local TH=$3
|
52
52
|
local DB=$4
|
53
53
|
local AAI_DB=$5
|
54
|
-
local N1=$(miga-ds_name $F1)
|
55
|
-
local N2=$(miga-ds_name $F2)
|
56
|
-
local HAAI=$(MIGA_AAI_SAVE_RBM="no-save-rbm" miga-aai $F1 $F2 $TH $DB)
|
54
|
+
local N1=$(miga-ds_name "$F1")
|
55
|
+
local N2=$(miga-ds_name "$F2")
|
56
|
+
local HAAI=$(MIGA_AAI_SAVE_RBM="no-save-rbm" miga-aai "$F1" "$F2" "$TH" "$DB")
|
57
57
|
if [[ "$HAAI" != "" && $(perl -e "print 1 if '$HAAI' <= 90") == "1" ]] ; then
|
58
58
|
local AAI=$(perl -e "print (100-exp(2.435076 + 0.4275193*log(100-$HAAI)))")
|
59
|
-
[[ ! -s $AAI_DB ]] && make_empty_aai_db $AAI_DB
|
60
|
-
echo "insert into aai values('$N1','$N2','$AAI',0,0,0);" | sqlite3 $AAI_DB
|
61
|
-
echo $AAI
|
59
|
+
[[ ! -s $AAI_DB ]] && make_empty_aai_db "$AAI_DB"
|
60
|
+
echo "insert into aai values('$N1','$N2','$AAI',0,0,0);" | sqlite3 "$AAI_DB"
|
61
|
+
echo "$AAI"
|
62
62
|
fi
|
63
63
|
}
|
64
64
|
|
@@ -70,9 +70,9 @@ fx_exists miga-haai_or_aai || function miga-haai_or_aai {
|
|
70
70
|
local F2=$5
|
71
71
|
local DB=$6
|
72
72
|
local TH=$7
|
73
|
-
AAI=$(miga-haai $FH1 $FH2 $TH $DBH $DB)
|
74
|
-
[[ "${AAI%.*}" -le 0 ]] && AAI=$(miga-aai $F1 $F2 $TH $DB)
|
75
|
-
echo $AAI
|
73
|
+
AAI=$(miga-haai "$FH1" "$FH2" "$TH" "$DBH" "$DB")
|
74
|
+
[[ "${AAI%.*}" -le 0 ]] && AAI=$(miga-aai "$F1" "$F2" "$TH" "$DB")
|
75
|
+
echo "$AAI"
|
76
76
|
}
|
77
77
|
|
78
78
|
fx_exists miga-val_from_db || function miga-val_from_db {
|
@@ -82,14 +82,14 @@ fx_exists miga-val_from_db || function miga-val_from_db {
|
|
82
82
|
local MT=$4
|
83
83
|
if [[ -s $DB ]] ; then
|
84
84
|
echo "select $MT from $MT where seq1='$N1' and seq2='$N2';" \
|
85
|
-
| sqlite3 $DB || echo 0
|
85
|
+
| sqlite3 "$DB" || echo 0
|
86
86
|
fi
|
87
87
|
}
|
88
88
|
|
89
89
|
fx_exists miga-aai_from_db || function miga-aai_from_db {
|
90
|
-
miga-val_from_db $1 $2 $3 aai
|
90
|
+
miga-val_from_db "$1" "$2" "$3" aai
|
91
91
|
}
|
92
92
|
|
93
93
|
fx_exists miga-ani_from_db || function miga-ani_from_db {
|
94
|
-
miga-val_from_db $1 $2 $3 ani
|
94
|
+
miga-val_from_db "$1" "$2" "$3" ani
|
95
95
|
}
|
@@ -5,9 +5,9 @@
|
|
5
5
|
set -e
|
6
6
|
|
7
7
|
# Deal with previous runs (if any)
|
8
|
-
exists $DATASET.haai.db && cp $DATASET.haai.db $TMPDIR
|
9
|
-
exists $DATASET.a[an]i.db && cp $DATASET.a[an]i.db $TMPDIR
|
10
|
-
exists $DATASET.a[an]i.9[05] && rm $DATASET.a[an]i.9[05]
|
8
|
+
exists "$DATASET".haai.db && cp "$DATASET".haai.db "$TMPDIR"
|
9
|
+
exists "$DATASET".a[an]i.db && cp "$DATASET".a[an]i.db "$TMPDIR"
|
10
|
+
exists "$DATASET".a[an]i.9[05] && rm "$DATASET".a[an]i.9[05]
|
11
11
|
N=0
|
12
12
|
fx_exists miga-checkpoint_n || function miga-checkpoint_n {
|
13
13
|
let N=$N+1
|
@@ -15,9 +15,9 @@ fx_exists miga-checkpoint_n || function miga-checkpoint_n {
|
|
15
15
|
for metric in haai aai ani ; do
|
16
16
|
if [[ -s $TMPDIR/$DATASET.$metric.db ]] ; then
|
17
17
|
echo "select count(*) from ${metric#h};" \
|
18
|
-
| sqlite3 $TMPDIR/$DATASET.$metric.db \
|
18
|
+
| sqlite3 "$TMPDIR/$DATASET.$metric.db" \
|
19
19
|
>/dev/null || exit 1
|
20
|
-
cp $TMPDIR/$DATASET.$metric.db .
|
20
|
+
cp "$TMPDIR/$DATASET.$metric.db" .
|
21
21
|
fi
|
22
22
|
done
|
23
23
|
N=0
|
@@ -28,18 +28,18 @@ fx_exists miga-noref_haai_or_aai || function miga-noref_haai_or_aai {
|
|
28
28
|
local Q=$1
|
29
29
|
local S=$2
|
30
30
|
[[ -s $TMPDIR/$Q.faa ]] \
|
31
|
-
|| cp ../06.cds/$Q.faa $TMPDIR/$Q.faa
|
32
|
-
miga-haai_or_aai $ESS/$Q.ess.faa $ESS/$S.ess.faa $TMPDIR/$Q.haai.db \
|
33
|
-
$TMPDIR/$Q.faa ../06.cds/$S.faa $TMPDIR/$Q.aai.db $CORES
|
31
|
+
|| cp "../06.cds/$Q.faa" "$TMPDIR/$Q.faa"
|
32
|
+
miga-haai_or_aai "$ESS/$Q.ess.faa" "$ESS/$S.ess.faa" "$TMPDIR/$Q.haai.db" \
|
33
|
+
"$TMPDIR/$Q.faa" "../06.cds/$S.faa" "$TMPDIR/$Q.aai.db" "$CORES"
|
34
34
|
}
|
35
35
|
|
36
36
|
fx_exists miga-noref_ani || function miga-noref_ani {
|
37
37
|
local Q=$1
|
38
38
|
local S=$2
|
39
39
|
[[ -s $TMPDIR/$Q.LargeContigs.fna ]] \
|
40
|
-
|| cp ../05.assembly/$Q.LargeContigs.fna $TMPDIR/$Q.LargeContigs.fna
|
41
|
-
miga-ani $TMPDIR/$Q.LargeContigs.fna ../05.assembly/$S.LargeContigs.fna \
|
42
|
-
$CORES $TMPDIR/$Q.ani.db
|
40
|
+
|| cp ../05.assembly/$Q.LargeContigs.fna "$TMPDIR/$Q.LargeContigs.fna"
|
41
|
+
miga-ani "$TMPDIR/$Q.LargeContigs.fna" "../05.assembly/$S.LargeContigs.fna" \
|
42
|
+
"$CORES" "$TMPDIR/$Q.ani.db"
|
43
43
|
}
|
44
44
|
|
45
45
|
|
@@ -63,12 +63,12 @@ while [[ -e "$CLADES/$CLASSIF/miga-project.medoids" ]] ; do
|
|
63
63
|
VAL_MED=""
|
64
64
|
VAL_CLS=""
|
65
65
|
i_n=0
|
66
|
-
|
66
|
+
while read i ; do
|
67
67
|
let i_n=$i_n+1
|
68
68
|
if [[ $METRIC == "aai" ]] ; then
|
69
|
-
VAL=$(miga-noref_haai_or_aai $DATASET $i)
|
69
|
+
VAL=$(miga-noref_haai_or_aai "$DATASET" "$i")
|
70
70
|
else
|
71
|
-
VAL=$(miga-noref_ani $DATASET $i)
|
71
|
+
VAL=$(miga-noref_ani "$DATASET" "$i")
|
72
72
|
fi
|
73
73
|
miga-checkpoint_n
|
74
74
|
if [[ $(perl -e "print 1 if '$VAL' >= '$MAX_VAL'") == "1" ]] ; then
|
@@ -77,7 +77,7 @@ while [[ -e "$CLADES/$CLASSIF/miga-project.medoids" ]] ; do
|
|
77
77
|
VAL_CLS=$i_n
|
78
78
|
echo "[$CLASSIF] New max: $VAL_MED ($VAL_CLS): $MAX_VAL"
|
79
79
|
fi
|
80
|
-
done
|
80
|
+
done < "$CLADES/$CLASSIF/miga-project.medoids"
|
81
81
|
CLASSIF="$CLASSIF/miga-project.sc-$VAL_CLS"
|
82
82
|
echo "$VAL_CLS $VAL_MED $MAX_VAL $CLASSIF" \
|
83
83
|
>> "$DATASET.$METRIC-medoids.tsv"
|
@@ -87,17 +87,17 @@ done
|
|
87
87
|
if [[ "$CLASSIF" != "." ]] ; then
|
88
88
|
PAR=$(dirname "$CLADES/$CLASSIF")/miga-project.classif
|
89
89
|
if [[ -s "$PAR" ]] ; then
|
90
|
-
|
90
|
+
while read i ; do
|
91
91
|
if [[ $METRIC == "aai" ]] ; then
|
92
|
-
AAI=$(miga-noref_haai_or_aai $DATASET $i)
|
92
|
+
AAI=$(miga-noref_haai_or_aai "$DATASET" "$i")
|
93
93
|
else
|
94
94
|
AAI=100
|
95
95
|
fi
|
96
96
|
if [[ $(perl -e "print 1 if '$AAI' >= 90") == "1" ]] ; then
|
97
|
-
miga-noref_ani $DATASET $i
|
97
|
+
miga-noref_ani "$DATASET" "$i"
|
98
98
|
fi
|
99
99
|
miga-checkpoint_n
|
100
|
-
done
|
100
|
+
done < <(awk "\$2==$VAL_CLS{print \$1}" < "$PAR")
|
101
101
|
fi
|
102
102
|
fi
|
103
103
|
|
@@ -11,9 +11,9 @@ fx_exists miga-checkpoint_n || function miga-checkpoint_n {
|
|
11
11
|
tab="aai"
|
12
12
|
[[ "$t" == "03.ani" ]] && tab="ani"
|
13
13
|
echo "select count(*) from $tab;" \
|
14
|
-
| sqlite3 $TMPDIR/$t.db \
|
14
|
+
| sqlite3 "$TMPDIR/$t.db" \
|
15
15
|
>/dev/null || exit 1
|
16
|
-
cp $TMPDIR/$t.db $t/$DATASET.db
|
16
|
+
cp "$TMPDIR/$t.db" "$t/$DATASET.db"
|
17
17
|
fi
|
18
18
|
done
|
19
19
|
N=0
|
@@ -25,7 +25,7 @@ ESS="../07.annotation/01.function/01.essential"
|
|
25
25
|
|
26
26
|
# Initialize temporals
|
27
27
|
for t in 01.haai 02.aai 03.ani ; do
|
28
|
-
[[ -s $t/$DATASET.db ]] && cp $t/$DATASET.db $TMPDIR/$t.db
|
28
|
+
[[ -s $t/$DATASET.db ]] && cp "$t/$DATASET.db" "$TMPDIR/$t.db"
|
29
29
|
done
|
30
30
|
N=1
|
31
31
|
|
@@ -36,38 +36,40 @@ for i in $(miga list_datasets -P "$PROJECT" --ref --no-multi) ; do
|
|
36
36
|
# Check if the i-th dataset is ready
|
37
37
|
[[ -s $ESS/$i.done && -s $ESS/$i.json ]] || continue
|
38
38
|
# Check if this is done (e.g., in a previous failed iteration)
|
39
|
-
AAI=$(miga-aai_from_db $DATASET $i $TMPDIR/02.aai.db)
|
39
|
+
AAI=$(miga-aai_from_db "$DATASET" "$i" "$TMPDIR/02.aai.db")
|
40
40
|
# Try the other direction
|
41
|
-
[[ "${AAI%.*}" -le 0 ]]
|
41
|
+
[[ "${AAI%.*}" -le 0 ]] \
|
42
|
+
&& AAI=$(miga-aai_from_db "$i" "$DATASET" "02.aai/$i.db")
|
42
43
|
# Try with hAAI
|
43
44
|
if [[ "${AAI%.*}" -le 0 ]] ; then
|
44
45
|
[[ -e "$TMPDIR/$DATASET.ess.faa" ]] \
|
45
|
-
|| cp $ESS/$DATASET.ess.faa $TMPDIR/$DATASET.ess.faa
|
46
|
-
AAI=$(miga-haai $TMPDIR/$DATASET.ess.faa $ESS/$i.ess.faa \
|
47
|
-
$CORES $TMPDIR/01.haai.db $TMPDIR/02.aai.db)
|
46
|
+
|| cp "$ESS/$DATASET.ess.faa" "$TMPDIR/$DATASET.ess.faa"
|
47
|
+
AAI=$(miga-haai "$TMPDIR/$DATASET.ess.faa" "$ESS/$i.ess.faa" \
|
48
|
+
"$CORES" "$TMPDIR/01.haai.db" "$TMPDIR/02.aai.db")
|
48
49
|
fi
|
49
50
|
# Try with complete AAI
|
50
51
|
if [[ "${AAI%.*}" -le 0 ]] ; then
|
51
52
|
[[ -e "$TMPDIR/$DATASET.faa" ]] \
|
52
|
-
|| cp ../06.cds/$DATASET.faa $TMPDIR/$DATASET.faa
|
53
|
-
AAI=$(miga-aai $TMPDIR/$DATASET.faa ../06.cds/$i.faa \
|
54
|
-
$CORES $TMPDIR/02.aai.db)
|
53
|
+
|| cp "../06.cds/$DATASET.faa" "$TMPDIR/$DATASET.faa"
|
54
|
+
AAI=$(miga-aai "$TMPDIR/$DATASET.faa" "../06.cds/$i.faa" \
|
55
|
+
"$CORES" "$TMPDIR/02.aai.db")
|
55
56
|
fi
|
56
57
|
# Check if ANI is meaningful
|
57
58
|
if [[ -e "../05.assembly/$DATASET.LargeContigs.fna" \
|
58
59
|
&& -e "../05.assembly/$i.LargeContigs.fna" \
|
59
60
|
&& $(perl -e "print 1 if '$AAI' >= 90") == "1" ]] ; then
|
60
61
|
# Check if this is done (e.g., in a previous failed iteration)
|
61
|
-
ANI=$(miga-ani_from_db $DATASET $i $TMPDIR/03.ani.db)
|
62
|
+
ANI=$(miga-ani_from_db "$DATASET" "$i" "$TMPDIR/03.ani.db")
|
62
63
|
# Try the other direction
|
63
|
-
[[ "${ANI%.*}" -le 0 ]]
|
64
|
+
[[ "${ANI%.*}" -le 0 ]] \
|
65
|
+
&& ANI=$(miga-ani_from_db "$i" "$DATASET" "03.ani/$i.db")
|
64
66
|
# Calculate it
|
65
67
|
if [[ "${ANI%.*}" -le 0 ]] ; then
|
66
68
|
[[ -e "$TMPDIR/$DATASET.LargeContigs.fna" ]] \
|
67
|
-
|| cp ../05.assembly/$DATASET.LargeContigs.fna \
|
68
|
-
$TMPDIR/$DATASET.LargeContigs.fna
|
69
|
-
ANI=$(miga-ani $TMPDIR/$DATASET.LargeContigs.fna \
|
70
|
-
../05.assembly/$i.LargeContigs.fna $CORES $TMPDIR/03.ani.db)
|
69
|
+
|| cp "../05.assembly/$DATASET.LargeContigs.fna" \
|
70
|
+
"$TMPDIR/$DATASET.LargeContigs.fna"
|
71
|
+
ANI=$(miga-ani "$TMPDIR/$DATASET.LargeContigs.fna" \
|
72
|
+
"../05.assembly/$i.LargeContigs.fna" "$CORES" "$TMPDIR/03.ani.db")
|
71
73
|
fi
|
72
74
|
fi
|
73
75
|
miga-checkpoint_n
|
data/test/daemon_test.rb
CHANGED
@@ -57,8 +57,8 @@ class DaemonTest < Test::Unit::TestCase
|
|
57
57
|
end
|
58
58
|
assert_equal(DateTime, d.last_alive.class)
|
59
59
|
assert(out.string =~ /-{20}\n.*MiGA:#{p.name} launched/)
|
60
|
-
|
61
|
-
assert_equal(
|
60
|
+
2.times{ d.in_loop }
|
61
|
+
assert_equal(3, d.loop_i)
|
62
62
|
out = capture_stdout do
|
63
63
|
d.in_loop
|
64
64
|
end
|
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.2.
|
4
|
+
version: 0.2.3.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:
|
11
|
+
date: 2017-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- lib/miga/dataset_result.rb
|
95
95
|
- lib/miga/metadata.rb
|
96
96
|
- lib/miga/project.rb
|
97
|
+
- lib/miga/project_result.rb
|
97
98
|
- lib/miga/remote_dataset.rb
|
98
99
|
- lib/miga/result.rb
|
99
100
|
- lib/miga/tax_dist.rb
|
@@ -191,8 +192,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
192
|
version: '0'
|
192
193
|
requirements: []
|
193
194
|
rubyforge_project:
|
194
|
-
rubygems_version: 2.0.14
|
195
|
+
rubygems_version: 2.0.14.1
|
195
196
|
signing_key:
|
196
197
|
specification_version: 4
|
197
198
|
summary: MiGA
|
198
199
|
test_files: []
|
200
|
+
has_rdoc: true
|