From 8300b90f3ee88e92e4d43263e6826a58453dff7d Mon Sep 17 00:00:00 2001 From: Martijn Vermaat <martijn@vermaat.name> Date: Thu, 12 Jul 2012 15:46:25 +0000 Subject: [PATCH] Support non-coding transcripts in position converter (#102) git-svn-id: https://humgenprojects.lumc.nl/svn/mutalyzer/trunk@573 eb6bd6ab-9ccd-42b9-aceb-e2899b4a52f1 --- mutalyzer/Scheduler.py | 4 ++-- mutalyzer/mapping.py | 4 ++-- mutalyzer/services/rpc.py | 2 +- mutalyzer/website.py | 4 ++-- tests/test_mapping.py | 19 ++++++++++++++++--- tests/test_services_soap.py | 2 +- 6 files changed, 24 insertions(+), 11 deletions(-) diff --git a/mutalyzer/Scheduler.py b/mutalyzer/Scheduler.py index e02744fc..f95f4ad6 100644 --- a/mutalyzer/Scheduler.py +++ b/mutalyzer/Scheduler.py @@ -505,13 +505,13 @@ Mutalyzer batch checker.""" % url) variant = converter.correctChrVariant(variant) #TODO: Parse the variant and check for c or g. This is ugly - if not(":c." in variant or ":g." in variant) : + if not(":c." in variant or ":n." in variant or ":g." in variant) : #Bad name grammar = Grammar(O) grammar.parse(variant) #if - if ":c." in variant : + if ":c." in variant or ":n." in variant : # Do the c2chrom dance variant = converter.c2chrom(variant) # NOTE: diff --git a/mutalyzer/mapping.py b/mutalyzer/mapping.py index 4ecba590..9485fe40 100644 --- a/mutalyzer/mapping.py +++ b/mutalyzer/mapping.py @@ -281,7 +281,7 @@ class Converter(object) : 2. Position in I{g.} notation @rtype: triple (integer, integer, integer) """ - if Type == 'c' : + if Type in 'cn' : if Loc.IVSLoc: ivs_number = int(Loc.IVSLoc.IVSNumber) if ivs_number < 1 or ivs_number > C.numberOfIntrons(): @@ -698,7 +698,7 @@ class Converter(object) : #Check if n or c type info = self.crossmap.info() - if info[0] == '1' and info[1] == info[2] : + if info[0] == 1 and info[1] == info[2] : mtype = 'n' else : mtype = 'c' diff --git a/mutalyzer/services/rpc.py b/mutalyzer/services/rpc.py index 1cb4a7ac..4e4f8776 100644 --- a/mutalyzer/services/rpc.py +++ b/mutalyzer/services/rpc.py @@ -568,7 +568,7 @@ class MutalyzerService(ServiceBase): converter = Converter(build, O) variant = converter.correctChrVariant(variant) - if "c." in variant : + if "c." in variant or "n." in variant: result = [converter.c2chrom(variant)] elif "g." in variant : result = converter.chrom2c(variant, "list", gene=gene) diff --git a/mutalyzer/website.py b/mutalyzer/website.py index 15f5dcf4..c738a673 100644 --- a/mutalyzer/website.py +++ b/mutalyzer/website.py @@ -584,12 +584,12 @@ class PositionConverter: variant = converter.correctChrVariant(variant) if variant: - if not(":c." in variant or ":g." in variant): + if not(":c." in variant or ":n." in variant or ":g." in variant): #Bad name grammar = Grammar(output) grammar.parse(variant) - if ":c." in variant: + if ":c." in variant or ":n." in variant: # Do the c2chrom dance variant = converter.c2chrom(variant) diff --git a/tests/test_mapping.py b/tests/test_mapping.py index 2499d016..084cd96e 100644 --- a/tests/test_mapping.py +++ b/tests/test_mapping.py @@ -37,7 +37,20 @@ class TestConverter(): assert 'NM_003002.2:c.274G>T' in coding # Fix for r536: disable the -u and +d convention. #assert 'NR_028383.1:c.1-u2173C>A' in coding - assert 'NR_028383.1:c.-2173C>A' in coding + assert 'NR_028383.1:n.-2173C>A' in coding + + def test_converter_non_coding(self): + """ + Test with variant on non-coding transcript. + """ + converter = self._converter('hg19') + genomic = converter.c2chrom('NR_028383.1:n.-2173C>A') + assert_equal(genomic, 'NC_000011.9:g.111959695G>T') + coding = converter.chrom2c(genomic, 'list') + assert 'NM_003002.2:c.274G>T' in coding + # Fix for r536: disable the -u and +d convention. + #assert 'NR_028383.1:c.1-u2173C>A' in coding + assert 'NR_028383.1:n.-2173C>A' in coding def test_converter_compound(self): """ @@ -48,7 +61,7 @@ class TestConverter(): assert_equal(genomic, 'NC_000011.9:g.[111959695G>T;111959699A>G]') coding = converter.chrom2c(genomic, 'list') assert 'NM_003002.2:c.[274G>T;278A>G]' in coding - assert 'NR_028383.1:c.[-2173C>A;-2177T>C]' in coding + assert 'NR_028383.1:n.[-2173C>A;-2177T>C]' in coding def test_hla_cluster(self): """ @@ -76,7 +89,7 @@ class TestConverter(): #assert 'NM_001145134.1:c.-138-u21_60del123456789' in coding #assert 'NR_021492.1:c.1-u5170_1-u4338del123456789' in coding assert 'NM_001145134.1:c.-159_60del123456789' in coding - assert 'NR_021492.1:c.-5170_-4338del123456789' in coding + assert 'NR_021492.1:n.-5170_-4338del123456789' in coding def test_S_Venkata_Suresh_Kumar(self): """ diff --git a/tests/test_services_soap.py b/tests/test_services_soap.py index 8ac6c91f..8f1ba62c 100644 --- a/tests/test_services_soap.py +++ b/tests/test_services_soap.py @@ -152,7 +152,7 @@ class TestServicesSoap(): assert_equal(type(r.string), list) # Fix for r536: disable the -u and +d convention. #assert 'XM_001715131.2:c.1155+d19483A>G' in r.string - assert 'XM_001715131.2:c.*19483A>G' in r.string + assert 'XM_001715131.2:n.*19483A>G' in r.string def test_gettranscriptsbygenename_valid(self): """ -- GitLab