miga-base 0.7.23.0 → 0.7.24.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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/Rakefile +1 -0
  4. data/lib/miga/cli/action/add.rb +1 -2
  5. data/lib/miga/cli/action/classify_wf.rb +12 -11
  6. data/lib/miga/cli/action/derep_wf.rb +3 -9
  7. data/lib/miga/cli/action/edit.rb +0 -1
  8. data/lib/miga/cli/action/find.rb +1 -1
  9. data/lib/miga/cli/action/generic.rb +1 -1
  10. data/lib/miga/cli/action/get.rb +7 -2
  11. data/lib/miga/cli/action/ncbi_get.rb +1 -1
  12. data/lib/miga/cli/action/new.rb +15 -9
  13. data/lib/miga/cli/action/option.rb +44 -0
  14. data/lib/miga/cli/action/quality_wf.rb +3 -3
  15. data/lib/miga/cli/action/tax_dist.rb +1 -1
  16. data/lib/miga/cli/action/tax_test.rb +1 -1
  17. data/lib/miga/cli/action/wf.rb +32 -30
  18. data/lib/miga/cli/base.rb +1 -0
  19. data/lib/miga/cli/objects_helper.rb +23 -18
  20. data/lib/miga/common.rb +1 -1
  21. data/lib/miga/common/with_option.rb +83 -0
  22. data/lib/miga/common/with_result.rb +2 -1
  23. data/lib/miga/dataset/base.rb +20 -2
  24. data/lib/miga/dataset/result.rb +1 -1
  25. data/lib/miga/metadata.rb +25 -13
  26. data/lib/miga/project/base.rb +82 -2
  27. data/lib/miga/project/result.rb +4 -4
  28. data/lib/miga/result/stats.rb +2 -2
  29. data/lib/miga/version.rb +2 -2
  30. data/scripts/essential_genes.bash +1 -2
  31. data/scripts/ogs.bash +2 -3
  32. data/test/dataset_test.rb +5 -5
  33. data/test/with_option_test.rb +115 -0
  34. data/utils/cleanup-databases.rb +1 -2
  35. data/utils/distance/commands.rb +2 -2
  36. data/utils/distance/database.rb +1 -1
  37. data/utils/distance/pipeline.rb +2 -4
  38. data/utils/distance/runner.rb +15 -23
  39. data/utils/index_metadata.rb +1 -2
  40. data/utils/subclade/runner.rb +9 -10
  41. metadata +6 -3
@@ -19,7 +19,7 @@ m.say 'Cleaning Databases'
19
19
  next unless (idx % thr) == t
20
20
 
21
21
  d = p.dataset(i)
22
- next unless d.is_ref? and d.is_active?
22
+ next unless d.ref? && d.active?
23
23
 
24
24
  d.cleanup_distances!
25
25
  end
@@ -28,4 +28,3 @@ end
28
28
  Process.waitall
29
29
  m.advance('Dataset:', dsn.size, dsn.size)
30
30
  m.say
31
-
@@ -9,7 +9,7 @@ module MiGA::DistanceRunner::Commands
9
9
  return y unless y.nil? || y.zero?
10
10
 
11
11
  # Try hAAI (except in clade projects)
12
- unless @ref_project.is_clade?
12
+ unless @ref_project.clade?
13
13
  y = haai(target)
14
14
  return y unless y.nil? || y.zero?
15
15
  end
@@ -75,7 +75,7 @@ module MiGA::DistanceRunner::Commands
75
75
  v = `aai.rb -1 "#{f1}" -2 "#{f2}" -S "#{db}" \
76
76
  --name1 "#{n1}" --name2 "#{n2}" \
77
77
  -t "#{o[:thr]}" -a --lookup-first "--#{o[:aai_save_rbm]}" \
78
- -p "#{o[:aai_p] || 'blast+'}"`.chomp
78
+ -p "#{o[:aai_p]}"`.chomp
79
79
  (v.nil? || v.empty?) ? 0 : v.to_f
80
80
  end
81
81
 
@@ -66,7 +66,7 @@ module MiGA::DistanceRunner::Database
66
66
  return y unless y.nil? || y.zero?
67
67
 
68
68
  # Check if self.dataset <- target is done (another thread)
69
- if dataset.is_ref? && project.path == ref_project.path
69
+ if dataset.ref? && project.path == ref_project.path
70
70
  y = data_from_db(
71
71
  target.name, dataset.name, ref_db(metric, target.name), metric
72
72
  )
@@ -31,10 +31,8 @@ module MiGA::DistanceRunner::Pipeline
31
31
 
32
32
  # Run distances against datasets listed in metadata's +:dist_req+
33
33
  def distances_by_request(metric)
34
- return unless dataset.metadata[:dist_req]
35
-
36
34
  $stderr.puts 'Running distances by request'
37
- dataset.metadata[:dist_req].each do |target|
35
+ dataset.option(:dist_req).each do |target|
38
36
  ds = ref_project.dataset(target) and send(metric, ds)
39
37
  end
40
38
  end
@@ -112,7 +110,7 @@ module MiGA::DistanceRunner::Pipeline
112
110
  $stderr.puts 'Transferring taxonomy'
113
111
  return if tax.nil?
114
112
 
115
- pval = (project.metadata[:tax_pvalue] || 0.05).to_f
113
+ pval = project.option(:tax_pvalue)
116
114
  tax_a = tax
117
115
  .select { |i| i[1] != '?' && i[2] <= pval }
118
116
  .map { |i| i[0, 2].join(':') }
@@ -21,47 +21,39 @@ class MiGA::DistanceRunner
21
21
  @home = File.expand_path('data/09.distances', project.path)
22
22
 
23
23
  # Default opts
24
- if project.metadata[:aai_save_rbm] == false
25
- @opts[:aai_save_rbm] ||= 'no-save-rbm'
26
- end
27
- @opts[:aai_save_rbm] ||= ENV.fetch('MIGA_AAI_SAVE_RBM') do
28
- project.is_clade? ? 'save-rbm' : 'no-save-rbm'
29
- end
24
+ @opts[:aai_save_rbm] =
25
+ project.option(:aai_save_rbm) ? 'save-rbm' : 'no-save-rbm'
30
26
  @opts[:thr] ||= ENV.fetch('CORES') { 2 }.to_i
31
- if opts[:run_taxonomy] and project.metadata[:ref_project]
32
- ref_path = project.metadata[:ref_project]
27
+ if opts[:run_taxonomy] && project.option(:ref_project)
28
+ ref_path = project.option(:ref_project)
33
29
  @home = File.expand_path('05.taxonomy', @home)
34
30
  @ref_project = MiGA::Project.load(ref_path)
35
31
  raise "Cannot load reference project: #{ref_path}" if @ref_project.nil?
36
- elsif !opts[:run_taxonomy] and dataset.metadata[:db_project]
37
- ref_path = dataset.metadata[:db_project]
38
- if project.metadata[:db_proj_dir]
39
- ref_path = File.expand_path(ref_path, project.metadata[:db_proj_dir])
32
+ elsif !opts[:run_taxonomy] && dataset.option(:db_project)
33
+ ref_path = dataset.option(:db_project)
34
+ if project.option(:db_proj_dir)
35
+ ref_path = File.expand_path(ref_path, project.option(:db_proj_dir))
40
36
  end
41
37
  @ref_project = MiGA::Project.load(ref_path)
42
38
  raise "Cannot load reference project: #{ref_path}" if @ref_project.nil?
43
39
  else
44
40
  @ref_project = project
45
41
  end
46
- [:haai_p, :aai_p, :ani_p, :distances_checkpoint].each do |m|
47
- @opts[m] ||= ref_project.metadata[m]
42
+ %i[haai_p aai_p ani_p distances_checkpoint].each do |m|
43
+ @opts[m] ||= ref_project.option(m)
48
44
  end
49
- @opts[:aai_p] ||= 'blast+'
50
- @opts[:ani_p] ||= 'blast+'
51
- @opts[:distances_checkpoint] ||= 10
52
- @opts[:distances_checkpoint] = @opts[:distances_checkpoint].to_i
53
45
  $stderr.puts "Options: #{opts}"
54
46
  end
55
47
 
56
48
  # Launch the appropriate analysis
57
49
  def go!
58
50
  $stderr.puts "Launching analysis"
59
- return if dataset.is_multi?
51
+ return if dataset.multi?
60
52
 
61
53
  Dir.mktmpdir do |tmp_dir|
62
54
  @tmp = tmp_dir
63
55
  create_temporals
64
- opts[:run_taxonomy] ? go_taxonomy! : dataset.is_ref? ? go_ref! : go_query!
56
+ opts[:run_taxonomy] ? go_taxonomy! : dataset.ref? ? go_ref! : go_query!
65
57
  end
66
58
  end
67
59
 
@@ -73,7 +65,7 @@ class MiGA::DistanceRunner
73
65
 
74
66
  # first-come-first-serve traverse
75
67
  ref_project.each_dataset do |ds|
76
- next if !ds.is_ref? or ds.is_multi? or ds.result(:essential_genes).nil?
68
+ next if !ds.ref? or ds.multi? or ds.result(:essential_genes).nil?
77
69
 
78
70
  puts "[ #{Time.now} ] #{ds.name}"
79
71
  ani_after_aai(ds)
@@ -88,7 +80,7 @@ class MiGA::DistanceRunner
88
80
  def go_query!
89
81
  $stderr.puts 'Launching analysis for query dataset'
90
82
  # Check if project is ready
91
- tsk = ref_project.is_clade? ? [:subclades, :ani] : [:clade_finding, :aai]
83
+ tsk = ref_project.clade? ? [:subclades, :ani] : [:clade_finding, :aai]
92
84
  res = ref_project.result(tsk[0])
93
85
  return if res.nil?
94
86
 
@@ -137,7 +129,7 @@ class MiGA::DistanceRunner
137
129
  # Launch analysis for taxonomy jobs
138
130
  def go_taxonomy!
139
131
  $stderr.puts 'Launching taxonomy analysis'
140
- return unless project.metadata[:ref_project]
132
+ return unless project.option(:ref_project)
141
133
 
142
134
  go_query! # <- yeah, it's actually the same, just different ref_project
143
135
  end
@@ -17,8 +17,7 @@ def searchable(db, d, k, v)
17
17
  end
18
18
 
19
19
  p.each_dataset do |d|
20
- next unless d.is_ref?
21
- next unless d.is_active?
20
+ next unless d.ref? && d.active?
22
21
 
23
22
  searchable(db, d, :name, d.name)
24
23
  d.metadata.each do |k, v|
@@ -18,19 +18,18 @@ class MiGA::SubcladeRunner
18
18
  @step == :clade_finding ? '01.find.running' : '02.ani.running'
19
19
  )
20
20
  @opts[:thr] ||= ENV.fetch('CORES') { 2 }.to_i
21
- @opts[:run_clades] = !!@project.metadata.data.fetch(:run_clades) { true }
22
- @opts[:gsp_ani] = @project.metadata.data.fetch(:gsp_ani) { 95.0 }.to_f
23
- @opts[:gsp_aai] = @project.metadata.data.fetch(:gsp_aai) { 90.0 }.to_f
24
- @opts[:gsp_metric] =
25
- @project.metadata.data.fetch(:gsp_metric) { 'ani' }.to_s
21
+ @opts[:run_clades] = @project.option(:run_clades)
22
+ @opts[:gsp_ani] = @project.option(:gsp_ani)
23
+ @opts[:gsp_aai] = @project.option(:gsp_aai)
24
+ @opts[:gsp_metric] = @project.option(:gsp_metric)
26
25
  end
27
26
 
28
27
  # Launch the appropriate analysis
29
28
  def go!
30
29
  return if project.type == :metagenomes
31
30
 
32
- unless @project.dataset_names.any? { |i| @project.dataset(i).is_ref? }
33
- FileUtils.touch(File.expand_path('miga-project.empty', @home))
31
+ unless @project.dataset_names.any? { |i| @project.dataset(i).ref? }
32
+ FileUtils.touch(File.join(@home, 'miga-project.empty'))
34
33
  return
35
34
  end
36
35
  Dir.chdir home
@@ -44,15 +43,15 @@ class MiGA::SubcladeRunner
44
43
  # Launch analysis for clade_finding
45
44
  def go_clade_finding!
46
45
  cluster_species
47
- unless project.is_clade?
48
- subclades :aai
46
+ unless project.clade?
47
+ subclades(:aai)
49
48
  compile
50
49
  end
51
50
  end
52
51
 
53
52
  # Launch analysis for subclades
54
53
  def go_subclades!
55
- subclades :ani
54
+ subclades(:ani)
56
55
  compile
57
56
  end
58
57
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miga-base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.23.0
4
+ version: 0.7.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luis M. Rodriguez-R
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-09 00:00:00.000000000 Z
11
+ date: 2021-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: daemons
@@ -152,6 +152,7 @@ files:
152
152
  - lib/miga/cli/action/ncbi_get.rb
153
153
  - lib/miga/cli/action/new.rb
154
154
  - lib/miga/cli/action/next_step.rb
155
+ - lib/miga/cli/action/option.rb
155
156
  - lib/miga/cli/action/preproc_wf.rb
156
157
  - lib/miga/cli/action/quality_wf.rb
157
158
  - lib/miga/cli/action/rm.rb
@@ -174,6 +175,7 @@ files:
174
175
  - lib/miga/common/path.rb
175
176
  - lib/miga/common/with_daemon.rb
176
177
  - lib/miga/common/with_daemon_class.rb
178
+ - lib/miga/common/with_option.rb
177
179
  - lib/miga/common/with_result.rb
178
180
  - lib/miga/daemon.rb
179
181
  - lib/miga/daemon/base.rb
@@ -247,6 +249,7 @@ files:
247
249
  - test/taxonomy_test.rb
248
250
  - test/test_helper.rb
249
251
  - test/with_daemon_test.rb
252
+ - test/with_option_test.rb
250
253
  - utils/adapters.fa
251
254
  - utils/cleanup-databases.rb
252
255
  - utils/core-pan-plot.R
@@ -566,7 +569,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
566
569
  - !ruby/object:Gem::Version
567
570
  version: '0'
568
571
  requirements: []
569
- rubygems_version: 3.1.2
572
+ rubygems_version: 3.1.4
570
573
  signing_key:
571
574
  specification_version: 4
572
575
  summary: MiGA