rbbt-util 5.14.38 → 5.14.39

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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/etc/app.d/grid_system.rb +1 -0
  3. data/etc/app.d/resources.rb +3 -0
  4. data/lib/rbbt/association/database.rb +4 -2
  5. data/lib/rbbt/association/index.rb +20 -10
  6. data/lib/rbbt/association/open.rb +7 -4
  7. data/lib/rbbt/association/util.rb +12 -0
  8. data/lib/rbbt/knowledge_base/registry.rb +6 -5
  9. data/lib/rbbt/knowledge_base.rb +2 -2
  10. data/lib/rbbt/persist.rb +12 -8
  11. data/lib/rbbt/tsv/change_id.rb +10 -5
  12. data/lib/rbbt/tsv/manipulate.rb +3 -2
  13. data/lib/rbbt/tsv/matrix.rb +0 -1
  14. data/lib/rbbt/tsv/parallel/traverse.rb +2 -0
  15. data/lib/rbbt/tsv/util.rb +18 -0
  16. data/lib/rbbt/util/R/eval.rb +1 -1
  17. data/lib/rbbt/util/R/model.rb +28 -4
  18. data/lib/rbbt/util/R.rb +6 -0
  19. data/lib/rbbt/util/concurrency/processes/socket.rb +7 -1
  20. data/lib/rbbt/util/concurrency/processes/worker.rb +15 -7
  21. data/lib/rbbt/util/concurrency/processes.rb +8 -4
  22. data/lib/rbbt/util/log/progress/report.rb +3 -3
  23. data/lib/rbbt/util/log/progress.rb +20 -15
  24. data/lib/rbbt/util/misc/concurrent_stream.rb +2 -1
  25. data/lib/rbbt/util/misc/development.rb +11 -3
  26. data/lib/rbbt/util/misc/objects.rb +1 -1
  27. data/lib/rbbt/workflow/accessor.rb +19 -16
  28. data/lib/rbbt/workflow/step/run.rb +7 -0
  29. data/share/rbbt_commands/app/start +3 -2
  30. data/test/rbbt/knowledge_base/test_entity.rb +2 -1
  31. data/test/rbbt/knowledge_base/test_query.rb +2 -1
  32. data/test/rbbt/test_entity.rb +12 -13
  33. data/test/rbbt/test_knowledge_base.rb +13 -1
  34. data/test/rbbt/tsv/test_util.rb +15 -0
  35. data/test/rbbt/util/R/test_model.rb +25 -1
  36. data/test/rbbt/util/test_misc.rb +43 -40
  37. metadata +16 -2
@@ -51,7 +51,7 @@ module Misc
51
51
  end
52
52
 
53
53
  def self.zip_fields(array)
54
- return [] if array.empty? or (first = array.first).nil?
54
+ return [] if array.nil? or array.empty? or (first = array.first).nil?
55
55
  max = array.collect{|l| l.length}.max
56
56
  rest = array[1..-1].collect{|v|
57
57
  v.length == 1 & max > 1 ? v * max : v
@@ -74,29 +74,32 @@ class Step
74
74
  def info(check_lock = true)
75
75
  return {} if info_file.nil? or not Open.exists? info_file
76
76
  begin
77
- begin
78
- return @info_cache if @info_cache and File.ctime(info_file) < @info_cache_time
79
- rescue Exception
80
- raise $!
81
- end
77
+ Misc.insist do
78
+ begin
79
+ return @info_cache if @info_cache and File.ctime(info_file) < @info_cache_time
80
+ rescue Exception
81
+ raise $!
82
+ end
82
83
 
83
- begin
84
- @info_cache = Misc.insist(3, 1.6, info_file) do
85
- Misc.insist(2, 1, info_file) do
86
- Misc.insist(3, 0.2, info_file) do
87
- raise TryAgain, "Info locked" if check_lock and info_lock.locked?
88
- Open.open(info_file) do |file|
89
- INFO_SERIALIAZER.load(file) #|| {}
84
+ begin
85
+ @info_cache = Misc.insist(3, 1.6, info_file) do
86
+ Misc.insist(2, 1, info_file) do
87
+ Misc.insist(3, 0.2, info_file) do
88
+ raise TryAgain, "Info locked" if check_lock and info_lock.locked?
89
+ Open.open(info_file) do |file|
90
+ INFO_SERIALIAZER.load(file) #|| {}
91
+ end
90
92
  end
91
93
  end
92
94
  end
95
+ @info_cache_time = Time.now
96
+ @info_cache
93
97
  end
94
- @info_cache_time = Time.now
95
- @info_cache
96
98
  end
97
99
  rescue Exception
98
100
  Log.debug{"Error loading info file: " + info_file}
99
101
  Log.exception $!
102
+ Open.rm info_file
100
103
  Misc.sensiblewrite(info_file, INFO_SERIALIAZER.dump({:status => :error, :messages => ["Info file lost"]}))
101
104
  raise $!
102
105
  end
@@ -167,7 +170,7 @@ class Step
167
170
  end
168
171
  end
169
172
 
170
- def self.log_block(staus, message, path, &block)
173
+ def self.log_block(status, message, path, &block)
171
174
  start = Time.now
172
175
  status = status.to_s
173
176
  status_color = self.status_color status
@@ -185,7 +188,7 @@ class Step
185
188
  eend = Time.now
186
189
  Log.info do
187
190
  now = Time.now
188
- str = "#{ Log.color :cyan, status.to_s } +#{Log.color :green, "%.1g" % (eend - start)}"
191
+ str = "#{ Log.color :cyan, status.to_s } +#{Log.color :green, "%.2f" % (eend - start)}"
189
192
  str << " -- #{Log.color :blue, path.to_s}" if path
190
193
  str << " #{Log.color :yellow, Process.pid}"
191
194
  str
@@ -418,6 +418,13 @@ class Step
418
418
  end
419
419
  end
420
420
 
421
+ def soft_grace
422
+ until Open.exists? info_file
423
+ sleep 1
424
+ end
425
+ self
426
+ end
427
+
421
428
  def grace
422
429
  until done? or result or error? or aborted? or streaming?
423
430
  sleep 1
@@ -3,9 +3,10 @@
3
3
  require 'rbbt-util'
4
4
  require 'rbbt/util/simpleopt'
5
5
 
6
- options = SOPT.get "-e--environment*:-p--port*:-s--server*:-f--finder:-R--Rserve_session*"
6
+ options = SOPT.get "-e--environment*:-p--port*:-s--server*:-f--finder:-R--Rserve_session*:-ho--host*"
7
7
  options[:Port] ||= options[:port]
8
-
8
+ options[:Host] ||= "0.0.0.0"
9
+ options[:Bind] ||= "0.0.0.0"
9
10
 
10
11
  app = ARGV.shift
11
12
 
@@ -1,4 +1,5 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '../../../test_helper')
2
+ require 'rbbt-util'
2
3
  require 'rbbt/util/tmpfile'
3
4
  require 'test/unit'
4
5
  require 'rbbt/knowledge_base'
@@ -28,7 +29,7 @@ TP53 NFKB1|GLI1 activation|activation true|true
28
29
 
29
30
  EFFECT_TSV = TSV.open EFFECT, EFFECT_OPTIONS.dup
30
31
 
31
- KNOWLEDGE_BASE = KnowledgeBase.new '/tmp/kb.foo2', "Hsa"
32
+ KNOWLEDGE_BASE = KnowledgeBase.new '/tmp/kb.foo3', "Hsa"
32
33
  KNOWLEDGE_BASE.format = {"Gene" => "Associated Gene Name"}
33
34
 
34
35
  KNOWLEDGE_BASE.register :effects, EFFECT_TSV, EFFECT_OPTIONS.dup
@@ -14,7 +14,7 @@ TP53 NFKB1|GLI1 activation|activation true|true
14
14
  END
15
15
 
16
16
  EFFECT_OPTIONS = {
17
- :source => "SG=~Associated Gene Name",
17
+ :source => "SG=~Associated Gene Name=>Ensembl Gene ID",
18
18
  :target => "TG=~Associated Gene Name=>Ensembl Gene ID",
19
19
  :persist => false,
20
20
  :identifiers => datafile_test('identifiers'),
@@ -32,6 +32,7 @@ TP53 NFKB1|GLI1 activation|activation true|true
32
32
  def test_subset_all_persist
33
33
  Misc.benchmark(1000) do
34
34
  assert_equal 6, KNOWLEDGE_BASE.subset(:effects, :all).length
35
+
35
36
  assert_equal 4, KNOWLEDGE_BASE.subset(:effects, :all).target_entity.uniq.length
36
37
  assert_equal %w(Effect), KNOWLEDGE_BASE.subset(:effects, :all).info.first.keys
37
38
  end
@@ -53,9 +53,8 @@ module ReversableString
53
53
  }
54
54
  end
55
55
 
56
- persist :reverse_text_ary_p, :string
56
+ persist :reverse_text_ary_p, :marshal
57
57
  persist :reverse_text_single_p, :memory
58
- #persist :_single_reverse_text_single_p, :string
59
58
 
60
59
  persist :reverse_text_ary_p_array, :array, :dir => TmpFile.tmp_file
61
60
 
@@ -64,7 +63,7 @@ end
64
63
 
65
64
  class TestEntity < Test::Unit::TestCase
66
65
 
67
- def _test_property_ary
66
+ def test_property_ary
68
67
  a = ["String1", "String2"]
69
68
  ReversableString.setup(a)
70
69
 
@@ -84,7 +83,7 @@ class TestEntity < Test::Unit::TestCase
84
83
  end
85
84
  end
86
85
 
87
- def _test_property_single
86
+ def test_property_single
88
87
  a = ["String1", "String2"]
89
88
  ReversableString.setup a
90
89
 
@@ -96,7 +95,7 @@ class TestEntity < Test::Unit::TestCase
96
95
  assert_equal 3, $count
97
96
  end
98
97
 
99
- def _test_property_ary_p
98
+ def test_property_ary_p
100
99
  a = ["String1", "String2"]
101
100
  ReversableString.setup a
102
101
 
@@ -104,7 +103,7 @@ class TestEntity < Test::Unit::TestCase
104
103
 
105
104
  assert_equal "2gnirtS", a.reverse_text_ary_p.last
106
105
  assert_equal "2gnirtS", a.collect{|e| e.reverse_text_ary_p }[1]
107
- assert_equal 1, $count
106
+ assert_equal 0, $count
108
107
  end
109
108
 
110
109
  def test_property_single_p
@@ -122,10 +121,10 @@ class TestEntity < Test::Unit::TestCase
122
121
  assert_equal "2gnirtS", a.reverse_text_single_p.last
123
122
  assert_equal 0, $count
124
123
  assert_equal "2gnirtS", a[1].reverse_text_single_p
125
- assert_equal 0, $count
124
+ assert_equal 1, $count
126
125
  end
127
126
 
128
- def _test_property_ary_p_array
127
+ def test_property_ary_p_array
129
128
  a = ["String1", "String2"]
130
129
  ReversableString.setup a
131
130
 
@@ -134,12 +133,12 @@ class TestEntity < Test::Unit::TestCase
134
133
  $count = 0
135
134
 
136
135
  assert_equal "2gnirtS", a.reverse_text_ary_p_array.last
137
- assert_equal 1, $count
136
+ assert_equal 0, $count
138
137
  assert_equal "2gnirtS", a.reverse_text_ary_p_array.last
139
- assert_equal 1, $count
138
+ assert_equal 0, $count
140
139
  end
141
140
 
142
- def _test_unpersist
141
+ def test_unpersist
143
142
  a = ["String1", "String2"]
144
143
  ReversableString.setup a
145
144
 
@@ -168,14 +167,14 @@ class TestEntity < Test::Unit::TestCase
168
167
 
169
168
  end
170
169
 
171
- def _test_persist_annotations
170
+ def test_persist_annotations
172
171
  string = 'aaabbbccc'
173
172
  ReversableString.setup(string)
174
173
  assert_equal string.length, string.annotation_list.length
175
174
  assert_equal string.length, string.annotation_list.length
176
175
  end
177
176
 
178
- def _test_clean_annotations
177
+ def test_clean_annotations
179
178
 
180
179
  string = "test_string"
181
180
  ReversableString.setup string
@@ -56,6 +56,18 @@ end
56
56
 
57
57
  class TestKnowledgeBase < Test::Unit::TestCase
58
58
 
59
+ def test_knowledge_base_reverse
60
+ organism = Organism.default_code("Hsa")
61
+ TmpFile.with_file do |tmpdir|
62
+ kb = KnowledgeBase.new tmpdir, Organism.default_code("Hsa")
63
+ kb.format = {"Gene" => "Ensembl Gene ID"}
64
+
65
+ kb.register :tfacts, TFacts.regulators, :source =>"=~Associated Gene Name"
66
+
67
+ kb.get_index(:tfacts).reverse
68
+ end
69
+ end
70
+
59
71
  def test_knowledge_base
60
72
  organism = Organism.default_code("Hsa")
61
73
  TmpFile.with_file do |tmpdir|
@@ -69,7 +81,7 @@ class TestKnowledgeBase < Test::Unit::TestCase
69
81
  kb.register :kegg, KEGG.gene_pathway, :source_format => "Ensembl Gene ID"
70
82
  assert_match "Ensembl Gene ID", kb.get_database(:kegg).key_field
71
83
 
72
- gene = Gene.setup("TP53", "Associated Gene Name", organism)
84
+ gene = Gene.setup("TP53", "Associated Gene Name", organism).ensembl
73
85
  assert_equal "TP53", gene.name
74
86
  assert_equal "ENSG00000141510", gene.ensembl
75
87
 
@@ -36,4 +36,19 @@ row2 A B Id3
36
36
  assert_equal({1 => 1}, Marshal.load(Marshal.dump({1 => 1})))
37
37
  end
38
38
  end
39
+
40
+ def test_replicates
41
+ content =<<-EOF
42
+ #Id ValueA ValueB OtherID
43
+ row1 a|aa|aaa b|bb|bbb Id1|Id2|Id3
44
+ row2 A B Id3
45
+ EOF
46
+
47
+ TmpFile.with_file(content) do |filename|
48
+ tsv = TSV.open(filename, :sep => /\s+/)
49
+
50
+ assert_equal 4, tsv.unzip_replicates.length
51
+ assert_equal %w(aa bb Id2), tsv.unzip_replicates["row1(1)"]
52
+ end
53
+ end
39
54
  end
@@ -75,7 +75,7 @@ data = rbbt.model.inpute(data, CI ~ Dose, method=drm, classes='numeric', fct=LL.
75
75
  rppa = rppa.slice([antibody,"Compound", "Dose"])
76
76
  rppa.rename_field antibody, "RPPA"
77
77
 
78
- model = R::Model.new "viability", "Effect ~ Dose", "Compound" => :factor
78
+ model = R::Model.new "viability", "Effect ~ Dose", nil, "Compound" => :factor
79
79
 
80
80
  model.fit(viability.select("Compound"){|c| ! c.include? "-"}, 'lm')
81
81
 
@@ -85,4 +85,28 @@ data = rbbt.model.inpute(data, CI ~ Dose, method=drm, classes='numeric', fct=LL.
85
85
 
86
86
  R::SVG.ggplotSVG rppa, plot_script, 7, 7, :R_method => :eval
87
87
  end
88
+
89
+ def test_fit_fast
90
+ data = TSV.setup({}, :key_field => "Dose", :fields => ["Response"], :type => :single)
91
+ 10.times do
92
+ x = rand(10)
93
+ y = 10 + 3 * x + rand * 4
94
+ data[x] = y
95
+ end
96
+
97
+ model = R::Model.new "Test fit 2", "Response ~ Dose", data, :fit => 'lm'
98
+
99
+ x = 5
100
+ y = 10 + 3 * x
101
+
102
+ pred = model.predict x
103
+ assert pred > y and pred < y + 4
104
+
105
+ pred = model.predict [x, 2*x, 3*x]
106
+ assert pred.first > y and pred.first < y + 4
107
+
108
+
109
+ pred = model.predict "Dose" => x
110
+ assert pred > y and pred < y + 4
111
+ end
88
112
  end
@@ -6,7 +6,7 @@ require 'rbbt/entity'
6
6
 
7
7
  class TestMisc < Test::Unit::TestCase
8
8
 
9
- def test_object_delta
9
+ def _test_object_delta
10
10
  a = []
11
11
  b = nil
12
12
  d = Misc.object_delta(String) do
@@ -16,13 +16,13 @@ class TestMisc < Test::Unit::TestCase
16
16
  assert_match /^0\.\d+$/, a.first
17
17
  end
18
18
 
19
- def test_format_seconds
19
+ def _test_format_seconds
20
20
  t = 61.3232
21
21
  assert_equal "00:01:01", Misc.format_seconds(t)
22
22
  assert_equal "00:01:01.32", Misc.format_seconds(t, true)
23
23
  end
24
24
 
25
- def test_format_paragraph
25
+ def _test_format_paragraph
26
26
  p = <<-EOF
27
27
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
28
28
  incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
@@ -42,7 +42,7 @@ in culpa qui officia deserunt mollit anim id est laborum.
42
42
  assert Misc.format_paragraph(p, 70, 10, 5) =~ /\n\s*\* two/sm
43
43
  end
44
44
 
45
- def test_format_dl
45
+ def _test_format_dl
46
46
  p1 = <<-EOF
47
47
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
48
48
  incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
@@ -72,13 +72,13 @@ eum fugiat quo voluptas nulla pariatur?"
72
72
  assert Misc.format_definition_list({:paragraph_first => p1, :paragraph_second => p2}) =~ / /
73
73
  end
74
74
 
75
- def test_parse_cmd_params
75
+ def _test_parse_cmd_params
76
76
  assert_equal ["workflow", "task", "Translation", "translate", "-f", "Associated Gene Name", "-l", "-"],
77
77
  Misc.parse_cmd_params("workflow task Translation translate -f 'Associated Gene Name' -l -")
78
78
  end
79
79
 
80
80
 
81
- def test_fixutf8
81
+ def _test_fixutf8
82
82
  string = "abc\xffdef"
83
83
  string = string.force_encoding("UTF-8") if string.respond_to? :force_encoding
84
84
  assert(! string.valid_encoding?) if string.respond_to? :valid_encoding?
@@ -87,37 +87,37 @@ eum fugiat quo voluptas nulla pariatur?"
87
87
  assert( Misc.fixutf8(string).valid_encoding) if string.respond_to? :valid_encoding
88
88
  end
89
89
 
90
- def test_colors_for
90
+ def _test_colors_for
91
91
  colors, used = Misc.colors_for([1,2,2,1,2,1,2,2,3,3,2,3,2])
92
92
  assert_equal Misc::COLOR_LIST[1], used[2]
93
93
  end
94
94
 
95
- def test_total_length
95
+ def _test_total_length
96
96
  ranges = [(0..100), (50..150), (120..160)]
97
97
  ranges = [(0..100), (50..150), (120..160), (51..70)]
98
98
  assert_equal 161, Misc.total_length(ranges)
99
99
  end
100
100
 
101
- def test_id_filename?
101
+ def _test_id_filename?
102
102
  TmpFile.with_file("") do |file|
103
103
  assert Misc.is_filename?(file)
104
104
  assert ! Misc.is_filename?("TEST STRING")
105
105
  end
106
106
  end
107
107
 
108
- def test_merge_sorted_arrays
108
+ def _test_merge_sorted_arrays
109
109
  assert_equal [1,2,3,4], Misc.merge_sorted_arrays([1,3], [2,4])
110
110
  end
111
111
 
112
- def test_intersect_sorted_arrays
112
+ def _test_intersect_sorted_arrays
113
113
  assert_equal [2,4], Misc.intersect_sorted_arrays([1,2,3,4], [2,4])
114
114
  end
115
115
 
116
- def test_sorted_array_matches
116
+ def _test_sorted_array_matches
117
117
  assert_equal [1,3], Misc.sorted_array_hits(%w(a b c d e), %w(b d))
118
118
  end
119
119
 
120
- def test_binary_include?
120
+ def _test_binary_include?
121
121
  a = %w(a b c d e).sort
122
122
  assert Misc.binary_include?(a, "a")
123
123
  assert(!Misc.binary_include?(a, "z"))
@@ -126,12 +126,12 @@ eum fugiat quo voluptas nulla pariatur?"
126
126
  assert(Misc.binary_include?(a, "d"))
127
127
  end
128
128
 
129
- def test_process_to_hash
129
+ def _test_process_to_hash
130
130
  list = [1,2,3,4]
131
131
  assert_equal 4, Misc.process_to_hash(list){|l| l.collect{|e| e * 2}}[2]
132
132
  end
133
133
 
134
- def test_pipe_fork
134
+ def _test_pipe_fork
135
135
  sout, sin = Misc.pipe
136
136
  pid = Process.fork do
137
137
  Misc.purge_pipes(sin)
@@ -143,7 +143,7 @@ eum fugiat quo voluptas nulla pariatur?"
143
143
  Process.kill :INT, pid
144
144
  end
145
145
 
146
- def test_open_pipe
146
+ def _test_open_pipe
147
147
  t = 5
148
148
  stream = Misc.open_pipe do |sin|
149
149
  t.times do |i|
@@ -164,7 +164,7 @@ eum fugiat quo voluptas nulla pariatur?"
164
164
  assert_equal (0..t-1).to_a.collect{|i| "LINE #{ i }"}, lines
165
165
  end
166
166
 
167
- def test_open_pipe_fork
167
+ def _test_open_pipe_fork
168
168
  t = 5
169
169
  stream = Misc.open_pipe(true) do |sin|
170
170
  t.times do |i|
@@ -185,7 +185,7 @@ eum fugiat quo voluptas nulla pariatur?"
185
185
  assert_equal (0..t-1).to_a.collect{|i| "LINE #{ i }"}, lines
186
186
  end
187
187
 
188
- def test_open_pipe_fork_cascade
188
+ def _test_open_pipe_fork_cascade
189
189
  t = 500
190
190
  sleep_time = 2.0 / t
191
191
  time = Time.now
@@ -221,7 +221,7 @@ eum fugiat quo voluptas nulla pariatur?"
221
221
  assert_equal (0..t-1).to_a.collect{|i| "LINE #{ i }".reverse.downcase}, lines
222
222
  end
223
223
 
224
- def test_tee_stream
224
+ def _test_tee_stream
225
225
  t = 500
226
226
  sleep_time = 2.0 / t
227
227
  time = Time.now
@@ -271,7 +271,7 @@ eum fugiat quo voluptas nulla pariatur?"
271
271
  end
272
272
 
273
273
 
274
- def test_string2hash
274
+ def _test_string2hash
275
275
  assert(Misc.string2hash("--user-agent=firefox").include? "--user-agent")
276
276
  assert_equal(true, Misc.string2hash(":true")[:true])
277
277
  assert_equal(true, Misc.string2hash("true")["true"])
@@ -282,16 +282,16 @@ eum fugiat quo voluptas nulla pariatur?"
282
282
  assert_equal(:j, Misc.string2hash("a=b#c=d#:h=:j")[:h])
283
283
  end
284
284
 
285
- def test_named_array
285
+ def _test_named_array
286
286
  a = NamedArray.setup([1,2,3,4], %w(a b c d))
287
287
  assert_equal(1, a['a'])
288
288
  end
289
289
 
290
- def test_path_relative_to
290
+ def _test_path_relative_to
291
291
  assert_equal "test/foo", Misc.path_relative_to('/test', '/test/test/foo')
292
292
  end
293
293
 
294
- def test_hash2string
294
+ def _test_hash2string
295
295
  hash = {}
296
296
  assert_equal hash, Misc.string2hash(Misc.hash2string(hash))
297
297
 
@@ -309,14 +309,14 @@ eum fugiat quo voluptas nulla pariatur?"
309
309
 
310
310
  end
311
311
 
312
- def test_merge
312
+ def _test_merge
313
313
  a = [[1],[2]]
314
314
  a = NamedArray.setup a, %w(1 2)
315
315
  a.merge [3,4]
316
316
  assert_equal [1,3], a[0]
317
317
  end
318
318
 
319
- def test_indiferent_hash
319
+ def _test_indiferent_hash
320
320
  a = {:a => 1, "b" => 2}
321
321
  a.extend IndiferentHash
322
322
 
@@ -326,7 +326,7 @@ eum fugiat quo voluptas nulla pariatur?"
326
326
  assert_equal 2, a[:b]
327
327
  end
328
328
 
329
- def test_lockfile
329
+ def _test_lockfile
330
330
 
331
331
  TmpFile.with_file do |tmpfile|
332
332
  pids = []
@@ -350,7 +350,7 @@ eum fugiat quo voluptas nulla pariatur?"
350
350
  end
351
351
  end
352
352
 
353
- def test_positions2hash
353
+ def _test_positions2hash
354
354
  inputs = Misc.positional2hash([:one, :two, :three], 1, :two => 2, :four => 4)
355
355
  assert_equal 1, inputs[:one]
356
356
  assert_equal 2, inputs[:two]
@@ -358,44 +358,44 @@ eum fugiat quo voluptas nulla pariatur?"
358
358
  assert_equal nil, inputs[:four]
359
359
  end
360
360
 
361
- def test_mean
361
+ def _test_mean
362
362
  assert_equal 2, Misc.mean([1,2,3])
363
363
  assert_equal 3, Misc.mean([1,2,3,4,5])
364
364
  end
365
365
 
366
- def test_zip_fields
366
+ def _test_zip_fields
367
367
  current = [[:a,1], [:b,2]]
368
368
  assert_equal [[:a, :b],[1,2]], Misc.zip_fields(current)
369
369
  assert_equal current, Misc.zip_fields(Misc.zip_fields(current))
370
370
  end
371
371
 
372
- def test_zip_fields_comp
372
+ def _test_zip_fields_comp
373
373
  current = [[:a,1], [:b,2], [:c]]
374
374
  assert_equal [[:a, :b, :c],[1,2,nil]], Misc.zip_fields(current)
375
375
  assert_equal current, Misc.zip_fields(Misc.zip_fields(current)).collect{|v| v.compact }
376
376
  end
377
377
 
378
- def test_add_zipped
378
+ def _test_add_zipped
379
379
  current = [[:a,1], [:b,2]]
380
380
  new = %w(A B)
381
381
  Misc.append_zipped current, new
382
382
  assert_equal [[:a,1,"A"], [:b,2,"B"]], current
383
383
  end
384
384
 
385
- def test_divide
385
+ def _test_divide
386
386
  assert_equal 2, Misc.divide(%w(1 2 3 4 5 6 7 8 9),2).length
387
387
  end
388
388
 
389
- def test_ordered_divide
389
+ def _test_ordered_divide
390
390
  assert_equal 5, Misc.ordered_divide(%w(1 2 3 4 5 6 7 8 9),2).length
391
391
  end
392
392
 
393
- def test_collapse_ranges
393
+ def _test_collapse_ranges
394
394
  ranges = [(0..100), (50..150), (51..61),(200..250), (300..324),(320..350)]
395
395
  assert_equal [(0..150),(200..250), (300..350)], Misc.collapse_ranges(ranges)
396
396
  end
397
397
 
398
- def test_humanize
398
+ def _test_humanize
399
399
  str1 = "test_string"
400
400
  str2 = "TEST_string"
401
401
  str3 = "test"
@@ -407,22 +407,22 @@ eum fugiat quo voluptas nulla pariatur?"
407
407
  assert_equal "mutation_enrichment", Misc.snake_case("MutationEnrichment")
408
408
  end
409
409
 
410
- def test_snake_case
410
+ def _test_snake_case
411
411
  str1 = "ACRONIMTest"
412
412
  str2 = "ACRONIM_test"
413
413
  assert_equal "ACRONIM_test", Misc.snake_case(str1)
414
414
  assert_equal "ACRONIM_test", Misc.snake_case(str2)
415
415
  end
416
416
 
417
- def test_correct_vcf_mutations
417
+ def _test_correct_vcf_mutations
418
418
  assert_equal [737407, ["-----", "-----G", "-----GTTAAT"]], Misc.correct_vcf_mutation(737406, "GTTAAT", "G,GG,GGTTAAT")
419
419
  end
420
420
 
421
- def test_fingerprint
421
+ def _test_fingerprint
422
422
  assert_equal '{a=>1}', Misc.fingerprint({:a => 1})
423
423
  end
424
424
 
425
- def test_tarize
425
+ def _test_tarize
426
426
  path = File.expand_path('/home/mvazquezg/git/rbbt-util/lib')
427
427
  stream = Misc.tarize(path)
428
428
  TmpFile.with_file do |res|
@@ -432,7 +432,7 @@ eum fugiat quo voluptas nulla pariatur?"
432
432
  end
433
433
  end
434
434
 
435
- def test_camel_case
435
+ def _test_camel_case
436
436
  assert_equal "DbSNP", Misc.camel_case("db_SNP")
437
437
  assert_equal "D3Js", Misc.camel_case("D3Js")
438
438
  assert_equal "Structure", Misc.camel_case("Structure")
@@ -440,6 +440,9 @@ eum fugiat quo voluptas nulla pariatur?"
440
440
  assert_equal "COSMIC", Misc.camel_case("COSMIC")
441
441
  end
442
442
 
443
+ def test_texar
444
+ ppp Misc.html_tag('textarea', "hola\nadios\nagain")
445
+ end
443
446
 
444
447
  def __test_lock_fd
445
448
  require 'rbbt/workflow'
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.14.38
4
+ version: 5.14.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-21 00:00:00.000000000 Z
11
+ date: 2014-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: sass-css-importer
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: Utilities for handling tsv files, caches, etc
112
126
  email: miguel.vazquez@cnio.es
113
127
  executables: