rbbt-util 5.17.20 → 5.17.21
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/persist/tsv/tokyocabinet.rb +0 -125
- data/lib/rbbt/util/misc/omics.rb +59 -0
- data/lib/rbbt/workflow/accessor.rb +5 -3
- data/lib/rbbt/workflow.rb +1 -1
- data/test/rbbt/persist/tsv/test_tokyocabinet.rb +19 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 557142d92147d54d45af152135df1fe1743002bd
|
4
|
+
data.tar.gz: 5f56410a030766911e3ca59be65a887a84925636
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a58ff556d9be4894195d4e317ef7d9f0fb82bca320b7f03804355fb8d7eda0e72307caa50fb432fe1451d4d55ca40d03da5f20d059e105a4cd89044bdbe15ad1
|
7
|
+
data.tar.gz: 79582eaa89d75dccbce3396e71553b4ab3fad049d8787daaa6a6fc93a6fbac0309d0f277639f05faeb6b71ca779d9aeb4d1ec0ad96407ddfd7af30f2ffb06891
|
@@ -59,133 +59,8 @@ module Persist
|
|
59
59
|
@closed = false
|
60
60
|
self
|
61
61
|
end
|
62
|
-
|
63
|
-
#MAX_CHAR = 255.chr
|
64
|
-
|
65
|
-
#def prefix(key)
|
66
|
-
# range(key, 1, key + MAX_CHAR, 1)
|
67
|
-
#end
|
68
|
-
|
69
|
-
#def get_prefix(key)
|
70
|
-
# keys = prefix(key)
|
71
|
-
# select(:key => keys)
|
72
|
-
#end
|
73
|
-
|
74
|
-
#def closed?
|
75
|
-
# @closed
|
76
|
-
#end
|
77
|
-
|
78
|
-
#def close
|
79
|
-
# @closed = true
|
80
|
-
# super
|
81
|
-
#end
|
82
|
-
|
83
|
-
#def read(force = false)
|
84
|
-
# return if not write? and not closed and not force
|
85
|
-
# self.close
|
86
|
-
# if !self.open(@persistence_path, tokyocabinet_class::OREADER)
|
87
|
-
# ecode = self.ecode
|
88
|
-
# raise "Open error: #{self.errmsg(ecode)}. Trying to open file #{@persistence_path}"
|
89
|
-
# end
|
90
|
-
# @writable = false
|
91
|
-
# @closed = false
|
92
|
-
# self
|
93
|
-
#end
|
94
|
-
|
95
|
-
#def write(force = true)
|
96
|
-
# return if write? and not closed and not force
|
97
|
-
# self.close
|
98
|
-
|
99
|
-
# if !self.open(@persistence_path, tokyocabinet_class::OWRITER)
|
100
|
-
# ecode = self.ecode
|
101
|
-
# raise "Open error: #{self.errmsg(ecode)}. Trying to open file #{@persistence_path}"
|
102
|
-
# end
|
103
|
-
|
104
|
-
# @writable = true
|
105
|
-
# @closed = false
|
106
|
-
# self
|
107
|
-
#end
|
108
|
-
|
109
|
-
#def write?
|
110
|
-
# @writable
|
111
|
-
#end
|
112
|
-
|
113
|
-
#def read?
|
114
|
-
# ! write?
|
115
|
-
#end
|
116
|
-
|
117
|
-
#def collect
|
118
|
-
# res = []
|
119
|
-
# each do |key, value|
|
120
|
-
# res << if block_given?
|
121
|
-
# yield key, value
|
122
|
-
# else
|
123
|
-
# [key, value]
|
124
|
-
# end
|
125
|
-
# end
|
126
|
-
# res
|
127
|
-
#end
|
128
|
-
|
129
|
-
#def delete(key)
|
130
|
-
# out(key)
|
131
|
-
#end
|
132
|
-
|
133
|
-
#def write_and_read
|
134
|
-
# lock_filename = Persist.persistence_path(persistence_path + '.write', {:dir => TSV.lock_dir})
|
135
|
-
# Misc.lock(lock_filename) do
|
136
|
-
# @mutex.synchronize do
|
137
|
-
# write if @closed or not write?
|
138
|
-
# res = begin
|
139
|
-
# yield
|
140
|
-
# ensure
|
141
|
-
# read
|
142
|
-
# end
|
143
|
-
# res
|
144
|
-
# end
|
145
|
-
# end
|
146
|
-
#end
|
147
|
-
|
148
|
-
#def write_and_close
|
149
|
-
# lock_filename = Persist.persistence_path(persistence_path + '.write', {:dir => TSV.lock_dir})
|
150
|
-
# Misc.lock(lock_filename) do
|
151
|
-
# @mutex.synchronize do
|
152
|
-
# write if @closed or not write?
|
153
|
-
# res = begin
|
154
|
-
# yield
|
155
|
-
# ensure
|
156
|
-
# close
|
157
|
-
# end
|
158
|
-
# res
|
159
|
-
# end
|
160
|
-
# end
|
161
|
-
#end
|
162
|
-
|
163
|
-
#def read_and_close
|
164
|
-
# @mutex.synchronize do
|
165
|
-
# read if @closed or not read?
|
166
|
-
# res = begin
|
167
|
-
# yield
|
168
|
-
# ensure
|
169
|
-
# close
|
170
|
-
# end
|
171
|
-
# res
|
172
|
-
# end
|
173
|
-
#end
|
174
|
-
|
175
|
-
|
176
|
-
#def merge!(hash)
|
177
|
-
# hash.each do |key,values|
|
178
|
-
# self[key] = values
|
179
|
-
# end
|
180
|
-
#end
|
181
|
-
|
182
|
-
|
183
|
-
#def range(*args)
|
184
|
-
# super(*args) #- TSV::ENTRY_KEYS.to_a
|
185
|
-
#end
|
186
62
|
end
|
187
63
|
|
188
|
-
|
189
64
|
def self.open_tokyocabinet(path, write, serializer = nil, tokyocabinet_class = TokyoCabinet::HDB)
|
190
65
|
write = true unless File.exists? path
|
191
66
|
|
data/lib/rbbt/util/misc/omics.rb
CHANGED
@@ -192,4 +192,63 @@ module Misc
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
|
+
|
196
|
+
def self.intersect_streams_read(io, sep=":")
|
197
|
+
line = io.gets.strip
|
198
|
+
parts = line.split(sep)
|
199
|
+
chr, start, eend, *rest = parts
|
200
|
+
[line,chr, start.to_i, eend.to_i, rest]
|
201
|
+
end
|
202
|
+
|
203
|
+
def self.intersect_streams(f1, f2, out, sep=":")
|
204
|
+
finish = false
|
205
|
+
line1, chr1, start1, eend1, rest1 = intersect_streams_read(f1,sep)
|
206
|
+
line2, chr2, start2, eend2, rest2 = intersect_streams_read(f2,sep)
|
207
|
+
Misc.profile do
|
208
|
+
while not finish
|
209
|
+
case chr1 <=> chr2
|
210
|
+
when -1
|
211
|
+
move = 1
|
212
|
+
when 1
|
213
|
+
move = 2
|
214
|
+
else
|
215
|
+
if eend1 < start2
|
216
|
+
move = 1
|
217
|
+
elsif eend2 < start1
|
218
|
+
move = 2
|
219
|
+
else
|
220
|
+
pos2 = f2.pos
|
221
|
+
|
222
|
+
sline2, schr2, sstart2, seend2, srest2 = line2, chr2, start2, eend2, rest2
|
223
|
+
while chr1 == chr2 and ((start1 <= eend2 and eend1 >= start2))
|
224
|
+
out.puts line1 + "\t" + line2
|
225
|
+
if f2.eof?
|
226
|
+
chr2 = 'next2'
|
227
|
+
else
|
228
|
+
line2, chr2, start2, eend2, rest2 = intersect_streams_read(f2,sep)
|
229
|
+
end
|
230
|
+
end
|
231
|
+
line2, chr2, start2, eend2, rest2 = sline2, schr2, sstart2, seend2, srest2
|
232
|
+
f2.seek(pos2)
|
233
|
+
move = 1
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
case move
|
238
|
+
when 1
|
239
|
+
if f1.eof?
|
240
|
+
finish = true
|
241
|
+
else
|
242
|
+
line1, chr1, start1, eend1, rest1 = intersect_streams_read(f1,sep)
|
243
|
+
end
|
244
|
+
when 2
|
245
|
+
if f2.eof?
|
246
|
+
finish = true
|
247
|
+
else
|
248
|
+
line2, chr2, start2, eend2, rest2 = intersect_streams_read(f2,sep)
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
195
254
|
end
|
@@ -518,7 +518,7 @@ module Workflow
|
|
518
518
|
workflow, task, options = dependency
|
519
519
|
|
520
520
|
#options = dependency.last if Hash === dependency.last
|
521
|
-
_inputs = inputs.dup
|
521
|
+
_inputs = IndiferentHash.setup(inputs.dup)
|
522
522
|
options.each{|i,v|
|
523
523
|
case v
|
524
524
|
when Symbol
|
@@ -544,9 +544,11 @@ module Workflow
|
|
544
544
|
when Step
|
545
545
|
dependency
|
546
546
|
when Symbol
|
547
|
-
|
547
|
+
_inputs = IndiferentHash.setup(inputs.dup)
|
548
|
+
job(dependency, jobname, _inputs)
|
548
549
|
when Proc
|
549
|
-
|
550
|
+
_inputs = IndiferentHash.setup(inputs.dup)
|
551
|
+
dependency.call jobname, _inputs, real_dependencies
|
550
552
|
end
|
551
553
|
end
|
552
554
|
real_dependencies.flatten.compact
|
data/lib/rbbt/workflow.rb
CHANGED
@@ -239,4 +239,23 @@ class TestPersistTSVTC < Test::Unit::TestCase
|
|
239
239
|
assert_equal "2", persisted_annotations.sort.last.test_annotation
|
240
240
|
end
|
241
241
|
end
|
242
|
+
|
243
|
+
def test_fdb
|
244
|
+
TmpFile.with_file do |tmp|
|
245
|
+
repo = Persist.open_tokyocabinet(tmp, true, :list, TokyoCabinet::FDB)
|
246
|
+
repo.write
|
247
|
+
repo.put(1, "hola")
|
248
|
+
repo.put(2, "adios")
|
249
|
+
47000.times do |i|
|
250
|
+
repo.put(i*500, "key: " << i.to_s)
|
251
|
+
end
|
252
|
+
repo.read
|
253
|
+
Misc.profile do
|
254
|
+
repo.values_at *repo.range("[100,1000]")
|
255
|
+
end
|
256
|
+
Misc.benchmark(60_000) do
|
257
|
+
repo.values_at *repo.range("[100,1000]")
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
242
261
|
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.17.
|
4
|
+
version: 5.17.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|