def _prepare_metric_operation(self, sim_operation): # type: (Operation) -> Operation metric_algo = dao.get_algorithm_by_module(MEASURE_METRICS_MODULE, MEASURE_METRICS_CLASS) datatype_index = h5.REGISTRY.get_index_for_datatype(TimeSeries) time_series_index = dao.get_generic_entity(datatype_index, sim_operation.id, 'fk_from_operation')[0] ga = self._prepare_metadata(metric_algo.algorithm_category, {}, None, time_series_index.fk_parent_burst) ga.visible = False view_model = get_class_by_name("{}.{}".format(MEASURE_METRICS_MODULE, MEASURE_METRICS_MODEL_CLASS))() view_model.time_series = time_series_index.gid view_model.algorithms = tuple(choices.values()) view_model.generic_attributes = ga parent_burst = dao.get_generic_entity(BurstConfiguration, time_series_index.fk_parent_burst, 'gid')[0] metric_operation_group_id = parent_burst.fk_metric_operation_group range_values = sim_operation.range_values metric_operation = Operation(sim_operation.fk_launched_by, sim_operation.fk_launched_in, metric_algo.id, json.dumps({'gid': view_model.gid.hex}), user_group=ga.operation_tag, op_group_id=metric_operation_group_id, range_values=range_values) metric_operation.visible = False metric_operation = dao.store_entity(metric_operation) metrics_datatype_group = dao.get_generic_entity(DataTypeGroup, metric_operation_group_id, 'fk_operation_group')[0] if metrics_datatype_group.fk_from_operation is None: metrics_datatype_group.fk_from_operation = metric_operation.id self._store_view_model(metric_operation, sim_operation.project, view_model) return metric_operation
class TimeseriesMetricsAdapterModel(ViewModel, BaseTimeseriesMetricAlgorithm): time_series = DataTypeGidAttr( linked_datatype=TimeSeries, label="Time Series", required=True, doc="The TimeSeries for which the metric(s) will be computed.") algorithms = List( of=str, choices=tuple(choices.values()), label='Selected metrics to be applied', doc= 'The selected algorithms will all be applied on the input TimeSeries')