diff --git a/src/criteria/auto_criteria.py b/src/criteria/auto_criteria.py index 0add917..17b8de0 100644 --- a/src/criteria/auto_criteria.py +++ b/src/criteria/auto_criteria.py @@ -4,9 +4,9 @@ from src.api.annonars import AnnonarsClient from src.core.config import Config -from src.criteria.auto_ba1_bs1_bs2_pm2 import AutoBA1BS1BS2PM2 from src.criteria.auto_bp7 import AutoBP7 from src.criteria.auto_pm1 import AutoPM1 +from src.criteria.auto_pm2_ba1_bs1_bs2 import AutoPM2BA1BS1BS2 from src.criteria.auto_pm4_bp3 import AutoPM4BP3 from src.criteria.auto_pp2_bp1 import AutoPP2BP1 from src.criteria.auto_pp3_bp4 import AutoPP3BP4 @@ -100,7 +100,7 @@ def predict(self) -> Optional[ACMGResult]: # BA1, BS1, BS2, PM2 try: logger.info("Predicting BA1, BS1, BS2, and PM2 criteria.") - ba1bs1bs2pm2 = AutoBA1BS1BS2PM2(self.seqvar, variant_info.result, config=self.config) + ba1bs1bs2pm2 = AutoPM2BA1BS1BS2(self.seqvar, variant_info.result, config=self.config) ba1bs1bs2pm2_prediction, ba1bs1bs2pm2_comment = ba1bs1bs2pm2.predict() if not ba1bs1bs2pm2_prediction: logger.error("Failed to predict BA1, BS1, BS2, and PM2 criteria.") diff --git a/src/criteria/auto_ba1_bs1_bs2_pm2.py b/src/criteria/auto_pm2_ba1_bs1_bs2.py similarity index 98% rename from src/criteria/auto_ba1_bs1_bs2_pm2.py rename to src/criteria/auto_pm2_ba1_bs1_bs2.py index c91dd82..0a71b83 100644 --- a/src/criteria/auto_ba1_bs1_bs2_pm2.py +++ b/src/criteria/auto_pm2_ba1_bs1_bs2.py @@ -15,8 +15,8 @@ from src.utils import SeqVarTranscriptsHelper -class AutoBA1BS1BS2PM2: - """Predicts BA1, BS1, BS2, PM2 criteria for sequence variants.""" +class AutoPM2BA1BS1BS2: + """Predicts PM2, BA1, BS1, BS2 criteria for sequence variants.""" def __init__( self, @@ -271,10 +271,12 @@ def _check_zyg(self, seqvar: SeqVar, variant_data: VariantResult) -> bool: def predict(self) -> Tuple[Optional[BA1BS1BS2PM2], str]: """ - Predicts the BA1, BS1, BS2, PM2 criteria for the sequence variant. + Predicts the PM2, BA1, BS1, BS2 criteria for the sequence variant. Note: Rules: + PM2: Absent from controls allele frequency data. + BA1: Allele frequency is >5%. BS1: Allele frequency is between 1% and 5%. @@ -283,8 +285,6 @@ def predict(self) -> Tuple[Optional[BA1BS1BS2PM2], str]: (heterozygous), or X-linked (hemizygous) disorder, with full penetrance expected at an early age. - PM2: Absent from controls allele frequency data. - Returns: BA1BS1BS2PM2: The prediction result. """ @@ -311,8 +311,8 @@ def predict(self) -> Tuple[Optional[BA1BS1BS2PM2], str]: self.prediction.BS2 = True except AutoAcmgBaseException as e: - logger.error("Error occurred during BA1, BS1, BS2, PM2 prediction. Error: {}", e) - self.comment += f"An error occurred while predicting BA1, BS1, BS2, PM2 criteria: {e}" + logger.error("Error occurred during PM2, BA1, BS1, BS2 prediction. Error: {}", e) + self.comment += f"An error occurred while predicting PM2, BA1, BS1, BS2 criteria: {e}" self.prediction = None # Return the prediction result and explanation diff --git a/tests/integ/test_integ_ba1_bs1_bs2_pm2.py b/tests/integ/test_integ_pm2_ba1_bs1_bs2.py similarity index 87% rename from tests/integ/test_integ_ba1_bs1_bs2_pm2.py rename to tests/integ/test_integ_pm2_ba1_bs1_bs2.py index fc9518d..bcef33f 100644 --- a/tests/integ/test_integ_ba1_bs1_bs2_pm2.py +++ b/tests/integ/test_integ_pm2_ba1_bs1_bs2.py @@ -1,4 +1,4 @@ -"""Integration tests for `BA1`, `BS1`, `BS2`, `PM2` criteria using upstream server.""" +"""Integration tests for `PM2`, `BA1`, `BS1`, `BS2` criteria using upstream server.""" from typing import Tuple @@ -6,8 +6,8 @@ from src.auto_acmg import AutoACMG from src.core.config import Config -from src.criteria.auto_ba1_bs1_bs2_pm2 import AutoBA1BS1BS2PM2 from src.criteria.auto_criteria import AutoACMGCriteria +from src.criteria.auto_pm2_ba1_bs1_bs2 import AutoPM2BA1BS1BS2 from src.defs.annonars_variant import AnnonarsVariantResponse from src.defs.genome_builds import GenomeRelease from src.defs.seqvar import SeqVar @@ -23,9 +23,9 @@ # ("NM_000277.2(PAH):c.707-7A>T", GenomeRelease.GRCh37, [True, False, False, False]), # ("NM_000277.2(PAH):c.1242C>T", GenomeRelease.GRCh37, [False, True, True, False]), # ("NM_000277.2(PAH):c.1A>G", GenomeRelease.GRCh37, [False, False, False, True]), - ("NM_000277.2(PAH):c.503delA", GenomeRelease.GRCh37, [False, False, False, True]), - ("NM_000277.1(PAH):c.814G>T", GenomeRelease.GRCh37, [False, False, False, True]), - ("NM_000277.1(PAH):c.1162G>A", GenomeRelease.GRCh37, [False, False, False, True]), + ("NM_000277.2(PAH):c.503delA", GenomeRelease.GRCh37, [True, False, False, False]), + ("NM_000277.1(PAH):c.814G>T", GenomeRelease.GRCh37, [True, False, False, False]), + ("NM_000277.1(PAH):c.1162G>A", GenomeRelease.GRCh37, [True, False, False, False]), # ("NM_000277.1(PAH):c.722G>A", GenomeRelease.GRCh37, [False, False, False, True]), # ("NM_000277.2(PAH):c.735G>A", GenomeRelease.GRCh37, (True, False, True, False)), # ("NM_000314.6(PTEN):c.-1311T>C", GenomeRelease.GRCh37, (True, False, False, False)), @@ -70,7 +70,7 @@ # ("NM_000277.2(PAH):c.504C>A", GenomeRelease.GRCh37, (False, False, False, True)), ], ) -def test_ba1_bs1_bs2_pm2( +def test_pm2_ba1_bs1_bs2( variant_name: str, genome_release: GenomeRelease, expected_prediction: Tuple[bool, bool, bool, bool], @@ -84,15 +84,15 @@ def test_ba1_bs1_bs2_pm2( auto_acmg_criteria = AutoACMGCriteria(seqvar, config=config) variant_info = auto_acmg_criteria._get_variant_info(seqvar) assert isinstance(variant_info, AnnonarsVariantResponse) - # Then, predict BA1, BS1, BS2, PM2 - auto_ba1_bs1_bs2_pm2 = AutoBA1BS1BS2PM2(seqvar, variant_info.result, config=config) - prediction, details = auto_ba1_bs1_bs2_pm2.predict() + # Then, predict PM2, BA1, BS1, BS2 + auto_pm2_ba1_bs1_bs2 = AutoPM2BA1BS1BS2(seqvar, variant_info.result, config=config) + prediction, details = auto_pm2_ba1_bs1_bs2.predict() print(details) if expected_prediction is None: assert prediction is None, f"Failed for {variant_name}" else: assert prediction - assert prediction.BA1 == expected_prediction[0], f"Failed for {variant_name}" - assert prediction.BS1 == expected_prediction[1], f"Failed for {variant_name}" - assert prediction.BS2 == expected_prediction[2], f"Failed for {variant_name}" - assert prediction.PM2 == expected_prediction[3], f"Failed for {variant_name}" + assert prediction.PM2 == expected_prediction[0], f"Failed for {variant_name}" + assert prediction.BA1 == expected_prediction[1], f"Failed for {variant_name}" + assert prediction.BS1 == expected_prediction[2], f"Failed for {variant_name}" + assert prediction.BS2 == expected_prediction[3], f"Failed for {variant_name}"