rbbt-util 5.21.81 → 5.21.83
Sign up to get free protection for your applications and to get access to all the features.
- 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
|