rbbt-util 3.1.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. data/bin/rbbt_query.rb +1 -1
  2. data/lib/rbbt/util/cmd.rb +115 -67
  3. data/lib/rbbt/util/fix_width_table.rb +18 -3
  4. data/lib/rbbt/util/misc.rb +106 -6
  5. data/lib/rbbt/util/open.rb +9 -7
  6. data/lib/rbbt/util/persistence.rb +17 -14
  7. data/lib/rbbt/util/resource.rb +10 -3
  8. data/lib/rbbt/util/task.rb +2 -2
  9. data/lib/rbbt/util/task/job.rb +16 -3
  10. data/lib/rbbt/util/tc_hash.rb +64 -27
  11. data/lib/rbbt/util/tsv.rb +44 -21
  12. data/lib/rbbt/util/tsv/accessor.rb +8 -6
  13. data/lib/rbbt/util/tsv/attach.rb +19 -28
  14. data/lib/rbbt/util/tsv/filters.rb +193 -0
  15. data/lib/rbbt/util/tsv/index.rb +80 -8
  16. data/lib/rbbt/util/tsv/manipulate.rb +17 -6
  17. data/lib/rbbt/util/tsv/misc.rb +10 -0
  18. data/lib/rbbt/util/tsv/parse.rb +18 -1
  19. data/lib/rbbt/util/workflow.rb +12 -3
  20. data/lib/rbbt/util/workflow/soap.rb +0 -1
  21. data/share/install/software/lib/install_helpers +0 -2
  22. data/share/lib/R/util.R +3 -3
  23. data/test/rbbt/util/test_cmd.rb +23 -0
  24. data/test/rbbt/util/test_excel2tsv.rb +1 -1
  25. data/test/rbbt/util/test_misc.rb +41 -11
  26. data/test/rbbt/util/test_open.rb +2 -2
  27. data/test/rbbt/util/test_persistence.rb +2 -2
  28. data/test/rbbt/util/test_resource.rb +4 -20
  29. data/test/rbbt/util/test_tc_hash.rb +38 -0
  30. data/test/rbbt/util/test_tmpfile.rb +1 -1
  31. data/test/rbbt/util/test_tsv.rb +6 -0
  32. data/test/rbbt/util/test_workflow.rb +14 -10
  33. data/test/rbbt/util/tsv/test_accessor.rb +42 -0
  34. data/test/rbbt/util/tsv/test_filters.rb +141 -0
  35. data/test/rbbt/util/tsv/test_index.rb +32 -0
  36. data/test/rbbt/util/tsv/test_manipulate.rb +18 -0
  37. data/test/test_helper.rb +3 -1
  38. metadata +41 -38
@@ -8,7 +8,7 @@ class TestTmpFile < Test::Unit::TestCase
8
8
  assert(TmpFile.tmp_file("test") =~ /tmp\/test\d+$/)
9
9
  end
10
10
 
11
- def test_do_tmp_file
11
+ def _test_do_tmp_file
12
12
  content = "Hello World!"
13
13
  TmpFile.with_file(content) do |file|
14
14
  assert_equal content, File.open(file).read
@@ -202,14 +202,20 @@ row2 A B
202
202
  assert TCHash === tsv1.data
203
203
  assert !tsv1.case_insensitive
204
204
  assert tsv1.include? "A"
205
+ ddd tsv1.filename
205
206
 
206
207
  tsv1 = TSV.new(tchash, :key => "ValueA")
207
208
  assert TCHash === tsv1.data
208
209
  assert !tsv1.case_insensitive
209
210
  assert tsv1.include? "A"
211
+ ddd tsv1.filename
210
212
  end
211
213
  end
212
214
 
213
215
  end
216
+
217
+ def test_with_hash
218
+ assert TSV === TSV.new {}, :list
219
+ end
214
220
  end
215
221
 
@@ -37,7 +37,10 @@ module MathWF2
37
37
  task :times => :integer do |times| mult(input, times) end
38
38
 
39
39
  task_dependencies []
40
- task :persist do task.workflow.methods.include? "local_persist" end
40
+ task :persist do
41
+ task.workflow.methods.include?(:local_persist) or
42
+ task.workflow.methods.include?("local_persist")
43
+ end
41
44
  end
42
45
 
43
46
 
@@ -65,22 +68,22 @@ class TestWorkFlow < Test::Unit::TestCase
65
68
 
66
69
  def test_math_wf
67
70
  job = MathWF.tasks[:times_2].job(:job1, 1)
68
- assert_equal 4, job.fork.join.load
71
+ assert_equal 4, job.recursive_clean.fork.join.load
69
72
  job = MathWF.tasks[:times_4].job(:job1, 1)
70
- assert_equal 8, job.fork.join.load
73
+ assert_equal 8, job.recursive_clean.fork.join.load
71
74
  end
72
75
 
73
76
  def test_math_wf2
74
77
  job = MathWF2.tasks[:times_2].job(:job1, 1)
75
- job.fork.join
78
+ job.recursive_clean.fork.join
76
79
  assert_equal 4, job.load
77
80
  job = MathWF2.tasks[:times_4].job(:job1, 1)
78
- assert_equal 8, job.fork.join.load
81
+ assert_equal 8, job.recursive_clean.fork.join.load
79
82
  end
80
83
 
81
84
  def test_math_run
82
85
  job = MathWF2.job(:times_2, :job1, 1)
83
- job.fork.join
86
+ job.recursive_clean.fork.join
84
87
  assert_equal 4, job.load
85
88
  end
86
89
 
@@ -88,7 +91,7 @@ class TestWorkFlow < Test::Unit::TestCase
88
91
  assert MathWF2.tasks[:times].option_defaults.include? :times
89
92
 
90
93
  job = MathWF2.job(:times, :job1, 1)
91
- job.fork.join
94
+ job.recursive_clean.fork.join
92
95
  assert job.done?
93
96
  puts job.messages
94
97
  assert File.exists? job.path
@@ -96,7 +99,7 @@ class TestWorkFlow < Test::Unit::TestCase
96
99
 
97
100
 
98
101
  job = MathWF2.job(:times, :job1, 1, :times => 20)
99
- job.fork.join
102
+ job.recursive_clean.fork.join
100
103
  assert_equal 40, job.load
101
104
  end
102
105
 
@@ -112,12 +115,13 @@ class TestWorkFlow < Test::Unit::TestCase
112
115
  end
113
116
 
114
117
  def test_local_persist
118
+ MathWF2.job(:persist, :persist).clean
115
119
  assert MathWF2.run(:persist, :persist).load
116
120
  end
117
121
 
118
122
  def test_conditional
119
- assert 2, ConWF.run(:times_2, "Test", "one").load
120
- assert 4, ConWF.run(:times_2, "Test", "two").load
123
+ assert_equal 2, ConWF.run(:times_2, "Test", "one").load
124
+ assert_equal 4, ConWF.run(:times_2, "Test", "two").load
121
125
  end
122
126
 
123
127
  def test_option_summary
@@ -105,5 +105,47 @@ row2 A B C
105
105
  end
106
106
  end
107
107
 
108
+ def test_namespace
109
+ content =<<-EOF
110
+ #ID ValueA ValueB Comment
111
+ row1 a b c
112
+ row2 A B C
113
+ EOF
114
+
115
+ TmpFile.with_file(content) do |filename|
116
+ tsv = TSV.new(File.open(filename), :double, :sep => /\s/, :namespace => "TEST")
117
+
118
+ assert_equal "TEST", tsv.fields.first.namespace
119
+ assert_equal "TEST", tsv.key_field.namespace
120
+ end
121
+ end
122
+
123
+ def test_delete
124
+ content =<<-EOF
125
+ #ID ValueA ValueB Comment
126
+ row1 a b c
127
+ row2 A B C
128
+ EOF
129
+
130
+ TmpFile.with_file(content) do |filename|
131
+ tsv = TSV.new(File.open(filename), :double, :sep => /\s/)
132
+ tsv.delete "row1"
133
+
134
+ assert_equal 1, tsv.size
135
+ assert_equal ["row2"], tsv.keys
136
+
137
+ tsv = TSV.new(File.open(filename), :double, :sep => /\s/, :persistence => true)
138
+ assert_equal 2, tsv.size
139
+ assert_equal ["row1", "row2"], tsv.keys
140
+ tsv.write
141
+ tsv.delete "row1"
142
+ tsv.read
143
+
144
+ assert_equal 1, tsv.size
145
+ assert_equal ["row2"], tsv.keys
146
+ end
147
+ end
148
+
149
+
108
150
  end
109
151
 
@@ -0,0 +1,141 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')
2
+ require 'rbbt/util/tsv/filters'
3
+
4
+ class TestTSVFilters < Test::Unit::TestCase
5
+ def test_collect
6
+ content1 =<<-EOF
7
+ #: :sep=/\\s+/#:case_insensitive=false
8
+ #Id ValueA ValueB
9
+ row1 a|aa|aaa b
10
+ row2 A B
11
+ EOF
12
+
13
+ TmpFile.with_file(content1) do |filename|
14
+ tsv = TSV.new filename
15
+ tsv.filter
16
+ tsv.add_filter "field:ValueA", ["A"]
17
+ assert_equal 1, tsv.collect.size
18
+ end
19
+ end
20
+
21
+ def test_through
22
+ content1 =<<-EOF
23
+ #: :sep=/\\s+/#:case_insensitive=false
24
+ #Id ValueA ValueB
25
+ row1 a|aa|aaa b
26
+ row2 A B
27
+ EOF
28
+
29
+ TmpFile.with_file(content1) do |filename|
30
+ tsv = TSV.new filename
31
+ tsv.filter
32
+ tsv.add_filter "field:ValueA", ["A"]
33
+ elem = []
34
+ tsv.through do |k,v| elem << k end
35
+ assert_equal 1, elem.size
36
+ end
37
+ end
38
+
39
+ def test_2_filters
40
+ content1 =<<-EOF
41
+ #: :sep=/\\s+/#:case_insensitive=false
42
+ #Id ValueA ValueB
43
+ row1 a|aa|aaa b
44
+ row2 A B
45
+ row3 A C
46
+ EOF
47
+
48
+ TmpFile.with_file(content1) do |filename|
49
+ tsv = TSV.new filename
50
+ tsv.filter
51
+ tsv.add_filter "field:ValueA", ["A"]
52
+
53
+ elem = []
54
+ tsv.through do |k,v| elem << k end
55
+ assert_equal 2, elem.size
56
+
57
+ tsv.add_filter "field:ValueB", ["C"]
58
+
59
+ elem = []
60
+ tsv.through do |k,v| elem << k end
61
+ assert_equal 1, elem.size
62
+ end
63
+ end
64
+
65
+ def test_filter_persistence
66
+ content1 =<<-EOF
67
+ #: :sep=/\\s+/#:case_insensitive=false
68
+ #Id ValueA ValueB
69
+ row1 a|aa|aaa b
70
+ row2 A B
71
+ row3 A C
72
+ EOF
73
+
74
+ TmpFile.with_file(content1) do |filename|
75
+ tsv = TSV.new filename
76
+ tsv.filter
77
+ tsv.add_filter "field:ValueA", ["A"], Rbbt.tmp.test.Filter.fieldValueA
78
+
79
+ elem = []
80
+ tsv.through do |k,v| elem << k end
81
+ assert_equal 2, elem.size
82
+
83
+ tsv.add_filter "field:ValueB", ["C"]
84
+
85
+ elem = []
86
+ tsv.through do |k,v| elem << k end
87
+ assert_equal 1, elem.size
88
+
89
+ tsv = TSV.new filename
90
+ tsv.filter
91
+ tsv.add_filter "field:ValueA", ["A"], Rbbt.tmp.test.Filter.fieldValueA
92
+
93
+ elem = []
94
+ tsv.through do |k,v| elem << k end
95
+ assert_equal 2, elem.size
96
+ end
97
+ end
98
+
99
+ def test_filter_persistence_update
100
+ content1 =<<-EOF
101
+ #: :sep=/\\s+/#:case_insensitive=false
102
+ #Id ValueA ValueB
103
+ row1 a|aa|aaa b
104
+ row2 A B
105
+ EOF
106
+
107
+ TmpFile.with_file(content1) do |filename|
108
+ tsv = TSV.new filename
109
+ tsv.filter
110
+ tsv.add_filter "field:ValueA", ["A"], Rbbt.tmp.test.Filter.fieldValueA.find(:user)
111
+
112
+ elem = []
113
+ tsv.through do |k,v| elem << k end
114
+ assert_equal 1, elem.size
115
+
116
+ tsv["row3"] = [["A"], ["C"]]
117
+
118
+ elem = []
119
+ tsv.through do |k,v| elem << k end
120
+ assert_equal 2, elem.size
121
+
122
+ tsv.add_filter "field:ValueB", ["C"]
123
+
124
+ elem = []
125
+ tsv.through do |k,v| elem << k end
126
+ assert_equal 1, elem.size
127
+
128
+ tsv = TSV.new filename
129
+ tsv.filter
130
+ tsv.add_filter "field:ValueA", ["A"], Rbbt.tmp.test.Filter.fieldValueA.find(:user)
131
+
132
+ elem = []
133
+ tsv.through do |k,v| elem << k end
134
+ assert_equal 2, elem.size
135
+ end
136
+ end
137
+
138
+
139
+
140
+ end
141
+
@@ -153,5 +153,37 @@ g: ____
153
153
  end
154
154
  end
155
155
 
156
+ def test_pos_index
157
+ content =<<-EOF
158
+ #Id ValueA ValueB Pos
159
+ row1 a|aa|aaa b 0|10
160
+ row2 A B 30
161
+ EOF
162
+
163
+ TmpFile.with_file(content) do |filename|
164
+ tsv = TSV.new(File.open(filename), :double, :sep => /\s+/)
165
+ index = tsv.pos_index("Pos", :memory, true)
166
+ assert_equal ["row1"], index[10]
167
+ end
168
+ end
169
+
170
+
171
+ def test_range_index
172
+ content =<<-EOF
173
+ #Id ValueA ValueB Pos1 Pos2
174
+ row1 a|aa|aaa b 0|10 10|30
175
+ row2 A B 30 35
176
+ EOF
177
+
178
+ TmpFile.with_file(content) do |filename|
179
+ tsv = TSV.new(File.open(filename), :double, :sep => /\s+/)
180
+ index = tsv.pos_index("Pos1", :memory, true)
181
+ assert_equal ["row1"], index[10]
182
+
183
+ index = tsv.range_index("Pos1", "Pos2", :memory, true)
184
+ assert_equal ["row1"], index[20]
185
+ end
186
+ end
187
+
156
188
  end
157
189
 
@@ -242,5 +242,23 @@ row3 a C Id4
242
242
 
243
243
  end
244
244
 
245
+ def test_through_single
246
+ content =<<-EOF
247
+ #Id LetterValue
248
+ row1 a1
249
+ row2 A1
250
+ row3 a2
251
+ EOF
252
+
253
+ TmpFile.with_file(content) do |filename|
254
+ tsv = TSV.new(filename + '#:sep=/\s+/#:type=:single')
255
+
256
+ #TODO: WTF!!!
257
+ assert_equal "row1", tsv.reorder("LetterValue", :key)[97]
258
+ end
259
+
260
+ end
261
+
262
+
245
263
  end
246
264
 
data/test/test_helper.rb CHANGED
@@ -16,9 +16,11 @@ class Test::Unit::TestCase
16
16
 
17
17
  def teardown
18
18
  FileUtils.rm_rf Rbbt.tmp.test.find :user
19
+ TCHash::CONNECTIONS.values.each do |c| c.close end
20
+ TCHash::CONNECTIONS.clear
19
21
  end
20
22
 
21
- def test_datafile(file)
23
+ def datafile_test(file)
22
24
  File.join(File.dirname(__FILE__), 'data', file)
23
25
  end
24
26
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
5
- prerelease: false
4
+ hash: 15
5
+ prerelease:
6
6
  segments:
7
7
  - 3
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 3.1.0
10
+ version: 3.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Miguel Vazquez
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-11 00:00:00 +02:00
18
+ date: 2011-06-12 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -141,6 +141,7 @@ files:
141
141
  - lib/rbbt/util/tsv.rb
142
142
  - lib/rbbt/util/tsv/accessor.rb
143
143
  - lib/rbbt/util/tsv/attach.rb
144
+ - lib/rbbt/util/tsv/filters.rb
144
145
  - lib/rbbt/util/tsv/index.rb
145
146
  - lib/rbbt/util/tsv/manipulate.rb
146
147
  - lib/rbbt/util/tsv/misc.rb
@@ -150,31 +151,32 @@ files:
150
151
  - lib/rbbt/util/workflow/soap.rb
151
152
  - share/install/software/lib/install_helpers
152
153
  - share/lib/R/util.R
153
- - test/rbbt/util/test_R.rb
154
- - test/rbbt/util/test_bed.rb
155
- - test/rbbt/util/test_cmd.rb
156
- - test/rbbt/util/test_excel2tsv.rb
154
+ - test/test_helper.rb
155
+ - test/rbbt/util/test_tmpfile.rb
157
156
  - test/rbbt/util/test_filecache.rb
158
- - test/rbbt/util/test_fix_width_table.rb
159
- - test/rbbt/util/test_misc.rb
160
157
  - test/rbbt/util/test_open.rb
161
- - test/rbbt/util/test_persistence.rb
162
- - test/rbbt/util/test_rake.rb
163
- - test/rbbt/util/test_resource.rb
158
+ - test/rbbt/util/test_tsv.rb
159
+ - test/rbbt/util/test_misc.rb
160
+ - test/rbbt/util/test_cmd.rb
161
+ - test/rbbt/util/test_tc_hash.rb
164
162
  - test/rbbt/util/test_simpleDSL.rb
163
+ - test/rbbt/util/test_resource.rb
164
+ - test/rbbt/util/test_R.rb
165
+ - test/rbbt/util/test_excel2tsv.rb
165
166
  - test/rbbt/util/test_simpleopt.rb
166
167
  - test/rbbt/util/test_task.rb
167
- - test/rbbt/util/test_tc_hash.rb
168
- - test/rbbt/util/test_tmpfile.rb
169
- - test/rbbt/util/test_tsv.rb
168
+ - test/rbbt/util/test_bed.rb
169
+ - test/rbbt/util/test_rake.rb
170
+ - test/rbbt/util/test_persistence.rb
170
171
  - test/rbbt/util/test_workflow.rb
172
+ - test/rbbt/util/tsv/test_parse.rb
171
173
  - test/rbbt/util/tsv/test_accessor.rb
172
- - test/rbbt/util/tsv/test_attach.rb
173
- - test/rbbt/util/tsv/test_index.rb
174
174
  - test/rbbt/util/tsv/test_manipulate.rb
175
- - test/rbbt/util/tsv/test_parse.rb
175
+ - test/rbbt/util/tsv/test_index.rb
176
+ - test/rbbt/util/tsv/test_attach.rb
176
177
  - test/rbbt/util/tsv/test_resource.rb
177
- - test/test_helper.rb
178
+ - test/rbbt/util/tsv/test_filters.rb
179
+ - test/rbbt/util/test_fix_width_table.rb
178
180
  - test/test_rbbt.rb
179
181
  - bin/tsv.rb
180
182
  - bin/tchash.rb
@@ -212,34 +214,35 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
214
  requirements: []
213
215
 
214
216
  rubyforge_project:
215
- rubygems_version: 1.3.7
217
+ rubygems_version: 1.6.2
216
218
  signing_key:
217
219
  specification_version: 3
218
220
  summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
219
221
  test_files:
220
- - test/rbbt/util/test_R.rb
221
- - test/rbbt/util/test_bed.rb
222
- - test/rbbt/util/test_cmd.rb
223
- - test/rbbt/util/test_excel2tsv.rb
222
+ - test/test_helper.rb
223
+ - test/rbbt/util/test_tmpfile.rb
224
224
  - test/rbbt/util/test_filecache.rb
225
- - test/rbbt/util/test_fix_width_table.rb
226
- - test/rbbt/util/test_misc.rb
227
225
  - test/rbbt/util/test_open.rb
228
- - test/rbbt/util/test_persistence.rb
229
- - test/rbbt/util/test_rake.rb
230
- - test/rbbt/util/test_resource.rb
226
+ - test/rbbt/util/test_tsv.rb
227
+ - test/rbbt/util/test_misc.rb
228
+ - test/rbbt/util/test_cmd.rb
229
+ - test/rbbt/util/test_tc_hash.rb
231
230
  - test/rbbt/util/test_simpleDSL.rb
231
+ - test/rbbt/util/test_resource.rb
232
+ - test/rbbt/util/test_R.rb
233
+ - test/rbbt/util/test_excel2tsv.rb
232
234
  - test/rbbt/util/test_simpleopt.rb
233
235
  - test/rbbt/util/test_task.rb
234
- - test/rbbt/util/test_tc_hash.rb
235
- - test/rbbt/util/test_tmpfile.rb
236
- - test/rbbt/util/test_tsv.rb
236
+ - test/rbbt/util/test_bed.rb
237
+ - test/rbbt/util/test_rake.rb
238
+ - test/rbbt/util/test_persistence.rb
237
239
  - test/rbbt/util/test_workflow.rb
240
+ - test/rbbt/util/tsv/test_parse.rb
238
241
  - test/rbbt/util/tsv/test_accessor.rb
239
- - test/rbbt/util/tsv/test_attach.rb
240
- - test/rbbt/util/tsv/test_index.rb
241
242
  - test/rbbt/util/tsv/test_manipulate.rb
242
- - test/rbbt/util/tsv/test_parse.rb
243
+ - test/rbbt/util/tsv/test_index.rb
244
+ - test/rbbt/util/tsv/test_attach.rb
243
245
  - test/rbbt/util/tsv/test_resource.rb
244
- - test/test_helper.rb
246
+ - test/rbbt/util/tsv/test_filters.rb
247
+ - test/rbbt/util/test_fix_width_table.rb
245
248
  - test/test_rbbt.rb