# pylint: disable=W0621,C0114,C0116,W0212,W0613
from typing import Any
import pytest
from dae.person_sets import PersonSetCollection
from dae.studies.study import GenotypeData
from dae.utils.regions import Region
from dae.variants.family_variant import FamilyVariant
from studies.query_transformer import QueryTransformer
from studies.response_transformer import ResponseTransformer
from studies.study_wrapper import WDAEStudy
[docs]
@pytest.fixture(scope="module")
def fv1(t4c8_study_1: GenotypeData) -> FamilyVariant:
vs = list(t4c8_study_1.query_variants(
regions=[Region("chr1", 90, 90)],
family_ids=["f1.3"],
))
assert len(vs) == 1
return vs[0]
[docs]
@pytest.fixture(scope="module")
def fv2(t4c8_study_1: GenotypeData) -> FamilyVariant:
vs = list(t4c8_study_1.query_variants(
regions=[Region("chr1", 122, 200)],
family_ids=["f1.3"],
))
assert len(vs) == 1
return vs[0]
[docs]
@pytest.fixture(scope="module")
def phenotype_person_sets(t4c8_study_1: GenotypeData) -> PersonSetCollection:
return t4c8_study_1.person_set_collections["phenotype"]
[docs]
@pytest.mark.parametrize(
"column,expected",
[
("family", ["f1.3"]),
("location", ["chr1:90", "chr1:91"]),
("variant", ["sub(G->C)", "ins(A)"]),
("position", [90, 90]),
("reference", ["G", "G"]),
("alternative", ["C", "GA"]),
("family_person_attributes", [
"mom:F:unaffected;"
"dad:M:unaffected;"
"prb:F:affected;"
"sib:F:unaffected"]),
("family_person_ids", ["mom3;dad3;p3;s3"]),
("carrier_person_ids", ["mom3;p3", "dad3;s3"]),
("carrier_person_attributes", [
"mom:F:unaffected;prb:F:affected",
"dad:M:unaffected;sib:F:unaffected"]),
("genotype", ["0/1;0/2;0/1;0/2"]),
("best_st", ["1111/1010/0101"]),
("inheritance_type", ["mendelian", "mendelian"]),
("is_denovo", [False, False]),
],
)
def test_special_attr_columns(
fv1: FamilyVariant, column: str, expected: Any,
) -> None:
transformer = ResponseTransformer.SPECIAL_ATTRS[column]
result = transformer(fv1)
assert result == expected
[docs]
@pytest.mark.parametrize(
"column,expected",
[
("family_phenotypes", [
"unaffected:unaffected:autism:unaffected"]),
("carrier_phenotypes", [
"unaffected:autism",
"unaffected:unaffected"]),
],
)
def test_phenotype_attr_columns(
fv1: FamilyVariant,
phenotype_person_sets: PersonSetCollection,
column: str, expected: list[str],
) -> None:
transformer = ResponseTransformer.PHENOTYPE_ATTRS[column]
result = transformer(fv1, phenotype_person_sets)
assert result == expected
[docs]
def test_inheritance_type_column(fv2: FamilyVariant) -> None:
transformer = ResponseTransformer.SPECIAL_ATTRS["inheritance_type"]
result = transformer(fv2)
print(result)
assert result == ["denovo", "mendelian"]
[docs]
def test_is_denovo(fv2: FamilyVariant) -> None:
transformer = ResponseTransformer.SPECIAL_ATTRS["is_denovo"]
result = transformer(fv2)
print(result)
assert result == [True, False]