miga-base 0.7.4.0 → 0.7.5.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 (116) 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 +28 -20
  14. data/lib/miga/cli/action/doctor/base.rb +29 -6
  15. data/lib/miga/cli/action/edit.rb +1 -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 +34 -29
  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 +3 -3
  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 +24 -17
  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 +5 -2
  50. data/lib/miga/common/with_daemon_class.rb +1 -1
  51. data/lib/miga/common/with_result.rb +2 -1
  52. data/lib/miga/daemon.rb +51 -35
  53. data/lib/miga/daemon/base.rb +0 -2
  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/json.rb +5 -7
  59. data/lib/miga/lair.rb +4 -0
  60. data/lib/miga/metadata.rb +4 -3
  61. data/lib/miga/project.rb +29 -20
  62. data/lib/miga/project/base.rb +52 -37
  63. data/lib/miga/project/dataset.rb +27 -13
  64. data/lib/miga/project/hooks.rb +0 -3
  65. data/lib/miga/project/result.rb +14 -5
  66. data/lib/miga/remote_dataset.rb +85 -72
  67. data/lib/miga/remote_dataset/base.rb +11 -13
  68. data/lib/miga/remote_dataset/download.rb +33 -12
  69. data/lib/miga/result.rb +34 -25
  70. data/lib/miga/result/base.rb +0 -2
  71. data/lib/miga/result/dates.rb +1 -3
  72. data/lib/miga/result/source.rb +15 -16
  73. data/lib/miga/result/stats.rb +36 -25
  74. data/lib/miga/tax_dist.rb +6 -3
  75. data/lib/miga/tax_index.rb +17 -17
  76. data/lib/miga/taxonomy.rb +6 -1
  77. data/lib/miga/taxonomy/base.rb +19 -15
  78. data/lib/miga/version.rb +19 -16
  79. data/test/common_test.rb +3 -11
  80. data/test/daemon_helper.rb +38 -0
  81. data/test/daemon_test.rb +73 -101
  82. data/test/dataset_test.rb +58 -59
  83. data/test/format_test.rb +3 -11
  84. data/test/hook_test.rb +50 -55
  85. data/test/json_test.rb +7 -8
  86. data/test/lair_test.rb +22 -28
  87. data/test/metadata_test.rb +6 -14
  88. data/test/project_test.rb +33 -39
  89. data/test/remote_dataset_test.rb +20 -28
  90. data/test/result_stats_test.rb +17 -27
  91. data/test/result_test.rb +41 -34
  92. data/test/tax_dist_test.rb +0 -2
  93. data/test/tax_index_test.rb +4 -10
  94. data/test/taxonomy_test.rb +7 -9
  95. data/test/test_helper.rb +42 -1
  96. data/test/with_daemon_test.rb +14 -22
  97. data/utils/cleanup-databases.rb +6 -5
  98. data/utils/distance/base.rb +0 -1
  99. data/utils/distance/commands.rb +19 -12
  100. data/utils/distance/database.rb +24 -21
  101. data/utils/distance/pipeline.rb +12 -9
  102. data/utils/distance/runner.rb +14 -13
  103. data/utils/distance/temporal.rb +1 -3
  104. data/utils/distances.rb +1 -1
  105. data/utils/domain-ess-genes.rb +7 -7
  106. data/utils/index_metadata.rb +4 -2
  107. data/utils/mytaxa_scan.rb +18 -16
  108. data/utils/representatives.rb +5 -4
  109. data/utils/requirements.txt +1 -1
  110. data/utils/subclade/base.rb +0 -1
  111. data/utils/subclade/pipeline.rb +7 -6
  112. data/utils/subclade/runner.rb +9 -9
  113. data/utils/subclade/temporal.rb +0 -2
  114. data/utils/subclades-compile.rb +39 -37
  115. data/utils/subclades.rb +1 -1
  116. metadata +3 -2
@@ -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
- omit_if($jruby_tests, 'JRuby doesn\'t implement fork.')
17
- md1 = MiGA::Metadata.new(File.expand_path('md_save.json', $tmp))
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(File.expand_path('md_load.json', $tmp), {t: 1})
23
+ md1 = MiGA::Metadata.new(tmpfile('md_load.json'), { t: 1 })
32
24
  assert_equal(1, md1[:t])
33
- omit_if($jruby_tests, 'JRuby doesn\'t implement fork.')
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
- def setup
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 teardown
14
- FileUtils.rm_rf $tmp
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, "data/#{d}/miga-project#{x}"))
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($tmp + '/O_o'))
31
- assert_equal(MiGA::Project, MiGA::Project.load($p1.path).class)
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("#{$tmp}/create", MiGA::Project.new("#{$tmp}/create").path)
36
- assert_path_exist("#{$tmp}/create")
28
+ assert_equal(tmpfile('create'), project('create').path)
29
+ assert_path_exist(tmpfile('create'))
37
30
  assert_raise do
38
- ENV['MIGA_HOME'] = $tmp + '/chez-moi'
39
- MiGA::Project.new($tmp + '/cuckoo')
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 = MiGA::Project.new($tmp + '/load')
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,8 +43,8 @@ class ProjectTest < Test::Unit::TestCase
52
43
  end
53
44
 
54
45
  def test_datasets
55
- p = $p1
56
- d = p.add_dataset('d1')
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)
@@ -65,55 +56,58 @@ class ProjectTest < Test::Unit::TestCase
65
56
  end
66
57
 
67
58
  def test_import_dataset
68
- p1 = $p1
59
+ p1 = project
69
60
  d = p1.add_dataset('d1')
70
61
  File.open(
71
- "#{p1.path}/data/01.raw_reads/#{d.name}.1.fastq", 'w'
62
+ File.join(p1.path, 'data', '01.raw_reads', "#{d.name}.1.fastq"), 'w'
72
63
  ) { |f| f.puts ':-)' }
73
64
  File.open(
74
- "#{p1.path}/data/01.raw_reads/#{d.name}.done", 'w'
65
+ File.join(p1.path, 'data', '01.raw_reads', "#{d.name}.done"), 'w'
75
66
  ) { |f| f.puts ':-)' }
76
67
  d.next_preprocessing(true)
77
- p2 = MiGA::Project.new(File.expand_path('import_dataset', $tmp))
68
+ p2 = project('import_dataset')
78
69
  assert_empty(p2.datasets)
79
70
  assert_nil(p2.dataset('d1'))
80
71
  p2.import_dataset(d)
81
72
  assert_equal(1, p2.datasets.size)
82
73
  assert_equal(MiGA::Dataset, p2.dataset('d1').class)
83
74
  assert_equal(1, p2.dataset('d1').results.size)
84
- assert_path_exist(File.join(p2.path, "data/01.raw_reads/#{d.name}.1.fastq"))
85
- assert_path_exist(File.join(p2.path, "metadata/#{d.name}.json"))
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"))
86
79
  end
87
80
 
88
81
  def test_add_result
89
- p1 = $p1
82
+ p1 = project
90
83
  assert_nil(p1.add_result(:doom))
91
84
  %w[.Rdata .log .txt .done].each do |x|
92
85
  assert_nil(p1.add_result(:haai_distances))
93
86
  FileUtils.touch(
94
- File.join(p1.path, "data/09.distances/01.haai/miga-project#{x}")
87
+ File.join(
88
+ p1.path, 'data', '09.distances', '01.haai', "miga-project#{x}"
89
+ )
95
90
  )
96
91
  end
97
92
  assert_equal(MiGA::Result, p1.add_result(:haai_distances).class)
98
93
  end
99
94
 
100
95
  def test_result
101
- p1 = $p1
96
+ p1 = project
102
97
  assert_nil(p1.result(:n00b))
103
98
  assert_nil(p1.result(:project_stats))
104
- File.open(
105
- File.expand_path('data/90.stats/miga-project.json', p1.path), 'w'
106
- ) { |fh| fh.puts '{}' }
99
+ json = File.join(p1.path, 'data', '90.stats', 'miga-project.json')
100
+ File.open(json, 'w') { |fh| fh.puts '{}' }
107
101
  assert_not_nil(p1.result(:project_stats))
108
102
  assert_equal(1, p1.results.size)
109
103
  end
110
104
 
111
105
  def test_preprocessing
112
- p1 = $p1
106
+ p1 = project
113
107
  assert_predicate(p1, :done_preprocessing?)
114
108
  d1 = p1.add_dataset('BAH')
115
109
  assert_not_predicate(p1, :done_preprocessing?)
116
- FileUtils.touch(File.expand_path("data/90.stats/#{d1.name}.done", p1.path))
110
+ FileUtils.touch(File.join(p1.path, 'data', '90.stats', "#{d1.name}.done"))
117
111
  assert_predicate(p1, :done_preprocessing?)
118
112
  assert_nil(p1.next_inclade)
119
113
  p1.metadata[:type] = :clade
@@ -126,7 +120,7 @@ class ProjectTest < Test::Unit::TestCase
126
120
  aai_distances: %w[.Rdata .log .txt],
127
121
  ani_distances: %w[.Rdata .log .txt],
128
122
  clade_finding: %w[.pdf .classif .medoids
129
- .class.tsv .class.nwk .proposed-clades],
123
+ .class.tsv .class.nwk .proposed-clades],
130
124
  subclades: %w[.pdf .classif .medoids .class.tsv .class.nwk],
131
125
  ogs: %w[.ogs .stats]
132
126
  }
@@ -140,7 +134,7 @@ class ProjectTest < Test::Unit::TestCase
140
134
  end
141
135
 
142
136
  def test_empty_results
143
- p1 = $p1
137
+ p1 = project
144
138
  p1.metadata[:type] = :clade
145
139
  %i[clade_finding subclades ogs].each do |r|
146
140
  assert_nil(p1.add_result(r), "Unexpected result exists: #{r}")
@@ -150,7 +144,7 @@ class ProjectTest < Test::Unit::TestCase
150
144
  end
151
145
 
152
146
  def test_force_result
153
- p1 = $p1
147
+ p1 = project
154
148
  create_result_files(p1, :ogs, %w[.empty])
155
149
  date1 = p1.add_result(:ogs)[:created]
156
150
  sleep(1)
@@ -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
- $tmp = Dir.mktmpdir
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,7 +24,8 @@ 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
- omit_if(!$remote_tests, 'Remote access is error-prone')
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)
@@ -57,8 +49,9 @@ class RemoteDatasetTest < Test::Unit::TestCase
57
49
  n = 'Cjac_L14'
58
50
  rd = MiGA::RemoteDataset.new(cjac, :assembly_gz, :web)
59
51
  assert_equal([cjac], rd.ids)
60
- omit_if(!$remote_tests, 'Remote access is error-prone')
61
- p = $p1
52
+
53
+ declare_remote_access
54
+ p = project
62
55
  assert_nil(p.dataset(n))
63
56
  rd.save_to(p, n)
64
57
  p.add_dataset(n)
@@ -67,7 +60,7 @@ class RemoteDatasetTest < Test::Unit::TestCase
67
60
  end
68
61
 
69
62
  def test_asm_acc2id
70
- omit_if(!$remote_tests, 'Remote access is error-prone')
63
+ declare_remote_access
71
64
  assert_nil(MiGA::RemoteDataset.ncbi_asm_acc2id('NotAnAccession'))
72
65
  id = MiGA::RemoteDataset.ncbi_asm_acc2id('GCA_004684205.1')
73
66
  assert_equal('2514661', id)
@@ -75,9 +68,9 @@ class RemoteDatasetTest < Test::Unit::TestCase
75
68
  end
76
69
 
77
70
  def test_update_metadata
78
- omit_if(!$remote_tests, 'Remote access is error-prone')
71
+ declare_remote_access
79
72
  hiv1 = 'GCF_000856385.1'
80
- d1 = MiGA::Dataset.new($p1, 'd1')
73
+ d1 = MiGA::Dataset.new(project, 'd1')
81
74
  assert_nil(d1.metadata[:ncbi_assembly])
82
75
  rd = MiGA::RemoteDataset.new(hiv1, :assembly, :ncbi)
83
76
  rd.update_metadata(d1, passthrough: 123, metadata_only: true)
@@ -87,36 +80,35 @@ class RemoteDatasetTest < Test::Unit::TestCase
87
80
  end
88
81
 
89
82
  def test_type_status_asm
90
- omit_if(!$remote_tests, 'Remote access is error-prone')
83
+ declare_remote_access
91
84
  rd = MiGA::RemoteDataset.new('GCF_000018105.1', :assembly, :ncbi)
92
85
  assert { rd.get_metadata[:is_type] }
93
86
  end
94
87
 
95
88
  def test_nontype_status_asm
96
- omit_if(!$remote_tests, 'Remote access is error-prone')
89
+ declare_remote_access
97
90
  rd = MiGA::RemoteDataset.new('GCA_004684205.1', :assembly, :ncbi)
98
91
  assert { !rd.get_metadata[:is_type] }
99
92
  end
100
93
 
101
94
  def test_type_status_nuccore
102
- omit_if(!$remote_tests, 'Remote access is error-prone')
95
+ declare_remote_access
103
96
  rd = MiGA::RemoteDataset.new('NC_019748.1', :nuccore, :ncbi)
104
97
  assert { rd.get_metadata[:is_type] }
105
98
  end
106
99
 
107
100
  def test_ref_type_status
108
- omit_if(!$remote_tests, 'Remote access is error-prone')
101
+ declare_remote_access
109
102
  rd = MiGA::RemoteDataset.new('GCA_002849345', :assembly, :ncbi)
110
103
  assert { !rd.get_metadata[:is_type] }
111
104
  assert { rd.get_metadata[:is_ref_type] }
112
105
  end
113
106
 
114
107
  # This test is too expensive (too much time to run it!)
115
- #def test_net_timeout
116
- # omit_if(!$remote_tests, "Remote access is error-prone")
117
- # bad = "ftp://example.com/miga"
118
- # rd = MiGA::RemoteDataset.new(bad, :assembly, :web)
119
- # assert_raise(Net::ReadTimeout) { rd.save_to($p1, "bad") }
120
- #end
121
-
108
+ # def test_net_timeout
109
+ # declare_remote_access
110
+ # bad = "ftp://example.com/miga"
111
+ # rd = MiGA::RemoteDataset.new(bad, :assembly, :web)
112
+ # assert_raise(Net::ReadTimeout) { rd.save_to(project, "bad") }
113
+ # end
122
114
  end
@@ -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
- $tmp = Dir.mktmpdir
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($p.path, dir, "#{$d.name}#{ext}")
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 = $d.add_result(:raw_reads)
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 = $d.add_result(:raw_reads)
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 = $d.add_result(:trimmed_reads)
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 = $d.add_result(:read_quality)
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 = $d.add_result(:trimmed_fasta)
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 = $d.add_result(:assembly)
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 = $d.add_result(:cds)
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 = $d.add_result(:taxonomy)
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
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
- $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