rbbt-util 5.20.8 → 5.20.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbbt/util/misc/omics.rb +72 -6
- data/test/rbbt/util/misc/test_omics.rb +68 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0dfd6e2f34b010a55ef904fe69c5d2f5d5c85363
|
4
|
+
data.tar.gz: b1b7fd04c9c94d2ec1a1c16cc4e883536f7a3500
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e75cedcb0a224bdd4eb897578ed8bd08ef68b6b0c2196fb37bc31855457045d93dffa82d271ccaa47285df1b6395cd87b97a190f49cd4943a934f0ee903abb4e
|
7
|
+
data.tar.gz: dbf542a2d17b31f6975e8d3bc1fa53739d1fcc95c9aa9f805b2609833aff38fb8d0f8851ee90791434066e9165eaab4f636632868cdab7916cb43a9dc56da8a2
|
data/lib/rbbt/util/misc/omics.rb
CHANGED
@@ -148,11 +148,11 @@ module Misc
|
|
148
148
|
if ref == '-'
|
149
149
|
res = '+' + m
|
150
150
|
else
|
151
|
-
res = '-' * ref.length
|
151
|
+
res = '-' * ref.length
|
152
152
|
res << m unless m == '-'
|
153
153
|
end
|
154
154
|
Log.debug{"Non-standard annotation: #{[ref, m]} (#{ muts }) => #{ res }"}
|
155
|
-
|
155
|
+
|
156
156
|
res
|
157
157
|
end
|
158
158
|
end
|
@@ -183,11 +183,11 @@ module Misc
|
|
183
183
|
if ref == '-'
|
184
184
|
res = '+' + m
|
185
185
|
else
|
186
|
-
res = '-' * ref.length
|
186
|
+
res = '-' * ref.length
|
187
187
|
res << m unless m == '-'
|
188
188
|
end
|
189
189
|
Log.debug{"Non-standard annotation: #{[ref, m]} (#{ muts }) => #{ res }"}
|
190
|
-
|
190
|
+
|
191
191
|
res
|
192
192
|
end
|
193
193
|
end
|
@@ -195,6 +195,72 @@ module Misc
|
|
195
195
|
[pos, muts]
|
196
196
|
end
|
197
197
|
|
198
|
+
|
199
|
+
def self.translate_dna_mutation_hgvs2rbbt(cds)
|
200
|
+
change = case
|
201
|
+
when cds =~ />/
|
202
|
+
cds.split(">").last
|
203
|
+
when cds =~ /del/
|
204
|
+
deletion = cds.split("del").last
|
205
|
+
case
|
206
|
+
when deletion =~ /^\d+$/
|
207
|
+
"-" * deletion.to_i
|
208
|
+
when deletion =~ /^[ACTG]+$/i
|
209
|
+
"-" * deletion.length
|
210
|
+
else
|
211
|
+
Log.debug "Unknown deletion: #{ deletion }"
|
212
|
+
deletion
|
213
|
+
end
|
214
|
+
when cds =~ /ins/
|
215
|
+
insertion = cds.split("ins").last
|
216
|
+
case
|
217
|
+
when insertion =~ /^\d+$/
|
218
|
+
"+" + "N" * insertion.to_i
|
219
|
+
when insertion =~ /^[NACTG]+$/i
|
220
|
+
"+" + insertion
|
221
|
+
else
|
222
|
+
Log.debug "Unknown insertion: #{insertion }"
|
223
|
+
insertion
|
224
|
+
end
|
225
|
+
else
|
226
|
+
Log.debug "Unknown change: #{cds}"
|
227
|
+
"?(" << cds << ")"
|
228
|
+
end
|
229
|
+
change
|
230
|
+
end
|
231
|
+
|
232
|
+
def self.translate_prot_mutation_hgvs2rbbt(mutation)
|
233
|
+
one_aa_code = THREE_TO_ONE_AA_CODE.values
|
234
|
+
one_aa_code << "X" << "B" << "Z" << "J" << "*" << "?"
|
235
|
+
one_aa_code_re = one_aa_code*""
|
236
|
+
subs = Regexp.new("^[#{one_aa_code_re}]\\d+[#{one_aa_code_re}]")
|
237
|
+
f_aa = Regexp.new("^[#{one_aa_code_re}]\\d+")
|
238
|
+
mutation.sub!('p.', '')
|
239
|
+
mutation = case
|
240
|
+
when mutation =~ subs
|
241
|
+
mutation
|
242
|
+
when mutation =~ /fs/
|
243
|
+
mutation =~ f_aa
|
244
|
+
if Regexp.last_match(0).nil?
|
245
|
+
Log.debug "Unknown Frameshift: #{mutation}"
|
246
|
+
nil
|
247
|
+
else
|
248
|
+
Regexp.last_match(0) + "Frameshift"
|
249
|
+
end
|
250
|
+
when mutation =~ /ins|del|>/
|
251
|
+
mutation =~ f_aa
|
252
|
+
if Regexp.last_match(0).nil?
|
253
|
+
Log.debug "Unknown Indel"
|
254
|
+
nil
|
255
|
+
else
|
256
|
+
Regexp.last_match(0) + "Indel"
|
257
|
+
end
|
258
|
+
else
|
259
|
+
Log.debug "Unknown change: #{mutation}"
|
260
|
+
nil
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
198
264
|
def self.IUPAC_to_base(iupac)
|
199
265
|
IUPAC2BASE[iupac]
|
200
266
|
end
|
@@ -286,7 +352,7 @@ module Misc
|
|
286
352
|
pos2 = f2.pos
|
287
353
|
|
288
354
|
sline2, schr2, sstart2, seend2, srest2 = line2, chr2, start2, eend2, rest2
|
289
|
-
while chr1 == chr2 and ((start1 <= eend2 and eend1 >= start2))
|
355
|
+
while chr1 == chr2 and ((start1 <= eend2 and eend1 >= start2))
|
290
356
|
out.puts line1 + "\t" + line2
|
291
357
|
if f2.eof?
|
292
358
|
chr2 = 'next2'
|
@@ -294,7 +360,7 @@ module Misc
|
|
294
360
|
line2, chr2, start2, eend2, rest2 = intersect_streams_read(f2,sep)
|
295
361
|
end
|
296
362
|
end
|
297
|
-
line2, chr2, start2, eend2, rest2 = sline2, schr2, sstart2, seend2, srest2
|
363
|
+
line2, chr2, start2, eend2, rest2 = sline2, schr2, sstart2, seend2, srest2
|
298
364
|
f2.seek(pos2)
|
299
365
|
move = 1
|
300
366
|
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../test_helper')
|
2
|
+
require 'test/unit'
|
3
|
+
require 'rbbt/util/misc/omics'
|
4
|
+
|
5
|
+
class TestMiscOmics < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_translate_dna_mutation_hgvs2rbbt
|
8
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.395G>A"), "A"
|
9
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.1-124C>T"), "T"
|
10
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.639+6T>A"), "A"
|
11
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.3386-2A>G"), "G"
|
12
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.4090_4091insT"), "+T"
|
13
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.533_534insGGGG"), "+GGGG"
|
14
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.4249_4249delC"), "-"
|
15
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.464-2_465delAGTG"), "----"
|
16
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.209+1delGTAA"), "----"
|
17
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.371_397del27"), "---------------------------"
|
18
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.1359+2_1359+11delTTAGAAGAGC"), "----------"
|
19
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.ins?"), "?"
|
20
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.?_?ins?"), "?"
|
21
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.184_185ins?"), "?"
|
22
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.?_?ins57"), "+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
|
23
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.?_?insCT"), "+CT"
|
24
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.?_?del?"), "?"
|
25
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.?"), "?(c.?)"
|
26
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.(312)?"), "?(c.(312)?)"
|
27
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.(1669_1671)>?"), "?"
|
28
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.1050-?"), "?(c.1050-?)"
|
29
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.(1347_1540)?"), "?(c.(1347_1540)?)"
|
30
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.1-?_850+?del"), "c.1-?_850+?"
|
31
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.2289_?del(7236)"), "(7236)"
|
32
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.(3916_3927)del?"), "?"
|
33
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.1705_?del?"), "?"
|
34
|
+
assert_equal Misc.translate_dna_mutation_hgvs2rbbt("c.1-?_421+?del"), "c.1-?_421+?"
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_translate_prot_mutation_hgvs2rbbt
|
38
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.E255K"), "E255K"
|
39
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.E279Z"), "E279Z"
|
40
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.R132?"), "R132?"
|
41
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.*757?"), "*757?"
|
42
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.A2216>?"), "A2216Indel"
|
43
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.M552_W557>Z"), "M552Indel"
|
44
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.T1151_L1152insT"), "T1151Indel"
|
45
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.N771_P772ins?"), "N771Indel"
|
46
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.T310_?insKAAQRGA"), "T310Indel"
|
47
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.D579del"), "D579Indel"
|
48
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.E746_A750delELREA"), "E746Indel"
|
49
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.P14fs*?"), "P14Frameshift"
|
50
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.*588fs?"), "*588Frameshift"
|
51
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.?fs*(46_47)"), nil
|
52
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.(A443)fs*?"), nil
|
53
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.(574_1542)fs*?"), nil
|
54
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.?fs"), nil
|
55
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.fs*?"), nil
|
56
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.?fs*?"), nil
|
57
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.(P1249)fs*?"), nil
|
58
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.?"), nil
|
59
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.WQQSYLD25?"), nil
|
60
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.(449_514)?"), nil
|
61
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("?"), nil
|
62
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.0?"), nil
|
63
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.?_?ins?"), nil
|
64
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.?_?insXXXX"), nil
|
65
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.(A775)ins?"), nil
|
66
|
+
assert_equal Misc.translate_prot_mutation_hgvs2rbbt("p.?del"), nil
|
67
|
+
end
|
68
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbbt-util
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.20.
|
4
|
+
version: 5.20.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
@@ -433,6 +433,7 @@ files:
|
|
433
433
|
- test/rbbt/util/misc/test_bgzf.rb
|
434
434
|
- test/rbbt/util/misc/test_lock.rb
|
435
435
|
- test/rbbt/util/misc/test_multipart_payload.rb
|
436
|
+
- test/rbbt/util/misc/test_omics.rb
|
436
437
|
- test/rbbt/util/misc/test_pipes.rb
|
437
438
|
- test/rbbt/util/simpleopt/test_get.rb
|
438
439
|
- test/rbbt/util/simpleopt/test_parse.rb
|
@@ -495,6 +496,7 @@ test_files:
|
|
495
496
|
- test/rbbt/util/misc/test_multipart_payload.rb
|
496
497
|
- test/rbbt/util/misc/test_bgzf.rb
|
497
498
|
- test/rbbt/util/misc/test_pipes.rb
|
499
|
+
- test/rbbt/util/misc/test_omics.rb
|
498
500
|
- test/rbbt/util/test_concurrency.rb
|
499
501
|
- test/rbbt/util/test_R.rb
|
500
502
|
- test/rbbt/util/log/test_progress.rb
|