rbbt-util 5.21.96 → 5.21.97

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 344b1f349d4ccc887c8d880f838de53f58d82db7
4
- data.tar.gz: cc0fef8d5aa0732de3e65b912523696597701efd
3
+ metadata.gz: 10ef32da69366f0d5db85823d95e5e2461817656
4
+ data.tar.gz: 7db675c42bfb34aae38611247d22cc5c3c6e4572
5
5
  SHA512:
6
- metadata.gz: 53fc4f324fa46d7841b64fc47db959f58a9c87202de32a840e91a4ee846e124b56496fe3c3bab4e2e3d8b3ec31032ff3fe87668db6d9393b1a709459ff7db59b
7
- data.tar.gz: 9ee1e9a13ca24eb82efda2b69bdf6e3a6d6b806ad3ae49b156788c316d4e6a5a0cb6050029b234db465ae8b6c9347217379fb5df17759844999cf30c29c02969
6
+ metadata.gz: db31f57eaa344bbbcac12c5a85dad2e46b555f6d19545a55854017c6dc8147d8d321d84f0a2578c29104b1d70b6de322ff5d49dd44c01452fb36fb2ebb59aa0b
7
+ data.tar.gz: 36f1dbc9bdf5242b02ce9944ce5ae0b93b7b51df4a1a2c68a6370498f7571ca2a9523b5867ce6a637367d26c431d4738a0159de17285f34310a9b0a29d62107a
@@ -85,7 +85,7 @@ module TSV
85
85
  [source_key]
86
86
  else
87
87
  if other.include? source_key
88
- v = other[source_key][pos]
88
+ v = other.type == :flat ? other[source_key] : other[source_key][pos]
89
89
  Array === v ? v : [v]
90
90
  else
91
91
  [nil]
@@ -276,6 +276,9 @@ module TSV
276
276
  traverse_obj(obj.stream, options, &block)
277
277
  when (defined? Step and Step)
278
278
 
279
+ obj.clean if obj.aborted? or obj.recoverable_error?
280
+ obj.run(true) unless obj.done? or obj.started?
281
+
279
282
  stream = obj.get_stream
280
283
 
281
284
  if stream
@@ -639,6 +639,11 @@ module TSV
639
639
  TSV.identify_field(key_field, fields, field)
640
640
  end
641
641
 
642
+ def rewind
643
+ stream.reopen(filename, "r") if stream.closed? and filename
644
+ stream.rewind
645
+ end
646
+
642
647
  def self.traverse(stream, options = {}, &block)
643
648
  parser = Parser.new(stream, options)
644
649
  parser.traverse(options, &block)
data/lib/rbbt/tsv/util.rb CHANGED
@@ -84,7 +84,7 @@ module TSV
84
84
  when (defined? Bgzf and Bgzf)
85
85
  file
86
86
  when TSV
87
- file
87
+ file.dumper_stream
88
88
  when TSV::Dumper
89
89
  file.stream
90
90
  when TSV::Parser
data/lib/rbbt/util/R.rb CHANGED
@@ -23,6 +23,7 @@ source('#{UTIL}');
23
23
 
24
24
  require_sources = source.collect{|source|
25
25
  source = R::LIB_DIR["plot.R"] if source == :plot
26
+ source = R::LIB_DIR["svg.R"] if source == :svg
26
27
  "source('#{source}')"
27
28
  } * ";\n" if Array === source and source.any?
28
29
 
@@ -64,7 +65,7 @@ source('#{UTIL}');
64
65
  f.puts
65
66
  f.puts script
66
67
  end
67
- CMD.cmd("env R_PROFILE='#{init_file}' xterm \"$RHOME/bin/R\"")
68
+ CMD.cmd("env R_PROFILE='#{init_file}' xterm \"$R_HOME/bin/R\"")
68
69
  end
69
70
  end
70
71
 
@@ -7,7 +7,7 @@ module R
7
7
 
8
8
  options = options.dup
9
9
 
10
- sources = [:plot, Rbbt.share.Rlib["svg.R"].find(:lib), options[:source]].flatten.compact
10
+ sources = [:plot, :svg, options[:source]].flatten.compact
11
11
  options.delete :source
12
12
 
13
13
  fast = options[:fast]
@@ -165,7 +165,7 @@ module Log
165
165
  ellapsed = 0
166
166
  end
167
167
  ellapsed = [ellapsed/3600, ellapsed/60 % 60, ellapsed % 60].map{|t| "%02i" % t }.join(':')
168
- done_msg << " " << Log.color(:blue, (@ticks).to_s) << " in " << Log.color(:green, ellapsed)
168
+ done_msg << " " << Log.color(:blue, (@ticks).to_s) << " #{bytes ? 'bytes' : 'items'} in " << Log.color(:green, ellapsed)
169
169
  @last_count = 0
170
170
  @last_time = @start
171
171
  done_msg << " (" << thr_msg << ")"
@@ -165,7 +165,8 @@ module Misc
165
165
  (string.respond_to? :valid_encoding and string.valid_encoding)
166
166
 
167
167
  if string.respond_to?(:encode)
168
- string.encode("UTF-16BE", :invalid => :replace, :undef => :replace, :replace => "?").encode('UTF-8')
168
+ #string.encode("UTF-16BE", :invalid => :replace, :undef => :replace, :replace => "?").encode('UTF-8')
169
+ string.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
169
170
  else
170
171
  require 'iconv'
171
172
  @@ic ||= Iconv.new('UTF-8//IGNORE', 'UTF-8')
@@ -43,7 +43,7 @@ module Misc
43
43
  end
44
44
 
45
45
  def self.mean(list)
46
- sum(list) / list.compact.length
46
+ sum(list).to_f / list.compact.length
47
47
  end
48
48
 
49
49
  def self.median(array)
@@ -52,22 +52,27 @@ module Misc
52
52
  (sorted[(len - 1) / 2] + sorted[len / 2]) / 2.0
53
53
  end
54
54
 
55
-
56
- def self.sd(list)
55
+ def self.variance(list)
57
56
  return nil if list.length < 3
58
57
  mean = mean(list)
59
58
  list = list.compact
60
59
  list_length = list.length
61
60
 
62
- total_square_distance = 0
61
+ total_square_distance = 0.0
63
62
  list.each do |value|
64
- distance = value - mean
63
+ distance = value.to_f - mean
65
64
  total_square_distance += distance * distance
66
65
  end
67
66
 
68
67
  variance = total_square_distance / (list_length - 1)
68
+
69
+ end
70
+
71
+
72
+ def self.sd(list)
73
+ return nil if list.length < 3
74
+ variance = self.variance(list)
69
75
  Math.sqrt(variance)
70
- #Math.sqrt(list.compact.inject(0.0){|acc,e| d = e - mean; acc += d * d; acc}) / (list.compact.length - 1)
71
76
  end
72
77
 
73
78
  def self.counts(array)
@@ -124,4 +129,10 @@ module Misc
124
129
  def self.in_delta?(a, b, delta = 0.0001)
125
130
  (a.to_f - b.to_f).abs < delta
126
131
  end
132
+
133
+ def self.zscore(e, list)
134
+ m = Misc.mean(list)
135
+ sd = Misc.sd(list)
136
+ (e.to_f - m) / sd
137
+ end
127
138
  end
@@ -311,14 +311,17 @@ module Open
311
311
  end
312
312
 
313
313
  def self.gzip?(file)
314
+ file = file.find if Path === file
314
315
  !! (file =~ /\.gz$/)
315
316
  end
316
317
 
317
318
  def self.bgzip?(file)
319
+ file = file.find if Path === file
318
320
  !! (file =~ /\.bgz$/)
319
321
  end
320
322
 
321
323
  def self.zip?(file)
324
+ file = file.find if Path === file
322
325
  !! (file =~ /\.zip$/)
323
326
  end
324
327
 
@@ -4,6 +4,9 @@ module SOPT
4
4
  def self.fix_shortcut(short, long)
5
5
  return short unless short and shortcuts.include?(short)
6
6
 
7
+ current = shortcuts.select{|s,l| l == long}.collect{|s,l| s }.first
8
+ return current if current
9
+
7
10
  chars = long.chars.to_a
8
11
  current = [chars.shift]
9
12
  short = current * ""
@@ -774,7 +774,8 @@ module Workflow
774
774
  new_=[]
775
775
  dep.each{|d|
776
776
  if Hash === d
777
- inputs = assign_dep_inputs({}, options.merge(d[:inputs]), real_dependencies, d[:workflow].task_info(d[:task]))
777
+ d[:workflow] ||= self
778
+ inputs = assign_dep_inputs({}, options.merge(d[:inputs] || {}), real_dependencies, d[:workflow].task_info(d[:task]))
778
779
  d = d[:workflow].job(d[:task], d[:jobname], inputs)
779
780
  end
780
781
  ComputeDependency.setup(d, compute) if compute
@@ -6,11 +6,6 @@ class Step
6
6
  def self.purge_stream_cache
7
7
  Log.debug "Purging dup. stream cache"
8
8
  STREAM_CACHE_MUTEX.synchronize do
9
- #STREAM_CACHE.collect{|k,s|
10
- # Thread.new do
11
- # Misc.consume_stream s
12
- # end
13
- #}
14
9
  STREAM_CACHE.clear
15
10
  end
16
11
  end
@@ -43,17 +38,18 @@ class Step
43
38
  new
44
39
  end
45
40
  end
46
- when TSV::Dumper#, TSV::Parser
41
+ when TSV::Dumper, TSV::Parser
42
+ orig_stream = stream
47
43
  stream = stream.stream
48
44
  return stream if stream.closed?
49
45
 
50
46
  STREAM_CACHE_MUTEX.synchronize do
51
47
  if STREAM_CACHE[stream].nil?
52
- Log.high "Not duplicating dumper #{ stream.inspect }"
48
+ Log.high "Not duplicating #{Misc.fingerprint orig_stream} #{ stream.inspect }"
53
49
  STREAM_CACHE[stream] = stream
54
50
  else
55
51
  new = Misc.dup_stream(STREAM_CACHE[stream])
56
- Log.high "Duplicating dumper #{ stream.inspect } into #{new.inspect}"
52
+ Log.high "Duplicating #{Misc.fingerprint orig_stream} #{ stream.inspect } into #{new.inspect}"
57
53
  new
58
54
  end
59
55
  end
@@ -64,6 +60,7 @@ class Step
64
60
 
65
61
  def dup_inputs
66
62
  return if @dupped or ENV["RBBT_NO_STREAM"] == 'true'
63
+ return if ComputeDependency === self and self.compute == :produce
67
64
  Log.low "Dupping inputs for #{path}"
68
65
  dupped_inputs = @inputs.collect do |input|
69
66
  Step.dup_stream input
@@ -51,8 +51,22 @@ class Step
51
51
  @inputs.replace new_inputs if step
52
52
  end
53
53
 
54
+ def rewind_inputs
55
+ return if @inputs.nil?
56
+ Log.debug "Rewinding inputs for #{path}"
57
+ @inputs.each do |input|
58
+ next unless input.respond_to? :rewind
59
+ begin
60
+ input.rewind
61
+ Log.debug "Rewinded #{Misc.fingerprint input}"
62
+ rescue
63
+ end
64
+ end
65
+ end
66
+
54
67
  def _exec
55
68
  resolve_input_steps
69
+ rewind_inputs
56
70
  @exec = true if @exec.nil?
57
71
  begin
58
72
  old = Signal.trap("INT"){ Thread.current.raise Aborted }
@@ -3,7 +3,7 @@ require 'rbbt/util/simpleopt'
3
3
  module Task
4
4
  def doc(workflow = nil, deps = nil)
5
5
  puts Log.color(:yellow, "## #{ name }") << ":"
6
- puts "\n" << description << "\n" if description and not description.empty?
6
+ puts "\n" << Misc.format_paragraph(description.strip) << "\n" if description and not description.empty?
7
7
  puts
8
8
 
9
9
  case
data/share/Rlib/svg.R CHANGED
@@ -1,11 +1,11 @@
1
- library(plyr)
2
- library(proto)
3
- library(ggplot2)
4
- library(gridSVG)
5
- library(grid)
6
- library(XML)
7
- library(ggthemes)
8
- library(Cairo)
1
+ rbbt.require('plyr')
2
+ rbbt.require('proto')
3
+ rbbt.require('ggplot2')
4
+ rbbt.require('gridSVG')
5
+ rbbt.require('grid')
6
+ rbbt.require('XML')
7
+ rbbt.require('ggthemes')
8
+ rbbt.require('Cairo')
9
9
 
10
10
  # Modified from http://aaronecay.com/blog/2014/02/tooltips-in-ggplot/
11
11
 
data/share/Rlib/util.R CHANGED
@@ -636,12 +636,13 @@ rbbt.plot.text_scatter <- function(formula, data) {
636
636
 
637
637
  rbbt.install.CRAN <- function(pkg){
638
638
  res = FALSE
639
- tryCatch({ install.packages(pkg); res = TRUE }, error = function(e){ warning(paste("Could not install CRAN ", pkg)); res = FALSE })
639
+ tryCatch({ install.packages(pkg); library(pkg); res = TRUE }, error = function(e){ warning(paste("Could not install CRAN ", pkg)); res = FALSE })
640
640
  return(res)
641
641
  }
642
+
642
643
  rbbt.install.bioc <-function(pkg){
643
644
  res = FALSE
644
- tryCatch({ source("http://bioconductor.org/biocLite.R"); biocLite(pkg); res = TRUE }, error = function(e){ warning(paste("Could not install Bioconductor ", pkg)); res = FALSE })
645
+ tryCatch({ source("http://bioconductor.org/biocLite.R"); biocLite(pkg, ask=FALSE, suppressUpdates = TRUE); res = TRUE }, error = function(e){ warning(paste("Could not install Bioconductor ", pkg)); res = FALSE })
645
646
  return(res)
646
647
  }
647
648
 
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.96
4
+ version: 5.21.97
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-09-08 00:00:00.000000000 Z
11
+ date: 2017-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake