bio-gadget 0.4.7 → 0.4.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bio-gadget/peak.rb +47 -22
- data/lib/bio-gadget/version.rb +1 -1
- 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: 919243e81fb8eecaf1e9af9f85914439f3aa27d5
|
4
|
+
data.tar.gz: 5c1a8c551f09e46857720493b9495fe499778d27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20827e3e37d7360508c52b49d3f4ccfb0b034a647656088c56f9aedd1015794ce766a6069b3b48fd18285461488de9bec764753e141752156c354b3c91e3fe5a
|
7
|
+
data.tar.gz: aae01b065bf04def5d836cfc18c2b3ada4d8c8210f23d2b26796d32cffbfaebd2c0e20b5bad4a69e2cd5dc68e243c04921cdbe1587c3ae0560881c0238bbee75
|
data/lib/bio-gadget/peak.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'mkfifo'
|
2
|
+
require 'parallel'
|
3
|
+
|
1
4
|
module Bio
|
2
5
|
class Gadget < Thor
|
3
6
|
|
@@ -24,6 +27,7 @@ DESC
|
|
24
27
|
fp.close
|
25
28
|
}
|
26
29
|
|
30
|
+
chr2exon = Hash.new
|
27
31
|
open("| grep exon #{gtf}").each { |line|
|
28
32
|
cols = line.rstrip.split(/\t/)
|
29
33
|
oid = cols[8].match(/oId \"([^\"]+)/).to_a[1]
|
@@ -33,35 +37,56 @@ DESC
|
|
33
37
|
str = cols[6]
|
34
38
|
start = cols[3].to_i
|
35
39
|
stop = cols[4].to_i
|
36
|
-
|
40
|
+
chr2exon[chr] = Array.new unless chr2exon.key?(chr)
|
41
|
+
chr2exon[chr].push([str, oid, exn, start, stop])
|
42
|
+
}
|
43
|
+
|
44
|
+
fifopath = mytemppath('fifo-')
|
45
|
+
File.mkfifo(fifopath)
|
46
|
+
|
47
|
+
pid = Kernel.fork {
|
48
|
+
exec "cat #{fifopath}"
|
49
|
+
}
|
50
|
+
|
51
|
+
fp = open(fifopath, 'w')
|
52
|
+
Parallel.each(chr2exon.keys,
|
53
|
+
:in_processes => Parallel.processor_count) { |chr|
|
37
54
|
#
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
tmppos2val[b] == tmppos2val[a] ? (str == '+' ? (a <=> b) : (b <=> a)) : (tmppos2val[b] <=> tmppos2val[a])
|
55
|
+
chr2exon[chr].each { |str, oid, exn, start, stop|
|
56
|
+
#
|
57
|
+
peak = ''
|
58
|
+
poss = Hash.new
|
59
|
+
nchrpos2val.each { |n, chrpos2val|
|
60
|
+
if chrpos2val.key?(chr)
|
61
|
+
pos2val = chrpos2val[chr]
|
62
|
+
tmppos2val = Hash.new
|
63
|
+
pos2val.each { |pos, val|
|
64
|
+
tmppos2val[pos] = val if start <= pos && pos <= stop
|
49
65
|
}
|
50
|
-
|
51
|
-
|
52
|
-
|
66
|
+
if tmppos2val.size > 0
|
67
|
+
tmpposs = tmppos2val.keys.sort { |a, b|
|
68
|
+
tmppos2val[b] == tmppos2val[a] ? (str == '+' ? (a <=> b) : (b <=> a)) : (tmppos2val[b] <=> tmppos2val[a])
|
69
|
+
}
|
70
|
+
tmppos = tmpposs[0]
|
71
|
+
# puts "#{n} | #{chr}:#{start}-#{stop} #{str} | #{tmpposs}"
|
72
|
+
poss[tmppos] = poss.key?(tmppos) ? poss[tmppos]+1 : 1
|
73
|
+
end
|
53
74
|
end
|
75
|
+
}
|
76
|
+
if poss.size > 0
|
77
|
+
peaks = poss.keys.sort { |a, b|
|
78
|
+
poss[b] == poss[a] ? (str == '+' ? (a <=> b) : (b <=> a)) : (poss[b] <=> poss[a])
|
79
|
+
}
|
80
|
+
peak = peaks[0]
|
54
81
|
end
|
82
|
+
#
|
83
|
+
fp.syswrite([oid, exn, peak].join("\t") + "\n")
|
55
84
|
}
|
56
|
-
if poss.size > 0
|
57
|
-
peaks = poss.keys.sort { |a, b|
|
58
|
-
poss[b] == poss[a] ? (str == '+' ? (a <=> b) : (b <=> a)) : (poss[b] <=> poss[a])
|
59
|
-
}
|
60
|
-
peak = peaks[0]
|
61
|
-
end
|
62
85
|
#
|
63
|
-
puts [oid, exn, peak].join("\t")
|
64
86
|
}
|
87
|
+
fp.close
|
88
|
+
|
89
|
+
Process.waitall
|
65
90
|
|
66
91
|
end
|
67
92
|
|
data/lib/bio-gadget/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bio-gadget
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shintaro Katayama
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|