def test_comp_het_one_parent(): mom._i = 0 kid._i = 1 kid.dad = None kid.mom = None efam = EvalFamily(Family([mom, kid], 'pair_mom')) efam.gt_types = [Family.HET] * 2 res = efam.comp_het_pair([Family.HET] * 2, ["A/C"] * 2, [Family.HET] * 2, ["A/C"] * 2, [False] * 2, [False] * 2, "A", "C", "A", "C") assert res['candidate'] assert res['priority'] == 3, res['priority'] res = efam.comp_het_pair([Family.HOM_REF, Family.HET] * 2, ["A/A", "A/C"], [Family.HET, Family.HET], ["A/C"] * 2, [False] * 2, [False] * 2, "A", "C", "A", "C") assert res['candidate'] assert res['priority'] == 2, res['priority'] res = efam.comp_het_pair([Family.HOM_REF, Family.HOM_REF] * 2, ["A/A", "A/A"], [Family.HET, Family.HET], ["A/C"] * 2, [False] * 2, [False] * 2, "A", "C", "A", "C") assert not res['candidate']
def test_comp_het_one_parent_2kids(): """ test that we cant have a candidate when a parent is HOM_REF at both sites. """ mom._i = 0 kid._i = 1 kid2._i = 2 kid.dad = None kid.mom = None kid.mom = mom efam = EvalFamily(Family([mom, kid, kid2], '2kids')) efam.gt_types = [Family.HOM_REF, Family.HET, Family.HET] res = efam.comp_het_pair([Family.HOM_REF, Family.HET, Family.HET], ["T/T", "T/C", "T/C"], [Family.HOM_REF, Family.HET, Family.HET], ["A/A", "A/C", "A/C"], [False] * 3, [False] * 3, "T", "C", "A", "C", fast_mode=False, allow_unaffected=True) assert not res['candidate'], res
def test_comphet_pattern(): fam = make_fam2() efam = EvalFamily(fam) assert [f.affected for f in efam.subjects] == [False, True, True, False, True, False] gt_types1 = [Family.HOM_REF, Family.HET, Family.HET, Family.HOM_REF, Family.HET, Family.HOM_REF] gt_types2 = [Family.HOM_REF, Family.HET, Family.HET, Family.HOM_REF, Family.HET, Family.HOM_REF] efam.gt_types = gt_types1 gt_bases1 = ["A/C", "A/A", "A/C", "A/A", "A/A", "A/C", "A/A"] gt_bases2 = ["A/C", "A/A", "A/C", "A/A", "A/A", "A/C", "A/A"] res = efam.comp_het_pair(gt_types1, gt_bases1, gt_types2, gt_bases2)
def test_comp_het_singleton(): kid = Sample('kid', affected=True) efam = EvalFamily(Family([kid], 'singleton')) efam.gt_types = [Family.HET] res = efam.comp_het_pair([Family.HET], ["A/C"], [Family.HET], ["A/C"], [False], [False], "A", "C", "A", "C") assert res['candidate'] assert res['priority'] == 2, res
def test_comp_het_singleton(): kid = Sample('kid', affected=True) efam = EvalFamily(Family([kid], 'singleton')) efam.gt_types = [Family.HET] res = efam.comp_het_pair([Family.HET], ["A/C"], [Family.HET], ["A/C"], [False], [False], "A", "C", "A", "C") assert res['candidate'] assert res['priority'] == 2, res
def test_comp_het_all_hets(): efam = EvalFamily(Family([dad, mom, kid], 'triox')) efam.gt_types = [Family.HET] * 3 res = efam.comp_het_pair([Family.HET] * 3, ["A/C"] * 3, [Family.HET] * 3, ["A/C"] * 3, [False] * 3, [False] * 3, "A", "C", "A", "C") assert res['candidate'] assert res['priority'] == 3
def test_comp_het_all_hets(): efam = EvalFamily(Family([dad, mom, kid], 'triox')) efam.gt_types = [Family.HET] * 3 res = efam.comp_het_pair([Family.HET] * 3, ["A/C"] * 3, [Family.HET] * 3, ["A/C"] * 3, [False] * 3, [False] * 3, "A", "C", "A", "C") assert res['candidate'] assert res['priority'] == 3
def test_comp_het_missing(): fam = make_fam1() efam = EvalFamily(fam) assert [f.affected for f in efam.subjects] == [False, False, True, False, False, False] gt_types1 = [Family.HOM_REF, Family.HET, Family.HET, Family.HOM_REF, Family.HET, Family.HOM_REF] gt_types2 = [Family.HET, Family.HOM_REF, Family.HET, Family.HOM_REF, Family.HOM_REF, Family.HOM_REF] gt_bases1 = ["A/A", "A/C", ".", "A/A", "A/A", "A/C", "A/A"] gt_bases2 = ["A/C", "A/A", "A/C", "A/A", "A/A", "A/A", "A/A"] gt_phases = [False] * len(gt_bases2) efam.gt_types = gt_types1 res = efam.comp_het_pair(gt_types1, gt_bases1, gt_types2, gt_bases2, gt_phases, gt_phases, "A", "C", "A", "C") assert res['candidate'] is False, res
def test_comp_het_one_parent(): mom._i = 0 kid._i = 1 kid.dad = None kid.mom = None efam = EvalFamily(Family([mom, kid], 'pair_mom')) efam.gt_types = [Family.HET] * 2 res = efam.comp_het_pair([Family.HET] * 2, ["A/C"] * 2, [Family.HET] * 2, ["A/C"] * 2, [False] * 2, [False] * 2, "A", "C", "A", "C") assert res['candidate'] assert res['priority'] == 3, res['priority'] res = efam.comp_het_pair([Family.HOM_REF, Family.HET] * 2, ["A/A", "A/C"], [Family.HET, Family.HET], ["A/C"] * 2, [False] * 2, [False] * 2, "A", "C", "A", "C") assert res['candidate'] assert res['priority'] == 2, res['priority'] res = efam.comp_het_pair([Family.HOM_REF, Family.HOM_REF] * 2, ["A/A", "A/A"], [Family.HET, Family.HET], ["A/C"] * 2, [False] * 2, [False] * 2, "A", "C", "A", "C") assert not res['candidate']
def test_comphet_pattern(): fam = make_fam2() efam = EvalFamily(fam) assert [f.affected for f in efam.subjects] == [False, True, True, False, True, False] gt_types1 = [ Family.HOM_REF, Family.HET, Family.HET, Family.HOM_REF, Family.HET, Family.HOM_REF ] gt_types2 = [ Family.HOM_REF, Family.HET, Family.HET, Family.HOM_REF, Family.HET, Family.HOM_REF ] efam.gt_types = gt_types1 gt_bases1 = ["A/C", "A/A", "A/C", "A/A", "A/A", "A/C", "A/A"] gt_bases2 = ["A/C", "A/A", "A/C", "A/A", "A/A", "A/C", "A/A"] res = efam.comp_het_pair(gt_types1, gt_bases1, gt_types2, gt_bases2)
def test_comp_het_missing(): fam = make_fam1() efam = EvalFamily(fam) assert [f.affected for f in efam.subjects ] == [False, False, True, False, False, False] gt_types1 = [ Family.HOM_REF, Family.HET, Family.HET, Family.HOM_REF, Family.HET, Family.HOM_REF ] gt_types2 = [ Family.HET, Family.HOM_REF, Family.HET, Family.HOM_REF, Family.HOM_REF, Family.HOM_REF ] gt_bases1 = ["A/A", "A/C", ".", "A/A", "A/A", "A/C", "A/A"] gt_bases2 = ["A/C", "A/A", "A/C", "A/A", "A/A", "A/A", "A/A"] gt_phases = [False] * len(gt_bases2) efam.gt_types = gt_types1 res = efam.comp_het_pair(gt_types1, gt_bases1, gt_types2, gt_bases2, gt_phases, gt_phases, "A", "C", "A", "C") assert res['candidate'] is False, res
def test_comp_het_one_parent_2kids(): """ test that we cant have a candidate when a parent is HOM_REF at both sites. """ mom._i = 0 kid._i = 1 kid2._i = 2 kid.dad = None kid.mom = None kid.mom = mom efam = EvalFamily(Family([mom, kid, kid2], '2kids')) efam.gt_types = [Family.HOM_REF, Family.HET, Family.HET] res = efam.comp_het_pair( [Family.HOM_REF, Family.HET, Family.HET], ["T/T", "T/C", "T/C"], [Family.HOM_REF, Family.HET, Family.HET], ["A/A", "A/C", "A/C"], [False] * 3, [False] * 3, "T", "C", "A", "C", fast_mode=False, allow_unaffected=True) assert not res['candidate'], res