rbbt-util 5.21.81 → 5.21.83
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/rest/client/step.rb +2 -2
- data/lib/rbbt/tsv/excel.rb +4 -1
- data/lib/rbbt/util/R.rb +1 -1
- data/lib/rbbt/util/misc/omics.rb +2 -2
- data/lib/rbbt/util/misc/options.rb +8 -0
- data/lib/rbbt/util/misc/pipes.rb +2 -2
- data/lib/rbbt/util/named_array.rb +9 -0
- data/lib/rbbt/workflow/accessor.rb +91 -71
- data/lib/rbbt/workflow/usage.rb +1 -1
- data/share/Rlib/util.R +5 -0
- data/share/install/software/lib/install_helpers +1 -1
- 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: 9a9203165804c6c7d43397d02aada2d6b9c99649
|
4
|
+
data.tar.gz: f8e2c8ed913e3a01cb27bbc8d2d9751a213ca78e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54ab5caf41e7e0b8e3b6d98cd0016f043161e137c3cf78596cc94239797a41d09fdb23fc41d0851e42c250c0422560c850b2c6b18679ad7cb859cfc2441bd20c
|
7
|
+
data.tar.gz: 0057b7bf24c1506791b26b071ea94f5366f242b405464a6fc24c3c4e0307650fbb71fee4c3534f68c383a5bb8b942fc22db9cad929834df63937207a7b5630d3
|
@@ -53,7 +53,7 @@ class WorkflowRESTClient
|
|
53
53
|
end
|
54
54
|
|
55
55
|
return @result if no_load == :stream
|
56
|
-
no_load ? path
|
56
|
+
no_load ? Misc.add_GET_param(path, "_format", "raw") : @result
|
57
57
|
end
|
58
58
|
|
59
59
|
|
@@ -220,7 +220,7 @@ class WorkflowRESTClient
|
|
220
220
|
|
221
221
|
def path
|
222
222
|
if @url
|
223
|
-
@url
|
223
|
+
Misc.add_GET_param(@url, "_format", "raw")
|
224
224
|
else
|
225
225
|
[base_url, task, @base_name + '-' + Misc.fingerprint(inputs)] * "/"
|
226
226
|
end
|
data/lib/rbbt/tsv/excel.rb
CHANGED
@@ -116,7 +116,10 @@ module TSV
|
|
116
116
|
f.puts "#" + header * "\t"
|
117
117
|
end
|
118
118
|
|
119
|
-
rows.each do |row|
|
119
|
+
rows.each do |row|
|
120
|
+
values = row.collect{|c| c.respond_to?(:value) ? c.value : c }
|
121
|
+
f.puts values * "\t"
|
122
|
+
end
|
120
123
|
end
|
121
124
|
|
122
125
|
TSV.open(filename, options)
|
data/lib/rbbt/util/R.rb
CHANGED
@@ -121,7 +121,7 @@ source('#{UTIL}');
|
|
121
121
|
when Array
|
122
122
|
"c(#{object.collect{|e| ruby2R(e) } * ", "})"
|
123
123
|
when Hash
|
124
|
-
object.collect{|k,v| [k, ruby2R(v)] * "="} * ", "
|
124
|
+
"list(" << object.collect{|k,v| [k, ruby2R(v)] * "="} * ", " << ")"
|
125
125
|
else
|
126
126
|
raise "Type of object not known: #{ object.inspect }"
|
127
127
|
end
|
data/lib/rbbt/util/misc/omics.rb
CHANGED
@@ -352,8 +352,8 @@ module Misc
|
|
352
352
|
pos2 = f2.pos
|
353
353
|
|
354
354
|
sline2, schr2, sstart2, seend2, srest2 = line2, chr2, start2, eend2, rest2
|
355
|
-
while chr1 == chr2 and
|
356
|
-
out.puts line1 + "\t" + line2
|
355
|
+
while chr1 == chr2 and eend1 >= start2
|
356
|
+
out.puts line1 + "\t" + line2 if start1 <= eend2
|
357
357
|
if f2.eof?
|
358
358
|
chr2 = 'next2'
|
359
359
|
else
|
@@ -75,6 +75,14 @@ module Misc
|
|
75
75
|
}.compact * "&"
|
76
76
|
end
|
77
77
|
|
78
|
+
def self.add_GET_param(url, param, value)
|
79
|
+
clean_url, param_str = url.split("?")
|
80
|
+
hash = param_str.nil? ? {} : self.GET_params2hash(param_str)
|
81
|
+
IndiferentHash.setup hash
|
82
|
+
hash[param] = value
|
83
|
+
clean_url << "?" << hash2GET_params(hash)
|
84
|
+
end
|
85
|
+
|
78
86
|
def self.hash_to_html_tag_attributes(hash)
|
79
87
|
return "" if hash.nil? or hash.empty?
|
80
88
|
hash.collect{|k,v|
|
data/lib/rbbt/util/misc/pipes.rb
CHANGED
@@ -656,8 +656,8 @@ module Misc
|
|
656
656
|
end
|
657
657
|
end
|
658
658
|
|
659
|
-
def self.sort_mutation_stream(stream)
|
660
|
-
CMD.cmd(
|
659
|
+
def self.sort_mutation_stream(stream, sep=":")
|
660
|
+
CMD.cmd("grep '#{sep}' | sort -u | sed 's/^M:/MT:/' | env LC_ALL=C sort -k1,1 -k2,2n -k3,3n -t'#{sep}'", :in => stream, :pipe => true, :no_fail => true)
|
661
661
|
end
|
662
662
|
|
663
663
|
|
@@ -689,83 +689,103 @@ module Workflow
|
|
689
689
|
}.tap{|h| IndiferentHash.setup(h)}
|
690
690
|
end
|
691
691
|
|
692
|
-
def
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
case v
|
705
|
-
when :compute
|
706
|
-
compute = v
|
707
|
-
when Symbol
|
708
|
-
all_d = (real_dependencies + real_dependencies.collect{|d| d.rec_dependencies} ).flatten.compact.uniq
|
709
|
-
rec_dependency = all_d.select{|d| d.task_name.to_sym == v }.first
|
710
|
-
|
711
|
-
if rec_dependency.nil?
|
712
|
-
if inputs.include? v
|
713
|
-
_inputs[i] = _inputs.delete(v)
|
714
|
-
else
|
715
|
-
_inputs[i] = v unless _inputs.include? i
|
716
|
-
end
|
717
|
-
else
|
718
|
-
input_options = workflow.task_info(dep_task)[:input_options][i] || {}
|
719
|
-
if input_options[:stream] or true
|
720
|
-
#rec_dependency.run(true).grace unless rec_dependency.done? or rec_dependency.running?
|
721
|
-
_inputs[i] = rec_dependency
|
722
|
-
else
|
723
|
-
rec_dependency.abort if rec_dependency.streaming? and not rec_dependency.running?
|
724
|
-
rec_dependency.clean if rec_dependency.error? or rec_dependency.aborted?
|
725
|
-
if rec_dependency.streaming? and rec_dependency.running?
|
726
|
-
_inputs[i] = rec_dependency.join.load
|
727
|
-
else
|
728
|
-
rec_dependency.run(true)
|
729
|
-
rec_dependency.join
|
730
|
-
_inputs[i] = rec_dependency.load
|
731
|
-
end
|
732
|
-
end
|
733
|
-
end
|
692
|
+
def assign_dep_inputs(_inputs, options, all_d, task_info)
|
693
|
+
options.each{|i,v|
|
694
|
+
next if i == :compute or i == "compute"
|
695
|
+
case v
|
696
|
+
when :compute
|
697
|
+
compute = v
|
698
|
+
when Symbol
|
699
|
+
rec_dependency = all_d.select{|d| d.task_name.to_sym == v }.first
|
700
|
+
|
701
|
+
if rec_dependency.nil?
|
702
|
+
if inputs.include? v
|
703
|
+
_inputs[i] = _inputs.delete(v)
|
734
704
|
else
|
735
|
-
_inputs[i] = v
|
705
|
+
_inputs[i] = v unless _inputs.include? i
|
736
706
|
end
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
orig_dep = dependency.dependency
|
753
|
-
if Hash === orig_dep.last
|
754
|
-
options = orig_dep.last
|
755
|
-
compute = options[:compute]
|
756
|
-
|
757
|
-
if Array === dep
|
758
|
-
dep.each{|d| ComputeDependency.setup(d, compute)}
|
759
|
-
elsif dep
|
760
|
-
ComputeDependency.setup(dep, compute)
|
761
|
-
end if compute
|
707
|
+
else
|
708
|
+
input_options = task_info[:input_options][i] || {}
|
709
|
+
if input_options[:stream] or true
|
710
|
+
#rec_dependency.run(true).grace unless rec_dependency.done? or rec_dependency.running?
|
711
|
+
_inputs[i] = rec_dependency
|
712
|
+
else
|
713
|
+
rec_dependency.abort if rec_dependency.streaming? and not rec_dependency.running?
|
714
|
+
rec_dependency.clean if rec_dependency.error? or rec_dependency.aborted?
|
715
|
+
if rec_dependency.streaming? and rec_dependency.running?
|
716
|
+
_inputs[i] = rec_dependency.join.load
|
717
|
+
else
|
718
|
+
rec_dependency.run(true)
|
719
|
+
rec_dependency.join
|
720
|
+
_inputs[i] = rec_dependency.load
|
721
|
+
end
|
762
722
|
end
|
763
723
|
end
|
764
|
-
|
765
|
-
dep
|
766
724
|
else
|
767
|
-
|
725
|
+
_inputs[i] = v
|
768
726
|
end
|
727
|
+
} if options
|
728
|
+
|
729
|
+
_inputs
|
730
|
+
end
|
731
|
+
|
732
|
+
def real_dependencies(task, jobname, inputs, dependencies)
|
733
|
+
real_dependencies = []
|
734
|
+
path_deps = {}
|
735
|
+
dependencies.each do |dependency|
|
736
|
+
_inputs = IndiferentHash.setup(inputs.dup)
|
737
|
+
real_dep = case dependency
|
738
|
+
when Array
|
739
|
+
workflow, dep_task, options = dependency
|
740
|
+
|
741
|
+
compute = options[:compute] if options
|
742
|
+
|
743
|
+
all_d = (real_dependencies + real_dependencies.collect{|d| d.rec_dependencies} ).flatten.compact.uniq
|
744
|
+
|
745
|
+
_inputs = assign_dep_inputs(_inputs, options, all_d, workflow.task_info(dep_task))
|
746
|
+
|
747
|
+
job = workflow.job(dep_task, jobname, _inputs)
|
748
|
+
ComputeDependency.setup(job, compute) if compute
|
749
|
+
job
|
750
|
+
when Step
|
751
|
+
dependency
|
752
|
+
when Symbol
|
753
|
+
job(dependency, jobname, _inputs)
|
754
|
+
when Proc
|
755
|
+
if DependencyBlock === dependency
|
756
|
+
orig_dep = dependency.dependency
|
757
|
+
if Hash === orig_dep.last
|
758
|
+
options = orig_dep.last
|
759
|
+
compute = options[:compute]
|
760
|
+
else
|
761
|
+
options = {}
|
762
|
+
compute = nil
|
763
|
+
end
|
764
|
+
|
765
|
+
dep = dependency.call jobname, options.merge(_inputs), real_dependencies
|
766
|
+
|
767
|
+
dep = [dep] unless Array === dep
|
768
|
+
|
769
|
+
new_=[]
|
770
|
+
dep.each{|d|
|
771
|
+
inputs = assign_dep_inputs({}, options.merge(d[:inputs]), real_dependencies, d[:workflow].task_info(d[:task]))
|
772
|
+
d = d[:workflow].job(d[:task], d[:jobname], inputs) if Hash === d
|
773
|
+
ComputeDependency.setup(d, compute) if compute
|
774
|
+
new_ << d
|
775
|
+
}
|
776
|
+
dep = new_
|
777
|
+
else
|
778
|
+
dep = dependency.call jobname, _inputs, real_dependencies
|
779
|
+
if Hash === dep
|
780
|
+
inputs = assign_dep_inputs({}, dep[:inputs], real_dependencies, dep[:workflow].task_info(dep[:task]))
|
781
|
+
dep = dep[:workflow].job(dep[:task], dep[:jobname], inputs)
|
782
|
+
end
|
783
|
+
end
|
784
|
+
|
785
|
+
dep
|
786
|
+
else
|
787
|
+
raise "Dependency for #{task.name} not understood: #{Misc.fingerprint dependency}"
|
788
|
+
end
|
769
789
|
|
770
790
|
real_dependencies << real_dep
|
771
791
|
end
|
data/lib/rbbt/workflow/usage.rb
CHANGED
@@ -46,7 +46,7 @@ module Task
|
|
46
46
|
if selects.any?
|
47
47
|
puts Log.color(:magenta, "Input select options")
|
48
48
|
puts
|
49
|
-
selects.each do |input,options|
|
49
|
+
selects.collect{|p| p}.uniq.each do |input,options|
|
50
50
|
puts Log.color(:blue, input.to_s + ": ") << Misc.format_paragraph(options.collect{|o| o.to_s} * ", ") << "\n"
|
51
51
|
puts
|
52
52
|
end
|
data/share/Rlib/util.R
CHANGED
@@ -621,3 +621,8 @@ rbbt.plot.text_scatter <- function(formula, data) {
|
|
621
621
|
plot(formula, data=data, cex = 0)
|
622
622
|
text(formula, data=data, cex = 0.6, labels=rownames(data))
|
623
623
|
}
|
624
|
+
|
625
|
+
install.bioc <-function(pkg){
|
626
|
+
source("http://bioconductor.org/biocLite.R")
|
627
|
+
biocLite(pkg)
|
628
|
+
}
|
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.21.
|
4
|
+
version: 5.21.83
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|