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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/lib/miga/cli.rb +10 -8
  3. data/lib/miga/cli/action.rb +2 -3
  4. data/lib/miga/cli/action/about.rb +5 -6
  5. data/lib/miga/cli/action/add.rb +18 -12
  6. data/lib/miga/cli/action/add_result.rb +2 -3
  7. data/lib/miga/cli/action/archive.rb +1 -2
  8. data/lib/miga/cli/action/classify_wf.rb +8 -6
  9. data/lib/miga/cli/action/console.rb +0 -1
  10. data/lib/miga/cli/action/daemon.rb +7 -7
  11. data/lib/miga/cli/action/date.rb +0 -1
  12. data/lib/miga/cli/action/derep_wf.rb +5 -4
  13. data/lib/miga/cli/action/doctor.rb +71 -82
  14. data/lib/miga/cli/action/doctor/base.rb +102 -0
  15. data/lib/miga/cli/action/edit.rb +14 -2
  16. data/lib/miga/cli/action/files.rb +8 -8
  17. data/lib/miga/cli/action/find.rb +5 -6
  18. data/lib/miga/cli/action/generic.rb +7 -7
  19. data/lib/miga/cli/action/get.rb +20 -17
  20. data/lib/miga/cli/action/get_db.rb +8 -2
  21. data/lib/miga/cli/action/index_wf.rb +1 -1
  22. data/lib/miga/cli/action/init.rb +53 -41
  23. data/lib/miga/cli/action/init/daemon_helper.rb +65 -43
  24. data/lib/miga/cli/action/lair.rb +7 -7
  25. data/lib/miga/cli/action/ln.rb +6 -6
  26. data/lib/miga/cli/action/ls.rb +1 -2
  27. data/lib/miga/cli/action/ncbi_get.rb +11 -3
  28. data/lib/miga/cli/action/new.rb +4 -4
  29. data/lib/miga/cli/action/next_step.rb +0 -1
  30. data/lib/miga/cli/action/preproc_wf.rb +3 -3
  31. data/lib/miga/cli/action/quality_wf.rb +1 -1
  32. data/lib/miga/cli/action/rm.rb +2 -3
  33. data/lib/miga/cli/action/run.rb +8 -8
  34. data/lib/miga/cli/action/stats.rb +8 -4
  35. data/lib/miga/cli/action/summary.rb +7 -6
  36. data/lib/miga/cli/action/tax_dist.rb +8 -4
  37. data/lib/miga/cli/action/tax_index.rb +3 -4
  38. data/lib/miga/cli/action/tax_set.rb +7 -6
  39. data/lib/miga/cli/action/tax_test.rb +6 -5
  40. data/lib/miga/cli/action/wf.rb +21 -19
  41. data/lib/miga/cli/base.rb +34 -32
  42. data/lib/miga/cli/objects_helper.rb +27 -18
  43. data/lib/miga/cli/opt_helper.rb +3 -2
  44. data/lib/miga/common.rb +2 -5
  45. data/lib/miga/common/base.rb +15 -16
  46. data/lib/miga/common/format.rb +8 -5
  47. data/lib/miga/common/hooks.rb +1 -4
  48. data/lib/miga/common/path.rb +4 -9
  49. data/lib/miga/common/with_daemon.rb +6 -3
  50. data/lib/miga/common/with_daemon_class.rb +3 -2
  51. data/lib/miga/common/with_result.rb +2 -1
  52. data/lib/miga/daemon.rb +93 -44
  53. data/lib/miga/daemon/base.rb +30 -11
  54. data/lib/miga/dataset.rb +47 -37
  55. data/lib/miga/dataset/base.rb +52 -37
  56. data/lib/miga/dataset/hooks.rb +3 -4
  57. data/lib/miga/dataset/result.rb +17 -1
  58. data/lib/miga/dataset/status.rb +6 -5
  59. data/lib/miga/json.rb +5 -7
  60. data/lib/miga/lair.rb +4 -0
  61. data/lib/miga/metadata.rb +4 -3
  62. data/lib/miga/project.rb +29 -20
  63. data/lib/miga/project/base.rb +52 -37
  64. data/lib/miga/project/dataset.rb +33 -26
  65. data/lib/miga/project/hooks.rb +0 -3
  66. data/lib/miga/project/result.rb +14 -5
  67. data/lib/miga/remote_dataset.rb +85 -72
  68. data/lib/miga/remote_dataset/base.rb +11 -13
  69. data/lib/miga/remote_dataset/download.rb +34 -12
  70. data/lib/miga/result.rb +34 -25
  71. data/lib/miga/result/base.rb +0 -2
  72. data/lib/miga/result/dates.rb +1 -3
  73. data/lib/miga/result/source.rb +15 -16
  74. data/lib/miga/result/stats.rb +37 -27
  75. data/lib/miga/tax_dist.rb +6 -4
  76. data/lib/miga/tax_index.rb +17 -17
  77. data/lib/miga/taxonomy.rb +6 -1
  78. data/lib/miga/taxonomy/base.rb +19 -15
  79. data/lib/miga/version.rb +19 -16
  80. data/scripts/project_stats.bash +3 -0
  81. data/scripts/stats.bash +1 -1
  82. data/test/common_test.rb +3 -11
  83. data/test/daemon_helper.rb +38 -0
  84. data/test/daemon_test.rb +91 -99
  85. data/test/dataset_test.rb +63 -59
  86. data/test/format_test.rb +3 -11
  87. data/test/hook_test.rb +50 -55
  88. data/test/json_test.rb +7 -8
  89. data/test/lair_test.rb +22 -28
  90. data/test/metadata_test.rb +6 -14
  91. data/test/project_test.rb +33 -40
  92. data/test/remote_dataset_test.rb +26 -32
  93. data/test/result_stats_test.rb +17 -27
  94. data/test/result_test.rb +41 -34
  95. data/test/tax_dist_test.rb +2 -4
  96. data/test/tax_index_test.rb +4 -10
  97. data/test/taxonomy_test.rb +7 -9
  98. data/test/test_helper.rb +42 -1
  99. data/test/with_daemon_test.rb +14 -22
  100. data/utils/adapters.fa +13 -0
  101. data/utils/cleanup-databases.rb +6 -5
  102. data/utils/distance/base.rb +0 -1
  103. data/utils/distance/commands.rb +19 -12
  104. data/utils/distance/database.rb +25 -21
  105. data/utils/distance/pipeline.rb +16 -10
  106. data/utils/distance/runner.rb +19 -13
  107. data/utils/distance/temporal.rb +7 -4
  108. data/utils/distances.rb +1 -1
  109. data/utils/domain-ess-genes.rb +7 -7
  110. data/utils/index_metadata.rb +5 -4
  111. data/utils/mytaxa_scan.rb +18 -16
  112. data/utils/representatives.rb +5 -4
  113. data/utils/requirements.txt +1 -1
  114. data/utils/subclade/base.rb +0 -1
  115. data/utils/subclade/pipeline.rb +7 -6
  116. data/utils/subclade/runner.rb +9 -9
  117. data/utils/subclade/temporal.rb +0 -2
  118. data/utils/subclades-compile.rb +39 -37
  119. data/utils/subclades.rb +1 -1
  120. metadata +6 -4
@@ -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
- $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')
8
+ initialize_miga_home
13
9
  FileUtils.touch(
14
- File.join($p1.path, "data/02.trimmed_reads/#{$d1.name}.1.clipped.fastq"))
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($p1.path, "data/02.trimmed_reads/#{$d1.name}.done"))
16
+ File.join(
17
+ project.path, 'data', '02.trimmed_reads', "#{dataset.name}.done"
18
+ )
19
+ )
17
20
  FileUtils.touch(
18
- File.join($p1.path, 'data/10.clades/01.find/miga-project.empty'))
21
+ File.join(
22
+ project.path, 'data', '10.clades', '01.find', 'miga-project.empty'
23
+ )
24
+ )
19
25
  FileUtils.touch(
20
- File.join($p1.path, 'data/10.clades/01.find/miga-project.done'))
21
- end
22
-
23
- def teardown
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 = $d1.add_result(:trimmed_reads)
30
- assert_equal(MiGA::Result, r.class)
31
- r = $d1.add_result(:asssembly)
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 = $p1.add_result(:clade_finding)
34
- assert_equal(MiGA::Result, r.class)
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 = $d1.add_result(:trimmed_reads)
39
- assert_equal($d1.name, r.source.name)
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/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)
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 = $d1.add_result(:trimmed_reads)
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($p1.path, "data/02.trimmed_reads/#{$d1.name}.done")
54
- File.open(tf, 'w') { |fh| fh.puts Time.new(1,2,3,4,5) }
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($p1.path, "data/02.trimmed_reads/#{$d1.name}.start")
58
- File.open(tf, 'w') { |fh| fh.puts Time.new(1,2,3,4,0) }
59
- r = $d1.add_result(:trimmed_reads)
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
@@ -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
- assert_nil(distant_intax[:probably])
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
- assert_nil(distant_intax[:probably])
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
@@ -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
- $tmp = Dir.mktmpdir
13
- ENV['MIGA_HOME'] = $tmp
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
@@ -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
- ['ns:b s:Bernie','ns:c s:Cornie','s:Darnie'])
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
- ['ns:Words d:English s:A', 'ns:Music d:Tone s:A'])
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
@@ -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
@@ -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($tmp)
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($tmp)
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($tmp)
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($tmp)
79
+ d = TestWithDaemon.new(tmpdir)
88
80
  FileUtils.touch(d.output_file)
89
81
  assert_not_predicate(d, :active?)
90
82
 
91
- omit_if($jruby_tests, 'JRuby doesn\'t implement fork.')
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($tmp)
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($tmp)
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(File.join($tmp, 'nope'))
125
+ d = TestWithDaemon.new(tmpfile('nope'))
134
126
  assert_equal(:no_home, d.declare_alive_loop)
135
127
 
136
- d = TestWithDaemon.new($tmp)
128
+ d = TestWithDaemon.new(tmpdir)
137
129
  assert_equal(:no_process_alive, d.declare_alive_loop(1e9))
138
130
 
139
- omit_if($jruby_tests, 'JRuby doesn\'t implement fork.')
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(File.join($tmp, 'nope'))
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($tmp)
145
+ d = TestWithDaemon.new(tmpdir)
154
146
  assert_not_predicate(d, :active?)
155
147
  d.write_alive_file
156
148
  assert_predicate(d, :active?)
@@ -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
@@ -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 .. 100).map{ |i| ds_names.size * i / 100 }
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 .. thr-1).each do |t|
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
-