miga-base 0.7.3.1 → 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.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 +25 -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 +5 -2
- data/lib/miga/common/with_daemon_class.rb +1 -1
- 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 +48 -53
- 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 -3
- 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 +24 -21
- data/utils/distance/pipeline.rb +23 -10
- data/utils/distance/runner.rb +20 -16
- data/utils/distance/temporal.rb +1 -3
- 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
|