rbbt-util 5.21.77 → 5.21.78
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/persist.rb +3 -0
- data/lib/rbbt/tsv/accessor.rb +1 -1
- data/lib/rbbt/tsv/manipulate.rb +11 -6
- data/lib/rbbt/util/R.rb +2 -1
- data/lib/rbbt/util/colorize.rb +6 -2
- data/lib/rbbt/workflow/accessor.rb +5 -3
- data/lib/rbbt/workflow/step.rb +18 -0
- data/lib/rbbt/workflow/step/dependencies.rb +1 -1
- data/lib/rbbt/workflow/step/run.rb +1 -1
- data/share/Rlib/util.R +159 -102
- 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: 79f060e03080aa195d6e1c4372dd004653ed8801
|
4
|
+
data.tar.gz: 0af2cbb746b785018adbc4b37e377a74f84def35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c791b7f553c8bc32512c7eab3bffc9d94bf072d878f5daf32dd0afc7a2e87b7cfcc290bab5430c99c715e7672856d1007bae8b6501aa71eb7f211b820a36b66
|
7
|
+
data.tar.gz: 4af9194d609ee3537a4add26274448316976a61f8f9064f7f0cadb9f37b8db0784cf3f3b4469ceb9a15324934e92e67e795b4ee07e0834801ba94c82fcb09500
|
data/lib/rbbt/persist.rb
CHANGED
@@ -286,6 +286,9 @@ module Persist
|
|
286
286
|
else
|
287
287
|
Open.rm path if Open.exists? path
|
288
288
|
end
|
289
|
+
rescue Aborted, Interrupt
|
290
|
+
Log.warn "Aborted loading persistence (#{ type }) #{ path }: #{$!.message}. Not erasing."
|
291
|
+
raise $!
|
289
292
|
rescue Exception
|
290
293
|
Log.warn "Exception loading persistence (#{ type }) #{ path }: #{$!.message}. Erase and retry."
|
291
294
|
Open.rm path if Open.exists? path
|
data/lib/rbbt/tsv/accessor.rb
CHANGED
data/lib/rbbt/tsv/manipulate.rb
CHANGED
@@ -166,13 +166,18 @@ module TSV
|
|
166
166
|
traverser = Traverser.new key_field, fields, new_key_field, new_fields, type, uniq
|
167
167
|
|
168
168
|
if @monitor
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
169
|
+
if Log::ProgressBar === @monitor
|
170
|
+
@monitor.max = size
|
171
|
+
progress_monitor = @monitor
|
172
|
+
else
|
173
|
+
desc = "Iterating TSV"
|
174
|
+
step = 100
|
175
|
+
if Hash === @monitor
|
176
|
+
desc = @monitor[:desc] if @monitor.include? :desc
|
177
|
+
step = @monitor[:step] if @monitor.include? :step
|
178
|
+
end
|
179
|
+
progress_monitor = Log::ProgressBar.new_bar(size, :desc => desc)
|
174
180
|
end
|
175
|
-
progress_monitor = Log::ProgressBar.new_bar(size, :desc => desc)
|
176
181
|
else
|
177
182
|
progress_monitor = nil
|
178
183
|
end
|
data/lib/rbbt/util/R.rb
CHANGED
@@ -198,13 +198,14 @@ NULL
|
|
198
198
|
end
|
199
199
|
end
|
200
200
|
|
201
|
-
def R_interactive(pre_script = nil)
|
201
|
+
def R_interactive(pre_script = nil, source = true)
|
202
202
|
TmpFile.with_file do |f|
|
203
203
|
Log.debug{"R Interactive:\n" << pre_script } if pre_script
|
204
204
|
TmpFile.with_file(pre_script) do |script_file|
|
205
205
|
Open.write(f, self.to_s)
|
206
206
|
script = "data_file = '#{f}';\n"
|
207
207
|
script << "script_file = '#{script_file}';\n" if pre_script
|
208
|
+
script << "source(script_file);\n" if source
|
208
209
|
R.interactive(script)
|
209
210
|
end
|
210
211
|
end
|
data/lib/rbbt/util/colorize.rb
CHANGED
@@ -13,12 +13,16 @@ module Colorize
|
|
13
13
|
colors["green3"]
|
14
14
|
when 'red'
|
15
15
|
colors["red3"]
|
16
|
+
when 'yellow'
|
17
|
+
colors["gold1"]
|
18
|
+
when 'blue'
|
19
|
+
colors["RoyalBlue"]
|
16
20
|
else
|
17
21
|
colors[color.to_s] || color
|
18
22
|
end
|
19
23
|
end
|
20
24
|
|
21
|
-
def self.continuous(array, start =
|
25
|
+
def self.continuous(array, start = "#EABD5D", eend = "#40324F", percent = false)
|
22
26
|
start_color = Color.new from_name(start)
|
23
27
|
end_color = Color.new from_name(eend)
|
24
28
|
|
@@ -70,7 +74,7 @@ module Colorize
|
|
70
74
|
|
71
75
|
def self.tsv(tsv, options = {})
|
72
76
|
values = tsv.values.flatten
|
73
|
-
if Fixnum === values.first or (values.first.to_f != 0 and values[0] != "0")
|
77
|
+
if Fixnum === values.first or Float === values.first or (values.first.to_f != 0 and values[0] != "0" and values[0] != "0.0")
|
74
78
|
value_colors = Misc.process_to_hash(values){continuous(values)}
|
75
79
|
else
|
76
80
|
value_colors = Misc.process_to_hash(values){distinct(values)}
|
@@ -100,7 +100,7 @@ class Step
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def info(check_lock = true)
|
103
|
-
return {} if info_file.nil? or not Open.exists? info_file
|
103
|
+
return {:status => :noinfo} if info_file.nil? or not Open.exists? info_file
|
104
104
|
begin
|
105
105
|
Misc.insist do
|
106
106
|
begin
|
@@ -351,8 +351,10 @@ class Step
|
|
351
351
|
end
|
352
352
|
|
353
353
|
def dirty?
|
354
|
-
|
355
|
-
|
354
|
+
status = self.status
|
355
|
+
return true if done? and not status == :done and not status == :noinfo
|
356
|
+
return true if status == :done and not done?
|
357
|
+
dirty_files = rec_dependencies.collect{|dependency| dependency.path unless dependency.error? and not dependency.recoverable_error? }.compact.uniq.reject{|path| ! (Path === path) || path.exists?}
|
356
358
|
if dirty_files.any?
|
357
359
|
true
|
358
360
|
else
|
data/lib/rbbt/workflow/step.rb
CHANGED
@@ -61,6 +61,24 @@ class Step
|
|
61
61
|
@inputs
|
62
62
|
end
|
63
63
|
|
64
|
+
def recursive_inputs
|
65
|
+
if NamedArray === inputs
|
66
|
+
i = Hash[*inputs.fields.zip(inputs).flatten]
|
67
|
+
else
|
68
|
+
i = {}
|
69
|
+
end
|
70
|
+
dependencies.each do |dep|
|
71
|
+
di = dep.recursive_inputs
|
72
|
+
next unless NamedArray === di
|
73
|
+
di.fields.zip(di).each do |k,v|
|
74
|
+
i[k] = v unless i.include? k
|
75
|
+
end
|
76
|
+
end
|
77
|
+
v = i.values
|
78
|
+
NamedArray.setup v, i.keys
|
79
|
+
v
|
80
|
+
end
|
81
|
+
|
64
82
|
def task_name
|
65
83
|
@task.name
|
66
84
|
end
|
data/share/Rlib/util.R
CHANGED
@@ -207,41 +207,6 @@ rbbt.acc <- function(data, new){
|
|
207
207
|
}
|
208
208
|
}
|
209
209
|
|
210
|
-
rbbt.png_plot <- function(filename, width, height, p, ...){
|
211
|
-
png(filename=filename, width=width, height=height, ...);
|
212
|
-
eval(parse(text=p));
|
213
|
-
}
|
214
|
-
|
215
|
-
rbbt.heatmap <- function(filename, width, height, data, take_log=FALSE, ...){
|
216
|
-
opar = par()
|
217
|
-
png(filename=filename, width=width, height=height);
|
218
|
-
|
219
|
-
#par(cex.lab=0.5, cex=0.5, ...)
|
220
|
-
|
221
|
-
data = as.matrix(data)
|
222
|
-
data[is.nan(data)] = NA
|
223
|
-
|
224
|
-
#data = data[rowSums(!is.na(data))!=0, colSums(!is.na(data))!=0]
|
225
|
-
data = data[rowSums(is.na(data))==0, ]
|
226
|
-
|
227
|
-
if (take_log){
|
228
|
-
for (study in colnames(data)){
|
229
|
-
skip = sum(data[, study] <= 0) != 0
|
230
|
-
if (!skip){
|
231
|
-
data[, study] = log(data[, study])
|
232
|
-
}
|
233
|
-
}
|
234
|
-
data = data[, colSums(is.na(data))==0]
|
235
|
-
}
|
236
|
-
|
237
|
-
data = stdize(data)
|
238
|
-
|
239
|
-
heatmap.2(data, margins = c(20,5), scale='column')
|
240
|
-
|
241
|
-
dev.off();
|
242
|
-
par(opar)
|
243
|
-
}
|
244
|
-
|
245
210
|
rbbt.init <- function(data, new){
|
246
211
|
if (is.null(data)){
|
247
212
|
return(new);
|
@@ -303,73 +268,6 @@ rbbt.run <- function(filename){
|
|
303
268
|
|
304
269
|
# UTILITIES
|
305
270
|
|
306
|
-
# Addapted from http://www.phaget4.org/R/image_matrix.html
|
307
|
-
rbbt.plot.matrix <- function(x, ...){
|
308
|
-
min <- min(x, na.rm=T);
|
309
|
-
max <- max(x, na.rm=T);
|
310
|
-
yLabels <- rownames(x);
|
311
|
-
xLabels <- colnames(x);
|
312
|
-
title <-c();
|
313
|
-
# check for additional function arguments
|
314
|
-
if( length(list(...)) ){
|
315
|
-
Lst <- list(...);
|
316
|
-
if( !is.null(Lst$zlim) ){
|
317
|
-
min <- Lst$zlim[1];
|
318
|
-
max <- Lst$zlim[2];
|
319
|
-
}
|
320
|
-
if( !is.null(Lst$yLabels) ){
|
321
|
-
yLabels <- c(Lst$yLabels);
|
322
|
-
}
|
323
|
-
if( !is.null(Lst$xLabels) ){
|
324
|
-
xLabels <- c(Lst$xLabels);
|
325
|
-
}
|
326
|
-
if( !is.null(Lst$title) ){
|
327
|
-
title <- Lst$title;
|
328
|
-
}
|
329
|
-
}
|
330
|
-
# check for null values
|
331
|
-
if( is.null(xLabels) ){
|
332
|
-
xLabels <- c(1:ncol(x));
|
333
|
-
}
|
334
|
-
if( is.null(yLabels) ){
|
335
|
-
yLabels <- c(1:nrow(x));
|
336
|
-
}
|
337
|
-
|
338
|
-
layout(matrix(data=c(1,2), nrow=1, ncol=2), widths=c(4,1), heights=c(1,1));
|
339
|
-
|
340
|
-
# Red and green range from 0 to 1 while Blue ranges from 1 to 0
|
341
|
-
ColorRamp <- rgb( seq(0,1,length=256), # Red
|
342
|
-
seq(0,1,length=256), # Green
|
343
|
-
seq(1,0,length=256)) # Blue
|
344
|
-
ColorLevels <- seq(min, max, length=length(ColorRamp));
|
345
|
-
|
346
|
-
# Reverse Y axis
|
347
|
-
reverse <- nrow(x) : 1;
|
348
|
-
yLabels <- yLabels[reverse];
|
349
|
-
x <- x[reverse,];
|
350
|
-
|
351
|
-
# Data Map
|
352
|
-
par(mar = c(3,5,2.5,2));
|
353
|
-
image(1:length(xLabels), 1:length(yLabels), t(x), col=ColorRamp, xlab="",
|
354
|
-
ylab="", axes=FALSE, zlim=c(min,max));
|
355
|
-
if( !is.null(title) ){
|
356
|
-
title(main=title);
|
357
|
-
}
|
358
|
-
axis(BELOW<-1, at=1:length(xLabels), labels=xLabels, cex.axis=0.7);
|
359
|
-
axis(LEFT <-2, at=1:length(yLabels), labels=yLabels, las= HORIZONTAL<-1,
|
360
|
-
cex.axis=0.7);
|
361
|
-
|
362
|
-
# Color Scale
|
363
|
-
par(mar = c(3,2.5,2.5,2));
|
364
|
-
image(1, ColorLevels,
|
365
|
-
matrix(data=ColorLevels, ncol=length(ColorLevels),nrow=1),
|
366
|
-
col=ColorRamp,
|
367
|
-
xlab="",ylab="",
|
368
|
-
xaxt="n");
|
369
|
-
|
370
|
-
layout(1);
|
371
|
-
}
|
372
|
-
|
373
271
|
rbbt.log <- function(m){
|
374
272
|
head = "R-Rbbt"
|
375
273
|
cat(paste(head, "> ", m,"\n",sep=""), file = stderr())
|
@@ -556,3 +454,162 @@ rbbt.get.modes <- function(x,bw = NULL,spar = NULL) {
|
|
556
454
|
df2
|
557
455
|
}
|
558
456
|
|
457
|
+
#{{{ PLOTS
|
458
|
+
|
459
|
+
rbbt.png_plot <- function(filename, width, height, p, ...){
|
460
|
+
png(filename=filename, width=width, height=height, ...);
|
461
|
+
eval(parse(text=p));
|
462
|
+
}
|
463
|
+
|
464
|
+
rbbt.heatmap <- function(filename, width, height, data, take_log=FALSE, ...){
|
465
|
+
opar = par()
|
466
|
+
png(filename=filename, width=width, height=height);
|
467
|
+
|
468
|
+
#par(cex.lab=0.5, cex=0.5, ...)
|
469
|
+
|
470
|
+
data = as.matrix(data)
|
471
|
+
data[is.nan(data)] = NA
|
472
|
+
|
473
|
+
#data = data[rowSums(!is.na(data))!=0, colSums(!is.na(data))!=0]
|
474
|
+
data = data[rowSums(is.na(data))==0, ]
|
475
|
+
|
476
|
+
if (take_log){
|
477
|
+
for (study in colnames(data)){
|
478
|
+
skip = sum(data[, study] <= 0) != 0
|
479
|
+
if (!skip){
|
480
|
+
data[, study] = log(data[, study])
|
481
|
+
}
|
482
|
+
}
|
483
|
+
data = data[, colSums(is.na(data))==0]
|
484
|
+
}
|
485
|
+
|
486
|
+
data = stdize(data)
|
487
|
+
|
488
|
+
heatmap.2(data, margins = c(20,5), scale='column')
|
489
|
+
|
490
|
+
dev.off();
|
491
|
+
par(opar)
|
492
|
+
}
|
493
|
+
|
494
|
+
# Addapted from http://www.phaget4.org/R/image_matrix.html
|
495
|
+
rbbt.plot.matrix <- function(x, ...){
|
496
|
+
min <- min(x, na.rm=T);
|
497
|
+
max <- max(x, na.rm=T);
|
498
|
+
yLabels <- rownames(x);
|
499
|
+
xLabels <- colnames(x);
|
500
|
+
title <-c();
|
501
|
+
# check for additional function arguments
|
502
|
+
if( length(list(...)) ){
|
503
|
+
Lst <- list(...);
|
504
|
+
if( !is.null(Lst$zlim) ){
|
505
|
+
min <- Lst$zlim[1];
|
506
|
+
max <- Lst$zlim[2];
|
507
|
+
}
|
508
|
+
if( !is.null(Lst$yLabels) ){
|
509
|
+
yLabels <- c(Lst$yLabels);
|
510
|
+
}
|
511
|
+
if( !is.null(Lst$xLabels) ){
|
512
|
+
xLabels <- c(Lst$xLabels);
|
513
|
+
}
|
514
|
+
if( !is.null(Lst$title) ){
|
515
|
+
title <- Lst$title;
|
516
|
+
}
|
517
|
+
}
|
518
|
+
# check for null values
|
519
|
+
if( is.null(xLabels) ){
|
520
|
+
xLabels <- c(1:ncol(x));
|
521
|
+
}
|
522
|
+
if( is.null(yLabels) ){
|
523
|
+
yLabels <- c(1:nrow(x));
|
524
|
+
}
|
525
|
+
|
526
|
+
layout(matrix(data=c(1,2), nrow=1, ncol=2), widths=c(4,1), heights=c(1,1));
|
527
|
+
|
528
|
+
# Red and green range from 0 to 1 while Blue ranges from 1 to 0
|
529
|
+
ColorRamp <- rgb( seq(0,1,length=256), # Red
|
530
|
+
seq(0,1,length=256), # Green
|
531
|
+
seq(1,0,length=256)) # Blue
|
532
|
+
ColorLevels <- seq(min, max, length=length(ColorRamp));
|
533
|
+
|
534
|
+
# Reverse Y axis
|
535
|
+
reverse <- nrow(x) : 1;
|
536
|
+
yLabels <- yLabels[reverse];
|
537
|
+
x <- x[reverse,];
|
538
|
+
|
539
|
+
# Data Map
|
540
|
+
par(mar = c(3,5,2.5,2));
|
541
|
+
image(1:length(xLabels), 1:length(yLabels), t(x), col=ColorRamp, xlab="",
|
542
|
+
ylab="", axes=FALSE, zlim=c(min,max));
|
543
|
+
if( !is.null(title) ){
|
544
|
+
title(main=title);
|
545
|
+
}
|
546
|
+
axis(BELOW<-1, at=1:length(xLabels), labels=xLabels, cex.axis=0.7);
|
547
|
+
axis(LEFT <-2, at=1:length(yLabels), labels=yLabels, las= HORIZONTAL<-1,
|
548
|
+
cex.axis=0.7);
|
549
|
+
|
550
|
+
# Color Scale
|
551
|
+
par(mar = c(3,2.5,2.5,2));
|
552
|
+
image(1, ColorLevels,
|
553
|
+
matrix(data=ColorLevels, ncol=length(ColorLevels),nrow=1),
|
554
|
+
col=ColorRamp,
|
555
|
+
xlab="",ylab="",
|
556
|
+
xaxt="n");
|
557
|
+
|
558
|
+
layout(1);
|
559
|
+
}
|
560
|
+
|
561
|
+
# Adapted from: https://rstudio-pubs-static.s3.amazonaws.com/13301_6641d73cfac741a59c0a851feb99e98b.html
|
562
|
+
rbbt.plot.venn <- function(data, a, ...) {
|
563
|
+
library(VennDiagram)
|
564
|
+
group.matches <- function(data, fields) {
|
565
|
+
sub = data
|
566
|
+
for (i in 1:length(fields)) {
|
567
|
+
sub <- subset(sub, sub[,fields[i]] == T)
|
568
|
+
}
|
569
|
+
nrow(sub)
|
570
|
+
}
|
571
|
+
|
572
|
+
if (length(a) == 1) {
|
573
|
+
out <- draw.single.venn(group.matches(data, a), ...)
|
574
|
+
}
|
575
|
+
if (length(a) == 2) {
|
576
|
+
out <- draw.pairwise.venn(group.matches(data, a[1]), group.matches(data, a[2]), group.matches(data, a[1:2]), ...)
|
577
|
+
}
|
578
|
+
if (length(a) == 3) {
|
579
|
+
out <- draw.triple.venn(group.matches(data, a[1]), group.matches(data, a[2]), group.matches(data, a[3]), group.matches(data, a[1:2]),
|
580
|
+
group.matches(data, a[2:3]), group.matches(data, a[c(1, 3)]), group.matches(data, a), ...)
|
581
|
+
}
|
582
|
+
if (length(a) == 4) {
|
583
|
+
out <- draw.quad.venn(group.matches(data, a[1]), group.matches(data, a[2]), group.matches(data, a[3]), group.matches(data, a[4]),
|
584
|
+
group.matches(data, a[1:2]), group.matches(data, a[c(1, 3)]), group.matches(data, a[c(1, 4)]), group.matches(data, a[2:3]),
|
585
|
+
group.matches(data, a[c(2, 4)]), group.matches(data, a[3:4]), group.matches(data, a[1:3]), group.matches(data, a[c(1, 2,
|
586
|
+
4)]), group.matches(data, a[c(1, 3, 4)]), group.matches(data, a[2:4]), group.matches(data, a), ...)
|
587
|
+
}
|
588
|
+
if (length(a) == 5) {
|
589
|
+
out <- draw.quintuple.venn(
|
590
|
+
group.matches(data, a[1]), group.matches(data, a[2]), group.matches(data, a[3]), group.matches(data, a[4]), group.matches(data, a[5]),
|
591
|
+
group.matches(data, a[c(1, 2)]), group.matches(data, a[c(1, 3)]), group.matches(data, a[c(1, 4)]), group.matches(data, a[c(1, 5)]),
|
592
|
+
group.matches(data, a[c(2, 3)]), group.matches(data, a[c(2, 4)]), group.matches(data, a[c(2, 5)]),
|
593
|
+
group.matches(data, a[c(3, 4)]), group.matches(data, a[c(3, 5)]),
|
594
|
+
group.matches(data, a[c(4, 5)]),
|
595
|
+
group.matches(data, a[c(1, 2, 3)]),group.matches(data, a[c(1, 2, 4)]),group.matches(data, a[c(1, 2, 5)]),
|
596
|
+
group.matches(data, a[c(1, 3, 4)]),group.matches(data, a[c(1, 3, 5)]),
|
597
|
+
group.matches(data, a[c(1, 4, 5)]),
|
598
|
+
group.matches(data, a[c(2, 3, 4)]),group.matches(data, a[c(2, 3, 5)]),
|
599
|
+
group.matches(data, a[c(2, 4, 5)]),
|
600
|
+
group.matches(data, a[c(3, 4, 5)]),
|
601
|
+
group.matches(data, a[c(1, 2, 3, 4)]),group.matches(data, a[c(1, 2, 3, 5)]),group.matches(data, a[c(1, 2, 4, 5)]),group.matches(data, a[c(1, 3, 4, 5)]),group.matches(data, a[c(2, 3, 4, 5)]),
|
602
|
+
group.matches(data, a),
|
603
|
+
...)
|
604
|
+
|
605
|
+
}
|
606
|
+
if (!exists("out"))
|
607
|
+
out <- "Oops"
|
608
|
+
return(out)
|
609
|
+
}
|
610
|
+
|
611
|
+
|
612
|
+
rbbt.plot.text_scatter <- function(formula, data) {
|
613
|
+
plot(formula, data=data, cex = 0)
|
614
|
+
text(formula, data=data, cex = 0.6, labels=rownames(data))
|
615
|
+
}
|
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.78
|
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-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|