diff --git a/mutalyzer/Scheduler.py b/mutalyzer/Scheduler.py index e02744fc20a78b40d58f03f448ca957e70da17ef..f95f4ad60622d1cab1a3e01f6fafb00f9945938e 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 4ecba590e35343324bc106a1f1635835a8740a21..9485fe4071ee5a1538c271c432855a397d45aaa9 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 1cb4a7ac79c17a26b2bdc1449426c15ba687372f..4e4f87767df4797af31fce18bb60b64735d3f3d3 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 15f5dcf41e477dc1e9bc04317e2e83e83979f9da..c738a6731bace7a6ffffb8147d89a6a814abb22e 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 2499d016e8b79535d0b180023d5394ec46505d40..084cd96e9fffaecc29aec5427b61483efd031642 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 8ac6c91f08208c46ff8ce5b7b2e06d43ce7246c6..8f1ba62c56d46dec11c0a2ab02b6c5af95ba3c38 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): """