rbbt-util 5.34.23 → 5.34.25
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.
- checksums.yaml +4 -4
- data/lib/rbbt/hpc/batch.rb +6 -1
- data/lib/rbbt/util/log.rb +24 -0
- data/lib/rbbt/workflow/dependencies.rb +3 -1
- data/lib/rbbt/workflow/step/dependencies.rb +4 -4
- data/lib/rbbt/workflow/step/save_load_inputs.rb +7 -0
- data/lib/rbbt/workflow.rb +3 -3
- data/share/Rlib/util.R +10 -2
- data/share/rbbt_commands/hpc/orchestrate +2 -1
- data/share/rbbt_commands/lsf/orchestrate +2 -1
- data/share/rbbt_commands/slurm/orchestrate +2 -1
- data/share/rbbt_commands/tsv/read +2 -0
- 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: f1a0dc0772864a83c7c6b159d53dc1c5d95e7f58619c4e4b0c630e8240a621aa
|
|
4
|
+
data.tar.gz: c8a029debfd1ee7c820185aa1dead29575ecd173a1868692751c6a01dc7be01a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b151561ce56b42af19160eff58a8f45be7fedd6226d960987111e8b9d1147802eb612f96b85a47ad849476b7d4520df457ed70e91e9528d67e9e03a6959f78c4
|
|
7
|
+
data.tar.gz: 60b1a486a88bd2c65a4c003130c7c81de42ce72446420797132d1047be2446fce74f7cb35c80a652a1f56dcc630ba6e32d7c991a524efeab85a05325aaae1024
|
data/lib/rbbt/hpc/batch.rb
CHANGED
|
@@ -101,6 +101,11 @@ module HPC
|
|
|
101
101
|
|
|
102
102
|
task = Symbol === job.overriden ? job.overriden : job.task_name
|
|
103
103
|
|
|
104
|
+
#override_deps = job.overriden_deps.collect do |dep|
|
|
105
|
+
# name = [dep.workflow.to_s, dep.task_name] * "#"
|
|
106
|
+
# [name, dep.path] * "="
|
|
107
|
+
#end.uniq * ","
|
|
108
|
+
|
|
104
109
|
if job.overriden?
|
|
105
110
|
#override_deps = job.rec_dependencies.
|
|
106
111
|
# select{|dep| Symbol === dep.overriden }.
|
|
@@ -568,7 +573,7 @@ env > #{batch_options[:fenv]}
|
|
|
568
573
|
Misc.add_defaults options,
|
|
569
574
|
:batch_dir => batch_dir,
|
|
570
575
|
:inputs_dir => File.join(batch_dir, "inputs_dir"),
|
|
571
|
-
:workflows => workflows_to_load.uniq * ","
|
|
576
|
+
:workflows => workflows_to_load.any? ? workflows_to_load.uniq * "," : nil
|
|
572
577
|
|
|
573
578
|
options[:procpath_performance] ||= File.join(batch_dir, "procpath##{procpath.gsub(',', '#')}") if procpath
|
|
574
579
|
|
data/lib/rbbt/util/log.rb
CHANGED
|
@@ -131,6 +131,30 @@ module Log
|
|
|
131
131
|
end
|
|
132
132
|
end
|
|
133
133
|
|
|
134
|
+
def self._ignore_stdout
|
|
135
|
+
begin
|
|
136
|
+
File.open('/dev/null', 'w') do |f|
|
|
137
|
+
backup_stdout = STDOUT.dup
|
|
138
|
+
STDOUT.reopen(f)
|
|
139
|
+
begin
|
|
140
|
+
yield
|
|
141
|
+
ensure
|
|
142
|
+
STDOUT.reopen backup_stdout
|
|
143
|
+
backup_stdout.close
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
rescue Errno::ENOENT
|
|
147
|
+
yield
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def self.ignore_stdout(&block)
|
|
153
|
+
LOG_MUTEX.synchronize do
|
|
154
|
+
_ignore_stdout &block
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
134
158
|
def self.get_level(level)
|
|
135
159
|
case level
|
|
136
160
|
when Numeric
|
|
@@ -73,8 +73,10 @@ module Workflow
|
|
|
73
73
|
return [] if dep == :skip || dep == 'skip'
|
|
74
74
|
|
|
75
75
|
if not Step === dep
|
|
76
|
-
located = Open.exists?(dep)
|
|
76
|
+
located = Open.exists?(dep) || Open.exists?(dep + '.info')
|
|
77
77
|
dep = Workflow.load_step(dep)
|
|
78
|
+
else
|
|
79
|
+
located = true
|
|
78
80
|
end
|
|
79
81
|
|
|
80
82
|
dep.original_workflow ||= dep.workflow if dep.workflow
|
|
@@ -527,7 +527,7 @@ class Step
|
|
|
527
527
|
|
|
528
528
|
def overriden?
|
|
529
529
|
return true if @overriden
|
|
530
|
-
return true if dependencies && dependencies.select{|dep| dep.overriden
|
|
530
|
+
return true if dependencies && dependencies.select{|dep| TrueClass === dep.overriden }.any?
|
|
531
531
|
info[:archived_info].each do |f,i|
|
|
532
532
|
next if Symbol === i
|
|
533
533
|
return true if i[:overriden] || i["overriden"]
|
|
@@ -577,20 +577,20 @@ class Step
|
|
|
577
577
|
|
|
578
578
|
return [] if dependencies.nil? or dependencies.empty?
|
|
579
579
|
|
|
580
|
-
new_dependencies = []
|
|
581
580
|
if self.overriden?
|
|
582
581
|
archived_deps = []
|
|
583
582
|
else
|
|
584
583
|
archived_deps = self.info[:archived_info] ? self.info[:archived_info].keys : []
|
|
585
584
|
end
|
|
586
585
|
|
|
586
|
+
new_dependencies = []
|
|
587
587
|
dependencies.each{|step|
|
|
588
588
|
#next if self.done? && Open.exists?(info_file) && info[:dependencies] && info[:dependencies].select{|task,name,path| path == step.path }.empty?
|
|
589
589
|
next if archived_deps.include? step.path
|
|
590
|
-
next if seen.include? step
|
|
590
|
+
next if seen.include? step
|
|
591
591
|
next if self.done? && connected && ! updatable?
|
|
592
592
|
|
|
593
|
-
r = step.rec_dependencies(connected, new_dependencies
|
|
593
|
+
r = step.rec_dependencies(connected, new_dependencies)
|
|
594
594
|
new_dependencies.concat r
|
|
595
595
|
new_dependencies << step
|
|
596
596
|
}
|
|
@@ -31,6 +31,8 @@ module Workflow
|
|
|
31
31
|
|
|
32
32
|
type = :step_array if file.split(".").last == 'as_step_array'
|
|
33
33
|
|
|
34
|
+
type = :number_array if file.split(".").last == 'as_number_array'
|
|
35
|
+
|
|
34
36
|
type = :step_file if file.split(".").last == 'as_step_file'
|
|
35
37
|
|
|
36
38
|
type = :step_file_array if file.split(".").last == 'as_step_file_array'
|
|
@@ -57,6 +59,9 @@ module Workflow
|
|
|
57
59
|
when :step_array
|
|
58
60
|
steps = Open.read(file).strip.split("\n").collect{|path| Workflow.load_step(path) }
|
|
59
61
|
inputs[input.to_sym] = steps
|
|
62
|
+
when :number_array
|
|
63
|
+
numbers = Open.read(file).strip.split("\n").collect{|num| num.to_f }
|
|
64
|
+
inputs[input.to_sym] = numbers
|
|
60
65
|
when :step
|
|
61
66
|
steps = Open.read(file).strip.split("\n").collect{|path| Workflow.load_step(path) }
|
|
62
67
|
inputs[input.to_sym] = steps.first
|
|
@@ -176,6 +181,8 @@ class Step
|
|
|
176
181
|
when Step
|
|
177
182
|
path = path + '.as_step_array'
|
|
178
183
|
value = value.collect{|s| s.path }
|
|
184
|
+
when Numeric
|
|
185
|
+
path = path + '.as_number_array'
|
|
179
186
|
end
|
|
180
187
|
|
|
181
188
|
value = value * "\n"
|
data/lib/rbbt/workflow.rb
CHANGED
|
@@ -437,8 +437,8 @@ module Workflow
|
|
|
437
437
|
jobname_input = nil
|
|
438
438
|
end
|
|
439
439
|
|
|
440
|
-
if jobname_input &&
|
|
441
|
-
inputs[jobname_input] = jobname
|
|
440
|
+
if jobname_input && inputs[jobname_input].nil?
|
|
441
|
+
inputs[jobname_input] = jobname || DEFAULT_NAME
|
|
442
442
|
end
|
|
443
443
|
|
|
444
444
|
real_inputs = {}
|
|
@@ -503,7 +503,7 @@ module Workflow
|
|
|
503
503
|
when :not_overriden_dep
|
|
504
504
|
job.overriden = true if has_overriden_inputs || true_overriden_deps.any?
|
|
505
505
|
else
|
|
506
|
-
job.overriden = true if has_overriden_inputs ||
|
|
506
|
+
job.overriden = true if has_overriden_inputs || true_overriden_deps.any?
|
|
507
507
|
end
|
|
508
508
|
|
|
509
509
|
job.real_inputs = real_inputs.keys
|
data/share/Rlib/util.R
CHANGED
|
@@ -185,9 +185,17 @@ rbbt.tsv <- function(filename, sep = "\t", comment.char ="#", row.names=1, check
|
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
columns = rbbt.tsv.columns(filename, sep, comment.char=comment.char)
|
|
188
|
+
if (! is.null(comment.char))
|
|
189
|
+
columns[1] = substring(columns[1],length(comment.char) + 1)
|
|
190
|
+
|
|
188
191
|
if (! is.null(columns)){
|
|
189
|
-
names(data) <- columns[2:length(columns)];
|
|
190
|
-
|
|
192
|
+
#names(data) <- columns[2:length(columns)];
|
|
193
|
+
if (! is.null(row.names)){
|
|
194
|
+
names(data) <- columns[c(-row.names)];
|
|
195
|
+
}else{
|
|
196
|
+
names(data) <- columns
|
|
197
|
+
}
|
|
198
|
+
attributes(data)$key.field = columns[1];
|
|
191
199
|
}
|
|
192
200
|
|
|
193
201
|
return(data);
|
|
@@ -61,7 +61,8 @@ class Step
|
|
|
61
61
|
else
|
|
62
62
|
begin
|
|
63
63
|
Log.debug "Issuing SLURM job for #{self.path}"
|
|
64
|
-
|
|
64
|
+
#@batch_job_id, @batch_job_dir = HPC::BATCH_MODULE.orchestrate_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
65
|
+
@batch_job_id, @batch_job_dir = HPC::BATCH_MODULE.orchestrate_job(self, $slurm_options)
|
|
65
66
|
if no_load
|
|
66
67
|
self
|
|
67
68
|
else
|
|
@@ -61,7 +61,8 @@ class Step
|
|
|
61
61
|
else
|
|
62
62
|
begin
|
|
63
63
|
Log.debug "Issuing SLURM job for #{self.path}"
|
|
64
|
-
|
|
64
|
+
#@batch_job_id, @batch_job_dir = HPC::BATCH_MODULE.orchestrate_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
65
|
+
@batch_job_id, @batch_job_dir = HPC::BATCH_MODULE.orchestrate_job(self, $slurm_options)
|
|
65
66
|
if no_load
|
|
66
67
|
self
|
|
67
68
|
else
|
|
@@ -61,7 +61,8 @@ class Step
|
|
|
61
61
|
else
|
|
62
62
|
begin
|
|
63
63
|
Log.debug "Issuing SLURM job for #{self.path}"
|
|
64
|
-
|
|
64
|
+
#@batch_job_id, @batch_job_dir = HPC::BATCH_MODULE.orchestrate_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
65
|
+
@batch_job_id, @batch_job_dir = HPC::BATCH_MODULE.orchestrate_job(self, $slurm_options)
|
|
65
66
|
if no_load
|
|
66
67
|
self
|
|
67
68
|
else
|
|
@@ -37,6 +37,8 @@ when options[:tokyocabinet_bd]
|
|
|
37
37
|
exit
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
+
options[:fields] = options[:fields].split(/,\s*/) if options[:fields]
|
|
41
|
+
|
|
40
42
|
parser = TSV::Parser.new TSV.get_stream(file), options
|
|
41
43
|
|
|
42
44
|
dumper = TSV::Dumper.new parser.options.merge(:sep => "\t", :sep2 => '|')
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rbbt-util
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.34.
|
|
4
|
+
version: 5.34.25
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Miguel Vazquez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-12-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|