diff --git a/cg/models/analysis.py b/cg/models/analysis.py index c2e3eb8b80..9cf50f63c4 100644 --- a/cg/models/analysis.py +++ b/cg/models/analysis.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel, ConfigDict +from pydantic import BaseModel, ConfigDict, Field from cg.models.raredisease.raredisease import RarediseaseQCMetrics from cg.models.rnafusion.rnafusion import RnafusionQCMetrics @@ -15,6 +15,9 @@ class AnalysisModel(BaseModel): class NextflowAnalysis(AnalysisModel): """Nextflow's analysis results model.""" - sample_metrics: dict[ - str, RarediseaseQCMetrics | RnafusionQCMetrics | TaxprofilerQCMetrics | TomteQCMetrics - ] + sample_metrics: ( + dict[str, RarediseaseQCMetrics] + | dict[str, RnafusionQCMetrics] + | dict[str, TaxprofilerQCMetrics] + | dict[str, TomteQCMetrics] + ) = Field(union_mode="left_to_right") diff --git a/cg/models/taxprofiler/taxprofiler.py b/cg/models/taxprofiler/taxprofiler.py index fbf585a27a..ed3433a3f3 100644 --- a/cg/models/taxprofiler/taxprofiler.py +++ b/cg/models/taxprofiler/taxprofiler.py @@ -1,12 +1,13 @@ from pathlib import Path -from pydantic import BaseModel, Field +from pydantic import Field from cg.constants.sequencing import SequencingPlatform from cg.models.nf_analysis import NextflowSampleSheetEntry, WorkflowParameters +from cg.models.qc_metrics import QCMetrics -class TaxprofilerQCMetrics(BaseModel): +class TaxprofilerQCMetrics(QCMetrics): """Taxprofiler QC metrics.""" after_filtering_gc_content: float diff --git a/tests/meta/workflow/test_rnafusion.py b/tests/meta/workflow/test_rnafusion.py index 5ee071e03d..d88f257afb 100644 --- a/tests/meta/workflow/test_rnafusion.py +++ b/tests/meta/workflow/test_rnafusion.py @@ -21,7 +21,7 @@ def test_parse_analysis( qc_metrics: list[MetricsBase] = analysis_api.get_multiqc_json_metrics(case_id=rnafusion_case_id) # WHEN extracting the analysis model - analysis_model: NextflowAnalysis = analysis_api.parse_analysis(qc_metrics_raw=qc_metrics) + analysis_model: NextflowAnalysis = analysis_api.parse_analysis(qc_metrics) # THEN the analysis model and its content should have been correctly extracted assert analysis_model.sample_metrics[sample_id].model_dump() == rnafusion_metrics