miga-base 0.7.3.0 → 0.7.7.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/lib/miga/cli.rb +10 -8
- data/lib/miga/cli/action.rb +2 -3
- data/lib/miga/cli/action/about.rb +5 -6
- data/lib/miga/cli/action/add.rb +18 -12
- data/lib/miga/cli/action/add_result.rb +2 -3
- data/lib/miga/cli/action/archive.rb +1 -2
- data/lib/miga/cli/action/classify_wf.rb +8 -6
- data/lib/miga/cli/action/console.rb +0 -1
- data/lib/miga/cli/action/daemon.rb +7 -7
- data/lib/miga/cli/action/date.rb +0 -1
- data/lib/miga/cli/action/derep_wf.rb +5 -4
- data/lib/miga/cli/action/doctor.rb +71 -82
- data/lib/miga/cli/action/doctor/base.rb +102 -0
- data/lib/miga/cli/action/edit.rb +14 -2
- data/lib/miga/cli/action/files.rb +8 -8
- data/lib/miga/cli/action/find.rb +5 -6
- data/lib/miga/cli/action/generic.rb +7 -7
- data/lib/miga/cli/action/get.rb +20 -17
- data/lib/miga/cli/action/get_db.rb +8 -2
- data/lib/miga/cli/action/index_wf.rb +1 -1
- data/lib/miga/cli/action/init.rb +53 -41
- data/lib/miga/cli/action/init/daemon_helper.rb +65 -43
- data/lib/miga/cli/action/lair.rb +7 -7
- data/lib/miga/cli/action/ln.rb +6 -6
- data/lib/miga/cli/action/ls.rb +1 -2
- data/lib/miga/cli/action/ncbi_get.rb +11 -3
- data/lib/miga/cli/action/new.rb +4 -4
- data/lib/miga/cli/action/next_step.rb +0 -1
- data/lib/miga/cli/action/preproc_wf.rb +3 -3
- data/lib/miga/cli/action/quality_wf.rb +1 -1
- data/lib/miga/cli/action/rm.rb +2 -3
- data/lib/miga/cli/action/run.rb +8 -8
- data/lib/miga/cli/action/stats.rb +8 -4
- data/lib/miga/cli/action/summary.rb +7 -6
- data/lib/miga/cli/action/tax_dist.rb +8 -4
- data/lib/miga/cli/action/tax_index.rb +3 -4
- data/lib/miga/cli/action/tax_set.rb +7 -6
- data/lib/miga/cli/action/tax_test.rb +6 -5
- data/lib/miga/cli/action/wf.rb +21 -19
- data/lib/miga/cli/base.rb +34 -32
- data/lib/miga/cli/objects_helper.rb +27 -18
- data/lib/miga/cli/opt_helper.rb +3 -2
- data/lib/miga/common.rb +2 -5
- data/lib/miga/common/base.rb +15 -16
- data/lib/miga/common/format.rb +8 -5
- data/lib/miga/common/hooks.rb +1 -4
- data/lib/miga/common/path.rb +4 -9
- data/lib/miga/common/with_daemon.rb +6 -3
- data/lib/miga/common/with_daemon_class.rb +3 -2
- data/lib/miga/common/with_result.rb +2 -1
- data/lib/miga/daemon.rb +93 -44
- data/lib/miga/daemon/base.rb +30 -11
- data/lib/miga/dataset.rb +47 -37
- data/lib/miga/dataset/base.rb +52 -37
- data/lib/miga/dataset/hooks.rb +3 -4
- data/lib/miga/dataset/result.rb +17 -1
- data/lib/miga/dataset/status.rb +6 -5
- data/lib/miga/json.rb +5 -7
- data/lib/miga/lair.rb +4 -0
- data/lib/miga/metadata.rb +4 -3
- data/lib/miga/project.rb +29 -20
- data/lib/miga/project/base.rb +52 -37
- data/lib/miga/project/dataset.rb +33 -26
- data/lib/miga/project/hooks.rb +0 -3
- data/lib/miga/project/result.rb +14 -5
- data/lib/miga/remote_dataset.rb +85 -72
- data/lib/miga/remote_dataset/base.rb +11 -13
- data/lib/miga/remote_dataset/download.rb +34 -12
- data/lib/miga/result.rb +34 -25
- data/lib/miga/result/base.rb +0 -2
- data/lib/miga/result/dates.rb +1 -3
- data/lib/miga/result/source.rb +15 -16
- data/lib/miga/result/stats.rb +37 -27
- data/lib/miga/tax_dist.rb +6 -4
- data/lib/miga/tax_index.rb +17 -17
- data/lib/miga/taxonomy.rb +6 -1
- data/lib/miga/taxonomy/base.rb +19 -15
- data/lib/miga/version.rb +19 -16
- data/scripts/project_stats.bash +3 -0
- data/scripts/stats.bash +1 -1
- data/test/common_test.rb +3 -11
- data/test/daemon_helper.rb +38 -0
- data/test/daemon_test.rb +91 -99
- data/test/dataset_test.rb +63 -59
- data/test/format_test.rb +3 -11
- data/test/hook_test.rb +50 -55
- data/test/json_test.rb +7 -8
- data/test/lair_test.rb +22 -28
- data/test/metadata_test.rb +6 -14
- data/test/project_test.rb +33 -40
- data/test/remote_dataset_test.rb +26 -32
- data/test/result_stats_test.rb +17 -27
- data/test/result_test.rb +41 -34
- data/test/tax_dist_test.rb +2 -4
- data/test/tax_index_test.rb +4 -10
- data/test/taxonomy_test.rb +7 -9
- data/test/test_helper.rb +42 -1
- data/test/with_daemon_test.rb +14 -22
- data/utils/adapters.fa +13 -0
- data/utils/cleanup-databases.rb +6 -5
- data/utils/distance/base.rb +0 -1
- data/utils/distance/commands.rb +19 -12
- data/utils/distance/database.rb +25 -21
- data/utils/distance/pipeline.rb +16 -10
- data/utils/distance/runner.rb +19 -13
- data/utils/distance/temporal.rb +7 -4
- data/utils/distances.rb +1 -1
- data/utils/domain-ess-genes.rb +7 -7
- data/utils/index_metadata.rb +5 -4
- data/utils/mytaxa_scan.rb +18 -16
- data/utils/representatives.rb +5 -4
- data/utils/requirements.txt +1 -1
- data/utils/subclade/base.rb +0 -1
- data/utils/subclade/pipeline.rb +7 -6
- data/utils/subclade/runner.rb +9 -9
- data/utils/subclade/temporal.rb +0 -2
- data/utils/subclades-compile.rb +39 -37
- data/utils/subclades.rb +1 -1
- metadata +6 -4
data/test/lair_test.rb
CHANGED
@@ -2,31 +2,26 @@ require 'test_helper'
|
|
2
2
|
require 'miga/lair'
|
3
3
|
|
4
4
|
class LairTest < Test::Unit::TestCase
|
5
|
+
include TestHelper
|
5
6
|
|
6
7
|
def setup
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
"var":"{{key}}={{value}}","cmd":"echo {{task_name}} >/dev/null",
|
15
|
-
"alive":"echo 1 # {{pid}}","type":"bash","format_version":1}'
|
16
|
-
end
|
17
|
-
Dir.mkdir(File.join($tmp, 'sub'))
|
18
|
-
$p1 = MiGA::Project.new(File.join($tmp, 'project1'))
|
19
|
-
$p2 = MiGA::Project.new(File.join($tmp, 'project2'))
|
20
|
-
$p3 = MiGA::Project.new(File.join($tmp, 'sub/project3'))
|
21
|
-
end
|
8
|
+
initialize_miga_home(
|
9
|
+
<<~DAEMON
|
10
|
+
{ "maxjobs": 1, "ppn": 1, "latency": 1, "varsep": " ",
|
11
|
+
"var": "{{key}}={{value}}", "cmd": "echo {{task_name}} >/dev/null",
|
12
|
+
"alive": "echo 1 # {{pid}}", "type": "bash", "format_version": 1 }
|
13
|
+
DAEMON
|
14
|
+
)
|
22
15
|
|
23
|
-
|
24
|
-
|
25
|
-
|
16
|
+
# Make sure projects already exist
|
17
|
+
Dir.mkdir(tmpfile('sub'))
|
18
|
+
project(1)
|
19
|
+
project(2)
|
20
|
+
project('sub/project3')
|
26
21
|
end
|
27
|
-
|
22
|
+
|
28
23
|
def test_lair_init
|
29
|
-
path =
|
24
|
+
path = tmpdir
|
30
25
|
lair = MiGA::Lair.new(path, name: 'Alt-X')
|
31
26
|
assert_equal(MiGA::Lair, lair.class)
|
32
27
|
assert_equal(path, lair.path)
|
@@ -36,9 +31,8 @@ class LairTest < Test::Unit::TestCase
|
|
36
31
|
end
|
37
32
|
|
38
33
|
def test_in_loop
|
39
|
-
|
40
|
-
lair = MiGA::Lair.new(
|
41
|
-
omit_if($jruby_tests, 'JRuby doesn\'t implement fork.')
|
34
|
+
declare_forks
|
35
|
+
lair = MiGA::Lair.new(tmpdir, name: 'Oh')
|
42
36
|
child = lair.start(['--shush'])
|
43
37
|
assert_not_nil(child)
|
44
38
|
assert_gt(child, 0, 'The daemon process should have non-zero PID')
|
@@ -53,13 +47,13 @@ class LairTest < Test::Unit::TestCase
|
|
53
47
|
end
|
54
48
|
|
55
49
|
def test_first_loop
|
56
|
-
lair = MiGA::Lair.new(
|
50
|
+
lair = MiGA::Lair.new(tmpdir, name: 'Ew')
|
57
51
|
out = capture_stderr { lair.daemon_first_loop }.string
|
58
52
|
assert_match(/-{20}/, out)
|
59
53
|
end
|
60
54
|
|
61
55
|
def test_loop
|
62
|
-
lair = MiGA::Lair.new(
|
56
|
+
lair = MiGA::Lair.new(tmpdir, name: 'Ew', latency: 1, dry: true)
|
63
57
|
out = capture_stderr { assert { !lair.daemon_loop } }.string
|
64
58
|
assert_match(/Launching daemon: \S*project1/, out)
|
65
59
|
assert_match(/Launching daemon: \S*project2/, out)
|
@@ -67,13 +61,13 @@ class LairTest < Test::Unit::TestCase
|
|
67
61
|
end
|
68
62
|
|
69
63
|
def test_daemon_launch
|
70
|
-
lair = MiGA::Lair.new(
|
64
|
+
lair = MiGA::Lair.new(tmpfile('sub'), latency: 1)
|
71
65
|
p = MiGA::Project.load(File.join(lair.path, 'project3'))
|
72
66
|
d = MiGA::Daemon.new(p)
|
73
67
|
assert_not_predicate(d, :active?)
|
74
68
|
assert_path_exist(d.daemon_home)
|
75
69
|
|
76
|
-
|
70
|
+
declare_forks
|
77
71
|
capture_stdout do
|
78
72
|
FileUtils.touch(d.output_file) # <- To prevent test racing
|
79
73
|
out = capture_stderr { lair.check_directories }.string
|
@@ -92,7 +86,7 @@ class LairTest < Test::Unit::TestCase
|
|
92
86
|
end
|
93
87
|
|
94
88
|
def test_each_project
|
95
|
-
lair = MiGA::Lair.new(
|
89
|
+
lair = MiGA::Lair.new(tmpdir)
|
96
90
|
y = []
|
97
91
|
lair.each_project { |p| y << p }
|
98
92
|
assert_equal(3, y.size)
|
data/test/metadata_test.rb
CHANGED
@@ -2,19 +2,11 @@ require 'test_helper'
|
|
2
2
|
require 'miga/metadata'
|
3
3
|
|
4
4
|
class MetadataTest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
def setup
|
7
|
-
$tmp = Dir.mktmpdir
|
8
|
-
$jruby_tests = !ENV['JRUBY_TESTS'].nil?
|
9
|
-
end
|
10
|
-
|
11
|
-
def teardown
|
12
|
-
FileUtils.rm_rf $tmp
|
13
|
-
end
|
5
|
+
include TestHelper
|
14
6
|
|
15
7
|
def test_save
|
16
|
-
|
17
|
-
md1 = MiGA::Metadata.new(
|
8
|
+
declare_forks
|
9
|
+
md1 = MiGA::Metadata.new(tmpfile('md_save.json'))
|
18
10
|
FileUtils.touch(md1.lock_file)
|
19
11
|
fork do
|
20
12
|
sleep(1)
|
@@ -28,9 +20,10 @@ class MetadataTest < Test::Unit::TestCase
|
|
28
20
|
end
|
29
21
|
|
30
22
|
def test_load
|
31
|
-
md1 = MiGA::Metadata.new(
|
23
|
+
md1 = MiGA::Metadata.new(tmpfile('md_load.json'), { t: 1 })
|
32
24
|
assert_equal(1, md1[:t])
|
33
|
-
|
25
|
+
|
26
|
+
declare_forks
|
34
27
|
FileUtils.touch(md1.lock_file)
|
35
28
|
fork do
|
36
29
|
sleep(1)
|
@@ -44,5 +37,4 @@ class MetadataTest < Test::Unit::TestCase
|
|
44
37
|
assert_path_not_exist(md1.lock_file)
|
45
38
|
assert_ge(t2 - t1, 1.0)
|
46
39
|
end
|
47
|
-
|
48
40
|
end
|
data/test/project_test.rb
CHANGED
@@ -2,17 +2,10 @@ require 'test_helper'
|
|
2
2
|
require 'miga/project'
|
3
3
|
|
4
4
|
class ProjectTest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
$tmp = Dir.mktmpdir
|
7
|
-
ENV['MIGA_HOME'] = $tmp
|
8
|
-
FileUtils.touch(File.expand_path('.miga_rc', ENV['MIGA_HOME']))
|
9
|
-
FileUtils.touch(File.expand_path('.miga_daemon.json', ENV['MIGA_HOME']))
|
10
|
-
$p1 = MiGA::Project.new(File.expand_path('project1', $tmp))
|
11
|
-
end
|
5
|
+
include TestHelper
|
12
6
|
|
13
|
-
def
|
14
|
-
|
15
|
-
ENV['MIGA_HOME'] = nil
|
7
|
+
def setup
|
8
|
+
initialize_miga_home
|
16
9
|
end
|
17
10
|
|
18
11
|
def create_result_files(project, res, exts)
|
@@ -22,28 +15,26 @@ class ProjectTest < Test::Unit::TestCase
|
|
22
15
|
project.add_result(res),
|
23
16
|
"Premature registration of result #{res} at extension #{x}"
|
24
17
|
)
|
25
|
-
FileUtils.touch(File.join(project.path,
|
18
|
+
FileUtils.touch(File.join(project.path, 'data', d, "miga-project#{x}"))
|
26
19
|
end
|
27
20
|
end
|
28
21
|
|
29
22
|
def test_class_load
|
30
|
-
assert_nil(MiGA::Project.load(
|
31
|
-
|
23
|
+
assert_nil(MiGA::Project.load(tmpfile('O_o')))
|
24
|
+
assert_instance_of(MiGA::Project, MiGA::Project.load(project.path))
|
32
25
|
end
|
33
26
|
|
34
27
|
def test_create
|
35
|
-
assert_equal(
|
36
|
-
assert_path_exist(
|
28
|
+
assert_equal(tmpfile('create'), project('create').path)
|
29
|
+
assert_path_exist(tmpfile('create'))
|
37
30
|
assert_raise do
|
38
|
-
ENV['MIGA_HOME'] =
|
39
|
-
|
31
|
+
ENV['MIGA_HOME'] = tmpfile('chez-moi')
|
32
|
+
project('cuckoo')
|
40
33
|
end
|
41
|
-
ensure
|
42
|
-
ENV['MIGA_HOME'] = $tmp
|
43
34
|
end
|
44
35
|
|
45
36
|
def test_load
|
46
|
-
p =
|
37
|
+
p = project('load')
|
47
38
|
assert_equal(MiGA::Project, p.class)
|
48
39
|
File.unlink p.metadata.path
|
49
40
|
assert_raise do
|
@@ -52,13 +43,12 @@ class ProjectTest < Test::Unit::TestCase
|
|
52
43
|
end
|
53
44
|
|
54
45
|
def test_datasets
|
55
|
-
p =
|
56
|
-
d =
|
46
|
+
p = project
|
47
|
+
d = dataset(0, 'd1')
|
57
48
|
assert_equal(MiGA::Dataset, d.class)
|
58
49
|
assert_equal([d], p.datasets)
|
59
50
|
assert_equal(['d1'], p.dataset_names)
|
60
51
|
p.each_dataset { |ds| assert_equal(d, ds) }
|
61
|
-
p.each_dataset { |n, ds| assert_equal(n, ds.name) }
|
62
52
|
dr = p.unlink_dataset('d1')
|
63
53
|
assert_equal(d, dr)
|
64
54
|
assert_equal([], p.datasets)
|
@@ -66,55 +56,58 @@ class ProjectTest < Test::Unit::TestCase
|
|
66
56
|
end
|
67
57
|
|
68
58
|
def test_import_dataset
|
69
|
-
p1 =
|
59
|
+
p1 = project
|
70
60
|
d = p1.add_dataset('d1')
|
71
61
|
File.open(
|
72
|
-
|
62
|
+
File.join(p1.path, 'data', '01.raw_reads', "#{d.name}.1.fastq"), 'w'
|
73
63
|
) { |f| f.puts ':-)' }
|
74
64
|
File.open(
|
75
|
-
|
65
|
+
File.join(p1.path, 'data', '01.raw_reads', "#{d.name}.done"), 'w'
|
76
66
|
) { |f| f.puts ':-)' }
|
77
67
|
d.next_preprocessing(true)
|
78
|
-
p2 =
|
68
|
+
p2 = project('import_dataset')
|
79
69
|
assert_empty(p2.datasets)
|
80
70
|
assert_nil(p2.dataset('d1'))
|
81
71
|
p2.import_dataset(d)
|
82
72
|
assert_equal(1, p2.datasets.size)
|
83
73
|
assert_equal(MiGA::Dataset, p2.dataset('d1').class)
|
84
74
|
assert_equal(1, p2.dataset('d1').results.size)
|
85
|
-
assert_path_exist(
|
86
|
-
|
75
|
+
assert_path_exist(
|
76
|
+
File.join(p2.path, 'data', '01.raw_reads', "#{d.name}.1.fastq")
|
77
|
+
)
|
78
|
+
assert_path_exist(File.join(p2.path, 'metadata', "#{d.name}.json"))
|
87
79
|
end
|
88
80
|
|
89
81
|
def test_add_result
|
90
|
-
p1 =
|
82
|
+
p1 = project
|
91
83
|
assert_nil(p1.add_result(:doom))
|
92
84
|
%w[.Rdata .log .txt .done].each do |x|
|
93
85
|
assert_nil(p1.add_result(:haai_distances))
|
94
86
|
FileUtils.touch(
|
95
|
-
File.join(
|
87
|
+
File.join(
|
88
|
+
p1.path, 'data', '09.distances', '01.haai', "miga-project#{x}"
|
89
|
+
)
|
96
90
|
)
|
97
91
|
end
|
98
92
|
assert_equal(MiGA::Result, p1.add_result(:haai_distances).class)
|
99
93
|
end
|
100
94
|
|
101
95
|
def test_result
|
102
|
-
p1 =
|
96
|
+
p1 = project
|
103
97
|
assert_nil(p1.result(:n00b))
|
104
98
|
assert_nil(p1.result(:project_stats))
|
105
|
-
File.
|
106
|
-
|
107
|
-
) { |fh| fh.puts '{}' }
|
99
|
+
json = File.join(p1.path, 'data', '90.stats', 'miga-project.json')
|
100
|
+
File.open(json, 'w') { |fh| fh.puts '{}' }
|
108
101
|
assert_not_nil(p1.result(:project_stats))
|
109
102
|
assert_equal(1, p1.results.size)
|
110
103
|
end
|
111
104
|
|
112
105
|
def test_preprocessing
|
113
|
-
p1 =
|
106
|
+
p1 = project
|
114
107
|
assert_predicate(p1, :done_preprocessing?)
|
115
108
|
d1 = p1.add_dataset('BAH')
|
116
109
|
assert_not_predicate(p1, :done_preprocessing?)
|
117
|
-
FileUtils.touch(File.
|
110
|
+
FileUtils.touch(File.join(p1.path, 'data', '90.stats', "#{d1.name}.done"))
|
118
111
|
assert_predicate(p1, :done_preprocessing?)
|
119
112
|
assert_nil(p1.next_inclade)
|
120
113
|
p1.metadata[:type] = :clade
|
@@ -127,7 +120,7 @@ class ProjectTest < Test::Unit::TestCase
|
|
127
120
|
aai_distances: %w[.Rdata .log .txt],
|
128
121
|
ani_distances: %w[.Rdata .log .txt],
|
129
122
|
clade_finding: %w[.pdf .classif .medoids
|
130
|
-
|
123
|
+
.class.tsv .class.nwk .proposed-clades],
|
131
124
|
subclades: %w[.pdf .classif .medoids .class.tsv .class.nwk],
|
132
125
|
ogs: %w[.ogs .stats]
|
133
126
|
}
|
@@ -141,7 +134,7 @@ class ProjectTest < Test::Unit::TestCase
|
|
141
134
|
end
|
142
135
|
|
143
136
|
def test_empty_results
|
144
|
-
p1 =
|
137
|
+
p1 = project
|
145
138
|
p1.metadata[:type] = :clade
|
146
139
|
%i[clade_finding subclades ogs].each do |r|
|
147
140
|
assert_nil(p1.add_result(r), "Unexpected result exists: #{r}")
|
@@ -151,7 +144,7 @@ class ProjectTest < Test::Unit::TestCase
|
|
151
144
|
end
|
152
145
|
|
153
146
|
def test_force_result
|
154
|
-
p1 =
|
147
|
+
p1 = project
|
155
148
|
create_result_files(p1, :ogs, %w[.empty])
|
156
149
|
date1 = p1.add_result(:ogs)[:created]
|
157
150
|
sleep(1)
|
data/test/remote_dataset_test.rb
CHANGED
@@ -3,19 +3,10 @@ require 'miga/project'
|
|
3
3
|
require 'miga/remote_dataset'
|
4
4
|
|
5
5
|
class RemoteDatasetTest < Test::Unit::TestCase
|
6
|
+
include TestHelper
|
6
7
|
|
7
8
|
def setup
|
8
|
-
|
9
|
-
ENV['MIGA_HOME'] = $tmp
|
10
|
-
FileUtils.touch(File.expand_path('.miga_rc', ENV["MIGA_HOME"]))
|
11
|
-
FileUtils.touch(File.expand_path('.miga_daemon.json', ENV["MIGA_HOME"]))
|
12
|
-
$p1 = MiGA::Project.new(File.expand_path('project1', $tmp))
|
13
|
-
$remote_tests = !ENV['REMOTE_TESTS'].nil?
|
14
|
-
end
|
15
|
-
|
16
|
-
def teardown
|
17
|
-
FileUtils.rm_rf $tmp
|
18
|
-
ENV['MIGA_HOME'] = nil
|
9
|
+
initialize_miga_home
|
19
10
|
end
|
20
11
|
|
21
12
|
def test_class_universe
|
@@ -33,19 +24,22 @@ class RemoteDatasetTest < Test::Unit::TestCase
|
|
33
24
|
{ embl: :ebi, nuccore: :ncbi }.each do |db, universe|
|
34
25
|
rd = MiGA::RemoteDataset.new(hiv2, db, universe)
|
35
26
|
assert_equal([hiv2], rd.ids)
|
36
|
-
|
27
|
+
|
28
|
+
declare_remote_access
|
37
29
|
tx = rd.get_ncbi_taxonomy
|
38
30
|
msg = "Failed on #{universe}:#{db}"
|
39
31
|
assert_equal(MiGA::Taxonomy, tx.class, msg)
|
40
32
|
assert_equal('Lentivirus', tx[:g], msg)
|
41
33
|
assert_equal(
|
42
|
-
'ns:ncbi
|
43
|
-
'g:Lentivirus
|
34
|
+
'ns:ncbi k:Pararnavirae p:Artverviricota c:Revtraviricetes ' \
|
35
|
+
'o:Ortervirales f:Retroviridae g:Lentivirus ' \
|
36
|
+
's:Human_immunodeficiency_virus_2',
|
44
37
|
tx.to_s, msg
|
45
38
|
)
|
46
39
|
assert_equal(
|
47
|
-
'ns:ncbi d: k: p: c:
|
48
|
-
'
|
40
|
+
'ns:ncbi d: k:Pararnavirae p:Artverviricota c:Revtraviricetes ' \
|
41
|
+
'o:Ortervirales f:Retroviridae g:Lentivirus ' \
|
42
|
+
's:Human_immunodeficiency_virus_2 ssp: str: ds:',
|
49
43
|
tx.to_s(true), msg
|
50
44
|
)
|
51
45
|
assert_equal('ncbi', tx.namespace, msg)
|
@@ -57,8 +51,9 @@ class RemoteDatasetTest < Test::Unit::TestCase
|
|
57
51
|
n = 'Cjac_L14'
|
58
52
|
rd = MiGA::RemoteDataset.new(cjac, :assembly_gz, :web)
|
59
53
|
assert_equal([cjac], rd.ids)
|
60
|
-
|
61
|
-
|
54
|
+
|
55
|
+
declare_remote_access
|
56
|
+
p = project
|
62
57
|
assert_nil(p.dataset(n))
|
63
58
|
rd.save_to(p, n)
|
64
59
|
p.add_dataset(n)
|
@@ -67,7 +62,7 @@ class RemoteDatasetTest < Test::Unit::TestCase
|
|
67
62
|
end
|
68
63
|
|
69
64
|
def test_asm_acc2id
|
70
|
-
|
65
|
+
declare_remote_access
|
71
66
|
assert_nil(MiGA::RemoteDataset.ncbi_asm_acc2id('NotAnAccession'))
|
72
67
|
id = MiGA::RemoteDataset.ncbi_asm_acc2id('GCA_004684205.1')
|
73
68
|
assert_equal('2514661', id)
|
@@ -75,9 +70,9 @@ class RemoteDatasetTest < Test::Unit::TestCase
|
|
75
70
|
end
|
76
71
|
|
77
72
|
def test_update_metadata
|
78
|
-
|
73
|
+
declare_remote_access
|
79
74
|
hiv1 = 'GCF_000856385.1'
|
80
|
-
d1 = MiGA::Dataset.new(
|
75
|
+
d1 = MiGA::Dataset.new(project, 'd1')
|
81
76
|
assert_nil(d1.metadata[:ncbi_assembly])
|
82
77
|
rd = MiGA::RemoteDataset.new(hiv1, :assembly, :ncbi)
|
83
78
|
rd.update_metadata(d1, passthrough: 123, metadata_only: true)
|
@@ -87,36 +82,35 @@ class RemoteDatasetTest < Test::Unit::TestCase
|
|
87
82
|
end
|
88
83
|
|
89
84
|
def test_type_status_asm
|
90
|
-
|
85
|
+
declare_remote_access
|
91
86
|
rd = MiGA::RemoteDataset.new('GCF_000018105.1', :assembly, :ncbi)
|
92
87
|
assert { rd.get_metadata[:is_type] }
|
93
88
|
end
|
94
89
|
|
95
90
|
def test_nontype_status_asm
|
96
|
-
|
91
|
+
declare_remote_access
|
97
92
|
rd = MiGA::RemoteDataset.new('GCA_004684205.1', :assembly, :ncbi)
|
98
93
|
assert { !rd.get_metadata[:is_type] }
|
99
94
|
end
|
100
95
|
|
101
96
|
def test_type_status_nuccore
|
102
|
-
|
97
|
+
declare_remote_access
|
103
98
|
rd = MiGA::RemoteDataset.new('NC_019748.1', :nuccore, :ncbi)
|
104
99
|
assert { rd.get_metadata[:is_type] }
|
105
100
|
end
|
106
101
|
|
107
102
|
def test_ref_type_status
|
108
|
-
|
103
|
+
declare_remote_access
|
109
104
|
rd = MiGA::RemoteDataset.new('GCA_002849345', :assembly, :ncbi)
|
110
105
|
assert { !rd.get_metadata[:is_type] }
|
111
106
|
assert { rd.get_metadata[:is_ref_type] }
|
112
107
|
end
|
113
108
|
|
114
109
|
# This test is too expensive (too much time to run it!)
|
115
|
-
#def test_net_timeout
|
116
|
-
#
|
117
|
-
#
|
118
|
-
#
|
119
|
-
#
|
120
|
-
#end
|
121
|
-
|
110
|
+
# def test_net_timeout
|
111
|
+
# declare_remote_access
|
112
|
+
# bad = "ftp://example.com/miga"
|
113
|
+
# rd = MiGA::RemoteDataset.new(bad, :assembly, :web)
|
114
|
+
# assert_raise(Net::ReadTimeout) { rd.save_to(project, "bad") }
|
115
|
+
# end
|
122
116
|
end
|
data/test/result_stats_test.rb
CHANGED
@@ -3,23 +3,14 @@ require 'miga/project'
|
|
3
3
|
require 'zlib'
|
4
4
|
|
5
5
|
class ResultStatsTest < Test::Unit::TestCase
|
6
|
+
include TestHelper
|
6
7
|
|
7
8
|
def setup
|
8
|
-
|
9
|
-
ENV['MIGA_HOME'] = $tmp
|
10
|
-
FileUtils.touch(File.expand_path('.miga_rc', ENV['MIGA_HOME']))
|
11
|
-
FileUtils.touch(File.expand_path('.miga_daemon.json', ENV['MIGA_HOME']))
|
12
|
-
$p = MiGA::Project.new(File.expand_path('project1', $tmp))
|
13
|
-
$d = $p.add_dataset('dataset1')
|
14
|
-
end
|
15
|
-
|
16
|
-
def teardown
|
17
|
-
FileUtils.rm_rf $tmp
|
18
|
-
ENV['MIGA_HOME'] = nil
|
9
|
+
initialize_miga_home
|
19
10
|
end
|
20
11
|
|
21
12
|
def file_path(dir, ext)
|
22
|
-
File.join(
|
13
|
+
File.join(project.path, dir, "#{dataset.name}#{ext}")
|
23
14
|
end
|
24
15
|
|
25
16
|
def touch_done(dir)
|
@@ -29,9 +20,9 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
29
20
|
def test_single_raw_reads
|
30
21
|
dir = 'data/01.raw_reads'
|
31
22
|
fq = file_path(dir, '.1.fastq')
|
32
|
-
File.open(fq, 'w') { |fh| fh.puts '@1','ACTAC','+','####' }
|
23
|
+
File.open(fq, 'w') { |fh| fh.puts '@1', 'ACTAC', '+', '####' }
|
33
24
|
touch_done(dir)
|
34
|
-
r =
|
25
|
+
r = dataset.add_result(:raw_reads)
|
35
26
|
assert_equal({}, r[:stats])
|
36
27
|
r.compute_stats
|
37
28
|
assert_not_empty(r[:stats])
|
@@ -43,11 +34,11 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
43
34
|
def test_coupled_raw_reads
|
44
35
|
dir = 'data/01.raw_reads'
|
45
36
|
fq = file_path(dir, '.1.fastq')
|
46
|
-
File.open(fq, 'w') { |fh| fh.puts '@1','ACTAC','+','####' }
|
37
|
+
File.open(fq, 'w') { |fh| fh.puts '@1', 'ACTAC', '+', '####' }
|
47
38
|
fq = file_path(dir, '.2.fastq')
|
48
|
-
File.open(fq, 'w') { |fh| fh.puts '@1','ACTAC','+','####' }
|
39
|
+
File.open(fq, 'w') { |fh| fh.puts '@1', 'ACTAC', '+', '####' }
|
49
40
|
touch_done(dir)
|
50
|
-
r =
|
41
|
+
r = dataset.add_result(:raw_reads)
|
51
42
|
r.compute_stats
|
52
43
|
assert_not_empty(r[:stats])
|
53
44
|
assert_nil(r[:stats][:reads])
|
@@ -59,7 +50,7 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
59
50
|
dir = 'data/02.trimmed_reads'
|
60
51
|
FileUtils.touch(file_path(dir, '.1.clipped.fastq'))
|
61
52
|
touch_done(dir)
|
62
|
-
r =
|
53
|
+
r = dataset.add_result(:trimmed_reads)
|
63
54
|
assert_equal({}, r[:stats])
|
64
55
|
r.compute_stats
|
65
56
|
assert_equal({}, r[:stats])
|
@@ -70,7 +61,7 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
70
61
|
Dir.mkdir(file_path(dir, '.solexaqa'))
|
71
62
|
Dir.mkdir(file_path(dir, '.fastqc'))
|
72
63
|
touch_done(dir)
|
73
|
-
r =
|
64
|
+
r = dataset.add_result(:read_quality)
|
74
65
|
assert_equal({}, r[:stats])
|
75
66
|
r.compute_stats
|
76
67
|
assert_equal({}, r[:stats])
|
@@ -79,9 +70,9 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
79
70
|
def test_trimmed_fasta
|
80
71
|
dir = 'data/04.trimmed_fasta'
|
81
72
|
fa = file_path(dir, '.CoupledReads.fa')
|
82
|
-
File.open(fa, 'w') { |fh| fh.puts '>1','ACTAC' }
|
73
|
+
File.open(fa, 'w') { |fh| fh.puts '>1', 'ACTAC' }
|
83
74
|
touch_done(dir)
|
84
|
-
r =
|
75
|
+
r = dataset.add_result(:trimmed_fasta)
|
85
76
|
assert_equal({}, r[:stats])
|
86
77
|
r.compute_stats
|
87
78
|
assert_equal(1, r[:stats][:reads])
|
@@ -92,9 +83,9 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
92
83
|
# Prepare result
|
93
84
|
dir = 'data/05.assembly'
|
94
85
|
fa = file_path(dir, '.LargeContigs.fna')
|
95
|
-
File.open(fa, 'w') { |fh| fh.puts '>1','ACTAC' }
|
86
|
+
File.open(fa, 'w') { |fh| fh.puts '>1', 'ACTAC' }
|
96
87
|
touch_done(dir)
|
97
|
-
r =
|
88
|
+
r = dataset.add_result(:assembly)
|
98
89
|
|
99
90
|
# Test assertions
|
100
91
|
assert_equal({}, r[:stats])
|
@@ -108,13 +99,13 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
108
99
|
# Prepare result
|
109
100
|
dir = 'data/06.cds'
|
110
101
|
fa = file_path(dir, '.faa')
|
111
|
-
File.open(fa, 'w') { |fh| fh.puts '>1','M' }
|
102
|
+
File.open(fa, 'w') { |fh| fh.puts '>1', 'M' }
|
112
103
|
gff = file_path(dir, '.gff3.gz')
|
113
104
|
Zlib::GzipWriter.open(gff) do |fh|
|
114
105
|
fh.puts '# Model Data: a=b;transl_table=11;'
|
115
106
|
end
|
116
107
|
touch_done(dir)
|
117
|
-
r =
|
108
|
+
r = dataset.add_result(:cds)
|
118
109
|
|
119
110
|
# Test assertions
|
120
111
|
assert_equal({}, r[:stats])
|
@@ -139,7 +130,7 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
139
130
|
fh.puts ' phylum Abc 0.0 **** '
|
140
131
|
end
|
141
132
|
touch_done(dir)
|
142
|
-
r =
|
133
|
+
r = dataset.add_result(:taxonomy)
|
143
134
|
|
144
135
|
# Test assertions
|
145
136
|
assert_nil(r[:stats][:closest_relative])
|
@@ -148,5 +139,4 @@ class ResultStatsTest < Test::Unit::TestCase
|
|
148
139
|
assert_equal([100.0, '%'], r[:stats][:aai])
|
149
140
|
assert_equal(0.0, r[:stats][:phylum_pvalue])
|
150
141
|
end
|
151
|
-
|
152
142
|
end
|