Skip to content

Commit

Permalink
Validate average coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
seallard committed Dec 12, 2023
1 parent 4cabeca commit 72b3f99
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 0 deletions.
1 change: 1 addition & 0 deletions cg/constants/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ class APIMethods(StrEnum):


class MicrosaltQC:
AVERAGE_COVERAGE_THRESHOLD: int = 10
QC_PERCENT_THRESHOLD_MWX: float = 0.1
COVERAGE_10X_THRESHOLD: float = 0.75
DUPLICATION_RATE_THRESHOLD: float = 0.8
Expand Down
7 changes: 7 additions & 0 deletions cg/meta/workflow/microsalt/quality_checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from cg.constants.constants import MicrosaltAppTags, MicrosaltQC
from cg.meta.workflow.microsalt.models import QualityMetrics, QualityResult, SampleMetrics
from cg.meta.workflow.microsalt.utils import (
is_valid_average_coverage,
is_valid_duplication_rate,
is_valid_mapped_rate,
is_valid_median_insert_size,
Expand Down Expand Up @@ -40,6 +41,8 @@ def quality_control_sample(self, sample_id: str, metrics: SampleMetrics) -> Qual
valid_reads: bool = self.is_valid_total_reads(sample_id)
valid_mapped_rate: bool = self.is_valid_mapped_rate(metrics)
valid_duplication_rate: bool = self.is_valid_duplication_rate(metrics)
valid_median_insert_size: bool = self.is_valid_median_insert_size(metrics)
valid_average_coverage: bool = self.is_valid_average_coverage(metrics)

def quality_control_case(self, sample_results: list[QualityResult]) -> bool:
pass
Expand Down Expand Up @@ -171,3 +174,7 @@ def is_valid_duplication_rate(self, metrics: SampleMetrics) -> bool:
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)

def is_valid_average_coverage(self, metrics: SampleMetrics) -> bool:
average_coverage: float = metrics.microsalt_samtools_stats.average_coverage
return is_valid_average_coverage(average_coverage)
4 changes: 4 additions & 0 deletions cg/meta/workflow/microsalt/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ def is_valid_median_insert_size(sample_insert_size: int) -> bool:
return sample_insert_size > MicrosaltQC.INSERT_SIZE_THRESHOLD


def is_valid_average_coverage(average_coverage: float) -> bool:
return average_coverage > MicrosaltQC.AVERAGE_COVERAGE_THRESHOLD


def parse_quality_metrics(file_path: Path) -> QualityMetrics:
data = read_json(file_path)
return QualityMetrics.model_validate_json(data)

0 comments on commit 72b3f99

Please sign in to comment.