rbbt-util 5.21.96 → 5.21.97

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