@@ -1457,12 +1457,18 @@ def calculate_monitor_semaphore_hash(params: SimulationParams):
14571457 for output in params .outputs :
14581458 if not isinstance (output , get_args (get_args (MonitorOutputType )[0 ])):
14591459 continue
1460- if output .moving_statistic is None :
1461- continue
1462- json_string_list .append (json .dumps (dump_dict (output .moving_statistic )))
1463- if params .run_control and params .run_control .stopping_criteria :
1464- for criterion in params .run_control .stopping_criteria :
1465- json_string_list .append (json .dumps (dump_dict (criterion )))
1460+ if isinstance (output , ForceOutput ):
1461+ json_string_list .extend (
1462+ [
1463+ json .dumps (dump_dict (model ))
1464+ for model in sorted (
1465+ output .models , key = lambda x : (x .type , x .name , x .private_attribute_id )
1466+ )
1467+ ]
1468+ )
1469+ json_string_list .extend (output .output_fields .items )
1470+ if output .moving_statistic is not None :
1471+ json_string_list .append (json .dumps (dump_dict (output .moving_statistic )))
14661472 combined_string = "" .join (sorted (json_string_list ))
14671473 hasher = hashlib .sha256 ()
14681474 hasher .update (combined_string .encode ("utf-8" ))
@@ -1957,10 +1963,9 @@ def get_columnar_data_processor_json(
19571963 """
19581964 Get the columnar data processor json from the simulation parameters.
19591965 """
1960- translated = {}
1966+ translated = {"outputs" : [] }
19611967 if not input_params .outputs :
19621968 return translated
1963- monitor_outputs = []
19641969 for output in input_params .outputs :
19651970 if not isinstance (output , get_args (get_args (MonitorOutputType )[0 ])):
19661971 continue
@@ -1970,6 +1975,5 @@ def get_columnar_data_processor_json(
19701975 exclude_none = True ,
19711976 context = {"columnar_data_processor" : True },
19721977 )
1973- monitor_outputs .append (output_dict )
1974- translated ["outputs" ] = monitor_outputs
1978+ translated ["outputs" ].append (output_dict )
19751979 return translated
0 commit comments