miga-base 0.6.0.0 → 0.6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/miga +1 -1
- data/lib/miga/cli/action/archive.rb +99 -0
- data/lib/miga/cli/base.rb +1 -0
- data/lib/miga/cli.rb +1 -1
- data/lib/miga/dataset/hooks.rb +1 -0
- data/lib/miga/metadata.rb +14 -7
- data/lib/miga/result/source.rb +12 -5
- data/lib/miga/version.rb +2 -2
- data/test/common_test.rb +20 -20
- data/test/daemon_test.rb +31 -37
- data/test/dataset_test.rb +63 -46
- data/test/hook_test.rb +20 -8
- data/test/json_test.rb +15 -8
- data/test/metadata_test.rb +10 -10
- data/test/project_test.rb +58 -44
- data/test/remote_dataset_test.rb +21 -16
- data/test/result_test.rb +49 -0
- data/test/tax_index_test.rb +14 -14
- data/test/taxonomy_test.rb +12 -11
- data/test/test_helper.rb +6 -6
- metadata +4 -2
data/test/dataset_test.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'test_helper'
|
2
|
+
require 'miga/project'
|
3
3
|
|
4
4
|
class DatasetTest < Test::Unit::TestCase
|
5
|
-
|
5
|
+
|
6
6
|
def setup
|
7
7
|
$tmp = Dir.mktmpdir
|
8
|
-
ENV[
|
9
|
-
FileUtils.touch(
|
10
|
-
FileUtils.touch(
|
11
|
-
$p1 = MiGA::Project.new(File.expand_path(
|
12
|
-
$d1 = $p1.add_dataset(
|
8
|
+
ENV['MIGA_HOME'] = $tmp
|
9
|
+
FileUtils.touch(File.expand_path('.miga_rc', ENV['MIGA_HOME']))
|
10
|
+
FileUtils.touch(File.expand_path('.miga_daemon.json', ENV['MIGA_HOME']))
|
11
|
+
$p1 = MiGA::Project.new(File.expand_path('project1', $tmp))
|
12
|
+
$d1 = $p1.add_dataset('dataset1')
|
13
13
|
end
|
14
14
|
|
15
15
|
def teardown
|
16
16
|
FileUtils.rm_rf $tmp
|
17
|
-
ENV[
|
17
|
+
ENV['MIGA_HOME'] = nil
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
def test_known_types
|
21
21
|
assert_respond_to(MiGA::Dataset, :KNOWN_TYPES)
|
22
22
|
assert(MiGA::Dataset.KNOWN_TYPES.has_key?(:genome))
|
@@ -24,27 +24,25 @@ class DatasetTest < Test::Unit::TestCase
|
|
24
24
|
|
25
25
|
def test_exist
|
26
26
|
assert_respond_to(MiGA::Dataset, :exist?)
|
27
|
-
assert(MiGA::Dataset.exist?($p1,
|
28
|
-
assert(!
|
27
|
+
assert(MiGA::Dataset.exist?($p1, 'dataset1'))
|
28
|
+
assert(!MiGA::Dataset.exist?($p1, 'Nope'))
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_info_fields
|
32
32
|
assert_respond_to(MiGA::Dataset, :INFO_FIELDS)
|
33
|
-
assert(MiGA::Dataset.INFO_FIELDS.include?(
|
33
|
+
assert(MiGA::Dataset.INFO_FIELDS.include?('name'))
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_initialize
|
37
|
-
assert_raise
|
38
|
-
MiGA::Dataset.new($p1, "dataset-1")
|
39
|
-
end
|
37
|
+
assert_raise { MiGA::Dataset.new($p1, 'dataset-1') }
|
40
38
|
assert_equal($p1, $d1.project)
|
41
|
-
assert_equal(
|
39
|
+
assert_equal('dataset1', $d1.name)
|
42
40
|
assert($d1.is_ref?)
|
43
41
|
assert_equal(MiGA::Metadata, $d1.metadata.class)
|
44
42
|
end
|
45
43
|
|
46
44
|
def test_save
|
47
|
-
d2 = $p1.add_dataset(
|
45
|
+
d2 = $p1.add_dataset('ds_save')
|
48
46
|
assert_respond_to(d2, :save)
|
49
47
|
d2.save
|
50
48
|
assert(!d2.is_multi?)
|
@@ -58,7 +56,7 @@ class DatasetTest < Test::Unit::TestCase
|
|
58
56
|
end
|
59
57
|
|
60
58
|
def test_remove
|
61
|
-
d2 = $p1.add_dataset(
|
59
|
+
d2 = $p1.add_dataset('ds_remove')
|
62
60
|
assert(File.exist?(d2.metadata.path))
|
63
61
|
d2.remove!
|
64
62
|
assert(! File.exist?(d2.metadata.path))
|
@@ -69,7 +67,7 @@ class DatasetTest < Test::Unit::TestCase
|
|
69
67
|
end
|
70
68
|
|
71
69
|
def test_add_result
|
72
|
-
d2 = $p1.add_dataset(
|
70
|
+
d2 = $p1.add_dataset('ds_add_result')
|
73
71
|
assert_nil(d2.add_result(:koop))
|
74
72
|
assert_nil(d2.add_result(:raw_reads))
|
75
73
|
FileUtils.touch(
|
@@ -81,14 +79,16 @@ class DatasetTest < Test::Unit::TestCase
|
|
81
79
|
end
|
82
80
|
|
83
81
|
def test_preprocessing
|
84
|
-
d2 = $p1.add_dataset(
|
82
|
+
d2 = $p1.add_dataset('ds_preprocessing')
|
85
83
|
assert_nil(d2.first_preprocessing)
|
86
84
|
assert_nil(d2.next_preprocessing)
|
87
85
|
assert(! d2.done_preprocessing?)
|
88
86
|
FileUtils.touch(File.expand_path(
|
89
|
-
"data/02.trimmed_reads/#{d2.name}.1.clipped.fastq"
|
87
|
+
"data/02.trimmed_reads/#{d2.name}.1.clipped.fastq", $p1.path
|
88
|
+
))
|
90
89
|
FileUtils.touch(File.expand_path(
|
91
|
-
"data/02.trimmed_reads/#{d2.name}.done"
|
90
|
+
"data/02.trimmed_reads/#{d2.name}.done", $p1.path
|
91
|
+
))
|
92
92
|
assert_equal(:trimmed_reads, d2.first_preprocessing(true))
|
93
93
|
assert_equal(:read_quality, d2.next_preprocessing(true))
|
94
94
|
assert(! d2.done_preprocessing?(true))
|
@@ -114,53 +114,70 @@ class DatasetTest < Test::Unit::TestCase
|
|
114
114
|
end
|
115
115
|
|
116
116
|
def test_profile_advance
|
117
|
-
d2 = $p1.add_dataset(
|
117
|
+
d2 = $p1.add_dataset('ds_profile_advance')
|
118
118
|
assert_equal(0, d2.profile_advance(true).first)
|
119
119
|
assert_equal(0, d2.profile_advance(true).last)
|
120
120
|
assert_equal(0, d2.profile_advance(true).inject(:+))
|
121
121
|
Dir.mkdir(File.expand_path(
|
122
|
-
"data/03.read_quality/#{d2.name}.solexaqa"
|
122
|
+
"data/03.read_quality/#{d2.name}.solexaqa", $p1.path
|
123
|
+
))
|
123
124
|
Dir.mkdir(File.expand_path(
|
124
|
-
"data/03.read_quality/#{d2.name}.fastqc"
|
125
|
+
"data/03.read_quality/#{d2.name}.fastqc", $p1.path
|
126
|
+
))
|
125
127
|
FileUtils.touch(File.expand_path(
|
126
|
-
"data/03.read_quality/#{d2.name}.done"
|
128
|
+
"data/03.read_quality/#{d2.name}.done", $p1.path
|
129
|
+
))
|
127
130
|
assert_equal([0,0,1,2], d2.profile_advance(true)[0..3])
|
128
131
|
assert_equal(2, d2.profile_advance(true).last)
|
129
132
|
end
|
130
133
|
|
131
134
|
def test_add_result_other
|
132
|
-
d2 = $p1.add_dataset(
|
135
|
+
d2 = $p1.add_dataset('ds_add_result_other')
|
133
136
|
Dir.mkdir(File.expand_path(
|
134
|
-
"data/07.annotation/01.function/01.essential/#{d2.name}.ess", $p1.path
|
137
|
+
"data/07.annotation/01.function/01.essential/#{d2.name}.ess", $p1.path
|
138
|
+
))
|
135
139
|
to_test = {
|
136
|
-
:
|
140
|
+
trimmed_fasta: [
|
137
141
|
"data/04.trimmed_fasta/#{d2.name}.SingleReads.fa",
|
138
|
-
"data/04.trimmed_fasta/#{d2.name}.done"
|
139
|
-
|
142
|
+
"data/04.trimmed_fasta/#{d2.name}.done"
|
143
|
+
],
|
144
|
+
assembly: [
|
140
145
|
"data/05.assembly/#{d2.name}.LargeContigs.fna",
|
141
|
-
"data/05.assembly/#{d2.name}.done"
|
142
|
-
|
146
|
+
"data/05.assembly/#{d2.name}.done"
|
147
|
+
],
|
148
|
+
cds: [
|
143
149
|
"data/06.cds/#{d2.name}.faa",
|
144
150
|
"data/06.cds/#{d2.name}.fna",
|
145
|
-
"data/06.cds/#{d2.name}.done"
|
146
|
-
|
147
|
-
|
148
|
-
|
151
|
+
"data/06.cds/#{d2.name}.done"
|
152
|
+
],
|
153
|
+
essential_genes: %w[ess.faa ess/log done]
|
154
|
+
.map do |x|
|
155
|
+
"data/07.annotation/01.function/01.essential/#{d2.name}.#{x}"
|
156
|
+
end,
|
157
|
+
ssu: [
|
149
158
|
"data/07.annotation/01.function/02.ssu/#{d2.name}.ssu.fa",
|
150
|
-
"data/07.annotation/01.function/02.ssu/#{d2.name}.done"
|
151
|
-
|
152
|
-
|
153
|
-
|
159
|
+
"data/07.annotation/01.function/02.ssu/#{d2.name}.done"
|
160
|
+
],
|
161
|
+
mytaxa_scan: %w[pdf wintax mytaxa reg done]
|
162
|
+
.map do |x|
|
163
|
+
"data/07.annotation/03.qa/02.mytaxa_scan/#{d2.name}.#{x}"
|
164
|
+
end,
|
165
|
+
distances: [
|
154
166
|
"data/09.distances/01.haai/#{d2.name}.db",
|
155
|
-
"data/09.distances/#{d2.name}.done"
|
167
|
+
"data/09.distances/#{d2.name}.done"
|
168
|
+
]
|
156
169
|
}
|
157
170
|
to_test.each do |k,v|
|
158
171
|
assert_nil(d2.add_result(k), "Result for #{k} should be nil.")
|
159
172
|
v.each { |i| FileUtils.touch(File.expand_path(i, $p1.path)) }
|
160
173
|
FileUtils.touch(File.expand_path(
|
161
|
-
"data/04.trimmed_fasta/#{d2.name}.done"
|
162
|
-
|
163
|
-
|
174
|
+
"data/04.trimmed_fasta/#{d2.name}.done", $p1.path
|
175
|
+
))
|
176
|
+
assert_equal(
|
177
|
+
MiGA::Result,
|
178
|
+
d2.add_result(k).class,
|
179
|
+
"Result for #{k} should be MiGA::Result."
|
180
|
+
)
|
164
181
|
end
|
165
182
|
end
|
166
183
|
|
data/test/hook_test.rb
CHANGED
@@ -2,12 +2,12 @@ require 'test_helper'
|
|
2
2
|
require 'miga/project'
|
3
3
|
|
4
4
|
class HookTest < Test::Unit::TestCase
|
5
|
-
|
5
|
+
|
6
6
|
def setup
|
7
7
|
$tmp = Dir.mktmpdir
|
8
8
|
ENV['MIGA_HOME'] = $tmp
|
9
|
-
FileUtils.touch(
|
10
|
-
FileUtils.touch(
|
9
|
+
FileUtils.touch(File.expand_path('.miga_rc', ENV['MIGA_HOME']))
|
10
|
+
FileUtils.touch(File.expand_path('.miga_daemon.json', ENV['MIGA_HOME']))
|
11
11
|
$p1 = MiGA::Project.new(File.expand_path('project1', $tmp))
|
12
12
|
$d1 = $p1.add_dataset('dataset1')
|
13
13
|
end
|
@@ -33,6 +33,8 @@ class HookTest < Test::Unit::TestCase
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
##
|
37
|
+
# Dummy class with hooks
|
36
38
|
class MyHanger
|
37
39
|
include MiGA::Common::Hooks
|
38
40
|
end
|
@@ -61,12 +63,15 @@ class HookTest < Test::Unit::TestCase
|
|
61
63
|
|
62
64
|
def test_dataset_clear_run_counts
|
63
65
|
$d1.metadata[:_try_something] = 1
|
66
|
+
$d1.metadata[:_step] = 'Boop'
|
64
67
|
$d1.metadata[:_not_a_counter] = 1
|
65
68
|
$d1.save
|
66
69
|
assert_equal(1, $d1.metadata[:_try_something])
|
70
|
+
assert_equal('Boop', $d1.metadata[:_step])
|
67
71
|
$d1.add_hook(:on_remove, :clear_run_counts)
|
68
72
|
$d1.remove!
|
69
73
|
assert_nil($d1.metadata[:_try_something])
|
74
|
+
assert_nil($d1.metadata[:_step])
|
70
75
|
assert_equal(1, $d1.metadata[:_not_a_counter])
|
71
76
|
end
|
72
77
|
|
@@ -91,13 +96,20 @@ class HookTest < Test::Unit::TestCase
|
|
91
96
|
def test_project_result_hooks
|
92
97
|
$res = :test
|
93
98
|
$counter = 1
|
94
|
-
$p1.add_hook(
|
95
|
-
:
|
96
|
-
|
97
|
-
|
99
|
+
$p1.add_hook(
|
100
|
+
:on_result_ready,
|
101
|
+
:run_lambda,
|
102
|
+
Proc.new { |r| $res = r }
|
103
|
+
)
|
104
|
+
$p1.add_hook(
|
105
|
+
:on_result_ready_project_stats,
|
106
|
+
:run_lambda,
|
107
|
+
Proc.new { $counter += 1 }
|
108
|
+
)
|
98
109
|
%w[taxonomy.json metadata.db done].each do |ext|
|
99
110
|
FileUtils.touch(File.expand_path(
|
100
|
-
"data/90.stats/miga-project.#{ext}", $p1.path
|
111
|
+
"data/90.stats/miga-project.#{ext}", $p1.path
|
112
|
+
))
|
101
113
|
end
|
102
114
|
assert_equal(:project_stats, $p1.next_task(nil, false))
|
103
115
|
assert_equal(:test, $res)
|
data/test/json_test.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class JsonTest < Test::Unit::TestCase
|
4
|
-
|
4
|
+
|
5
5
|
def test_parse
|
6
|
-
assert_equal(
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
assert_equal(
|
7
|
+
{a: 1, b: 2},
|
8
|
+
MiGA::Json.parse('{"a": 1, "b": 2}', contents: true)
|
9
|
+
)
|
10
|
+
assert_equal(
|
11
|
+
{'a' => 1, 'b' => 2},
|
12
|
+
MiGA::Json.parse('{"a": 1, "b": 2}', contents: true, symbolize: false)
|
13
|
+
)
|
10
14
|
assert_equal(1.0, MiGA::Json.parse('1.0', contents: true))
|
11
15
|
end
|
12
16
|
|
@@ -23,15 +27,18 @@ class JsonTest < Test::Unit::TestCase
|
|
23
27
|
|
24
28
|
assert_equal(
|
25
29
|
{a: 123, k: false, kb: false, t: nil},
|
26
|
-
MiGA::Json.parse(tmp1.path, default: tmp2.path)
|
30
|
+
MiGA::Json.parse(tmp1.path, default: tmp2.path)
|
31
|
+
)
|
27
32
|
assert_equal(
|
28
33
|
{a: 456, k: false, kb: false, t: 10.0},
|
29
|
-
MiGA::Json.parse(tmp2.path, default: tmp1.path)
|
34
|
+
MiGA::Json.parse(tmp2.path, default: tmp1.path)
|
35
|
+
)
|
30
36
|
end
|
31
37
|
|
32
38
|
def test_generate
|
33
39
|
assert_equal("{\n \"a\": 1,\n \"b\": 2\n}",
|
34
|
-
MiGA::Json.generate({a: 1, b: 2})
|
40
|
+
MiGA::Json.generate({a: 1, b: 2})
|
41
|
+
)
|
35
42
|
end
|
36
43
|
|
37
44
|
end
|
data/test/metadata_test.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'test_helper'
|
2
|
+
require 'miga/metadata'
|
3
3
|
|
4
4
|
class MetadataTest < Test::Unit::TestCase
|
5
|
-
|
5
|
+
|
6
6
|
def setup
|
7
7
|
$tmp = Dir.mktmpdir
|
8
|
-
$jruby_tests = !ENV[
|
8
|
+
$jruby_tests = !ENV['JRUBY_TESTS'].nil?
|
9
9
|
end
|
10
10
|
|
11
11
|
def teardown
|
12
12
|
FileUtils.rm_rf $tmp
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def test_save
|
16
|
-
omit_if($jruby_tests,
|
17
|
-
md1 = MiGA::Metadata.new(File.expand_path(
|
16
|
+
omit_if($jruby_tests, 'JRuby doesn\'t implement fork.')
|
17
|
+
md1 = MiGA::Metadata.new(File.expand_path('md_save.json', $tmp))
|
18
18
|
FileUtils.touch(md1.lock_file)
|
19
19
|
fork do
|
20
20
|
sleep(1)
|
@@ -28,13 +28,13 @@ class MetadataTest < Test::Unit::TestCase
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_load
|
31
|
-
md1 = MiGA::Metadata.new(File.expand_path(
|
31
|
+
md1 = MiGA::Metadata.new(File.expand_path('md_load.json', $tmp), {t: 1})
|
32
32
|
assert_equal(1, md1[:t])
|
33
|
-
omit_if($jruby_tests,
|
33
|
+
omit_if($jruby_tests, 'JRuby doesn\'t implement fork.')
|
34
34
|
FileUtils.touch(md1.lock_file)
|
35
35
|
fork do
|
36
36
|
sleep(1)
|
37
|
-
File.open(md1.path,
|
37
|
+
File.open(md1.path, 'w') { |fh| fh.print '{"t": 2}' }
|
38
38
|
File.unlink(md1.lock_file)
|
39
39
|
end
|
40
40
|
t1 = Time.new
|
data/test/project_test.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'test_helper'
|
2
|
+
require 'miga/project'
|
3
3
|
|
4
4
|
class ProjectTest < Test::Unit::TestCase
|
5
|
-
|
5
|
+
|
6
6
|
def setup
|
7
7
|
$tmp = Dir.mktmpdir
|
8
|
-
ENV[
|
9
|
-
FileUtils.touch(
|
10
|
-
FileUtils.touch(
|
11
|
-
$p1 = MiGA::Project.new(File.expand_path(
|
8
|
+
ENV['MIGA_HOME'] = $tmp
|
9
|
+
FileUtils.touch(File.expand_path('.miga_rc', ENV['MIGA_HOME']))
|
10
|
+
FileUtils.touch(File.expand_path('.miga_daemon.json', ENV['MIGA_HOME']))
|
11
|
+
$p1 = MiGA::Project.new(File.expand_path('project1', $tmp))
|
12
12
|
end
|
13
13
|
|
14
14
|
def teardown
|
15
15
|
FileUtils.rm_rf $tmp
|
16
|
-
ENV[
|
16
|
+
ENV['MIGA_HOME'] = nil
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def test_class_load
|
20
|
-
assert_nil(MiGA::Project.load($tmp +
|
20
|
+
assert_nil(MiGA::Project.load($tmp + '/O_o'))
|
21
21
|
assert_equal(MiGA::Project, MiGA::Project.load($p1.path).class)
|
22
22
|
end
|
23
23
|
|
@@ -25,15 +25,15 @@ class ProjectTest < Test::Unit::TestCase
|
|
25
25
|
assert_equal("#{$tmp}/create", MiGA::Project.new("#{$tmp}/create").path)
|
26
26
|
assert(Dir.exist?("#{$tmp}/create"))
|
27
27
|
assert_raise do
|
28
|
-
ENV[
|
29
|
-
MiGA::Project.new($tmp +
|
28
|
+
ENV['MIGA_HOME'] = $tmp + '/chez-moi'
|
29
|
+
MiGA::Project.new($tmp + '/cuckoo')
|
30
30
|
end
|
31
31
|
ensure
|
32
|
-
ENV[
|
32
|
+
ENV['MIGA_HOME'] = $tmp
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_load
|
36
|
-
p = MiGA::Project.new($tmp +
|
36
|
+
p = MiGA::Project.new($tmp + '/load')
|
37
37
|
assert_equal(MiGA::Project, p.class)
|
38
38
|
File.unlink p.metadata.path
|
39
39
|
assert_raise do
|
@@ -43,12 +43,12 @@ class ProjectTest < Test::Unit::TestCase
|
|
43
43
|
|
44
44
|
def test_datasets
|
45
45
|
p = $p1
|
46
|
-
d = p.add_dataset(
|
46
|
+
d = p.add_dataset('d1')
|
47
47
|
assert_equal(MiGA::Dataset, d.class)
|
48
48
|
assert_equal([d], p.datasets)
|
49
|
-
assert_equal([
|
49
|
+
assert_equal(['d1'], p.dataset_names)
|
50
50
|
p.each_dataset{ |ds| assert_equal(d, ds) }
|
51
|
-
dr = p.unlink_dataset(
|
51
|
+
dr = p.unlink_dataset('d1')
|
52
52
|
assert_equal(d, dr)
|
53
53
|
assert_equal([], p.datasets)
|
54
54
|
assert_equal([], p.dataset_names)
|
@@ -56,23 +56,27 @@ class ProjectTest < Test::Unit::TestCase
|
|
56
56
|
|
57
57
|
def test_import_dataset
|
58
58
|
p1 = $p1
|
59
|
-
d1 = p1.add_dataset(
|
60
|
-
File.open(
|
61
|
-
"
|
62
|
-
|
63
|
-
|
59
|
+
d1 = p1.add_dataset('d1')
|
60
|
+
File.open(
|
61
|
+
"#{p1.path}/data/01.raw_reads/#{d1.name}.1.fastq", 'w'
|
62
|
+
) { |f| f.puts ':-)' }
|
63
|
+
File.open(
|
64
|
+
"#{p1.path}/data/01.raw_reads/#{d1.name}.done", 'w'
|
65
|
+
) { |f| f.puts ':-)' }
|
64
66
|
d1.next_preprocessing(true)
|
65
|
-
p2 = MiGA::Project.new(File.expand_path(
|
67
|
+
p2 = MiGA::Project.new(File.expand_path('import_dataset', $tmp))
|
66
68
|
assert(p2.datasets.empty?)
|
67
|
-
assert_nil(p2.dataset(
|
69
|
+
assert_nil(p2.dataset('d1'))
|
68
70
|
p2.import_dataset(d1)
|
69
71
|
assert_equal(1, p2.datasets.size)
|
70
|
-
assert_equal(MiGA::Dataset, p2.dataset(
|
71
|
-
assert_equal(1, p2.dataset(
|
72
|
+
assert_equal(MiGA::Dataset, p2.dataset('d1').class)
|
73
|
+
assert_equal(1, p2.dataset('d1').results.size)
|
72
74
|
assert(File.exist?(
|
73
|
-
File.expand_path("data/01.raw_reads/#{d1.name}.1.fastq", p2.path)
|
75
|
+
File.expand_path("data/01.raw_reads/#{d1.name}.1.fastq", p2.path)
|
76
|
+
))
|
74
77
|
assert(File.exist?(
|
75
|
-
File.expand_path("metadata/#{d1.name}.json", p2.path)
|
78
|
+
File.expand_path("metadata/#{d1.name}.json", p2.path)
|
79
|
+
))
|
76
80
|
end
|
77
81
|
|
78
82
|
def test_add_result
|
@@ -81,7 +85,8 @@ class ProjectTest < Test::Unit::TestCase
|
|
81
85
|
%w[.Rdata .log .txt .done].each do |x|
|
82
86
|
assert_nil(p1.add_result(:haai_distances))
|
83
87
|
FileUtils.touch(
|
84
|
-
File.expand_path("data/09.distances/01.haai/miga-project#{x}",p1.path)
|
88
|
+
File.expand_path("data/09.distances/01.haai/miga-project#{x}",p1.path)
|
89
|
+
)
|
85
90
|
end
|
86
91
|
assert_equal(MiGA::Result, p1.add_result(:haai_distances).class)
|
87
92
|
end
|
@@ -90,8 +95,9 @@ class ProjectTest < Test::Unit::TestCase
|
|
90
95
|
p1 = $p1
|
91
96
|
assert_nil(p1.result :n00b)
|
92
97
|
assert_nil(p1.result :project_stats)
|
93
|
-
File.open(
|
94
|
-
|
98
|
+
File.open(
|
99
|
+
File.expand_path('data/90.stats/miga-project.json', p1.path), 'w'
|
100
|
+
) { |fh| fh.puts '{}' }
|
95
101
|
assert_not_nil(p1.result :project_stats)
|
96
102
|
assert_equal(1, p1.results.size)
|
97
103
|
end
|
@@ -99,8 +105,8 @@ class ProjectTest < Test::Unit::TestCase
|
|
99
105
|
def test_preprocessing
|
100
106
|
p1 = $p1
|
101
107
|
assert(p1.done_preprocessing?)
|
102
|
-
d1 = p1.add_dataset(
|
103
|
-
assert(!
|
108
|
+
d1 = p1.add_dataset('BAH')
|
109
|
+
assert(!p1.done_preprocessing?)
|
104
110
|
FileUtils.touch(File.expand_path("data/90.stats/#{d1.name}.done", p1.path))
|
105
111
|
assert(p1.done_preprocessing?)
|
106
112
|
|
@@ -108,12 +114,14 @@ class ProjectTest < Test::Unit::TestCase
|
|
108
114
|
assert_equal(:project_stats, p1.next_distances)
|
109
115
|
d = MiGA::Project.RESULT_DIRS[:project_stats]
|
110
116
|
%w[.done .taxonomy.json .metadata.db].each do |x|
|
111
|
-
assert_nil(
|
112
|
-
|
117
|
+
assert_nil(
|
118
|
+
p1.add_result(:project_stats),
|
119
|
+
"Premature registration of result project_stats at extension #{x}."
|
120
|
+
)
|
113
121
|
FileUtils.touch(File.expand_path("data/#{d}/miga-project#{x}", p1.path))
|
114
122
|
end
|
115
123
|
assert_equal(MiGA::Result, p1.add_result(:project_stats).class,
|
116
|
-
|
124
|
+
'Imposible to add project_stats result.')
|
117
125
|
|
118
126
|
# Distances
|
119
127
|
[:haai_distances, :aai_distances, :ani_distances].each do |r|
|
@@ -121,15 +129,17 @@ class ProjectTest < Test::Unit::TestCase
|
|
121
129
|
assert_equal(Symbol, p1.next_distances.class)
|
122
130
|
d = MiGA::Project.RESULT_DIRS[r]
|
123
131
|
%w[.done .Rdata .log .txt].each do |x|
|
124
|
-
assert_nil(
|
125
|
-
|
132
|
+
assert_nil(
|
133
|
+
p1.add_result(r),
|
134
|
+
"Premature registration of result #{r} at extension #{x}."
|
135
|
+
)
|
126
136
|
FileUtils.touch(File.expand_path("data/#{d}/miga-project#{x}", p1.path))
|
127
137
|
end
|
128
138
|
assert_equal(MiGA::Result, p1.add_result(r).class,
|
129
139
|
"Imposible to add #{r} result.")
|
130
140
|
end
|
131
141
|
assert_equal(:clade_finding, p1.next_distances)
|
132
|
-
|
142
|
+
|
133
143
|
# Clades
|
134
144
|
assert_nil(p1.next_inclade)
|
135
145
|
p1.metadata[:type] = :clade
|
@@ -144,15 +154,19 @@ class ProjectTest < Test::Unit::TestCase
|
|
144
154
|
d = MiGA::Project.RESULT_DIRS[r]
|
145
155
|
assert_equal(Symbol, p1.next_inclade.class)
|
146
156
|
([".done"] + xs).each do |x|
|
147
|
-
assert_nil(
|
148
|
-
|
157
|
+
assert_nil(
|
158
|
+
p1.add_result(r),
|
159
|
+
"Premature registration of result #{r} at extension #{x}."
|
160
|
+
)
|
149
161
|
FileUtils.touch(File.expand_path("data/#{d}/miga-project#{x}", p1.path))
|
150
162
|
end
|
151
|
-
assert_equal(
|
152
|
-
|
163
|
+
assert_equal(
|
164
|
+
MiGA::Result,
|
165
|
+
p1.add_result(r).class,
|
166
|
+
"Impossible to add #{r} result."
|
167
|
+
)
|
153
168
|
end
|
154
169
|
assert_nil(p1.next_inclade)
|
155
|
-
|
156
170
|
end
|
157
171
|
|
158
172
|
end
|
data/test/remote_dataset_test.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require 'test_helper'
|
2
|
+
require 'miga/project'
|
3
|
+
require 'miga/remote_dataset'
|
4
4
|
|
5
5
|
class RemoteDatasetTest < Test::Unit::TestCase
|
6
|
-
|
6
|
+
|
7
7
|
def setup
|
8
8
|
$tmp = Dir.mktmpdir
|
9
|
-
ENV[
|
10
|
-
FileUtils.touch(
|
11
|
-
FileUtils.touch(
|
12
|
-
$p1 = MiGA::Project.new(File.expand_path(
|
13
|
-
$remote_tests = !ENV[
|
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
14
|
end
|
15
15
|
|
16
16
|
def teardown
|
17
17
|
FileUtils.rm_rf $tmp
|
18
|
-
ENV[
|
18
|
+
ENV['MIGA_HOME'] = nil
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def test_class_universe
|
22
22
|
assert_respond_to(MiGA::RemoteDataset, :UNIVERSE)
|
23
23
|
assert(MiGA::RemoteDataset.UNIVERSE.keys.include? :ebi)
|
@@ -38,11 +38,16 @@ class RemoteDatasetTest < Test::Unit::TestCase
|
|
38
38
|
msg = "Failed on #{universe}:#{db}"
|
39
39
|
assert_equal(MiGA::Taxonomy, tx.class, msg)
|
40
40
|
assert_equal('Lentivirus', tx[:g], msg)
|
41
|
-
assert_equal(
|
42
|
-
'
|
43
|
-
|
44
|
-
|
45
|
-
|
41
|
+
assert_equal(
|
42
|
+
'ns:ncbi o:Ortervirales f:Retroviridae ' \
|
43
|
+
'g:Lentivirus s:Human_immunodeficiency_virus_2',
|
44
|
+
tx.to_s, msg
|
45
|
+
)
|
46
|
+
assert_equal(
|
47
|
+
'ns:ncbi d: k: p: c: o:Ortervirales f:Retroviridae ' \
|
48
|
+
'g:Lentivirus s:Human_immunodeficiency_virus_2 ssp: str: ds:',
|
49
|
+
tx.to_s(true), msg
|
50
|
+
)
|
46
51
|
assert_equal('ncbi', tx.namespace, msg)
|
47
52
|
end
|
48
53
|
end
|
data/test/result_test.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'miga/project'
|
3
|
+
|
4
|
+
class ResultTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
$tmp = Dir.mktmpdir
|
8
|
+
ENV['MIGA_HOME'] = $tmp
|
9
|
+
FileUtils.touch(File.expand_path('.miga_rc', ENV['MIGA_HOME']))
|
10
|
+
FileUtils.touch(File.expand_path('.miga_daemon.json', ENV['MIGA_HOME']))
|
11
|
+
$p1 = MiGA::Project.new(File.expand_path('project1', $tmp))
|
12
|
+
$d1 = $p1.add_dataset('dataset1')
|
13
|
+
FileUtils.touch(File.expand_path(
|
14
|
+
"data/02.trimmed_reads/#{$d1.name}.1.clipped.fastq", $p1.path))
|
15
|
+
FileUtils.touch(File.expand_path(
|
16
|
+
"data/02.trimmed_reads/#{$d1.name}.done", $p1.path))
|
17
|
+
FileUtils.touch(File.expand_path(
|
18
|
+
'data/10.clades/01.find/miga-project.empty', $p1.path))
|
19
|
+
FileUtils.touch(File.expand_path(
|
20
|
+
'data/10.clades/01.find/miga-project.done', $p1.path))
|
21
|
+
end
|
22
|
+
|
23
|
+
def teardown
|
24
|
+
FileUtils.rm_rf $tmp
|
25
|
+
ENV['MIGA_HOME'] = nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_add_result
|
29
|
+
r = $d1.add_result(:trimmed_reads)
|
30
|
+
assert_equal(MiGA::Result, r.class)
|
31
|
+
r = $d1.add_result(:asssembly)
|
32
|
+
assert_nil(r)
|
33
|
+
r = $p1.add_result(:clade_finding)
|
34
|
+
assert_equal(MiGA::Result, r.class)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_result_source
|
38
|
+
r = $d1.add_result(:trimmed_reads)
|
39
|
+
assert_equal($d1.name, r.source.name)
|
40
|
+
assert_equal(:trimmed_reads, r.key)
|
41
|
+
assert_equal('data/02.trimmed_reads', r.relative_dir)
|
42
|
+
assert_equal('data/02.trimmed_reads/dataset1.json', r.relative_path)
|
43
|
+
assert_equal($p1.path, r.project.path)
|
44
|
+
assert_equal($p1.path, r.project_path)
|
45
|
+
r = $p1.add_result(:clade_finding)
|
46
|
+
assert_equal($p1.path, r.source.path)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|