def __init__(self, var_template: dict, transcript: Transcript): try: Variant.__init__(self, var_template, transcript) self.element = self.impact["ELEMENT"] self.pos = self.impact["START"] self.check_mei() # make mei region_range = self.get_region_range() if self.pos == "ANY": # pick any position within the ranges self.pos = random.choice(region_range) self.id = "_".join(["mei", str(self.pos+1), self.element]) self.ref = self.get_seq(self.transcript.chrom, self.pos, self.pos+1, self.transcript.genome) self.alt = "<INS:MEI:"+self.element+">" self.zygosity = var_template["ZYGOSITY"] except Exception as e: raise(e)
def __init__(self, var_template: dict, transcript: Transcript): try: Variant.__init__(self, var_template, transcript) self.chrom = self.transcript.get_chr() self.pos = self.impact["START"] self.end = self.impact["END"] self.copy_change = self.impact["COPY_CHANGE"] self.check_cnv() self.ref = self.get_anchor_position() if self.copy_change < 0: # deletion self.alt = "<DEL>" else: self.alt = "<DUP:TANDEM>" self.id = "CNV_" + str(self.pos) except Exception as e: raise (e)
def test_bad_formatting(self): variant = { "TYPE": "INDEL", "REGION": "INTRONIC", "CHECK": -8332, "ZYGOSITY": "HETEROZYGOUS" } with self.assertRaises(KeyError): Variant(variant, self.transcript)
def __init__(self, var_template: dict, transcript: Transcript): try: Variant.__init__(self, var_template, transcript) self.id = self.impact["CLINVAR_ID"] clinvar = get_clinvar(self.transcript.get_genome(), self.id) if clinvar != []: self.pos = clinvar['start'] self.ref = clinvar['qualifiers']['ref'] self.alt = clinvar['qualifiers']['alt'] else: # no valid clinvar result raise ValueError("type must be CLINVAR_ID") if self.type != "CLINVAR": # check type raise ValueError("type must be CLINVAR") if (len(self.ref) > 1): # check location self.check_location(self.pos, self.pos + len(self.ref)) elif (len(self.ref) == 1): self.check_location(self.pos) except Exception as e: raise (e)
def test_region_pass(self): variant = { "TYPE": "INDEL", "REGION": "2:126-245", "IMPACT": { "INDEL_AMOUNT": -400, "LOCATION": "ANY" }, "ZYGOSITY": "HETEROZYGOUS" } good_var = Variant(variant, self.transcript)
def test_type_fail(self): variant = { "TYPE": "TEST", "REGION": "INTRONIC", "IMPACT": { "INDEL_AMOUNT": -400, "LOCATION": "ANY" }, "ZYGOSITY": "HETEROZYGOUS" } with self.assertRaises(ValueError): Variant(variant, self.transcript)
def test_region_fail2(self): variant = { "TYPE": "INDEL", "REGION": "2:126-245a", "IMPACT": { "INDEL_AMOUNT": -400, "LOCATION": "ANY" }, "ZYGOSITY": "HETEROZYGOUS" } with self.assertRaises(ValueError): Variant(variant, self.transcript)
def __init__(self, var_template, transcript: Transcript): """ initialize snv variant """ try: Variant.__init__(self, var_template, transcript) self.snv_type = self.impact["SNV_TYPE"] self.pos = self.impact["START"] self.check_snv() if self.region == "CODING": if self.pos == "ANY": var_dict = self.get_random_coding_SNV() else: var_dict = self.get_directed_coding_SNV(self.pos) else: var_dict = self.get_non_coding_SNV( ) # just make change to this if var_dict == False: raise Exception("Specified SNV cannot be made") self.pos = var_dict["pos"] self.ref = str(var_dict["ref"]) self.alt = str(var_dict["alt"]) except Exception as e: raise (e)
def __init__(self, var_template, transcript: Transcript): try: Variant.__init__(self, var_template, transcript) self.chrom = self.transcript.get_chr() STR = get_str(self.transcript.get_genome(), int(self.impact["STR_ID"])) self.start = int(STR["start"]) self.end = int(STR["end"]) self.length = self.impact["LENGTH"] self.motif = STR["qualifiers"]["motif"] self.check_str() # get deletion/insersion if self.length > 0: # insersion var_dict = self.get_expantion() if self.length < 0: # deletion var_dict = self.get_retraction() self.pos = var_dict["pos"] self.ref = str(var_dict["ref"]) self.alt = str(var_dict["alt"]) self.id = "_".join(["str", str(self.pos), str(self.length)]) except Exception as e: raise (e)
class VariantMethodTests(unittest.TestCase): XKR8_uid = get_all_transcripts("XKR8", "grch38")[0]["qualifiers"]["uid"] transcript = Transcript(XKR8_uid, "grch38") good_var = { "TYPE": "INDEL", "REGION": "INTRONIC", "IMPACT": { "INDEL_AMOUNT": -100, "LOCATION": "ANY" }, "ZYGOSITY": "HETEROZYGOUS" } good_var = Variant(good_var, transcript) def test_get_type(self): self.assertEqual(self.good_var.get_type(), "INDEL") def test_get_region(self): self.assertEqual(self.good_var.get_region(), "INTRONIC")
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