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/result_test.rb
CHANGED
@@ -2,62 +2,69 @@ require 'test_helper'
|
|
2
2
|
require 'miga/project'
|
3
3
|
|
4
4
|
class ResultTest < Test::Unit::TestCase
|
5
|
+
include TestHelper
|
5
6
|
|
6
7
|
def setup
|
7
|
-
|
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')
|
8
|
+
initialize_miga_home
|
13
9
|
FileUtils.touch(
|
14
|
-
File.join(
|
10
|
+
File.join(
|
11
|
+
project.path, 'data', '02.trimmed_reads',
|
12
|
+
"#{dataset.name}.1.clipped.fastq"
|
13
|
+
)
|
14
|
+
)
|
15
15
|
FileUtils.touch(
|
16
|
-
File.join(
|
16
|
+
File.join(
|
17
|
+
project.path, 'data', '02.trimmed_reads', "#{dataset.name}.done"
|
18
|
+
)
|
19
|
+
)
|
17
20
|
FileUtils.touch(
|
18
|
-
File.join(
|
21
|
+
File.join(
|
22
|
+
project.path, 'data', '10.clades', '01.find', 'miga-project.empty'
|
23
|
+
)
|
24
|
+
)
|
19
25
|
FileUtils.touch(
|
20
|
-
File.join(
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
FileUtils.rm_rf $tmp
|
25
|
-
ENV['MIGA_HOME'] = nil
|
26
|
+
File.join(
|
27
|
+
project.path, 'data', '10.clades', '01.find', 'miga-project.done'
|
28
|
+
)
|
29
|
+
)
|
26
30
|
end
|
27
31
|
|
28
32
|
def test_add_result
|
29
|
-
r =
|
30
|
-
|
31
|
-
r =
|
33
|
+
r = dataset.add_result(:trimmed_reads)
|
34
|
+
assert_instance_of(MiGA::Result, r)
|
35
|
+
r = dataset.add_result(:asssembly)
|
32
36
|
assert_nil(r)
|
33
|
-
r =
|
34
|
-
|
37
|
+
r = project.add_result(:clade_finding)
|
38
|
+
assert_instance_of(MiGA::Result, r)
|
35
39
|
end
|
36
40
|
|
37
41
|
def test_result_source
|
38
|
-
r =
|
39
|
-
assert_equal(
|
42
|
+
r = dataset.add_result(:trimmed_reads)
|
43
|
+
assert_equal(dataset.name, r.source.name)
|
40
44
|
assert_equal(:trimmed_reads, r.key)
|
41
45
|
assert_equal('data/02.trimmed_reads', r.relative_dir)
|
42
|
-
assert_equal('data/02.trimmed_reads/
|
43
|
-
assert_equal(
|
44
|
-
assert_equal(
|
45
|
-
r =
|
46
|
-
assert_equal(
|
46
|
+
assert_equal('data/02.trimmed_reads/dataset0.json', r.relative_path)
|
47
|
+
assert_equal(project.path, r.project.path)
|
48
|
+
assert_equal(project.path, r.project_path)
|
49
|
+
r = project.add_result(:clade_finding)
|
50
|
+
assert_equal(project.path, r.source.path)
|
47
51
|
end
|
48
52
|
|
49
53
|
def test_dates
|
50
|
-
r =
|
54
|
+
r = dataset.add_result(:trimmed_reads)
|
51
55
|
assert_nil(r.done_at)
|
52
56
|
assert_nil(r.started_at)
|
53
|
-
tf = File.join(
|
54
|
-
|
57
|
+
tf = File.join(
|
58
|
+
project.path, 'data', '02.trimmed_reads', "#{dataset.name}.done"
|
59
|
+
)
|
60
|
+
File.open(tf, 'w') { |fh| fh.puts Time.new(1, 2, 3, 4, 5) }
|
55
61
|
assert_equal(Time, r.done_at.class)
|
56
62
|
assert_nil(r.running_time)
|
57
|
-
tf = File.join(
|
58
|
-
|
59
|
-
|
63
|
+
tf = File.join(
|
64
|
+
project.path, 'data', '02.trimmed_reads', "#{dataset.name}.start"
|
65
|
+
)
|
66
|
+
File.open(tf, 'w') { |fh| fh.puts Time.new(1, 2, 3, 4, 0) }
|
67
|
+
r = dataset.add_result(:trimmed_reads)
|
60
68
|
assert_equal(5.0, r.running_time)
|
61
69
|
end
|
62
|
-
|
63
70
|
end
|
data/test/tax_dist_test.rb
CHANGED
@@ -2,7 +2,6 @@ require 'test_helper'
|
|
2
2
|
require 'miga/tax_dist'
|
3
3
|
|
4
4
|
class TaxDistTest < Test::Unit::TestCase
|
5
|
-
|
6
5
|
def test_aai_path
|
7
6
|
assert_path_exist(MiGA::TaxDist.aai_path(:intax))
|
8
7
|
assert_path_exist(MiGA::TaxDist.aai_path(:novel))
|
@@ -40,12 +39,12 @@ class TaxDistTest < Test::Unit::TestCase
|
|
40
39
|
def test_aai_taxtest
|
41
40
|
distant_intax = MiGA::TaxDist.aai_taxtest(35.0, :intax, engine: :diamond)
|
42
41
|
assert_equal(:root, distant_intax[:most_likely][0])
|
43
|
-
|
42
|
+
assert_equal(:d, distant_intax[:probably][0])
|
44
43
|
assert_nil(distant_intax[:possibly_even])
|
45
44
|
|
46
45
|
distant_intax = MiGA::TaxDist.aai_taxtest(35.0, :intax, engine: :blast)
|
47
46
|
assert_equal(:root, distant_intax[:most_likely][0])
|
48
|
-
|
47
|
+
assert_equal(:d, distant_intax[:probably][0])
|
49
48
|
assert_nil(distant_intax[:possibly_even])
|
50
49
|
|
51
50
|
close_intax = MiGA::TaxDist.aai_taxtest(99.0, :intax, engine: :diamond)
|
@@ -54,5 +53,4 @@ class TaxDistTest < Test::Unit::TestCase
|
|
54
53
|
close_intax = MiGA::TaxDist.aai_taxtest(99.0, :intax, engine: :blast)
|
55
54
|
assert_equal(:s, close_intax[:probably][0])
|
56
55
|
end
|
57
|
-
|
58
56
|
end
|
data/test/tax_index_test.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'test_helper'
|
2
|
+
require 'miga'
|
2
3
|
require 'miga/tax_index'
|
3
4
|
|
4
5
|
class TaxIndexTest < Test::Unit::TestCase
|
6
|
+
include TestHelper
|
5
7
|
|
6
8
|
def test_initialization
|
7
9
|
ti = MiGA::TaxIndex.new
|
@@ -9,12 +11,8 @@ class TaxIndexTest < Test::Unit::TestCase
|
|
9
11
|
end
|
10
12
|
|
11
13
|
def test_dataset
|
12
|
-
|
13
|
-
|
14
|
-
FileUtils.touch(File.expand_path('.miga_rc', ENV["MIGA_HOME"]))
|
15
|
-
FileUtils.touch(File.expand_path('.miga_daemon.json', ENV["MIGA_HOME"]))
|
16
|
-
p = MiGA::Project.new(File.expand_path('project1', $tmp))
|
17
|
-
d = p.add_dataset('dataset1')
|
14
|
+
initialize_miga_home
|
15
|
+
d = dataset
|
18
16
|
|
19
17
|
ti = MiGA::TaxIndex.new
|
20
18
|
assert_empty(ti.datasets)
|
@@ -24,9 +22,6 @@ class TaxIndexTest < Test::Unit::TestCase
|
|
24
22
|
ti << d
|
25
23
|
assert_equal(1, ti.datasets.size, 'index should have one dataset')
|
26
24
|
assert_equal(1, ti.root.datasets_count)
|
27
|
-
ensure
|
28
|
-
FileUtils.rm_rf $tmp
|
29
|
-
ENV["MIGA_HOME"] = nil
|
30
25
|
end
|
31
26
|
|
32
27
|
def test_to_json
|
@@ -40,5 +35,4 @@ class TaxIndexTest < Test::Unit::TestCase
|
|
40
35
|
ti = MiGA::TaxIndex.new
|
41
36
|
assert_equal("root:biota: 0\n", ti.to_tab)
|
42
37
|
end
|
43
|
-
|
44
38
|
end
|
data/test/taxonomy_test.rb
CHANGED
@@ -2,7 +2,6 @@ require 'test_helper'
|
|
2
2
|
require 'miga/taxonomy'
|
3
3
|
|
4
4
|
class TaxonomyTest < Test::Unit::TestCase
|
5
|
-
|
6
5
|
def test_ranks
|
7
6
|
assert_respond_to(MiGA::Taxonomy, :KNOWN_RANKS)
|
8
7
|
assert_include(MiGA::Taxonomy.KNOWN_RANKS, :s)
|
@@ -14,7 +13,7 @@ class TaxonomyTest < Test::Unit::TestCase
|
|
14
13
|
def test_json
|
15
14
|
txt = 'k:Fantasia f:Dragonaceae s:Dragonia_azura'
|
16
15
|
js = '{"json_class":"MiGA::Taxonomy","str":"' + txt + '"}'
|
17
|
-
tx = JSON.parse(js, {symbolize_names: false, create_additions: true})
|
16
|
+
tx = JSON.parse(js, { symbolize_names: false, create_additions: true })
|
18
17
|
assert_equal(MiGA::Taxonomy, tx.class)
|
19
18
|
assert_equal('Dragonaceae', tx[:f])
|
20
19
|
assert_equal(js, tx.to_json)
|
@@ -25,7 +24,7 @@ class TaxonomyTest < Test::Unit::TestCase
|
|
25
24
|
tx = MiGA::Taxonomy.new(txt)
|
26
25
|
assert_equal(txt, tx.to_s)
|
27
26
|
assert_equal(
|
28
|
-
[[:k, 'Fantasia'],[:f, 'Dragonaceae'],[:s, 'Dragonia azura']],
|
27
|
+
[[:k, 'Fantasia'], [:f, 'Dragonaceae'], [:s, 'Dragonia azura']],
|
29
28
|
tx.sorted_ranks
|
30
29
|
)
|
31
30
|
assert_equal('Irrealis', tx.namespace)
|
@@ -46,7 +45,7 @@ class TaxonomyTest < Test::Unit::TestCase
|
|
46
45
|
end
|
47
46
|
|
48
47
|
def test_init_methods
|
49
|
-
tx = MiGA::Taxonomy.new({k: 'Mascot', c: 'Cereal', s: 'Melvin'})
|
48
|
+
tx = MiGA::Taxonomy.new({ k: 'Mascot', c: 'Cereal', s: 'Melvin' })
|
50
49
|
assert_equal('k:Mascot c:Cereal s:Melvin', tx.to_s)
|
51
50
|
tx = MiGA::Taxonomy.new('Mascot College Buzz', 'k c s')
|
52
51
|
assert_equal('k:Mascot c:College s:Buzz', tx.to_s)
|
@@ -56,7 +55,7 @@ class TaxonomyTest < Test::Unit::TestCase
|
|
56
55
|
end
|
57
56
|
|
58
57
|
def test_rank_order
|
59
|
-
tx = MiGA::Taxonomy.new({k: 'Mascot', s: 'Melvin', c: 'Cereal'})
|
58
|
+
tx = MiGA::Taxonomy.new({ k: 'Mascot', s: 'Melvin', c: 'Cereal' })
|
60
59
|
assert_equal([:d, nil], tx.highest(true))
|
61
60
|
assert_equal([:k, 'Mascot'], tx.highest)
|
62
61
|
assert_equal([:ds, nil], tx.lowest(true))
|
@@ -65,7 +64,7 @@ class TaxonomyTest < Test::Unit::TestCase
|
|
65
64
|
|
66
65
|
def test_alternative
|
67
66
|
tx = MiGA::Taxonomy.new('ns:a s:Arnie', nil,
|
68
|
-
|
67
|
+
['ns:b s:Bernie', 'ns:c s:Cornie', 's:Darnie'])
|
69
68
|
# Fields
|
70
69
|
assert_equal('ns:a s:Arnie', tx.to_s)
|
71
70
|
assert_equal([[:s, 'Arnie']], tx.sorted_ranks)
|
@@ -77,7 +76,7 @@ class TaxonomyTest < Test::Unit::TestCase
|
|
77
76
|
assert_equal(3, tx.alternative.size)
|
78
77
|
# JSON
|
79
78
|
js = tx.to_json
|
80
|
-
tx_js = JSON.parse(js, {symbolize_names: false, create_additions: true})
|
79
|
+
tx_js = JSON.parse(js, { symbolize_names: false, create_additions: true })
|
81
80
|
assert_equal(tx.to_s, tx_js.to_s)
|
82
81
|
assert_equal(tx.alternative(2).to_s, tx_js.alternative(2).to_s)
|
83
82
|
assert_equal(tx.alternative.size, tx_js.alternative.size)
|
@@ -94,7 +93,7 @@ class TaxonomyTest < Test::Unit::TestCase
|
|
94
93
|
|
95
94
|
def test_reset
|
96
95
|
tx = MiGA::Taxonomy.new('ns:Letters d:Latin s:A', nil,
|
97
|
-
|
96
|
+
['ns:Words d:English s:A', 'ns:Music d:Tone s:A'])
|
98
97
|
# Reset
|
99
98
|
assert_equal(2, tx.alternative.size)
|
100
99
|
assert_equal('Letters', tx.namespace)
|
@@ -112,5 +111,4 @@ class TaxonomyTest < Test::Unit::TestCase
|
|
112
111
|
tx.add_alternative(MiGA::Taxonomy.new('ns:Letters d:Unicode s:A'))
|
113
112
|
assert_equal('ns:Letters d:Unicode s:A', tx.to_s)
|
114
113
|
end
|
115
|
-
|
116
114
|
end
|
data/test/test_helper.rb
CHANGED
@@ -11,7 +11,6 @@ require 'stringio'
|
|
11
11
|
# Kernel extensions tp capture +$stdout+ and +$stderr+ based on
|
12
12
|
# http://thinkingdigitally.com/archive/capturing-output-from-puts-in-ruby/
|
13
13
|
module Kernel
|
14
|
-
|
15
14
|
def capture_stdout
|
16
15
|
out = StringIO.new
|
17
16
|
$stdout = out
|
@@ -29,5 +28,47 @@ module Kernel
|
|
29
28
|
ensure
|
30
29
|
$stderr = STDERR
|
31
30
|
end
|
31
|
+
end
|
32
32
|
|
33
|
+
module TestHelper
|
34
|
+
def teardown
|
35
|
+
@tmpdir ||= nil
|
36
|
+
FileUtils.rm_rf tmpdir unless @tmpdir.nil?
|
37
|
+
ENV['MIGA_HOME'] = nil
|
38
|
+
end
|
39
|
+
|
40
|
+
def declare_remote_access
|
41
|
+
omit_if(ENV['REMOTE_TESTS'].nil?, 'Remote access is error-prone')
|
42
|
+
end
|
43
|
+
|
44
|
+
def declare_forks
|
45
|
+
omit_if(!ENV['JRUBY_TESTS'].nil?, 'JRuby doesn\'t implement fork')
|
46
|
+
end
|
47
|
+
|
48
|
+
def tmpdir
|
49
|
+
@tmpdir ||= Dir.mktmpdir
|
50
|
+
end
|
51
|
+
|
52
|
+
def tmpfile(name)
|
53
|
+
File.join(tmpdir, name)
|
54
|
+
end
|
55
|
+
|
56
|
+
def initialize_miga_home(daemon = '{}')
|
57
|
+
ENV['MIGA_HOME'] = tmpdir
|
58
|
+
FileUtils.touch(File.join(ENV['MIGA_HOME'], '.miga_rc'))
|
59
|
+
File.open(File.join(ENV['MIGA_HOME'], '.miga_daemon.json'), 'w') do |fh|
|
60
|
+
fh.puts daemon
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def project(i = 0)
|
65
|
+
@project ||= {}
|
66
|
+
i = "project#{i}" unless i.is_a? String
|
67
|
+
@project[i] ||= MiGA::Project.new(tmpfile(i))
|
68
|
+
end
|
69
|
+
|
70
|
+
def dataset(project_i = 0, n = 0)
|
71
|
+
n = "dataset#{n}" unless n.is_a? String
|
72
|
+
project(project_i).dataset(n) || project(project_i).add_dataset(n)
|
73
|
+
end
|
33
74
|
end
|
data/test/with_daemon_test.rb
CHANGED
@@ -2,15 +2,7 @@ require 'test_helper'
|
|
2
2
|
require 'miga/common/with_daemon'
|
3
3
|
|
4
4
|
class WithDaemonTest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
def setup
|
7
|
-
$jruby_tests = !ENV['JRUBY_TESTS'].nil?
|
8
|
-
$tmp = Dir.mktmpdir
|
9
|
-
end
|
10
|
-
|
11
|
-
def teardown
|
12
|
-
FileUtils.rm_rf $tmp
|
13
|
-
end
|
5
|
+
include TestHelper
|
14
6
|
|
15
7
|
class TestWithDaemon < MiGA::MiGA
|
16
8
|
include MiGA::Common::WithDaemon
|
@@ -40,7 +32,7 @@ class WithDaemonTest < Test::Unit::TestCase
|
|
40
32
|
puts(*o)
|
41
33
|
end
|
42
34
|
end
|
43
|
-
|
35
|
+
|
44
36
|
class TestWithDaemon2 < TestWithDaemon
|
45
37
|
def daemon_loop
|
46
38
|
puts 'I am 2.0!'
|
@@ -54,20 +46,20 @@ class WithDaemonTest < Test::Unit::TestCase
|
|
54
46
|
end
|
55
47
|
|
56
48
|
def test_with_daemon
|
57
|
-
d = TestWithDaemon.new(
|
49
|
+
d = TestWithDaemon.new(tmpdir)
|
58
50
|
assert_respond_to(d, :pid_file)
|
59
51
|
assert_respond_to(d.class, :daemon_home)
|
60
52
|
assert_nil(d.loop_i)
|
61
53
|
end
|
62
54
|
|
63
55
|
def test_daemon_run
|
64
|
-
d = TestWithDaemon2.new(
|
56
|
+
d = TestWithDaemon2.new(tmpdir)
|
65
57
|
capture_stdout { d.run }
|
66
58
|
assert_path_not_exist(d.pid_file)
|
67
59
|
end
|
68
60
|
|
69
61
|
def test_daemmon_status
|
70
|
-
d = TestWithDaemon.new(
|
62
|
+
d = TestWithDaemon.new(tmpdir)
|
71
63
|
out = capture_stdout { d.status }.string
|
72
64
|
assert_match(/Not running/, out)
|
73
65
|
|
@@ -84,11 +76,11 @@ class WithDaemonTest < Test::Unit::TestCase
|
|
84
76
|
end
|
85
77
|
|
86
78
|
def test_daemon_operations
|
87
|
-
d = TestWithDaemon.new(
|
79
|
+
d = TestWithDaemon.new(tmpdir)
|
88
80
|
FileUtils.touch(d.output_file)
|
89
81
|
assert_not_predicate(d, :active?)
|
90
82
|
|
91
|
-
|
83
|
+
declare_forks
|
92
84
|
capture_stdout do
|
93
85
|
pid = d.start
|
94
86
|
assert_gt(pid, 0)
|
@@ -112,7 +104,7 @@ class WithDaemonTest < Test::Unit::TestCase
|
|
112
104
|
end
|
113
105
|
|
114
106
|
def test_termination_file
|
115
|
-
d = TestWithDaemon2.new(
|
107
|
+
d = TestWithDaemon2.new(tmpdir)
|
116
108
|
assert { !d.termination_file?(nil) }
|
117
109
|
FileUtils.touch(d.terminate_file)
|
118
110
|
err = capture_stdout do
|
@@ -124,19 +116,19 @@ class WithDaemonTest < Test::Unit::TestCase
|
|
124
116
|
end
|
125
117
|
|
126
118
|
def test_process_alive
|
127
|
-
d = TestWithDaemon2.new(
|
119
|
+
d = TestWithDaemon2.new(tmpdir)
|
128
120
|
assert { d.process_alive?(Process.pid) }
|
129
121
|
assert { !d.process_alive?(1e9) }
|
130
122
|
end
|
131
123
|
|
132
124
|
def test_declare_alive_loop
|
133
|
-
d = TestWithDaemon.new(
|
125
|
+
d = TestWithDaemon.new(tmpfile('nope'))
|
134
126
|
assert_equal(:no_home, d.declare_alive_loop)
|
135
127
|
|
136
|
-
d = TestWithDaemon.new(
|
128
|
+
d = TestWithDaemon.new(tmpdir)
|
137
129
|
assert_equal(:no_process_alive, d.declare_alive_loop(1e9))
|
138
130
|
|
139
|
-
|
131
|
+
declare_forks
|
140
132
|
FileUtils.touch(d.terminate_file)
|
141
133
|
child = fork { sleep(3) }
|
142
134
|
capture_stdout do
|
@@ -145,12 +137,12 @@ class WithDaemonTest < Test::Unit::TestCase
|
|
145
137
|
end
|
146
138
|
|
147
139
|
def test_write_alive_file
|
148
|
-
d = TestWithDaemon.new(
|
140
|
+
d = TestWithDaemon.new(tmpfile('nope'))
|
149
141
|
assert_not_predicate(d, :active?)
|
150
142
|
assert_raise { d.write_alive_file }
|
151
143
|
assert_not_predicate(d, :active?)
|
152
144
|
|
153
|
-
d = TestWithDaemon.new(
|
145
|
+
d = TestWithDaemon.new(tmpdir)
|
154
146
|
assert_not_predicate(d, :active?)
|
155
147
|
d.write_alive_file
|
156
148
|
assert_predicate(d, :active?)
|
data/utils/adapters.fa
CHANGED
@@ -300,3 +300,16 @@ AGATCGGAAGAGCGGTTCAGCAGGAATGCCGAG
|
|
300
300
|
AGATCGGAAGAGCACACGTCTGAACTCCAGTCAC
|
301
301
|
>TruSeq3_UniversalAdapter
|
302
302
|
AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTA
|
303
|
+
|
304
|
+
>Nextera_PE_PrefixNX/1
|
305
|
+
AGATGTGTATAAGAGACAG
|
306
|
+
>Nextera_PE_PrefixNX/2
|
307
|
+
AGATGTGTATAAGAGACAG
|
308
|
+
>Nextera_PE_Trans1
|
309
|
+
TCGTCGGCAGCGTCAGATGTGTATAAGAGACAG
|
310
|
+
>Nextera_PE_Trans1_rc
|
311
|
+
CTGTCTCTTATACACATCTGACGCTGCCGACGA
|
312
|
+
>Nextera_PE_Trans2
|
313
|
+
GTCTCGTGGGCTCGGAGATGTGTATAAGAGACAG
|
314
|
+
>Nextera_PE_Trans2_rc
|
315
|
+
CTGTCTCTTATACACATCTCCGAGCCCACGAGAC
|
data/utils/cleanup-databases.rb
CHANGED
@@ -10,23 +10,24 @@ p = MiGA::Project.load(ARGV[0])
|
|
10
10
|
ds_names = p.dataset_names
|
11
11
|
thr = ARGV[1].to_i
|
12
12
|
|
13
|
-
pc = [0] + (1
|
14
|
-
$stderr.puts (('.'*9 + '|')*10) + ' 100%'
|
13
|
+
pc = [0] + (1..100).map { |i| ds_names.size * i / 100 }
|
14
|
+
$stderr.puts (('.' * 9 + '|') * 10) + ' 100%'
|
15
15
|
|
16
|
-
(0
|
16
|
+
(0..thr - 1).each do |t|
|
17
17
|
fork do
|
18
18
|
ds_names.each_with_index do |i, idx|
|
19
|
-
while t == 0 and idx+1 > pc.first
|
19
|
+
while t == 0 and idx + 1 > pc.first
|
20
20
|
$stderr.print '#'
|
21
21
|
pc.shift
|
22
22
|
end
|
23
23
|
next unless (idx % thr) == t
|
24
|
+
|
24
25
|
d = p.dataset(i)
|
25
26
|
next unless d.is_ref? and d.is_active?
|
27
|
+
|
26
28
|
d.cleanup_distances!
|
27
29
|
end
|
28
30
|
end
|
29
31
|
end
|
30
32
|
Process.waitall
|
31
33
|
$stderr.puts ' Done'
|
32
|
-
|