miga-base 1.3.13.7 → 1.3.13.9
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/lib/miga/cli/action/doctor/base.rb +3 -1
- data/lib/miga/cli/action/doctor/distances.rb +7 -7
- data/lib/miga/cli/action/doctor/operations.rb +1 -1
- data/lib/miga/json.rb +1 -1
- data/lib/miga/result.rb +17 -5
- data/lib/miga/version.rb +2 -2
- data/test/result_stats_test.rb +17 -17
- data/test/result_test.rb +24 -0
- 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: 843f35d4fa4d3543cc030db30b32ba87e40e21c967c4ecf3832973857e58dc05
|
4
|
+
data.tar.gz: e6f121106bce201cba4d6da053c1a07d977b12f5ee4d02d84c63ca204e4afa29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de88c20be5deffa734c0fc692bde8ecc7f87c1bea571c125915b032232e1c9a54e41eb37f3c666f54a2adfd1be64adfb12ec61000553a3b1ace9ba70c7a3d048
|
7
|
+
data.tar.gz: d2ff4a70266159ccca8c1cff3dbaf0c52316e5608096014c04523e309f6ce768e1daa4f779275ef0293cb83d14af982d9c8a5412e1d433f25425f76adcac8261
|
@@ -73,7 +73,9 @@ module MiGA::Cli::Action::Doctor::Base
|
|
73
73
|
|
74
74
|
##
|
75
75
|
# Reads all the distance estimates in +a+ -> * for +metric+ and
|
76
|
-
# returns them as a hash +{"b_name" => [val, sd, ...], ...}+
|
76
|
+
# returns them as a hash +{"b_name" => [val, sd, ...], ...}+ for
|
77
|
+
# rows with values other than the metric, or +{"b_name" => val}+ for
|
78
|
+
# rows with the metric only
|
77
79
|
def read_bidirectional(a, metric)
|
78
80
|
db_file = a.result(:distances)&.file_path("#{metric}_db") or return {}
|
79
81
|
sql = "select seq2, #{metric}, sd, n, omega from #{metric}"
|
@@ -70,10 +70,10 @@ module MiGA::Cli::Action::Doctor::Distances
|
|
70
70
|
#---- Auxuliary functions -----
|
71
71
|
|
72
72
|
##
|
73
|
-
# Make a temporal directory holding partial bidirectionality reports (one per
|
74
|
-
# in a custom multi-JSON format. Requires a MiGA::Project +project+
|
75
|
-
# the reference datasets +ref_ds+. Returns the path to the
|
76
|
-
# Used by +check_bidir+
|
73
|
+
# Make a temporal directory holding partial bidirectionality reports (one per
|
74
|
+
# thread) in a custom multi-JSON format. Requires a MiGA::Project +project+
|
75
|
+
# and the iterator of the reference datasets +ref_ds+. Returns the path to the
|
76
|
+
# temporal directory created. Used by +check_bidir+
|
77
77
|
def partial_bidir_tmp(project, ref_ds)
|
78
78
|
n = ref_ds.size
|
79
79
|
|
@@ -106,9 +106,9 @@ module MiGA::Cli::Action::Doctor::Distances
|
|
106
106
|
end
|
107
107
|
|
108
108
|
##
|
109
|
-
# Read partial temporal reports of bidirectionality (located in +tmp+), and
|
110
|
-
# a two-deep hash with the final missingness report by metric (first
|
111
|
-
# dataset name (second key). Used by +check_bidir+
|
109
|
+
# Read partial temporal reports of bidirectionality (located in +tmp+), and
|
110
|
+
# return a two-deep hash with the final missingness report by metric (first
|
111
|
+
# key) and dataset name (second key). Used by +check_bidir+
|
112
112
|
def merge_bidir_tmp(tmp)
|
113
113
|
dist = { aai: {}, ani: {} }
|
114
114
|
cli[:threads].times do |i|
|
data/lib/miga/json.rb
CHANGED
data/lib/miga/result.rb
CHANGED
@@ -33,14 +33,26 @@ class MiGA::Result < MiGA::MiGA
|
|
33
33
|
##
|
34
34
|
# Check if +path+ describes a result and otherwise create
|
35
35
|
# it using the passed block. If +force+, ignore existing
|
36
|
-
# JSON in +path+ if any
|
36
|
+
# JSON in +path+ if any, but it can rescue the versions
|
37
|
+
# field from the old one if it exists and the new one doesn't
|
38
|
+
# contain such field.
|
37
39
|
def create(path, force = false)
|
38
|
-
|
39
|
-
|
40
|
-
return
|
40
|
+
# Deal with old results first
|
41
|
+
r_old = load(path)
|
42
|
+
return r_old if r_old && !force
|
41
43
|
|
44
|
+
# Create the new result using the block passed
|
45
|
+
FileUtils.rm(path) if r_old
|
42
46
|
yield
|
43
|
-
|
47
|
+
|
48
|
+
# Load and return
|
49
|
+
load(path).tap do |r_new|
|
50
|
+
# Rescue versions and start (if any and if necessary)
|
51
|
+
if r_old
|
52
|
+
%i[versions started].each { |i| r_new[i] ||= r_old[i] }
|
53
|
+
r_new[:versions] = (r_old[:versions] || {}).merge(r_new[:versions])
|
54
|
+
end
|
55
|
+
end
|
44
56
|
end
|
45
57
|
end
|
46
58
|
|
data/lib/miga/version.rb
CHANGED
@@ -12,7 +12,7 @@ module MiGA
|
|
12
12
|
# - String indicating release status:
|
13
13
|
# - rc* release candidate, not released as gem
|
14
14
|
# - [0-9]+ stable release, released as gem
|
15
|
-
VERSION = [1.3, 13,
|
15
|
+
VERSION = [1.3, 13, 9].freeze
|
16
16
|
|
17
17
|
##
|
18
18
|
# Nickname for the current major.minor version.
|
@@ -20,7 +20,7 @@ module MiGA
|
|
20
20
|
|
21
21
|
##
|
22
22
|
# Date of the current gem relese.
|
23
|
-
VERSION_DATE = Date.new(2024, 3,
|
23
|
+
VERSION_DATE = Date.new(2024, 3, 31)
|
24
24
|
|
25
25
|
##
|
26
26
|
# References of MiGA
|
data/test/result_stats_test.rb
CHANGED
@@ -23,12 +23,12 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
23
23
|
File.open(fq, 'w') { |fh| fh.puts '@1', 'ACTAC', '+', '####' }
|
24
24
|
touch_done(dir)
|
25
25
|
r = dataset.add_result(:raw_reads)
|
26
|
-
assert_equal({}, r
|
26
|
+
assert_equal({}, r.stats)
|
27
27
|
r.compute_stats
|
28
|
-
assert_not_empty(r
|
29
|
-
assert_equal(Hash, r
|
30
|
-
assert_equal(1, r
|
31
|
-
assert_equal([40.0, '%'], r
|
28
|
+
assert_not_empty(r.stats)
|
29
|
+
assert_equal(Hash, r.stats.class)
|
30
|
+
assert_equal(1, r.stats[:reads])
|
31
|
+
assert_equal([40.0, '%'], r.stats[:g_c_content])
|
32
32
|
end
|
33
33
|
|
34
34
|
def test_coupled_raw_reads
|
@@ -40,10 +40,10 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
40
40
|
touch_done(dir)
|
41
41
|
r = dataset.add_result(:raw_reads)
|
42
42
|
r.compute_stats
|
43
|
-
assert_not_empty(r
|
44
|
-
assert_nil(r
|
45
|
-
assert_equal(1, r
|
46
|
-
assert_equal([40.0, '%'], r
|
43
|
+
assert_not_empty(r.stats)
|
44
|
+
assert_nil(r.stats[:reads])
|
45
|
+
assert_equal(1, r.stats[:read_pairs])
|
46
|
+
assert_equal([40.0, '%'], r.stats[:reverse_g_c_content])
|
47
47
|
end
|
48
48
|
|
49
49
|
def test_trimmed_reads
|
@@ -51,9 +51,9 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
51
51
|
FileUtils.touch(file_path(dir, '.1.clipped.fastq'))
|
52
52
|
touch_done(dir)
|
53
53
|
r = dataset.add_result(:trimmed_reads)
|
54
|
-
assert_equal({}, r
|
54
|
+
assert_equal({}, r.stats)
|
55
55
|
r.compute_stats
|
56
|
-
assert_equal({}, r
|
56
|
+
assert_equal({}, r.stats)
|
57
57
|
end
|
58
58
|
|
59
59
|
def test_read_quality
|
@@ -62,9 +62,9 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
62
62
|
Dir.mkdir(file_path(dir, '.fastqc'))
|
63
63
|
touch_done(dir)
|
64
64
|
r = dataset.add_result(:read_quality)
|
65
|
-
assert_equal({}, r
|
65
|
+
assert_equal({}, r.stats)
|
66
66
|
r.compute_stats
|
67
|
-
assert_equal({}, r
|
67
|
+
assert_equal({}, r.stats)
|
68
68
|
end
|
69
69
|
|
70
70
|
def test_trimmed_fasta
|
@@ -133,10 +133,10 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
133
133
|
r = dataset.add_result(:taxonomy)
|
134
134
|
|
135
135
|
# Test assertions
|
136
|
-
assert_nil(r
|
136
|
+
assert_nil(r.stats[:closest_relative])
|
137
137
|
r.compute_stats
|
138
|
-
assert_equal('dad', r
|
139
|
-
assert_equal([100.0, '%'], r
|
140
|
-
assert_equal(0.0, r
|
138
|
+
assert_equal('dad', r.stats[:closest_relative])
|
139
|
+
assert_equal([100.0, '%'], r.stats[:aai])
|
140
|
+
assert_equal(0.0, r.stats[:phylum_pvalue])
|
141
141
|
end
|
142
142
|
end
|
data/test/result_test.rb
CHANGED
@@ -26,6 +26,30 @@ class ResultTest < Test::Unit::TestCase
|
|
26
26
|
assert_instance_of(MiGA::Result, r)
|
27
27
|
end
|
28
28
|
|
29
|
+
def test_overwrite_result
|
30
|
+
r = dataset.add_result(:trimmed_reads)
|
31
|
+
r[:ephemeral] = '@'
|
32
|
+
r[:versions] = { you: 'best' }
|
33
|
+
r.save
|
34
|
+
|
35
|
+
# Before reloading
|
36
|
+
assert_equal('@', r[:ephemeral])
|
37
|
+
assert_equal('best', r[:versions][:you])
|
38
|
+
assert_nil(r[:versions][:MiGA])
|
39
|
+
|
40
|
+
# After reloading (without forcing)
|
41
|
+
r = dataset.add_result(:trimmed_reads, true, force: false)
|
42
|
+
assert_equal('@', r[:ephemeral])
|
43
|
+
assert_equal('best', r[:versions][:you])
|
44
|
+
assert_nil(r[:versions][:MiGA])
|
45
|
+
|
46
|
+
# After reloading (with forcing)
|
47
|
+
r = dataset.add_result(:trimmed_reads, true, force: true)
|
48
|
+
assert_nil(r[:ephemeral])
|
49
|
+
assert_equal('best', r[:versions][:you])
|
50
|
+
assert_not_nil(r[:versions][:MiGA])
|
51
|
+
end
|
52
|
+
|
29
53
|
def test_unlink
|
30
54
|
r = project.add_result(:clade_finding)
|
31
55
|
path = r.path
|
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: 1.3.13.
|
4
|
+
version: 1.3.13.9
|
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: 2024-03-
|
11
|
+
date: 2024-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: daemons
|