def test_undirected_SNV(self): snv = { "TYPE": "SNV", "REGION": "CODING", "IMPACT": { "SNV_TYPE": "ANY", "START": "ANY" }, "ZYGOSITY": "HETEROZYGOUS" } snv = SNV(snv, self.negative_transcript).get_vcf_row()
def test_directed_SNV_exists_missense(self): snv = { "TYPE": "SNV", "REGION": "CODING", "IMPACT": { "SNV_TYPE": "MISSENSE", "START": 72121517 }, "ZYGOSITY": "HETEROZYGOUS" } snv = SNV(snv, self.positive_transcript)
def test_undirected_SNV_stoploss_exists(self): snv = { "TYPE": "SNV", "REGION": "CODING", "IMPACT": { "SNV_TYPE": "STOPLOSS", "START": "ANY" }, "ZYGOSITY": "HETEROZYGOUS" } snv = SNV(snv, self.negative_transcript).get_vcf_row() self.assertIn(snv['pos'], ["64048166", "64048167", "64048168"])
def test_directed_SNV_stoploss_false(self): snv = { "TYPE": "SNV", "REGION": "CODING", "IMPACT": { "SNV_TYPE": "STOPLOSS", "START": 64048164 }, "ZYGOSITY": "HETEROZYGOUS" } with self.assertRaises(Exception): snv = SNV(snv, self.negative_transcript)
def test_directed_SNV_not_exists_missense(self): snv = { "TYPE": "SNV", "REGION": "CODING", "IMPACT": { "SNV_TYPE": "MISSENSE", "START": 64048502 }, "ZYGOSITY": "HETEROZYGOUS" } with self.assertRaises(Exception): snv = SNV(snv, self.negative_transcript)
def test_wrong_type_impact(self): snv = { "TYPE": "SNV", "REGION": "INTRONIC", "IMPACT": { "SNV_TYPE": "WRONG", "START": "ANY" }, "ZYGOSITY": "HETEROZYGOUS" } with self.assertRaises(ValueError): SNV(snv, self.transcript)
def test_directed_SNV_false(self): snv = { "TYPE": "SNV", "REGION": "CODING", "IMPACT": { "SNV_TYPE": "NONSENSE", "START": 72121517 }, "ZYGOSITY": "HETEROZYGOUS" } with self.assertRaises(Exception): snv = SNV(snv, self.positive_transcript)
def test_non_coding_incorrect_impact(self): snv = { "TYPE": "SNV", "REGION": "INTRONIC", "IMPACT": { "SNV_TYPE": "MISSENSE", "START": 72121999 }, "ZYGOSITY": "HETEROZYGOUS" } with self.assertRaises(ValueError): snv = SNV(snv, self.positive_transcript)
def test_directed_SNV_exists_SYNONYMOUS(self): snv = { "TYPE": "SNV", "REGION": "CODING", "IMPACT": { "SNV_TYPE": "SYNONYMOUS", "START": 64048502 }, "ZYGOSITY": "HETEROZYGOUS" } snv = SNV(snv, self.negative_transcript).get_vcf_row() self.assertEqual(snv['ref'], "C") self.assertIn(snv['alt'], ["A", "G", "T"])
def test_directed_SNV_exists_nonsense(self): snv = { "TYPE": "SNV", "REGION": "CODING", "IMPACT": { "SNV_TYPE": "NONSENSE", "START": 64048519 }, "ZYGOSITY": "HETEROZYGOUS" } snv = SNV(snv, self.negative_transcript).get_vcf_row() self.assertEqual(snv['ref'], "C") self.assertEqual(snv['alt'], "A")
def test_directed_SNV_exists_single_replacement(self): snv = { "TYPE": "SNV", "REGION": "CODING", "IMPACT": { "SNV_TYPE": "G", "START": 64048520 }, "ZYGOSITY": "HETEROZYGOUS" } snv = SNV(snv, self.negative_transcript).get_vcf_row() self.assertEqual(snv['ref'], "C") self.assertEqual(snv['alt'], "G")
def test_basic_non_coding(self): snv = { "TYPE": "SNV", "REGION": "INTRONIC", "IMPACT": { "SNV_TYPE": "A", "START": "ANY" }, "ZYGOSITY": "HETEROZYGOUS" } snv = SNV(snv, self.positive_transcript) row = snv.get_vcf_row() self.assertEqual(row["alt"], "A")
class MutationMethods(unittest.TestCase): time.sleep(1) XKR8_uid = get_all_transcripts("XKR8", "grch38")[0]["qualifiers"]["uid"] transcript = Transcript(XKR8_uid, "grch38") snv = { "TYPE": "SNV", "REGION": "INTRONIC", "IMPACT": { "SNV_TYPE": "A", "START": "ANY" }, "ZYGOSITY": "HETEROZYGOUS" } snv = SNV(snv, transcript) # test 3 def test_nonsense_exists(self): self.assertEqual(self.snv.nonsense_mutation("TAT", 2), "A") # test 4 def test_nonsense_not_exists(self): self.assertFalse(self.snv.nonsense_mutation("TAT", 1)) # test 5 def test_misssense_false(self): self.assertFalse(self.snv.missense_mutation("TAT", 2)) # test 6 def test_misssense_exists(self): self.assertIn(self.snv.missense_mutation("CAC", 2), ["G", "A"]) # test 7 def test_synonymous_exists(self): self.assertFalse(self.snv.synonymous_mutation("TGG", 2)) # test 8 def test_synonymous_false(self): self.assertEqual(self.snv.synonymous_mutation("CAA", 2), "G") # test 9 def test_any_mutation(self): self.assertIn(self.snv.any_mutation("CAA", 2), ["G", "C", "T"]) # test 10 def test_stoploss(self): self.assertIn(self.snv.stoploss_mutation("TAG", 2), ["C", "T"]) # test 11 def test_stoploss_not_valid(self): self.assertFalse(self.snv.stoploss_mutation("GGA", 2))
def test_directed_SNV_stoploss_exists(self): snv = { "TYPE": "SNV", "REGION": "CODING", "IMPACT": { "SNV_TYPE": "STOPLOSS", "START": 64048166 }, "ZYGOSITY": "HETEROZYGOUS" } snv = SNV(snv, self.negative_transcript).get_vcf_row() self.assertEqual(snv['ref'], "C") self.assertIn(snv['alt'], ["A", "G"]) self.assertEqual(snv['pos'], "64048166")
def test_basic_non_coding_exact(self): snv = { "TYPE": "SNV", "REGION": "INTRONIC", "IMPACT": { "SNV_TYPE": "A", "START": 72122000 }, "ZYGOSITY": "HETEROZYGOUS" } row = SNV(snv, self.positive_transcript).get_vcf_row() self.assertEqual(row["pos"], "72122000") self.assertEqual(row["ref"], "C") self.assertEqual(row["alt"], "A")
def make_variant(self, var, transcript): if var == "None": return None var_type = var["TYPE"] if var_type == "SNV": variant = SNV(var, transcript) elif var_type == "INDEL": variant = Indel(var, transcript) elif var_type == "STR": variant = ShortTandemRepeat(var, transcript) elif var_type == "MEI": variant = MEI(var, transcript) elif var_type == "CLINVAR": variant = ClinVar(var, transcript) elif var_type == "CNV": variant = CopyNumberVariant(var, transcript) elif var_type == "CLINGEN": variant = CopyNumberVariant(var, transcript) else: variant = Variant(var, transcript) return variant