rbbt-util 5.21.115 → 5.21.116
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/tsv/accessor.rb +20 -4
- data/lib/rbbt/util/R.rb +6 -1
- data/lib/rbbt/util/cmd.rb +5 -4
- data/lib/rbbt/util/misc/format.rb +1 -0
- data/lib/rbbt/util/open.rb +1 -1
- data/lib/rbbt/workflow/step/run.rb +1 -1
- data/share/Rlib/svg.R +1 -1
- data/share/Rlib/util.R +1 -1
- data/test/rbbt/tsv/test_accessor.rb +30 -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: 77c923c4547ab8c088116d35a69d5963d69c9288
|
4
|
+
data.tar.gz: 1d770671abe5b42e35e7466239f3a20d68c54615
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 435ffaa1be1e204fd0e98c4c7e0f8d3df28dffb79ca1acd0102d32d6078ff2d64d8a27cff3158ec4fd7034b2168b70b44df1cd511be46b582feeb48e95ca08b4
|
7
|
+
data.tar.gz: '08612a841a790fcbd898133e21c47188c905cee765aa8db675464cef651f0c842986249a65192014953451f9fa16cae4c3108360b18f8830c2b7951913b34056'
|
data/lib/rbbt/tsv/accessor.rb
CHANGED
@@ -692,10 +692,14 @@ Example:
|
|
692
692
|
if merge
|
693
693
|
self.through do |key,values|
|
694
694
|
field_values = values[field_pos]
|
695
|
-
|
695
|
+
if delete
|
696
|
+
values = values.dup
|
697
|
+
values.delete_at(field_pos)
|
698
|
+
end
|
696
699
|
next if field_values.nil?
|
697
700
|
zipped = Misc.zip_fields(values)
|
698
701
|
field_values.zip(zipped).each do |field_value,rest|
|
702
|
+
rest = [nil] * values.length if rest.nil?
|
699
703
|
k = [key,field_value]*sep
|
700
704
|
if new.include? k
|
701
705
|
new[k] = Misc.zip_fields(Misc.zip_fields(new[k]) << rest)
|
@@ -712,6 +716,7 @@ Example:
|
|
712
716
|
next if field_values.nil?
|
713
717
|
zipped = Misc.zip_fields(values)
|
714
718
|
field_values.zip(zipped).each do |field_value,rest|
|
719
|
+
rest = [nil] * values.length if rest.nil?
|
715
720
|
k = [key,field_value]*sep
|
716
721
|
new[k] = rest
|
717
722
|
end
|
@@ -730,7 +735,7 @@ Example:
|
|
730
735
|
new
|
731
736
|
end
|
732
737
|
|
733
|
-
def zip(
|
738
|
+
def zip(merge = false, field = "New Field", sep = ":")
|
734
739
|
new = {}
|
735
740
|
self.annotate new
|
736
741
|
|
@@ -740,9 +745,12 @@ Example:
|
|
740
745
|
if merge
|
741
746
|
self.through do |key,values|
|
742
747
|
new_key, new_value = key.split(sep)
|
743
|
-
new_values = values + [[new_value]]
|
748
|
+
new_values = values + [[new_value] * values.first.length]
|
744
749
|
if new.include? new_key
|
745
|
-
|
750
|
+
current = new[new_key]
|
751
|
+
current.each_with_index do |v,i|
|
752
|
+
v.concat(new_values[i])
|
753
|
+
end
|
746
754
|
else
|
747
755
|
new[new_key] = new_values
|
748
756
|
end
|
@@ -763,5 +771,13 @@ Example:
|
|
763
771
|
|
764
772
|
new
|
765
773
|
end
|
774
|
+
|
775
|
+
def remove_duplicates(pivot = 0)
|
776
|
+
new = self.annotate({})
|
777
|
+
self.through do |k,values|
|
778
|
+
new[k] = Misc.zip_fields(Misc.zip_fields(values).uniq)
|
779
|
+
end
|
780
|
+
new
|
781
|
+
end
|
766
782
|
end
|
767
783
|
|
data/lib/rbbt/util/R.rb
CHANGED
@@ -60,8 +60,13 @@ source('#{UTIL}');
|
|
60
60
|
Open.write(init_file) do |f|
|
61
61
|
f.puts "# Loading basic rbbt environment"
|
62
62
|
f.puts "library(utils, quietly=TRUE);\n"
|
63
|
+
f.puts "interactive.script.file = '#{init_file}'"
|
64
|
+
|
63
65
|
f.puts "source('#{R::UTIL}');\n"
|
64
|
-
f.puts
|
66
|
+
f.puts "rbbt.require('readr')"
|
67
|
+
f.puts "interactive.script = read_file(interactive.script.file)"
|
68
|
+
f.puts "cat(interactive.script)"
|
69
|
+
f.puts ""
|
65
70
|
f.puts script
|
66
71
|
end
|
67
72
|
CMD.cmd("env R_PROFILE='#{init_file}' xterm \"$R_HOME/bin/R\"")
|
data/lib/rbbt/util/cmd.rb
CHANGED
@@ -6,6 +6,9 @@ module CMD
|
|
6
6
|
def self.process_cmd_options(options = {})
|
7
7
|
string = ""
|
8
8
|
options.each do |option, value|
|
9
|
+
raise "Invalid option key: #{option.inspect}" if option.to_s !~ /^[a-z_0-9\-=]+$/i
|
10
|
+
raise "Invalid option value: #{value.inspect}" if value.to_s.include? "'"
|
11
|
+
|
9
12
|
case
|
10
13
|
when value.nil? || FalseClass === value
|
11
14
|
next
|
@@ -13,9 +16,9 @@ module CMD
|
|
13
16
|
string << "#{option} "
|
14
17
|
else
|
15
18
|
if option.to_s.chars.to_a.last == "="
|
16
|
-
string << "#{option}#{value} "
|
19
|
+
string << "#{option}'#{value}' "
|
17
20
|
else
|
18
|
-
string << "#{option} #{value} "
|
21
|
+
string << "#{option} '#{value}' "
|
19
22
|
end
|
20
23
|
end
|
21
24
|
end
|
@@ -75,10 +78,8 @@ module CMD
|
|
75
78
|
STDOUT.reopen sout.last
|
76
79
|
sout.last.close
|
77
80
|
|
78
|
-
|
79
81
|
STDOUT.sync = STDERR.sync = true
|
80
82
|
|
81
|
-
|
82
83
|
exec(ENV, cmd)
|
83
84
|
|
84
85
|
exit(-1)
|
data/lib/rbbt/util/open.rb
CHANGED
@@ -50,7 +50,7 @@ module Open
|
|
50
50
|
|
51
51
|
def self.wget(url, options = {})
|
52
52
|
Log.low "WGET:\n -URL: #{ url }\n -OPTIONS: #{options.inspect}"
|
53
|
-
options = Misc.add_defaults options, "--user-agent=" => '
|
53
|
+
options = Misc.add_defaults options, "--user-agent=" => 'rbbt', :pipe => true
|
54
54
|
|
55
55
|
wait(options[:nice], options[:nice_key]) if options[:nice]
|
56
56
|
options.delete(:nice)
|
data/share/Rlib/svg.R
CHANGED
@@ -20,11 +20,11 @@ rbbt.SVG.extract <- function(plot, size=NULL, prefix=NULL, ...){
|
|
20
20
|
resolution = 72 * (size/7)
|
21
21
|
|
22
22
|
if (length(plot$theme) == 0) plot <- plot + theme_gdocs();
|
23
|
+
if (length(plot$theme$text) == 0) plot <- plot + theme(text = element_text(size=base.size));
|
23
24
|
|
24
25
|
plot$theme$text$size = base.size
|
25
26
|
|
26
27
|
print(plot, type='cairo')
|
27
|
-
|
28
28
|
mysvg <- grid.export(res=resolution, prefix=prefix, ...)
|
29
29
|
}
|
30
30
|
|
data/share/Rlib/util.R
CHANGED
@@ -615,7 +615,7 @@ rbbt.plot.matrix <- function(x, ...){
|
|
615
615
|
|
616
616
|
# Adapted from: https://rstudio-pubs-static.s3.amazonaws.com/13301_6641d73cfac741a59c0a851feb99e98b.html
|
617
617
|
rbbt.plot.venn <- function(data, a, ...) {
|
618
|
-
rbbt.require(VennDiagram)
|
618
|
+
rbbt.require('VennDiagram')
|
619
619
|
group.matches <- function(data, fields) {
|
620
620
|
sub = data
|
621
621
|
for (i in 1:length(fields)) {
|
@@ -221,4 +221,34 @@ row2 aa|aa|AA|AA b1|b2|B1|B2 Id1|Id1|Id2|Id2
|
|
221
221
|
assert_equal 6, CMD.cmd('grep -v "#" | cut -f 1', :in => tsv.to_s(nil, false, true)).read.split("\n").length
|
222
222
|
end
|
223
223
|
end
|
224
|
+
|
225
|
+
def test_remove_duplicates
|
226
|
+
content =<<-EOF
|
227
|
+
#Id ValueA ValueB OtherID
|
228
|
+
row1 a|A|a|a b|B|b| Id1|Id2|Id1|Id1
|
229
|
+
row2 aa|aa|AA|AA b1|b2|B1|B2 Id1|Id1|Id2|Id2
|
230
|
+
EOF
|
231
|
+
|
232
|
+
TmpFile.with_file(content) do |filename|
|
233
|
+
tsv = TSV.open(filename, :sep => /\s+/)
|
234
|
+
assert_equal %w(a A a), tsv.remove_duplicates["row1"]["ValueA"]
|
235
|
+
assert tsv.remove_duplicates["row1"]["ValueB"].include?("")
|
236
|
+
end
|
237
|
+
|
238
|
+
end
|
239
|
+
|
240
|
+
def test_unzip_zip
|
241
|
+
content =<<-EOF
|
242
|
+
#Id ValueA ValueB OtherID
|
243
|
+
row1 a|A|a|a b|B|b| Id1|Id2|Id1|Id1
|
244
|
+
row2 aa|aa|AA|AA b1|b2|B1|B2 Id1|Id1|Id2|Id2
|
245
|
+
EOF
|
246
|
+
|
247
|
+
TmpFile.with_file(content) do |filename|
|
248
|
+
tsv = TSV.open(filename, :sep => /\s+/)
|
249
|
+
assert_equal ["b", "b", ""], tsv.unzip("ValueA", true)["row1:a"]["ValueB"]
|
250
|
+
assert_equal ["b", "b", "", "B"].sort, tsv.unzip("ValueA", true).zip(true)["row1"]["ValueB"].sort
|
251
|
+
end
|
252
|
+
|
253
|
+
end
|
224
254
|
end
|
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.116
|
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-12-
|
11
|
+
date: 2017-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|