Skip to content

Commit 071f361

Browse files
feat(refactor): balsamic config (#3885)
### Changed - Refactor Analysis model for Balsamic
1 parent da814f6 commit 071f361

File tree

5 files changed

+23
-19
lines changed

5 files changed

+23
-19
lines changed

cg/meta/delivery_report/balsamic.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@
2828
BalsamicTargetedSampleMetadataModel,
2929
BalsamicWGSSampleMetadataModel,
3030
)
31-
from cg.models.delivery_report.report import CaseModel, ReportRequiredFields, ScoutVariantsFiles
31+
from cg.models.delivery_report.report import (
32+
CaseModel,
33+
ReportRequiredFields,
34+
ScoutVariantsFiles,
35+
)
3236
from cg.models.delivery_report.sample import SampleModel
3337
from cg.store.models import Bed, BedVersion, Case, Sample
3438

@@ -76,12 +80,12 @@ def get_panel_metadata(
7680
) -> BalsamicTargetedSampleMetadataModel:
7781
"""Return report metadata for Balsamic TGS analysis."""
7882
bed_version: BedVersion = self.status_db.get_bed_version_by_file_name(
79-
analysis_metadata.config.panel.capture_kit
83+
analysis_metadata.balsamic_config.panel.capture_kit
8084
)
8185
bed: Bed = self.status_db.get_bed_by_entry_id(bed_version.bed_id) if bed_version else None
8286
return BalsamicTargetedSampleMetadataModel(
8387
bait_set=bed.name if bed else None,
84-
bait_set_version=analysis_metadata.config.panel.capture_kit_version,
88+
bait_set_version=analysis_metadata.balsamic_config.panel.capture_kit_version,
8589
duplicates=sample_metrics.percent_duplication if sample_metrics else None,
8690
fold_80=sample_metrics.fold_80_base_penalty if sample_metrics else None,
8791
gc_dropout=sample_metrics.gc_dropout if sample_metrics else None,
@@ -120,11 +124,11 @@ def is_report_accredited(
120124
self, samples: list[SampleModel], analysis_metadata: BalsamicAnalysis
121125
) -> bool:
122126
"""Return whether the Balsamic delivery report is accredited."""
123-
if analysis_metadata.config.analysis.sequencing_type == "targeted" and next(
127+
if analysis_metadata.balsamic_config.analysis.sequencing_type == "targeted" and next(
124128
(
125129
panel
126130
for panel in BALSAMIC_REPORT_ACCREDITED_PANELS
127-
if panel in str(analysis_metadata.config.panel.capture_kit)
131+
if panel in str(analysis_metadata.balsamic_config.panel.capture_kit)
128132
),
129133
None,
130134
):

cg/meta/workflow/balsamic.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from pydantic.v1 import EmailStr, ValidationError
88

99
from cg.constants import Workflow
10-
from cg.constants.constants import FileFormat, SampleType, GenomeVersion
10+
from cg.constants.constants import FileFormat, GenomeVersion, SampleType
1111
from cg.constants.housekeeper_tags import BalsamicAnalysisTag
1212
from cg.constants.observations import ObservationsFileWildcards
1313
from cg.constants.priority import SlurmQos
@@ -349,7 +349,7 @@ def parse_analysis(self, config_raw: dict, qc_metrics_raw: dict, **kwargs) -> Ba
349349
qc_metrics[sample_metric.id] = {sample_metric.name.lower(): sample_metric.value}
350350

351351
return BalsamicAnalysis(
352-
config=config_raw,
352+
balsamic_config=config_raw,
353353
sample_metrics=self.cast_metrics_type(sequencing_type, qc_metrics),
354354
)
355355

@@ -615,7 +615,7 @@ def report_deliver(self, case_id: str, dry_run: bool = False) -> None:
615615
def get_genome_build(self, case_id: str) -> str:
616616
"""Returns the reference genome build version of a Balsamic analysis."""
617617
analysis_metadata: BalsamicAnalysis = self.get_latest_metadata(case_id)
618-
return analysis_metadata.config.reference.reference_genome_version
618+
return analysis_metadata.balsamic_config.reference.reference_genome_version
619619

620620
@staticmethod
621621
def get_variant_caller_version(var_caller_name: str, var_caller_versions: dict) -> str | None:
@@ -631,10 +631,10 @@ def get_variant_callers(self, case_id: str) -> list[str]:
631631
config.json file.
632632
"""
633633
analysis_metadata: BalsamicAnalysis = self.get_latest_metadata(case_id)
634-
sequencing_type: str = analysis_metadata.config.analysis.sequencing_type
635-
analysis_type: str = analysis_metadata.config.analysis.analysis_type
636-
var_callers: dict[str, BalsamicVarCaller] = analysis_metadata.config.vcf
637-
tool_versions: dict[str, list] = analysis_metadata.config.bioinfo_tools_version
634+
sequencing_type: str = analysis_metadata.balsamic_config.analysis.sequencing_type
635+
analysis_type: str = analysis_metadata.balsamic_config.analysis.analysis_type
636+
var_callers: dict[str, BalsamicVarCaller] = analysis_metadata.balsamic_config.vcf
637+
tool_versions: dict[str, list] = analysis_metadata.balsamic_config.bioinfo_tools_version
638638
analysis_var_callers = []
639639
for var_caller_name, var_caller_attributes in var_callers.items():
640640
if (
@@ -653,8 +653,8 @@ def get_pons(self, case_id: str) -> list[str]:
653653
"""Return list of panel of normals used for analysis."""
654654
pons: list[str] = []
655655
analysis_metadata: BalsamicAnalysis = self.get_latest_metadata(case_id)
656-
if analysis_metadata.config.panel:
657-
if pon_cnn := analysis_metadata.config.panel.pon_cnn:
656+
if analysis_metadata.balsamic_config.panel:
657+
if pon_cnn := analysis_metadata.balsamic_config.panel.pon_cnn:
658658
pons.append(pon_cnn)
659659
return pons
660660

cg/models/balsamic/analysis.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ class BalsamicAnalysis(AnalysisModel):
77
"""BALSAMIC analysis model
88
99
Attributes:
10-
config: balsamic config file attributes model
10+
balsamic_config: balsamic config file attributes model
1111
sample_metrics: retrieved QC metrics associated to a sample
1212
"""
1313

14-
config: BalsamicConfigJSON
14+
balsamic_config: BalsamicConfigJSON
1515
sample_metrics: dict[str, BalsamicQCMetrics]

tests/meta/workflow/test_balsamic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ def test_get_variant_caller_version(analysis_api_balsamic: MockBalsamicAnalysis,
206206
var_caller_name = "manta"
207207
var_caller_versions: dict[str, list[str]] = analysis_api_balsamic.get_latest_metadata(
208208
case_id
209-
).config.bioinfo_tools_version
209+
).balsamic_config.bioinfo_tools_version
210210

211211
# GIVEN the tools mock version
212212
expected_version = "1.6.0"

tests/models/balsamic/test_balsamic_analysis.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def test_parse_analysis_tga(cg_context, balsamic_tga_config_raw, balsamic_tga_me
1616
)
1717

1818
# THEN assert that it was successfully created
19-
assert isinstance(balsamic_analysis.config, BalsamicConfigJSON)
19+
assert isinstance(balsamic_analysis.balsamic_config, BalsamicConfigJSON)
2020
assert isinstance(balsamic_analysis.sample_metrics["ACC0000A1"], BalsamicTargetedQCMetrics)
2121

2222

@@ -33,5 +33,5 @@ def test_parse_analysis_wgs(cg_context, balsamic_wgs_config_raw, balsamic_wgs_me
3333

3434
# THEN assert that it was successfully created
3535

36-
assert isinstance(balsamic_analysis.config, BalsamicConfigJSON)
36+
assert isinstance(balsamic_analysis.balsamic_config, BalsamicConfigJSON)
3737
assert isinstance(balsamic_analysis.sample_metrics["ACC0000A1"], BalsamicWGSQCMetrics)

0 commit comments

Comments
 (0)