rbbt-util 5.4.1 → 5.5.0

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 (45) hide show
  1. checksums.yaml +8 -8
  2. data/bin/rbbt_monitor.rb +8 -4
  3. data/lib/rbbt.rb +4 -11
  4. data/lib/rbbt/annotations.rb +4 -1
  5. data/lib/rbbt/association.rb +218 -157
  6. data/lib/rbbt/association/index.rb +92 -0
  7. data/lib/rbbt/association/item.rb +44 -0
  8. data/lib/rbbt/entity.rb +4 -0
  9. data/lib/rbbt/fix_width_table.rb +14 -9
  10. data/lib/rbbt/knowledge_base.rb +269 -0
  11. data/lib/rbbt/persist.rb +1 -1
  12. data/lib/rbbt/persist/tsv.rb +22 -2
  13. data/lib/rbbt/resource.rb +0 -1
  14. data/lib/rbbt/resource/path.rb +1 -1
  15. data/lib/rbbt/resource/util.rb +0 -1
  16. data/lib/rbbt/tsv.rb +15 -14
  17. data/lib/rbbt/tsv/accessor.rb +21 -16
  18. data/lib/rbbt/tsv/attach.rb +5 -5
  19. data/lib/rbbt/tsv/attach/util.rb +4 -2
  20. data/lib/rbbt/tsv/change_id.rb +67 -0
  21. data/lib/rbbt/tsv/index.rb +5 -3
  22. data/lib/rbbt/tsv/manipulate.rb +83 -37
  23. data/lib/rbbt/tsv/parser.rb +2 -1
  24. data/lib/rbbt/tsv/util.rb +2 -0
  25. data/lib/rbbt/util/cmd.rb +1 -2
  26. data/lib/rbbt/util/log.rb +42 -38
  27. data/lib/rbbt/util/misc.rb +134 -46
  28. data/lib/rbbt/util/open.rb +3 -17
  29. data/lib/rbbt/util/semaphore.rb +8 -2
  30. data/lib/rbbt/workflow.rb +31 -46
  31. data/lib/rbbt/workflow/accessor.rb +1 -1
  32. data/lib/rbbt/workflow/step.rb +5 -3
  33. data/share/rbbt_commands/workflow/server +1 -0
  34. data/share/rbbt_commands/workflow/task +12 -2
  35. data/test/rbbt/association/test_index.rb +36 -0
  36. data/test/rbbt/test_annotations.rb +5 -4
  37. data/test/rbbt/test_association.rb +40 -13
  38. data/test/rbbt/test_knowledge_base.rb +103 -0
  39. data/test/rbbt/test_workflow.rb +4 -2
  40. data/test/rbbt/tsv/test_change_id.rb +43 -0
  41. data/test/rbbt/tsv/test_index.rb +2 -1
  42. data/test/rbbt/tsv/test_manipulate.rb +51 -0
  43. data/test/rbbt/util/test_misc.rb +21 -1
  44. data/test/test_helper.rb +8 -4
  45. metadata +12 -86
@@ -104,11 +104,13 @@ class TestWorkflow < Test::Unit::TestCase
104
104
 
105
105
  assert_equal [job1.name, job2.name].sort, TestWF.jobs(:repeat2, "subdir/").sort
106
106
  assert_equal [job1.name].sort, TestWF.jobs(:repeat2, "subdir/Default")
107
- assert_equal [job1.name, job2.name, job3.name].sort, TestWF.jobs(:repeat2).sort
107
+ assert TestWF.jobs(:repeat2).include?(job1.name)
108
+ assert TestWF.jobs(:repeat2).include?(job2.name)
109
+ assert TestWF.jobs(:repeat2).include?(job3.name)
108
110
  end
109
111
 
110
112
  def test_double_dep
111
- assert_equal ["TEST", "TEST\nTEST", "TEST\nTEST\nTEST\nTEST"], TestWF.job(:double_dep, "foo", :times => 2, :number => 2).run
113
+ assert_equal ["TEST", "TEST\nTEST", "TEST\nTEST\nTEST\nTEST"], TestWF.job(:double_dep, "foo", :times => 2, :number => 2).clean.run
112
114
  end
113
115
 
114
116
  def test_object_workflow
@@ -0,0 +1,43 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helper.rb')
2
+ require 'rbbt/tsv'
3
+ require 'rbbt/tsv/change_id'
4
+
5
+ class TestTSVChangeID < Test::Unit::TestCase
6
+
7
+ FILE1=<<-EOF
8
+ #: :sep=' '
9
+ #A B C
10
+ a b c
11
+ aa bb cc
12
+ EOF
13
+
14
+ FILE2=<<-EOF
15
+ #: :sep=' '
16
+ #X Y Z
17
+ x y z
18
+ xx yy zz
19
+ EOF
20
+
21
+ IDENTIFIERS=<<-EOF
22
+ #: :sep=' '
23
+ #A X
24
+ a x
25
+ aa xx
26
+ EOF
27
+
28
+ def tsv(text, options = {})
29
+ options = Misc.add_defaults options, :type => :list
30
+ TSV.open StringIO.new(text), options
31
+ end
32
+
33
+ def setup
34
+ @f1 = tsv(FILE1)
35
+ @f2 = tsv(FILE2)
36
+ @id = tsv(IDENTIFIERS)
37
+ end
38
+
39
+ def test_change_id
40
+ @f1.identifiers = @id
41
+ puts @f1.change_key "X"
42
+ end
43
+ end
@@ -6,14 +6,15 @@ class TestTSVManipulate < Test::Unit::TestCase
6
6
 
7
7
  def load_segment_data(data)
8
8
  tsv = TSV.open(data, :list, :sep=>":", :cast => proc{|e| e =~ /(\s*)(_*)/; ($1.length..($1.length + $2.length - 1))})
9
+
9
10
  tsv.add_field "Start" do |key, values|
10
11
  values["Range"].first
11
12
  end
13
+
12
14
  tsv.add_field "End" do |key, values|
13
15
  values["Range"].last
14
16
  end
15
17
 
16
- puts tsv.type
17
18
  tsv = tsv.slice ["Start", "End"]
18
19
 
19
20
  tsv
@@ -132,6 +132,37 @@ row3 a C Id4
132
132
  end
133
133
  end
134
134
 
135
+ def test_select_invert
136
+ content =<<-EOF
137
+ #Id ValueA ValueB OtherID
138
+ row1 a|aa|aaa b Id1|Id2
139
+ row2 A B Id3
140
+ row3 a C Id4
141
+ EOF
142
+
143
+ TmpFile.with_file(content) do |filename|
144
+ tsv = TSV.open(filename, :sep => /\s+/)
145
+ assert tsv.type == :double
146
+
147
+ new = tsv.select %w(b Id4), true
148
+ assert_equal %w(row2).sort, new.keys
149
+
150
+ new = tsv.select /b|Id4/, true
151
+ assert_equal %w(row2).sort, new.keys
152
+
153
+ new = tsv.select %w(b Id4)
154
+ assert_equal %w(row1 row3).sort, new.keys.sort
155
+
156
+ new = tsv.select do |k,v|
157
+ v["ValueA"].include? "A"
158
+ end
159
+ assert_equal %w(row2).sort, new.keys.sort
160
+
161
+ tsv = TSV.open(filename, :sep => /\s+/, :type => :flat)
162
+ assert tsv.type != :double
163
+ end
164
+ end
165
+
135
166
  def test_process
136
167
  content =<<-EOF
137
168
  #Id ValueA ValueB OtherID
@@ -242,5 +273,25 @@ row3 a C Id4
242
273
 
243
274
  end
244
275
 
276
+ def test_through_flat
277
+ content =<<-EOF
278
+ #: :type=:flat
279
+ #Row vA
280
+ row1 a b Id1
281
+ row2 A B Id3
282
+ row3 a C Id4
283
+ EOF
284
+
285
+ TmpFile.with_file(content) do |filename|
286
+ tsv = TSV.open(filename, :sep => /\s+/)
287
+ tsv.through :key, ["vA"] do |k,v|
288
+ assert_equal 3, v.length
289
+ end
290
+
291
+
292
+ end
293
+
294
+ end
295
+
245
296
 
246
297
  end
@@ -1,6 +1,8 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
2
2
  require 'rbbt/util/misc'
3
3
  require 'test/unit'
4
+ require 'rbbt/tsv'
5
+ require 'rbbt/entity'
4
6
 
5
7
  class TestMisc < Test::Unit::TestCase
6
8
 
@@ -42,6 +44,20 @@ class TestMisc < Test::Unit::TestCase
42
44
  def test_intersect_sorted_arrays
43
45
  assert_equal [2,4], Misc.intersect_sorted_arrays([1,2,3,4], [2,4])
44
46
  end
47
+
48
+ def test_sorted_array_matches
49
+ assert_equal [1,3], Misc.sorted_array_hits(%w(a b c d e), %w(b d))
50
+ end
51
+
52
+ def test_binary_include?
53
+ a = %w(a b c d e).sort
54
+ assert Misc.binary_include?(a, "a")
55
+ assert(!Misc.binary_include?(a, "z"))
56
+ assert(Misc.binary_include?(a, "b"))
57
+ assert(Misc.binary_include?(a, "c"))
58
+ assert(Misc.binary_include?(a, "d"))
59
+ end
60
+
45
61
  def test_process_to_hash
46
62
  list = [1,2,3,4]
47
63
  assert_equal 4, Misc.process_to_hash(list){|l| l.collect{|e| e * 2}}[2]
@@ -127,8 +143,8 @@ class TestMisc < Test::Unit::TestCase
127
143
  a = {:a => 1, "b" => 2}
128
144
  a.extend IndiferentHash
129
145
 
130
- assert_equal 1, a["a"]
131
146
  assert_equal 1, a[:a]
147
+ assert_equal 1, a["a"]
132
148
  assert_equal 2, a["b"]
133
149
  assert_equal 2, a[:b]
134
150
  end
@@ -219,4 +235,8 @@ class TestMisc < Test::Unit::TestCase
219
235
  def test_correct_vcf_mutations
220
236
  assert_equal [737407, ["-----", "-----G", "-----GTTAAT"]], Misc.correct_vcf_mutation(737406, "GTTAAT", "G,GG,GGTTAAT")
221
237
  end
238
+
239
+ def test_fingerprint
240
+ puts Misc.fingerprint({:a => 1})
241
+ end
222
242
  end
data/test/test_helper.rb CHANGED
@@ -11,13 +11,17 @@ class Test::Unit::TestCase
11
11
  include FileUtils
12
12
 
13
13
  def setup
14
- Persist.cachedir = Rbbt.tmp.test.persistence.find :user
14
+ if defined? Persist
15
+ Persist.cachedir = Rbbt.tmp.test.persistence.find :user
16
+ end
15
17
  end
16
18
 
17
19
  def teardown
18
- FileUtils.rm_rf Path.setup("", 'rbbt').tmp.test.find :user
19
- Persist::TC_CONNECTIONS.values.each do |c| c.close end
20
- Persist::TC_CONNECTIONS.clear
20
+ if defined? Persist
21
+ FileUtils.rm_rf Path.setup("", 'rbbt').tmp.test.find :user
22
+ Persist::TC_CONNECTIONS.values.each do |c| c.close end
23
+ Persist::TC_CONNECTIONS.clear
24
+ end
21
25
  end
22
26
 
23
27
  def datafile_test(file)
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.4.1
4
+ version: 5.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-07 00:00:00.000000000 Z
11
+ date: 2013-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -24,34 +24,6 @@ dependencies:
24
24
  - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: spreadsheet
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ! '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: ruby-prof
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
27
  - !ruby/object:Gem::Dependency
56
28
  name: progress-monitor
57
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,48 +52,6 @@ dependencies:
80
52
  - - ! '>='
81
53
  - !ruby/object:Gem::Version
82
54
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: narray
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ! '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ! '>='
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: simplews
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ! '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: highline
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'
125
55
  - !ruby/object:Gem::Dependency
126
56
  name: ZenTest
127
57
  requirement: !ruby/object:Gem::Requirement
@@ -136,20 +66,6 @@ dependencies:
136
66
  - - '='
137
67
  - !ruby/object:Gem::Version
138
68
  version: '4.3'
139
- - !ruby/object:Gem::Dependency
140
- name: RubyInline
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ! '>='
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :runtime
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ! '>='
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
69
  description: Utilities for handling tsv files, caches, etc
154
70
  email: miguel.vazquez@cnio.es
155
71
  executables:
@@ -174,8 +90,11 @@ files:
174
90
  - lib/rbbt/annotations/annotated_array.rb
175
91
  - lib/rbbt/annotations/util.rb
176
92
  - lib/rbbt/association.rb
93
+ - lib/rbbt/association/index.rb
94
+ - lib/rbbt/association/item.rb
177
95
  - lib/rbbt/entity.rb
178
96
  - lib/rbbt/fix_width_table.rb
97
+ - lib/rbbt/knowledge_base.rb
179
98
  - lib/rbbt/persist.rb
180
99
  - lib/rbbt/persist/tsv.rb
181
100
  - lib/rbbt/resource.rb
@@ -187,6 +106,7 @@ files:
187
106
  - lib/rbbt/tsv/accessor.rb
188
107
  - lib/rbbt/tsv/attach.rb
189
108
  - lib/rbbt/tsv/attach/util.rb
109
+ - lib/rbbt/tsv/change_id.rb
190
110
  - lib/rbbt/tsv/excel.rb
191
111
  - lib/rbbt/tsv/filter.rb
192
112
  - lib/rbbt/tsv/index.rb
@@ -240,7 +160,9 @@ files:
240
160
  - test/rbbt/tsv/test_filter.rb
241
161
  - test/rbbt/tsv/test_attach.rb
242
162
  - test/rbbt/tsv/test_manipulate.rb
163
+ - test/rbbt/tsv/test_change_id.rb
243
164
  - test/rbbt/test_fix_width_table.rb
165
+ - test/rbbt/association/test_index.rb
244
166
  - test/rbbt/test_association.rb
245
167
  - test/rbbt/test_workflow.rb
246
168
  - test/rbbt/workflow/test_step.rb
@@ -251,6 +173,7 @@ files:
251
173
  - test/rbbt/test_resource.rb
252
174
  - test/rbbt/test_annotations.rb
253
175
  - test/rbbt/test_entity.rb
176
+ - test/rbbt/test_knowledge_base.rb
254
177
  - test/rbbt/test_persist.rb
255
178
  - test/rbbt/util/test_filecache.rb
256
179
  - test/rbbt/util/test_tmpfile.rb
@@ -304,7 +227,9 @@ test_files:
304
227
  - test/rbbt/tsv/test_filter.rb
305
228
  - test/rbbt/tsv/test_attach.rb
306
229
  - test/rbbt/tsv/test_manipulate.rb
230
+ - test/rbbt/tsv/test_change_id.rb
307
231
  - test/rbbt/test_fix_width_table.rb
232
+ - test/rbbt/association/test_index.rb
308
233
  - test/rbbt/test_association.rb
309
234
  - test/rbbt/test_workflow.rb
310
235
  - test/rbbt/workflow/test_step.rb
@@ -315,6 +240,7 @@ test_files:
315
240
  - test/rbbt/test_resource.rb
316
241
  - test/rbbt/test_annotations.rb
317
242
  - test/rbbt/test_entity.rb
243
+ - test/rbbt/test_knowledge_base.rb
318
244
  - test/rbbt/test_persist.rb
319
245
  - test/rbbt/util/test_filecache.rb
320
246
  - test/rbbt/util/test_tmpfile.rb