diff --git a/cg/constants/constants.py b/cg/constants/constants.py index 70bd635261..28b171b0ed 100644 --- a/cg/constants/constants.py +++ b/cg/constants/constants.py @@ -214,6 +214,7 @@ class MicrosaltQC: QC_PERCENT_THRESHOLD_MWX: float = 0.1 COVERAGE_10X_THRESHOLD: float = 0.75 DUPLICATION_RATE_THRESHOLD: float = 0.8 + INSERT_SIZE_THRESHOLD: int = 100 MAPPED_RATE_THRESHOLD: float = 0.3 NEGATIVE_CONTROL_READS_THRESHOLD: float = 0.2 TARGET_READS: int = 6000000 diff --git a/cg/meta/workflow/microsalt/quality_checker.py b/cg/meta/workflow/microsalt/quality_checker.py index c0dc95f7d4..b618f66fe4 100644 --- a/cg/meta/workflow/microsalt/quality_checker.py +++ b/cg/meta/workflow/microsalt/quality_checker.py @@ -8,6 +8,7 @@ from cg.meta.workflow.microsalt.utils import ( is_valid_duplication_rate, is_valid_mapped_rate, + is_valid_median_insert_size, is_valid_total_reads, is_valid_total_reads_for_control, parse_quality_metrics, @@ -166,3 +167,7 @@ def is_valid_mapped_rate(self, metrics: SampleMetrics) -> bool: def is_valid_duplication_rate(self, metrics: SampleMetrics) -> bool: duplication_rate: float = metrics.picard_markduplicate.duplication_rate return is_valid_duplication_rate(duplication_rate) + + def is_valid_median_insert_size(self, metrics: SampleMetrics) -> bool: + insert_size: int = metrics.picard_markduplicate.insert_size + return is_valid_median_insert_size(insert_size) diff --git a/cg/meta/workflow/microsalt/utils.py b/cg/meta/workflow/microsalt/utils.py index d2f451f81c..ba52d28e86 100644 --- a/cg/meta/workflow/microsalt/utils.py +++ b/cg/meta/workflow/microsalt/utils.py @@ -21,6 +21,10 @@ def is_valid_duplication_rate(sample_duplication_rate: float) -> bool: return sample_duplication_rate < MicrosaltQC.DUPLICATION_RATE_THRESHOLD +def is_valid_median_insert_size(sample_insert_size: int) -> bool: + return sample_insert_size > MicrosaltQC.INSERT_SIZE_THRESHOLD + + def parse_quality_metrics(file_path: Path) -> QualityMetrics: data = read_json(file_path) return QualityMetrics.model_validate_json(data)