Skip to content

Commit

Permalink
First try of PS1 and PM5
Browse files Browse the repository at this point in the history
  • Loading branch information
gromdimon committed Sep 4, 2024
1 parent 673955f commit 64379ca
Show file tree
Hide file tree
Showing 5 changed files with 402 additions and 2 deletions.
173 changes: 173 additions & 0 deletions src/bench/_stats.csv

Large diffs are not rendered by default.

173 changes: 173 additions & 0 deletions src/bench/stats.csv

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/defs/auto_pvs1.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ class PVS1PredictionStrucVarPath(AutoAcmgBaseEnum):
"start_lost": SeqVarPVS1Consequence.InitiationCodon,
"5_prime_utr_variant": SeqVarPVS1Consequence.NotSet,
"5_prime_UTR_variant": SeqVarPVS1Consequence.NotSet,
"3_prime_utr_variant": SeqVarPVS1Consequence.NonsenseFrameshift,
"3_prime_UTR_variant": SeqVarPVS1Consequence.NonsenseFrameshift,
"3_prime_utr_variant": SeqVarPVS1Consequence.NotSet,
"3_prime_UTR_variant": SeqVarPVS1Consequence.NotSet,
"splice_region_variant": SeqVarPVS1Consequence.SpliceSites, # Can affect splicing
"splice_donor_variant": SeqVarPVS1Consequence.SpliceSites, # Canonical splice site
"splice_donor_5th_base_variant": SeqVarPVS1Consequence.SpliceSites, # Non-canonical splice site
Expand Down
22 changes: 22 additions & 0 deletions src/seqvar/auto_ps1_pm5.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,28 @@ def _is_missense(var_data: AutoACMGSeqVarData) -> bool:
return True
return False

@staticmethod
def _affect_splicing(var_data: AutoACMGData) -> bool:
"""
Check if the variant affects splicing.
Args:
var_data (AutoACMGData): The variant information.
Returns:
bool: True if the variant affects splicing, False otherwise.
"""
score_checks = {
"spliceAI_acceptor_gain": var_data.thresholds.spliceAI_acceptor_gain,
"spliceAI_acceptor_loss": var_data.thresholds.spliceAI_acceptor_loss,
"spliceAI_donor_gain": var_data.thresholds.spliceAI_donor_gain,
"spliceAI_donor_loss": var_data.thresholds.spliceAI_donor_loss,
}
return any(
(getattr(var_data.scores.cadd, score_name) or 0) > threshold
for score_name, threshold in score_checks.items()
)

def verify_ps1pm5(
self, seqvar: SeqVar, var_data: AutoACMGSeqVarData
) -> Tuple[Optional[PS1PM5], str]:
Expand Down
32 changes: 32 additions & 0 deletions src/vcep/cdh1.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,38 @@

class CDH1Predictor(DefaultSeqVarPredictor):

def predict_ps1pm5(
self, seqvar: SeqVar, var_data: AutoACMGData
) -> Tuple[AutoACMGCriteria, AutoACMGCriteria]:
ps1 = AutoACMGCriteria(
name="PS1",
prediction=AutoACMGPrediction.NotApplicable,
strength=AutoACMGStrength.PathogenicSupporting,
summary="PS1 is not applicable for CDH1.",
)
if any(
cons in ["frameshift_variant", "stop_gained"] for cons in var_data.consequence.mehari
) and self.undergo_nmd(
var_data.tx_pos_utr, var_data.hgnc_id, var_data.strand, var_data.exons
):
pm5 = AutoACMGCriteria(
name="PM5",
prediction=AutoACMGPrediction.Met,
strength=AutoACMGStrength.PathogenicSupporting,
summary="Nonsense or frameshift variant predicted to undergo NMD. PM5 is met.",
)
else:
pm5 = AutoACMGCriteria(
name="PM5",
prediction=AutoACMGPrediction.NotMet,
strength=AutoACMGStrength.PathogenicSupporting,
summary=(
"Consequence is not frameshift or nonsense or variant is not predicted to "
"undergo NMD. PM5 is not met."
),
)
return ps1, pm5

def predict_pm1(self, seqvar: SeqVar, var_data: AutoACMGSeqVarData) -> AutoACMGCriteria:
"""Override predict_pm1 to return a not applicable status for PM1."""
logger.info("Predict PM1")
Expand Down

0 comments on commit 64379ca

Please sign in to comment.