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

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) 

9 

10class ColumnMapping(TypedDict): 

11 portIndex: int 

12 propertyKey: str 

13 column: str 

14 

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 ) 

22 

23 

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] 

30 

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.") 

33 

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 )