rbbt-util 5.17.30 → 5.17.31
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/tsv/parallel/traverse.rb +5 -6
- data/lib/rbbt/util/misc/omics.rb +27 -3
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ec2769ac8dcfb78a8e3b33cdf905f2b0e53e9340
|
|
4
|
+
data.tar.gz: 9362e1f40b97de7451f0f4ed7467a7f386745128
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5df33607c693b25c3a0ff547ef690be714f2fa568fb9fd2f8d39819cd6ab8166fbd69cc5f212f5514460693190f349c4c699215c786b9ddcf3d546805dff174b
|
|
7
|
+
data.tar.gz: 53fdcaded28ebccbe7f88335e3448046300698554deba0bcf3e44b478ea131229128c2b2460f8db18e0ad3f67d83c425020c89bb22013c707a2c377a281937f2
|
|
@@ -29,20 +29,19 @@ module TSV
|
|
|
29
29
|
when Array, Hash
|
|
30
30
|
obj.size
|
|
31
31
|
when File
|
|
32
|
-
return nil if
|
|
32
|
+
return nil if Open.gzip?(file) or Open.bgzip?(file)
|
|
33
33
|
CMD.cmd("wc -l '#{obj.filename}'").read.to_i
|
|
34
|
-
when Path
|
|
35
|
-
|
|
36
|
-
CMD.cmd("wc -l '#{obj.find}'").read.to_i
|
|
37
|
-
when String
|
|
34
|
+
when Path, String
|
|
35
|
+
obj = obj.find if Path === obj
|
|
38
36
|
if File.exists? obj
|
|
39
|
-
return nil if
|
|
37
|
+
return nil if Open.gzip?(obj) or Open.bgzip?(obj)
|
|
40
38
|
CMD.cmd("wc -l '#{obj}'").read.to_i
|
|
41
39
|
else
|
|
42
40
|
nil
|
|
43
41
|
end
|
|
44
42
|
end
|
|
45
43
|
rescue Exception
|
|
44
|
+
Log.exception $!
|
|
46
45
|
nil
|
|
47
46
|
end
|
|
48
47
|
end
|
data/lib/rbbt/util/misc/omics.rb
CHANGED
|
@@ -197,16 +197,35 @@ module Misc
|
|
|
197
197
|
line = io.gets.strip
|
|
198
198
|
parts = line.split(sep)
|
|
199
199
|
chr, start, eend, *rest = parts
|
|
200
|
-
|
|
200
|
+
start = start.to_i
|
|
201
|
+
if eend =~ /^\d+$/
|
|
202
|
+
eend = eend.to_i
|
|
203
|
+
else
|
|
204
|
+
eend = start.to_i
|
|
205
|
+
end
|
|
206
|
+
[line,chr, start, eend, rest]
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def self.intersect_streams_cmp_chr(chr1, chr2)
|
|
210
|
+
return chr1 <=> chr2
|
|
211
|
+
if chr1 =~ /^\d+$/ and chr2 =~ /^\d+$/
|
|
212
|
+
chr1 <=> chr2
|
|
213
|
+
elsif chr1 =~ /^\d+$/
|
|
214
|
+
-1
|
|
215
|
+
elsif chr2 =~ /^\d+$/
|
|
216
|
+
1
|
|
217
|
+
else
|
|
218
|
+
chr1 <=> chr2
|
|
219
|
+
end
|
|
201
220
|
end
|
|
202
221
|
|
|
203
222
|
def self.intersect_streams(f1, f2, out, sep=":")
|
|
204
223
|
finish = false
|
|
205
224
|
line1, chr1, start1, eend1, rest1 = intersect_streams_read(f1,sep)
|
|
206
225
|
line2, chr2, start2, eend2, rest2 = intersect_streams_read(f2,sep)
|
|
207
|
-
Misc.profile do
|
|
208
226
|
while not finish
|
|
209
|
-
|
|
227
|
+
cmp = intersect_streams_cmp_chr(chr1,chr2)
|
|
228
|
+
case cmp
|
|
210
229
|
when -1
|
|
211
230
|
move = 1
|
|
212
231
|
when 1
|
|
@@ -249,6 +268,11 @@ module Misc
|
|
|
249
268
|
end
|
|
250
269
|
end
|
|
251
270
|
end
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
def self.select_ranges(stream1, stream2, sep = "\t")
|
|
274
|
+
Misc.open_pipe do |sin|
|
|
275
|
+
intersect_streams(stream1, stream2,sin, sep)
|
|
252
276
|
end
|
|
253
277
|
end
|
|
254
278
|
end
|