miga-base 0.3.0.1 → 0.3.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/actions/create_dataset.rb +3 -21
- data/actions/create_project.rb +9 -11
- data/actions/init.rb +2 -2
- data/actions/run_local.rb +1 -1
- data/bin/miga +22 -1
- data/lib/miga/project.rb +16 -6
- data/lib/miga/result.rb +1 -1
- data/lib/miga/version.rb +2 -2
- data/test/project_test.rb +11 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 128dc675d7890680368567d6d20d4fc37f746852
|
4
|
+
data.tar.gz: f58156b654b1463670d48c613c552e55b14d1b18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9431dc3c5ce79996bdaf77d9a2bffe06cb32645a95ebbe397164de0706825c50c8da54fdd0574b4ba4123226cbbd3dd7a322a9a5d87d8dd40ced955c618f59ae
|
7
|
+
data.tar.gz: 24e4ba089124116c4a12b67df9be0930c11a60af8d70dac3a2525061ffddf195e20b4f130d94de391a474af7782222066f2a41552de5f078234af7f3d03f0972
|
data/actions/create_dataset.rb
CHANGED
@@ -12,8 +12,6 @@ OptionParser.new do |opt|
|
|
12
12
|
){ |v| o[:ref]=!v }
|
13
13
|
opt.on("-d", "--description STRING",
|
14
14
|
"Description of the dataset."){ |v| o[:description]=v }
|
15
|
-
opt.on("-u", "--user STRING",
|
16
|
-
"Owner of the dataset."){ |v| o[:user]=v }
|
17
15
|
opt.on("-c", "--comments STRING",
|
18
16
|
"Comments on the dataset."){ |v| o[:comments]=v }
|
19
17
|
opt.on("-m", "--metadata STRING",
|
@@ -43,9 +41,7 @@ end.parse!
|
|
43
41
|
|
44
42
|
##=> Main <=
|
45
43
|
opt_require(o)
|
46
|
-
|
47
|
-
raise "Unrecognized dataset type: #{o[:type]}." if
|
48
|
-
(not o[:update]) and MiGA::Dataset.KNOWN_TYPES[o[:type]].nil?
|
44
|
+
opt_require_type(o, MiGA::Dataset) unless o[:update]
|
49
45
|
|
50
46
|
$stderr.puts "Loading project." unless o[:q]
|
51
47
|
p = MiGA::Project.load(o[:project])
|
@@ -55,7 +51,7 @@ raise "Dataset already exists, aborting." unless
|
|
55
51
|
o[:update] or not MiGA::Dataset.exist?(p, o[:dataset])
|
56
52
|
$stderr.puts "Loading dataset." unless o[:q]
|
57
53
|
d = o[:update] ? p.dataset(o[:dataset]) :
|
58
|
-
MiGA::Dataset.new(p, o[:dataset], o[:ref]
|
54
|
+
MiGA::Dataset.new(p, o[:dataset], o[:ref])
|
59
55
|
raise "Dataset does not exist." if d.nil?
|
60
56
|
|
61
57
|
in_files = [:raw_reads, :trimmed_fasta_s, :trimmed_fasta_c, :assembly]
|
@@ -83,21 +79,7 @@ if in_files.any? { |i| not o[i].nil? }
|
|
83
79
|
cp_result(o, d, p, :assembly, :assembly, %w[.LargeContigs.fna])
|
84
80
|
end
|
85
81
|
|
86
|
-
|
87
|
-
o[:metadata].split(",").each do |pair|
|
88
|
-
(k,v) = pair.split("=")
|
89
|
-
case v
|
90
|
-
when "true"; v = true
|
91
|
-
when "false"; v = false
|
92
|
-
when "nil"; v = nil
|
93
|
-
end
|
94
|
-
d.metadata[k] = v
|
95
|
-
end
|
96
|
-
end
|
97
|
-
[:type, :description, :user, :comments].each do |k|
|
98
|
-
d.metadata[k]=o[k] unless o[k].nil?
|
99
|
-
end
|
100
|
-
|
82
|
+
d = add_metadata(o, d)
|
101
83
|
d.save
|
102
84
|
p.add_dataset(o[:dataset]) unless o[:update]
|
103
85
|
res = d.first_preprocessing(true)
|
data/actions/create_project.rb
CHANGED
@@ -11,9 +11,12 @@ OptionParser.new do |opt|
|
|
11
11
|
"Name of the project."){ |v| o[:name]=v }
|
12
12
|
opt.on("-d", "--description STRING",
|
13
13
|
"Description of the project."){ |v| o[:description]=v }
|
14
|
-
opt.on("-u", "--user STRING", "Owner of the project."){ |v| o[:user]=v }
|
15
14
|
opt.on("-c", "--comments STRING",
|
16
15
|
"Comments on the project."){ |v| o[:comments]=v }
|
16
|
+
opt.on("-m", "--metadata STRING",
|
17
|
+
"Metadata as key-value pairs separated by = and delimited by comma.",
|
18
|
+
"Values are saved as strings except for booleans (true / false) or nil."
|
19
|
+
){ |v| o[:metadata]=v }
|
17
20
|
opt.on("--update",
|
18
21
|
"Updates the project if it already exists."){ o[:update]=true }
|
19
22
|
opt_common(opt, o)
|
@@ -21,14 +24,12 @@ end.parse!
|
|
21
24
|
|
22
25
|
##=> Main <=
|
23
26
|
opt_require(o, project:"-P")
|
24
|
-
|
27
|
+
opt_require_type(o, MiGA::Project) unless o[:update]
|
25
28
|
|
26
29
|
unless File.exist? "#{ENV["HOME"]}/.miga_rc" and
|
27
30
|
File.exist? "#{ENV["HOME"]}/.miga_daemon.json"
|
28
|
-
|
29
|
-
"
|
30
|
-
`'#{File.dirname(__FILE__)}/../scripts/init.bash'` if
|
31
|
-
$stdin.gets.chomp == 'yes'
|
31
|
+
raise "You must initialize MiGA before creating the first project.\n" +
|
32
|
+
"Please use miga init."
|
32
33
|
end
|
33
34
|
|
34
35
|
$stderr.puts "Creating project." unless o[:q]
|
@@ -37,11 +38,8 @@ raise "Project already exists, aborting." unless
|
|
37
38
|
p = MiGA::Project.new(o[:project], o[:update])
|
38
39
|
# The following check is redundant with MiGA::Project#create,
|
39
40
|
# but allows upgrading projects from (very) early code versions
|
40
|
-
o[:name] = File.basename(p.path) if
|
41
|
-
|
42
|
-
[:name, :description, :user, :comments, :type].each do |k|
|
43
|
-
p.metadata[k] = o[k] unless o[k].nil?
|
44
|
-
end
|
41
|
+
o[:name] = File.basename(p.path) if o[:update] and o[:name].nil?
|
42
|
+
p = add_metadata(o, p)
|
45
43
|
p.save
|
46
44
|
|
47
45
|
$stderr.puts "Done." unless o[:q]
|
data/actions/init.rb
CHANGED
@@ -7,7 +7,7 @@ require "shellwords"
|
|
7
7
|
|
8
8
|
o = {q:true, mytaxa:nil, config:File.expand_path(".miga_modules", ENV["HOME"]),
|
9
9
|
ask: false, auto:false, dtype: "bash"}
|
10
|
-
|
10
|
+
OptionParser.new do |opt|
|
11
11
|
opt_banner(opt)
|
12
12
|
opt.on("-c","--config PATH",
|
13
13
|
"Path to the Bash configuration file.",
|
@@ -83,7 +83,7 @@ unless File.exist? o[:config]
|
|
83
83
|
o[:config] = ask_user(
|
84
84
|
"Is there a script I need to load at startup?", o[:config])
|
85
85
|
end
|
86
|
-
if File.
|
86
|
+
if File.exist? o[:config]
|
87
87
|
o[:config] = File.expand_path o[:config]
|
88
88
|
$stderr.puts "Found bash configuration script: #{o[:config]}."
|
89
89
|
rc_fh.puts "MIGA_STARTUP='#{o[:config]}'"
|
data/actions/run_local.rb
CHANGED
data/bin/miga
CHANGED
@@ -71,7 +71,7 @@ def opt_object(opt, o, what=[:project, :dataset])
|
|
71
71
|
what.include? :dataset_type_req
|
72
72
|
opt.on("-t", "--type STRING",
|
73
73
|
(what.include?(:project_type_req) ? "(Mandatory) " : "") +
|
74
|
-
"Type of
|
74
|
+
"Type of project. Recognized types include:",
|
75
75
|
*MiGA::Project.KNOWN_TYPES.map{ |k,v| "~ #{k}: #{v[:description]}"}
|
76
76
|
){ |v| o[:type]=v.to_sym } if what.include? :project_type or
|
77
77
|
what.include? :project_type_req
|
@@ -116,6 +116,11 @@ def opt_require(o, req={project:"-P", dataset:"-D"})
|
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
|
+
def opt_require_type(o, klass)
|
120
|
+
opt_require(o, type:"-t")
|
121
|
+
raise "Unrecognized type: #{o[:type]}." if klass.KNOWN_TYPES[o[:type]].nil?
|
122
|
+
end
|
123
|
+
|
119
124
|
# Filters datasets by keys set in +opt_filter_datasets+.
|
120
125
|
def filter_datasets!(ds, o)
|
121
126
|
ds.select!{|d| d.is_ref? == o[:ref] } unless o[:ref].nil?
|
@@ -128,6 +133,22 @@ def filter_datasets!(ds, o)
|
|
128
133
|
ds
|
129
134
|
end
|
130
135
|
|
136
|
+
def add_metadata(o, obj)
|
137
|
+
o[:metadata].split(",").each do |pair|
|
138
|
+
(k,v) = pair.split("=")
|
139
|
+
case v
|
140
|
+
when "true"; v = true
|
141
|
+
when "false"; v = false
|
142
|
+
when "nil"; v = nil
|
143
|
+
end
|
144
|
+
obj.metadata[k] = v
|
145
|
+
end
|
146
|
+
[:type, :name, :user, :description, :comments].each do |k|
|
147
|
+
obj.metadata[k] = o[k] unless o[k].nil?
|
148
|
+
end
|
149
|
+
obj
|
150
|
+
end
|
151
|
+
|
131
152
|
##=> Main <=
|
132
153
|
|
133
154
|
execs = $task_desc.keys.map{ |k| k.to_s }
|
data/lib/miga/project.rb
CHANGED
@@ -283,16 +283,26 @@ class MiGA::Project < MiGA::MiGA
|
|
283
283
|
##
|
284
284
|
# Get the next distances task, saving intermediate results if +save+. Returns
|
285
285
|
# a Symbol.
|
286
|
-
def next_distances(save=true)
|
287
|
-
@@DISTANCE_TASKS.find{ |t| add_result(t, save).nil? }
|
288
|
-
end
|
286
|
+
def next_distances(save=true) ; next_task(@@DISTANCE_TASKS, save) ; end
|
289
287
|
|
290
288
|
##
|
291
289
|
# Get the next inclade task, saving intermediate results if +save+. Returns a
|
292
290
|
# Symbol.
|
293
|
-
def next_inclade(save=true)
|
294
|
-
|
295
|
-
|
291
|
+
def next_inclade(save=true) ; next_task(@@INCLADE_TASKS, save) ; end
|
292
|
+
|
293
|
+
##
|
294
|
+
# Get the next task from +tasks+, saving intermediate results if +save+.
|
295
|
+
# Returns a Symbol.
|
296
|
+
def next_task(tasks=@@DISTANCE_TASKS+@@INCLADE_TASKS, save=true)
|
297
|
+
tasks.find do |t|
|
298
|
+
if metadata["run_#{t}"]==false or
|
299
|
+
(!is_clade? and @@INCLADE_TASKS.include?(t) and
|
300
|
+
metadata["run_#{t}"]!=true)
|
301
|
+
false
|
302
|
+
else
|
303
|
+
add_result(t, save).nil?
|
304
|
+
end
|
305
|
+
end
|
296
306
|
end
|
297
307
|
|
298
308
|
##
|
data/lib/miga/result.rb
CHANGED
@@ -114,7 +114,7 @@ class MiGA::Result < MiGA::MiGA
|
|
114
114
|
json = File.read(path)
|
115
115
|
@data = JSON.parse(json, {:symbolize_names=>true})
|
116
116
|
@data[:files] ||= {}
|
117
|
-
@results = self[:results].map{ |rs| MiGA::Result.new rs }
|
117
|
+
@results = (self[:results] || []).map{ |rs| MiGA::Result.new rs }
|
118
118
|
end
|
119
119
|
|
120
120
|
##
|
data/lib/miga/version.rb
CHANGED
@@ -10,7 +10,7 @@ module MiGA
|
|
10
10
|
# - Float representing the major.minor version.
|
11
11
|
# - Integer representing gem releases of the current version.
|
12
12
|
# - Integer representing minor changes that require new version number.
|
13
|
-
VERSION = [0.3, 0,
|
13
|
+
VERSION = [0.3, 0, 2]
|
14
14
|
|
15
15
|
##
|
16
16
|
# Nickname for the current major.minor version.
|
@@ -18,7 +18,7 @@ module MiGA
|
|
18
18
|
|
19
19
|
##
|
20
20
|
# Date of the current gem release.
|
21
|
-
VERSION_DATE = Date.new(2017, 6,
|
21
|
+
VERSION_DATE = Date.new(2017, 6, 14)
|
22
22
|
|
23
23
|
##
|
24
24
|
# Reference of MiGA.
|
data/test/project_test.rb
CHANGED
@@ -86,6 +86,16 @@ class ProjectTest < Test::Unit::TestCase
|
|
86
86
|
assert_equal(MiGA::Result, p1.add_result(:haai_distances).class)
|
87
87
|
end
|
88
88
|
|
89
|
+
def test_result
|
90
|
+
p1 = $p1
|
91
|
+
assert_nil(p1.result :n00b)
|
92
|
+
assert_nil(p1.result :project_stats)
|
93
|
+
File.open(File.expand_path("data/90.stats/miga-project.json",p1.path),
|
94
|
+
"w"){ |fh| fh.puts "{}" }
|
95
|
+
assert_not_nil(p1.result :project_stats)
|
96
|
+
assert_equal(1, p1.results.size)
|
97
|
+
end
|
98
|
+
|
89
99
|
def test_preprocessing
|
90
100
|
p1 = $p1
|
91
101
|
assert(p1.done_preprocessing?)
|
@@ -142,6 +152,7 @@ class ProjectTest < Test::Unit::TestCase
|
|
142
152
|
"Impossible to add #{r} result.")
|
143
153
|
end
|
144
154
|
assert_nil(p1.next_inclade)
|
155
|
+
|
145
156
|
end
|
146
157
|
|
147
158
|
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.3.0.
|
4
|
+
version: 0.3.0.2
|
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: 2017-06-
|
11
|
+
date: 2017-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|