rbbt-util 5.20.26 → 5.21.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.
- checksums.yaml +4 -4
- data/lib/rbbt/annotations.rb +3 -1
- data/lib/rbbt/monitor.rb +12 -10
- data/lib/rbbt/persist.rb +1 -1
- data/lib/rbbt/rest/client.rb +2 -2
- data/lib/rbbt/rest/client/adaptor.rb +1 -0
- data/lib/rbbt/rest/client/get.rb +1 -33
- data/lib/rbbt/rest/client/run.rb +100 -0
- data/lib/rbbt/rest/client/step.rb +26 -73
- data/lib/rbbt/tsv/util.rb +7 -2
- data/lib/rbbt/util/log/progress/report.rb +1 -0
- data/lib/rbbt/util/misc/concurrent_stream.rb +6 -2
- data/lib/rbbt/util/misc/development.rb +18 -14
- data/lib/rbbt/util/misc/exceptions.rb +16 -7
- data/lib/rbbt/util/misc/inspect.rb +3 -2
- data/lib/rbbt/util/misc/pipes.rb +10 -7
- data/lib/rbbt/util/task/job.rb +6 -6
- data/lib/rbbt/workflow.rb +29 -2
- data/lib/rbbt/workflow/accessor.rb +14 -1
- data/lib/rbbt/workflow/definition.rb +23 -4
- data/lib/rbbt/workflow/soap.rb +1 -0
- data/lib/rbbt/workflow/step/dependencies.rb +5 -3
- data/lib/rbbt/workflow/step/run.rb +23 -5
- data/share/rbbt_commands/workflow/server +16 -3
- data/share/rbbt_commands/workflow/task +9 -0
- data/share/workflow_config.ru +35 -7
- data/test/rbbt/test_workflow.rb +24 -0
- data/test/rbbt/tsv/test_stream.rb +16 -0
- data/test/rbbt/util/misc/test_bgzf.rb +1 -1
- data/test/rbbt/util/test_misc.rb +29 -12
- metadata +64 -63
@@ -94,7 +94,7 @@ class Step
|
|
94
94
|
|
95
95
|
begin
|
96
96
|
@mutex.synchronize do
|
97
|
-
no_load =
|
97
|
+
no_load = :stream if no_load
|
98
98
|
result = Persist.persist "Job", @task.result_type, :file => path, :check => checks, :no_load => no_load do
|
99
99
|
if Step === Step.log_relay_step and not self == Step.log_relay_step
|
100
100
|
relay_log(Step.log_relay_step) unless self.respond_to? :relay_step and self.relay_step
|
@@ -180,7 +180,6 @@ class Step
|
|
180
180
|
rescue
|
181
181
|
Log.exception $!
|
182
182
|
ensure
|
183
|
-
join
|
184
183
|
Step.purge_stream_cache
|
185
184
|
FileUtils.rm pid_file if File.exist?(pid_file)
|
186
185
|
end
|
@@ -255,24 +254,41 @@ class Step
|
|
255
254
|
|
256
255
|
clean if dirty? or (not running? and not done?)
|
257
256
|
|
258
|
-
|
257
|
+
no_load = :stream
|
258
|
+
run(false) unless started?
|
259
259
|
|
260
260
|
join unless done?
|
261
261
|
|
262
262
|
self
|
263
263
|
end
|
264
264
|
|
265
|
-
def fork(semaphore = nil)
|
265
|
+
def fork(no_load = false, semaphore = nil)
|
266
266
|
raise "Can not fork: Step is waiting for proces #{@pid} to finish" if not @pid.nil? and not Process.pid == @pid and Misc.pid_exists?(@pid) and not done? and info[:forked]
|
267
|
+
sout, sin = Misc.pipe if no_load == :stream
|
267
268
|
@pid = Process.fork do
|
269
|
+
sout.close if sout
|
268
270
|
Misc.pre_fork
|
269
271
|
begin
|
270
272
|
RbbtSemaphore.wait_semaphore(semaphore) if semaphore
|
271
273
|
FileUtils.mkdir_p File.dirname(path) unless File.exist? File.dirname(path)
|
272
274
|
begin
|
273
275
|
@forked = true
|
274
|
-
res = run
|
276
|
+
res = run no_load
|
275
277
|
set_info :forked, true
|
278
|
+
if sin
|
279
|
+
io = TSV.get_stream res
|
280
|
+
if io.respond_to? :setup
|
281
|
+
io.setup(sin)
|
282
|
+
sin.pair = io
|
283
|
+
io.pair = sin
|
284
|
+
end
|
285
|
+
begin
|
286
|
+
Misc.consume_stream(io, false, sin)
|
287
|
+
rescue
|
288
|
+
Log.warn "Could not consume stream (#{io.closed? ? 'closed' : 'open'}) into pipe for forked job: #{self.path}"
|
289
|
+
Misc.consume_stream(io) unless io.closed?
|
290
|
+
end
|
291
|
+
end
|
276
292
|
rescue Aborted, Interrupt
|
277
293
|
Log.debug{"Forked process aborted: #{path}"}
|
278
294
|
log :aborted, "Job aborted (#{Process.pid})"
|
@@ -309,6 +325,8 @@ class Step
|
|
309
325
|
Kernel.exit! 0
|
310
326
|
end
|
311
327
|
end
|
328
|
+
sin.close if sin
|
329
|
+
@result = sout if sout
|
312
330
|
Process.detach(@pid)
|
313
331
|
self
|
314
332
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
1
|
|
3
2
|
require 'rbbt-util'
|
4
3
|
require 'rbbt/util/simpleopt'
|
@@ -17,12 +16,16 @@ $ rbbt workflow server [options] <Workflow>
|
|
17
16
|
-p--port* TCP port
|
18
17
|
-s--server* Server type: thin, webrick, unicorn, etc
|
19
18
|
-f--finder Start server with finder functionality
|
20
|
-
-
|
19
|
+
-RS--Rserve_session* Rserve session to use, otherwise start new one
|
21
20
|
-wd--workdir* Change the working directory of the workflow
|
22
21
|
-W--workflows* List of additional workflows to load
|
23
22
|
--views* Directory with view templates
|
24
23
|
--stream Activate streaming of workflow tasks
|
25
|
-
--export* Export workflow tasks
|
24
|
+
--export* Export workflow tasks (asynchronous)
|
25
|
+
--export_asynchronous* Export workflow tasks as asynchronous
|
26
|
+
--export_synchronous* Export workflow tasks as synchronous
|
27
|
+
--export_exec* Export workflow tasks as exec
|
28
|
+
--export_stream* Export workflow tasks as stream
|
26
29
|
--options* Additional options for server (e.g. option1=value1;option2=value2)
|
27
30
|
EOF
|
28
31
|
|
@@ -54,12 +57,22 @@ ENV["RServe-session"] = options[:RServe_session] || workflow
|
|
54
57
|
server = options[:server] || 'puma'
|
55
58
|
|
56
59
|
exports = options[:export].split(/\s*,/) if options[:export]
|
60
|
+
stream_exports = options[:export_stream].split(/\s*,/) if options[:export_stream]
|
61
|
+
async_exports = options[:export_asynchronous].split(/\s*,/) if options[:export_asynchronous]
|
62
|
+
sync_exports = options[:export_synchronous].split(/\s*,/) if options[:export_synchronous]
|
63
|
+
exec_exports = options[:export_exec].split(/\s*,/) if options[:export_exec]
|
57
64
|
|
58
65
|
TmpFile.with_file do |app_dir|
|
59
66
|
Misc.in_dir(app_dir) do
|
60
67
|
app_dir = Path.setup(app_dir.dup)
|
61
68
|
Open.write(app_dir.etc.target_workflow.find, workflow)
|
69
|
+
|
62
70
|
Open.write(app_dir.etc.target_workflow_exports.find, exports * "\n") if exports
|
71
|
+
Open.write(app_dir.etc.target_workflow_stream_exports.find, stream_exports * "\n") if stream_exports
|
72
|
+
Open.write(app_dir.etc.target_workflow_async_exports.find, async_exports * "\n") if async_exports
|
73
|
+
Open.write(app_dir.etc.target_workflow_sync_exports.find, sync_exports * "\n") if sync_exports
|
74
|
+
Open.write(app_dir.etc.target_workflow_exec_exports.find, exec_exports * "\n") if exec_exports
|
75
|
+
|
63
76
|
Open.write(app_dir.etc.workflows.find, workflows.split(/,\s/)*"\n") if workflows
|
64
77
|
|
65
78
|
require 'rack'
|
@@ -192,6 +192,7 @@ the job dependencies recursively.
|
|
192
192
|
--provenance Report the jobs provenance
|
193
193
|
-W--workflows* Load a list of workflows
|
194
194
|
-R--requires* Require a list of files
|
195
|
+
-rwt--remote_workflow_tasks* Load a yaml file describing remote workflow tasks
|
195
196
|
EOF
|
196
197
|
|
197
198
|
workflow = ARGV.shift
|
@@ -237,6 +238,13 @@ if options[:requires]
|
|
237
238
|
require req
|
238
239
|
end
|
239
240
|
end
|
241
|
+
|
242
|
+
if options[:remote_workflow_tasks]
|
243
|
+
yaml_text = Open.read(options[:remote_workflow_tasks])
|
244
|
+
remote_workflow_tasks = YAML.load(yaml_text)
|
245
|
+
Workflow.process_remote_tasks(remote_workflow_tasks)
|
246
|
+
end
|
247
|
+
|
240
248
|
# Set task
|
241
249
|
namespace = nil, nil
|
242
250
|
|
@@ -354,6 +362,7 @@ begin
|
|
354
362
|
|
355
363
|
if options.delete(:printpath)
|
356
364
|
job.join
|
365
|
+
raise job.messages.last if job.error?
|
357
366
|
if Open.remote? job.path
|
358
367
|
puts job.url + Log.color(:blue, "?_format=raw")
|
359
368
|
else
|
data/share/workflow_config.ru
CHANGED
@@ -30,13 +30,6 @@ require Rbbt.etc['app.d/init.rb'].find
|
|
30
30
|
workflow = Rbbt.etc['target_workflow'].read
|
31
31
|
wf = Workflow.require_workflow workflow, true
|
32
32
|
|
33
|
-
if Rbbt.etc['target_workflow_exports'].exists?
|
34
|
-
exports = Rbbt.etc['target_workflow_exports'].read.split("\n")
|
35
|
-
exports.each do |task|
|
36
|
-
wf.export task.to_sym
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
33
|
$title = wf.to_s
|
41
34
|
$app_name = app_name = wf.to_s + "REST"
|
42
35
|
$app = app = eval "class #{app_name} < Sinatra::Base; self end"
|
@@ -80,6 +73,41 @@ load_file Rbbt.etc['app.d/post.rb'].find_all
|
|
80
73
|
#{{{ PRELOAD
|
81
74
|
load_file Rbbt.etc['app.d/preload.rb'].find_all
|
82
75
|
|
76
|
+
if Rbbt.etc['target_workflow_exports'].exists?
|
77
|
+
exports = Rbbt.etc['target_workflow_exports'].read.split("\n")
|
78
|
+
exports.each do |task|
|
79
|
+
wf.export task.to_sym
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
if Rbbt.etc['target_workflow_stream_exports'].exists?
|
84
|
+
exports = Rbbt.etc['target_workflow_stream_exports'].read.split("\n")
|
85
|
+
exports.each do |task|
|
86
|
+
wf.export_stream task.to_sym
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
if Rbbt.etc['target_workflow_async_exports'].exists?
|
91
|
+
exports = Rbbt.etc['target_workflow_async_exports'].read.split("\n")
|
92
|
+
exports.each do |task|
|
93
|
+
wf.export_asynchronous task.to_sym
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
if Rbbt.etc['target_workflow_sync_exports'].exists?
|
98
|
+
exports = Rbbt.etc['target_workflow_sync_exports'].read.split("\n")
|
99
|
+
exports.each do |task|
|
100
|
+
wf.export_synchronous task.to_sym
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
if Rbbt.etc['target_workflow_exec_exports'].exists?
|
105
|
+
exports = Rbbt.etc['target_workflow_exec_exports'].read.split("\n")
|
106
|
+
exports.each do |task|
|
107
|
+
wf.export_exec task.to_sym
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
83
111
|
#{{{ RUN
|
84
112
|
require 'rack'
|
85
113
|
use Rack::Deflater
|
data/test/rbbt/test_workflow.rb
CHANGED
@@ -74,6 +74,15 @@ Returns numer * 2 lines containing TEST
|
|
74
74
|
dependencies.collect{|d| d.load } * ":"
|
75
75
|
end
|
76
76
|
|
77
|
+
task :stream => :array do
|
78
|
+
Misc.open_pipe do |sin|
|
79
|
+
5.times do |i|
|
80
|
+
sin.puts "line #{ i }"
|
81
|
+
sleep 1
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
77
86
|
|
78
87
|
|
79
88
|
end
|
@@ -152,4 +161,19 @@ class TestWorkflow < Test::Unit::TestCase
|
|
152
161
|
assert_equal "V:AA", job.run
|
153
162
|
end
|
154
163
|
|
164
|
+
def __test_stream
|
165
|
+
io = TestWF.job(:stream).run(:stream)
|
166
|
+
Misc.consume_stream(TSV.get_stream(io), false, STDOUT)
|
167
|
+
nil
|
168
|
+
end
|
169
|
+
|
170
|
+
def __test_fork_stream
|
171
|
+
job = TestWF.job(:stream)
|
172
|
+
job.clean
|
173
|
+
io = job.fork(:stream)
|
174
|
+
Misc.consume_stream(TSV.get_stream(io), false, STDOUT)
|
175
|
+
nil
|
176
|
+
end
|
177
|
+
|
178
|
+
|
155
179
|
end
|
@@ -197,6 +197,22 @@ row2 AAA
|
|
197
197
|
assert_equal ["AA", "AAA"], tsv["row2"][0]
|
198
198
|
end
|
199
199
|
|
200
|
+
def test_paste_stream_nohead
|
201
|
+
text1=<<-EOF
|
202
|
+
row1\tA
|
203
|
+
row2\tAA
|
204
|
+
EOF
|
205
|
+
|
206
|
+
text2=<<-EOF
|
207
|
+
row2\tAAA
|
208
|
+
EOF
|
209
|
+
|
210
|
+
s1 = StringIO.new text1
|
211
|
+
s2 = StringIO.new text2
|
212
|
+
tsv = TSV.open TSV.paste_streams([s1,s2], :type => :double, :sort => false, :same_fields => true)
|
213
|
+
assert_equal ["AA", "AAA"], tsv["row2"][0]
|
214
|
+
end
|
215
|
+
|
200
216
|
def test_flat2double
|
201
217
|
text1=<<-EOF
|
202
218
|
#: :sep= #:type=:flat
|
data/test/rbbt/util/test_misc.rb
CHANGED
@@ -58,7 +58,7 @@ Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
|
|
58
58
|
doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore
|
59
59
|
veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim
|
60
60
|
ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia
|
61
|
-
consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
|
61
|
+
consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
|
62
62
|
|
63
63
|
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur,
|
64
64
|
adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et
|
@@ -192,7 +192,7 @@ eum fugiat quo voluptas nulla pariatur?"
|
|
192
192
|
|
193
193
|
stream1 = Misc.open_pipe(true) do |sin|
|
194
194
|
t.times do |i|
|
195
|
-
sleep sleep_time
|
195
|
+
sleep sleep_time
|
196
196
|
sin.puts "LINE #{ i }"
|
197
197
|
end
|
198
198
|
end
|
@@ -228,7 +228,7 @@ eum fugiat quo voluptas nulla pariatur?"
|
|
228
228
|
|
229
229
|
stream1 = Misc.open_pipe(true) do |sin|
|
230
230
|
t.times do |i|
|
231
|
-
sleep sleep_time
|
231
|
+
sleep sleep_time
|
232
232
|
sin.puts "LINE #{ i }"
|
233
233
|
end
|
234
234
|
end
|
@@ -253,8 +253,8 @@ eum fugiat quo voluptas nulla pariatur?"
|
|
253
253
|
lines1 << line.strip
|
254
254
|
end
|
255
255
|
end
|
256
|
-
|
257
|
-
lines2 = []
|
256
|
+
|
257
|
+
lines2 = []
|
258
258
|
th2 = Thread.new do
|
259
259
|
while line = stream5.gets
|
260
260
|
lines2 << line.strip
|
@@ -281,7 +281,7 @@ eum fugiat quo voluptas nulla pariatur?"
|
|
281
281
|
assert_equal('j', Misc.string2hash("a=b#c=d#:h='j'")[:h])
|
282
282
|
assert_equal(:j, Misc.string2hash("a=b#c=d#:h=:j")[:h])
|
283
283
|
end
|
284
|
-
|
284
|
+
|
285
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'])
|
@@ -297,16 +297,16 @@ eum fugiat quo voluptas nulla pariatur?"
|
|
297
297
|
|
298
298
|
hash = {:a => 1}
|
299
299
|
assert_equal hash, Misc.string2hash(Misc.hash2string(hash))
|
300
|
-
|
300
|
+
|
301
301
|
hash = {:a => true}
|
302
302
|
assert_equal hash, Misc.string2hash(Misc.hash2string(hash))
|
303
303
|
|
304
304
|
hash = {:a => :b}
|
305
305
|
assert_equal hash, Misc.string2hash(Misc.hash2string(hash))
|
306
|
-
|
306
|
+
|
307
307
|
hash = {:a => /test/}
|
308
308
|
assert_equal({}, Misc.string2hash(Misc.hash2string(hash)))
|
309
|
-
|
309
|
+
|
310
310
|
end
|
311
311
|
|
312
312
|
def test_merge
|
@@ -331,8 +331,8 @@ eum fugiat quo voluptas nulla pariatur?"
|
|
331
331
|
TmpFile.with_file do |tmpfile|
|
332
332
|
pids = []
|
333
333
|
4.times do |i|
|
334
|
-
pids << Process.fork do
|
335
|
-
status = Misc.lock(tmpfile) do
|
334
|
+
pids << Process.fork do
|
335
|
+
status = Misc.lock(tmpfile) do
|
336
336
|
pid = Process.pid.to_s
|
337
337
|
Open.write(tmpfile, pid)
|
338
338
|
sleep rand * 1
|
@@ -419,7 +419,7 @@ eum fugiat quo voluptas nulla pariatur?"
|
|
419
419
|
end
|
420
420
|
|
421
421
|
def test_fingerprint
|
422
|
-
assert_equal '{a=>1}', Misc.fingerprint({:a => 1})
|
422
|
+
assert_equal '{:a=>1}', Misc.fingerprint({:a => 1})
|
423
423
|
end
|
424
424
|
|
425
425
|
def test_tarize
|
@@ -530,4 +530,21 @@ eum fugiat quo voluptas nulla pariatur?"
|
|
530
530
|
assert Misc.match_value("15", [14, 15, 25])
|
531
531
|
assert ! Misc.match_value("15", [14, 25])
|
532
532
|
end
|
533
|
+
|
534
|
+
def __test_bench_log
|
535
|
+
Log.severity = 1
|
536
|
+
Misc.benchmark(1000) do
|
537
|
+
Log.info { "Hola" }
|
538
|
+
end
|
539
|
+
Misc.benchmark(1000) do
|
540
|
+
Log.debug { "Hola" }
|
541
|
+
end
|
542
|
+
Misc.benchmark(1000) do
|
543
|
+
Log.debug "Hola"
|
544
|
+
end
|
545
|
+
p = Misc.pipe
|
546
|
+
Misc.benchmark(1000) do
|
547
|
+
Log.debug "Hola #{[p.first.inspect, p.last.inspect] * "=>"}"
|
548
|
+
end
|
549
|
+
end
|
533
550
|
end
|
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
|
+
version: 5.21.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: 2016-07-
|
11
|
+
date: 2016-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -222,6 +222,7 @@ files:
|
|
222
222
|
- lib/rbbt/rest/client.rb
|
223
223
|
- lib/rbbt/rest/client/adaptor.rb
|
224
224
|
- lib/rbbt/rest/client/get.rb
|
225
|
+
- lib/rbbt/rest/client/run.rb
|
225
226
|
- lib/rbbt/rest/client/step.rb
|
226
227
|
- lib/rbbt/tsv.rb
|
227
228
|
- lib/rbbt/tsv/accessor.rb
|
@@ -481,82 +482,82 @@ signing_key:
|
|
481
482
|
specification_version: 4
|
482
483
|
summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
|
483
484
|
test_files:
|
484
|
-
- test/
|
485
|
+
- test/test_helper.rb
|
485
486
|
- test/rbbt/resource/test_path.rb
|
486
|
-
- test/rbbt/
|
487
|
-
- test/rbbt/
|
488
|
-
- test/rbbt/
|
489
|
-
- test/rbbt/
|
490
|
-
- test/rbbt/
|
491
|
-
- test/rbbt/util/
|
487
|
+
- test/rbbt/association/test_item.rb
|
488
|
+
- test/rbbt/association/test_database.rb
|
489
|
+
- test/rbbt/association/test_open.rb
|
490
|
+
- test/rbbt/association/test_index.rb
|
491
|
+
- test/rbbt/association/test_util.rb
|
492
|
+
- test/rbbt/util/test_concurrency.rb
|
492
493
|
- test/rbbt/util/test_log.rb
|
494
|
+
- test/rbbt/util/test_chain_methods.rb
|
495
|
+
- test/rbbt/util/test_simpleopt.rb
|
496
|
+
- test/rbbt/util/simpleopt/test_parse.rb
|
497
|
+
- test/rbbt/util/simpleopt/test_get.rb
|
498
|
+
- test/rbbt/util/simpleopt/test_setup.rb
|
499
|
+
- test/rbbt/util/test_cmd.rb
|
500
|
+
- test/rbbt/util/test_semaphore.rb
|
501
|
+
- test/rbbt/util/concurrency/test_threads.rb
|
502
|
+
- test/rbbt/util/concurrency/processes/test_socket.rb
|
503
|
+
- test/rbbt/util/concurrency/test_processes.rb
|
504
|
+
- test/rbbt/util/test_tmpfile.rb
|
493
505
|
- test/rbbt/util/test_open.rb
|
506
|
+
- test/rbbt/util/test_filecache.rb
|
507
|
+
- test/rbbt/util/R/test_eval.rb
|
508
|
+
- test/rbbt/util/R/test_model.rb
|
509
|
+
- test/rbbt/util/test_simpleDSL.rb
|
510
|
+
- test/rbbt/util/log/test_progress.rb
|
511
|
+
- test/rbbt/util/test_colorize.rb
|
512
|
+
- test/rbbt/util/test_R.rb
|
494
513
|
- test/rbbt/util/misc/test_lock.rb
|
495
|
-
- test/rbbt/util/misc/test_multipart_payload.rb
|
496
|
-
- test/rbbt/util/misc/test_bgzf.rb
|
497
514
|
- test/rbbt/util/misc/test_pipes.rb
|
515
|
+
- test/rbbt/util/misc/test_bgzf.rb
|
498
516
|
- test/rbbt/util/misc/test_omics.rb
|
499
|
-
- test/rbbt/util/
|
500
|
-
- test/rbbt/util/test_R.rb
|
501
|
-
- test/rbbt/util/log/test_progress.rb
|
502
|
-
- test/rbbt/util/test_colorize.rb
|
503
|
-
- test/rbbt/util/test_simpleopt.rb
|
517
|
+
- test/rbbt/util/misc/test_multipart_payload.rb
|
504
518
|
- test/rbbt/util/test_excel2tsv.rb
|
505
|
-
- test/rbbt/util/test_filecache.rb
|
506
|
-
- test/rbbt/util/concurrency/test_processes.rb
|
507
|
-
- test/rbbt/util/concurrency/test_threads.rb
|
508
|
-
- test/rbbt/util/concurrency/processes/test_socket.rb
|
509
|
-
- test/rbbt/util/test_semaphore.rb
|
510
519
|
- test/rbbt/util/test_misc.rb
|
511
|
-
- test/rbbt/util/test_tmpfile.rb
|
512
|
-
- test/rbbt/util/R/test_model.rb
|
513
|
-
- test/rbbt/util/R/test_eval.rb
|
514
|
-
- test/rbbt/test_packed_index.rb
|
515
|
-
- test/rbbt/entity/test_identifiers.rb
|
516
|
-
- test/rbbt/test_association.rb
|
517
|
-
- test/rbbt/knowledge_base/test_traverse.rb
|
518
|
-
- test/rbbt/knowledge_base/test_registry.rb
|
519
|
-
- test/rbbt/knowledge_base/test_entity.rb
|
520
|
-
- test/rbbt/knowledge_base/test_enrichment.rb
|
521
|
-
- test/rbbt/knowledge_base/test_syndicate.rb
|
522
|
-
- test/rbbt/knowledge_base/test_query.rb
|
523
|
-
- test/rbbt/test_resource.rb
|
524
520
|
- test/rbbt/test_entity.rb
|
525
|
-
- test/rbbt/test_knowledge_base.rb
|
526
|
-
- test/rbbt/annotations/test_util.rb
|
527
|
-
- test/rbbt/association/test_index.rb
|
528
|
-
- test/rbbt/association/test_item.rb
|
529
|
-
- test/rbbt/association/test_open.rb
|
530
|
-
- test/rbbt/association/test_util.rb
|
531
|
-
- test/rbbt/association/test_database.rb
|
532
|
-
- test/rbbt/test_tsv.rb
|
533
521
|
- test/rbbt/workflow/step/test_dependencies.rb
|
534
|
-
- test/rbbt/workflow/test_task.rb
|
535
|
-
- test/rbbt/workflow/test_step.rb
|
536
522
|
- test/rbbt/workflow/test_doc.rb
|
537
|
-
- test/rbbt/
|
538
|
-
- test/rbbt/
|
539
|
-
- test/rbbt/
|
540
|
-
- test/rbbt/
|
541
|
-
- test/rbbt/
|
542
|
-
- test/rbbt/
|
543
|
-
- test/rbbt/persist/tsv/test_sharder.rb
|
544
|
-
- test/rbbt/persist/tsv/test_cdb.rb
|
545
|
-
- test/rbbt/persist/tsv/test_tokyocabinet.rb
|
546
|
-
- test/rbbt/persist/tsv/test_leveldb.rb
|
547
|
-
- test/rbbt/tsv/test_field_index.rb
|
523
|
+
- test/rbbt/workflow/test_step.rb
|
524
|
+
- test/rbbt/workflow/test_task.rb
|
525
|
+
- test/rbbt/test_association.rb
|
526
|
+
- test/rbbt/test_knowledge_base.rb
|
527
|
+
- test/rbbt/tsv/parallel/test_traverse.rb
|
528
|
+
- test/rbbt/tsv/parallel/test_through.rb
|
548
529
|
- test/rbbt/tsv/test_parallel.rb
|
549
|
-
- test/rbbt/tsv/
|
550
|
-
- test/rbbt/tsv/test_matrix.rb
|
530
|
+
- test/rbbt/tsv/test_accessor.rb
|
551
531
|
- test/rbbt/tsv/test_change_id.rb
|
552
|
-
- test/rbbt/tsv/test_parser.rb
|
553
532
|
- test/rbbt/tsv/test_stream.rb
|
554
|
-
- test/rbbt/tsv/test_util.rb
|
555
|
-
- test/rbbt/tsv/test_accessor.rb
|
556
533
|
- test/rbbt/tsv/test_filter.rb
|
534
|
+
- test/rbbt/tsv/test_matrix.rb
|
557
535
|
- test/rbbt/tsv/test_attach.rb
|
558
536
|
- test/rbbt/tsv/test_manipulate.rb
|
559
|
-
- test/rbbt/tsv/
|
560
|
-
- test/rbbt/tsv/
|
537
|
+
- test/rbbt/tsv/test_field_index.rb
|
538
|
+
- test/rbbt/tsv/test_index.rb
|
539
|
+
- test/rbbt/tsv/test_util.rb
|
540
|
+
- test/rbbt/tsv/test_parser.rb
|
541
|
+
- test/rbbt/test_packed_index.rb
|
542
|
+
- test/rbbt/test_persist.rb
|
561
543
|
- test/rbbt/test_fix_width_table.rb
|
562
|
-
- test/
|
544
|
+
- test/rbbt/knowledge_base/test_traverse.rb
|
545
|
+
- test/rbbt/knowledge_base/test_entity.rb
|
546
|
+
- test/rbbt/knowledge_base/test_query.rb
|
547
|
+
- test/rbbt/knowledge_base/test_enrichment.rb
|
548
|
+
- test/rbbt/knowledge_base/test_syndicate.rb
|
549
|
+
- test/rbbt/knowledge_base/test_registry.rb
|
550
|
+
- test/rbbt/entity/test_identifiers.rb
|
551
|
+
- test/rbbt/test_monitor.rb
|
552
|
+
- test/rbbt/test_workflow.rb
|
553
|
+
- test/rbbt/test_annotations.rb
|
554
|
+
- test/rbbt/annotations/test_util.rb
|
555
|
+
- test/rbbt/test_resource.rb
|
556
|
+
- test/rbbt/persist/tsv/test_tokyocabinet.rb
|
557
|
+
- test/rbbt/persist/tsv/test_kyotocabinet.rb
|
558
|
+
- test/rbbt/persist/tsv/test_lmdb.rb
|
559
|
+
- test/rbbt/persist/tsv/test_leveldb.rb
|
560
|
+
- test/rbbt/persist/tsv/test_cdb.rb
|
561
|
+
- test/rbbt/persist/tsv/test_sharder.rb
|
562
|
+
- test/rbbt/persist/test_tsv.rb
|
563
|
+
- test/rbbt/test_tsv.rb
|