miga-base 0.7.20.1 → 0.7.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/miga/cli/action/add_result.rb +1 -1
- data/lib/miga/cli/action/next_step.rb +3 -11
- data/lib/miga/common/with_result.rb +39 -1
- data/lib/miga/dataset.rb +2 -0
- data/lib/miga/dataset/result.rb +2 -13
- data/lib/miga/project.rb +17 -2
- data/lib/miga/project/base.rb +1 -4
- data/lib/miga/project/dataset.rb +3 -2
- data/lib/miga/project/result.rb +5 -11
- data/lib/miga/result.rb +17 -1
- data/lib/miga/version.rb +2 -2
- data/test/hook_test.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed3a4b61cfc055c8f305438f304257116b7ec3fe92e10af4d00150d6835cf079
|
4
|
+
data.tar.gz: 9cad53f9a308fbb96d0264932348543339a3d03e096695217b2af85f5b2ac89f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1507b05bdc37fe6b8f7dc1b7531042d225dc2e79112b3fb9dcb1e4a558e38321a1a8a1203024cb6f956623be928c676fa3c9c1fb971190e2ef6e26328a97d5e5
|
7
|
+
data.tar.gz: 570bd7b58bc0a6262ef77b1be1a797783b423d76f474fa4840eb146fdbc5fefc12dc5d8abd34f72c4dc7a7cc8ad000fe80005c33af8c9dbcb4232a757f01e07a
|
@@ -20,6 +20,6 @@ class MiGA::Cli::Action::AddResult < MiGA::Cli::Action
|
|
20
20
|
obj = cli.load_project_or_dataset
|
21
21
|
cli.say "Registering result: #{cli[:result]}"
|
22
22
|
r = obj.add_result(cli[:result], true, force: cli[:force])
|
23
|
-
raise
|
23
|
+
raise 'Cannot add result, incomplete expected files' if r.nil?
|
24
24
|
end
|
25
25
|
end
|
@@ -11,16 +11,8 @@ class MiGA::Cli::Action::NextStep < MiGA::Cli::Action
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def perform
|
14
|
-
|
15
|
-
n =
|
16
|
-
|
17
|
-
n = p.next_distances(false)
|
18
|
-
n ||= p.next_inclade(false)
|
19
|
-
else
|
20
|
-
d = cli.load_dataset
|
21
|
-
n = d.next_preprocessing if d.is_active?
|
22
|
-
end
|
23
|
-
n ||= '?'
|
24
|
-
cli.puts n
|
14
|
+
obj = cli.load_project_or_dataset
|
15
|
+
n = obj.next_task
|
16
|
+
cli.puts(n || '?')
|
25
17
|
end
|
26
18
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
##
|
2
2
|
# Helper module including specific functions to handle objects that
|
3
|
-
# have results.
|
3
|
+
# have results. The class including this module must implement methods
|
4
|
+
# +.RESULT_DIRS+, +#ignore_task?+, +#metadata+, +#project+,
|
5
|
+
# and +#inactivate!+.
|
4
6
|
module MiGA::Common::WithResult
|
5
7
|
##
|
6
8
|
# Result directories as a Hash
|
@@ -68,4 +70,40 @@ module MiGA::Common::WithResult
|
|
68
70
|
def get_result(task)
|
69
71
|
add_result(task, false)
|
70
72
|
end
|
73
|
+
|
74
|
+
##
|
75
|
+
# Get the next task from +tasks+, saving intermediate results if +save+.
|
76
|
+
# If +tasks+ is +nil+ (default), it uses the entire list of tasks.
|
77
|
+
# Returns a Symbol.
|
78
|
+
def next_task(tasks = nil, save = false)
|
79
|
+
tasks ||= result_dirs.keys
|
80
|
+
tasks.find do |t|
|
81
|
+
if ignore_task?(t)
|
82
|
+
# Do not run if this step is to be ignored
|
83
|
+
false
|
84
|
+
else
|
85
|
+
res = add_result(t, save)
|
86
|
+
if res.nil?
|
87
|
+
# Run if the step has not been calculated,
|
88
|
+
# unless too many attempts were already made
|
89
|
+
if (metadata["_try_#{t}"] || 0) > (project.metadata[:max_try] || 10)
|
90
|
+
inactivate! "Too many errors in step #{t}"
|
91
|
+
false
|
92
|
+
else
|
93
|
+
true
|
94
|
+
end
|
95
|
+
else
|
96
|
+
# Run if the step is ready but has to be recalculated
|
97
|
+
res.recalculate? ? true : false
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
##
|
104
|
+
# Mark all results for recalculation
|
105
|
+
def recalculate_tasks(reason = nil)
|
106
|
+
each_result { |res| res.recalculate!(reason).save }
|
107
|
+
end
|
108
|
+
|
71
109
|
end
|
data/lib/miga/dataset.rb
CHANGED
@@ -107,6 +107,7 @@ class MiGA::Dataset < MiGA::MiGA
|
|
107
107
|
metadata[:warn] = "Inactive: #{reason}" unless reason.nil?
|
108
108
|
metadata[:inactive] = true
|
109
109
|
metadata.save
|
110
|
+
project.recalculate_tasks('Reference dataset inactivated') if ref?
|
110
111
|
pull_hook :on_inactivate
|
111
112
|
end
|
112
113
|
|
@@ -116,6 +117,7 @@ class MiGA::Dataset < MiGA::MiGA
|
|
116
117
|
metadata[:inactive] = nil
|
117
118
|
metadata[:warn] = nil if metadata[:warn] && metadata[:warn] =~ /^Inactive: /
|
118
119
|
metadata.save
|
120
|
+
project.recalculate_tasks('Reference dataset activated') if ref?
|
119
121
|
pull_hook :on_activate
|
120
122
|
end
|
121
123
|
|
data/lib/miga/dataset/result.rb
CHANGED
@@ -77,19 +77,8 @@ module MiGA::Dataset::Result
|
|
77
77
|
# Returns the key symbol of the next task that needs to be executed or nil.
|
78
78
|
# Passes +save+ to #add_result.
|
79
79
|
def next_preprocessing(save = false)
|
80
|
-
|
81
|
-
|
82
|
-
if ignore_task? t
|
83
|
-
false
|
84
|
-
elsif add_result(t, save).nil?
|
85
|
-
if (metadata["_try_#{t}"] || 0) > (project.metadata[:max_try] || 10)
|
86
|
-
inactivate! "Too many errors in step #{t}"
|
87
|
-
false
|
88
|
-
else
|
89
|
-
true
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
80
|
+
first_preprocessing(save) if save
|
81
|
+
next_task(nil, save)
|
93
82
|
end
|
94
83
|
|
95
84
|
##
|
data/lib/miga/project.rb
CHANGED
@@ -97,13 +97,28 @@ class MiGA::Project < MiGA::MiGA
|
|
97
97
|
|
98
98
|
##
|
99
99
|
# Is this a clade project?
|
100
|
-
def
|
100
|
+
def clade?
|
101
101
|
type == :clade
|
102
102
|
end
|
103
103
|
|
104
|
+
##
|
105
|
+
# Same as active? For backward compatibility
|
106
|
+
alias is_clade? clade?
|
107
|
+
|
104
108
|
##
|
105
109
|
# Is this a project for multi-organism datasets?
|
106
|
-
def
|
110
|
+
def multi?
|
107
111
|
@@KNOWN_TYPES[type][:multi]
|
108
112
|
end
|
113
|
+
|
114
|
+
##
|
115
|
+
# Same as multi? For backward compatibility
|
116
|
+
alias is_multi? multi?
|
117
|
+
|
118
|
+
##
|
119
|
+
# Is this project active? Currently a dummy function, returns
|
120
|
+
# always true.
|
121
|
+
def active?
|
122
|
+
true
|
123
|
+
end
|
109
124
|
end
|
data/lib/miga/project/base.rb
CHANGED
@@ -50,14 +50,11 @@ module MiGA::Project::Base
|
|
50
50
|
07.annotation/01.function/01.essential
|
51
51
|
07.annotation/01.function/02.ssu
|
52
52
|
07.annotation/02.taxonomy/01.mytaxa
|
53
|
-
07.annotation/03.qa 07.annotation/03.qa/
|
54
|
-
07.annotation/03.qa/02.mytaxa_scan
|
53
|
+
07.annotation/03.qa 07.annotation/03.qa/02.mytaxa_scan
|
55
54
|
08.mapping 08.mapping/01.read-ctg 08.mapping/02.read-gene
|
56
55
|
09.distances 09.distances/01.haai 09.distances/02.aai
|
57
56
|
09.distances/03.ani 09.distances/04.ssu 09.distances/05.taxonomy
|
58
57
|
10.clades 10.clades/01.find 10.clades/02.ani 10.clades/03.ogs
|
59
|
-
10.clades/04.phylogeny 10.clades/04.phylogeny/01.essential
|
60
|
-
10.clades/04.phylogeny/02.core 10.clades/05.metadata
|
61
58
|
90.stats
|
62
59
|
]
|
63
60
|
|
data/lib/miga/project/dataset.rb
CHANGED
@@ -48,11 +48,11 @@ module MiGA::Project::Dataset
|
|
48
48
|
# Add dataset identified by +name+ and return MiGA::Dataset.
|
49
49
|
def add_dataset(name)
|
50
50
|
unless metadata[:datasets].include? name
|
51
|
-
|
51
|
+
d = MiGA::Dataset.new(self, name)
|
52
52
|
@metadata[:datasets] << name
|
53
53
|
@dataset_names_hash = nil # Ensure loading even if +do_not_save+ is true
|
54
54
|
save
|
55
|
-
|
55
|
+
recalculate_tasks('New reference dataset added') if d.ref? && d.active?
|
56
56
|
pull_hook(:on_add_dataset, name)
|
57
57
|
end
|
58
58
|
dataset(name)
|
@@ -66,6 +66,7 @@ module MiGA::Project::Dataset
|
|
66
66
|
|
67
67
|
self.metadata[:datasets].delete(name)
|
68
68
|
save
|
69
|
+
recalculate_tasks('Reference dataset unlinked') if d.ref? && d.active?
|
69
70
|
pull_hook(:on_unlink_dataset, name)
|
70
71
|
d
|
71
72
|
end
|
data/lib/miga/project/result.rb
CHANGED
@@ -23,6 +23,11 @@ module MiGA::Project::Result
|
|
23
23
|
self
|
24
24
|
end
|
25
25
|
|
26
|
+
##
|
27
|
+
# Do nothing, only to comply with MiGA::Common::WithResult
|
28
|
+
def inactivate!(reason = nil)
|
29
|
+
end
|
30
|
+
|
26
31
|
##
|
27
32
|
# Is this +task+ to be bypassed?
|
28
33
|
def ignore_task?(task)
|
@@ -45,17 +50,6 @@ module MiGA::Project::Result
|
|
45
50
|
next_task(@@INCLADE_TASKS, save)
|
46
51
|
end
|
47
52
|
|
48
|
-
##
|
49
|
-
# Get the next task from +tasks+, saving intermediate results if +save+.
|
50
|
-
# If +tasks+ is +nil+ (default), it uses the entire list of tasks.
|
51
|
-
# Returns a Symbol.
|
52
|
-
def next_task(tasks = nil, save = true)
|
53
|
-
tasks ||= @@DISTANCE_TASKS + @@INCLADE_TASKS
|
54
|
-
tasks.find do |t|
|
55
|
-
ignore_task?(t) ? false : add_result(t, save).nil?
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
53
|
private
|
60
54
|
|
61
55
|
##
|
data/lib/miga/result.rb
CHANGED
@@ -59,9 +59,25 @@ class MiGA::Result < MiGA::MiGA
|
|
59
59
|
end
|
60
60
|
|
61
61
|
##
|
62
|
-
# Register the result as cleaned
|
62
|
+
# Register the result as cleaned, returns self
|
63
63
|
def clean!
|
64
64
|
self[:clean] = true
|
65
|
+
self
|
66
|
+
end
|
67
|
+
|
68
|
+
##
|
69
|
+
# Is the result marked to be recalculated? Returns Boolean
|
70
|
+
def recalculate?
|
71
|
+
!!self[:recalculate]
|
72
|
+
end
|
73
|
+
|
74
|
+
##
|
75
|
+
# Mark the result to be recalculated, returns self
|
76
|
+
def recalculate!(reason = nil)
|
77
|
+
self[:recalculate] = true
|
78
|
+
self[:recalculate_why] = reason
|
79
|
+
self[:recalculate_when] = Time.now.to_s
|
80
|
+
self
|
65
81
|
end
|
66
82
|
|
67
83
|
##
|
data/lib/miga/version.rb
CHANGED
@@ -8,7 +8,7 @@ module MiGA
|
|
8
8
|
# - Float representing the major.minor version.
|
9
9
|
# - Integer representing gem releases of the current version.
|
10
10
|
# - Integer representing minor changes that require new version number.
|
11
|
-
VERSION = [0.7,
|
11
|
+
VERSION = [0.7, 21, 0]
|
12
12
|
|
13
13
|
##
|
14
14
|
# Nickname for the current major.minor version.
|
@@ -16,7 +16,7 @@ module MiGA
|
|
16
16
|
|
17
17
|
##
|
18
18
|
# Date of the current gem release.
|
19
|
-
VERSION_DATE = Date.new(2021, 1,
|
19
|
+
VERSION_DATE = Date.new(2021, 1, 13)
|
20
20
|
|
21
21
|
##
|
22
22
|
# Reference of MiGA.
|
data/test/hook_test.rb
CHANGED
@@ -107,10 +107,10 @@ class HookTest < Test::Unit::TestCase
|
|
107
107
|
File.join(project.path, 'data', '90.stats', "miga-project.#{ext}")
|
108
108
|
)
|
109
109
|
end
|
110
|
-
assert_equal(:project_stats, project.next_task
|
110
|
+
assert_equal(:project_stats, project.next_task)
|
111
111
|
assert_equal(:test, $res)
|
112
112
|
assert_equal(1, $counter)
|
113
|
-
assert_equal(:haai_distances, project.next_task)
|
113
|
+
assert_equal(:haai_distances, project.next_task(nil, true))
|
114
114
|
assert_equal(:project_stats, $res)
|
115
115
|
assert_equal(2, $counter)
|
116
116
|
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.
|
4
|
+
version: 0.7.21.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-01-
|
11
|
+
date: 2021-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: daemons
|