Coverage for backend/django/core/auxiliary/models/MLWizard.py: 91%
20 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-07-22 05:22 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-07-22 05:22 +0000
1from core.auxiliary.models.MLModel import MLModel
2from core.auxiliary.models.MLColumnMapping import MLColumnMapping, custom_property_port_index
3from core.auxiliary.enums.generalEnums import PropertyType
4from typing import TypedDict, List
5from idaes_factory.endpoints import start_ml_training_event
6from core.auxiliary.services.ml_column_mapping_updates import (
7 create_column_mapping as create_column_mapping_service,
8)
10class ColumnMapping(TypedDict):
11 portIndex: int
12 propertyKey: str
13 column: str
15def create_column_mapping(flowsheet, model: int, inlet_mappings: List[ColumnMapping], outlet_mappings: List[ColumnMapping]):
16 create_column_mapping_service(
17 flowsheet=flowsheet,
18 model=model,
19 inlet_mappings=inlet_mappings,
20 outlet_mappings=outlet_mappings,
21 )
24def train(user, model_instance: MLModel):
25 """Queue ML training for the mapped model using its uploaded object-storage CSV."""
26 input_columns = MLColumnMapping.objects.filter(model=model_instance, propertyType=PropertyType.InletProperty)
27 output_columns = MLColumnMapping.objects.filter(model=model_instance, propertyType=PropertyType.OutletProperty)
28 input_labels = [item.column for item in input_columns]
29 output_labels = [item.column for item in output_columns]
31 if not model_instance.csv_bucket or not model_instance.csv_object_key: 31 ↛ 32line 31 didn't jump to line 32 because the condition on line 31 was never true
32 raise ValueError("ML training requires a completed object-storage CSV upload.")
34 return start_ml_training_event(
35 csv_bucket=model_instance.csv_bucket,
36 csv_key=model_instance.csv_object_key,
37 csv_delimiter=model_instance.csv_delimiter or None,
38 input_labels=input_labels,
39 output_labels=output_labels,
40 user=user,
41 flowsheet_id=model_instance.flowsheet_state.flowsheet_id,
42 model_type=model_instance.model_type,
43 model_id=model_instance.id,
44 )