예제 #1
0
    def create_metric_dto(self):
        """create a new metric dto"""
        # Load cells and handle list vs non list cells
        value = self.to_cells()
        num_cells, cells = (len(value), value) if isinstance(value, list) else (1, [value])
        seen = set()
        properties = []
        for cell in cells:
            for key in cell:
                if key not in seen:
                    val = cell[key]
                    properties.append(Metric.get_value_property(self.name, val, key))
                    seen.add(key)

        metrics_schema_dto = MetricSchemaDto(num_properties=len(properties),
                                             properties=properties)
        metric_dto = MetricDto(metric_id=self.metric_id or get_new_id(),
                               metric_type=self.metric_type,
                               created_utc=get_timestamp(),
                               name=self.name,
                               description=self.description,
                               num_cells=num_cells,
                               cells=cells,
                               schema=metrics_schema_dto,
                               data_location=self.data_location)
        return metric_dto
예제 #2
0
 def create_v2_dto(self):
     TableMetric._check_is_valid_table(self.value, is_row=True)
     columns = {}
     for key in self.value.keys():
         val = self.value[key]
         _, metric_value_type = Metric.get_converted_value_and_type_v2(val)
         columns[key] = metric_value_type
     metric_value = TableMetric._get_metric_v2_value_from_row(self.value, get_timestamp())
     return MetricV2Dto(name=self.name, columns=columns, value=[metric_value],
                        properties=MetricProperties(ux_metric_type=self.metric_type))
예제 #3
0
 def create_v2_dto(self):
     value_list = [val for val in self.value]
     if len(value_list) == 0:
         return None
     ListMetric._check_is_valid_list(value_list)
     _, metric_value_type = Metric.get_converted_value_and_type_v2(value_list[0])
     if metric_value_type is AZUREML_INT_METRIC_TYPE:
         for value in value_list:
             _, other_metric_value_type = Metric.get_converted_value_and_type_v2(value)
             if other_metric_value_type is AZUREML_DOUBLE_METRIC_TYPE:
                 metric_value_type = AZUREML_DOUBLE_METRIC_TYPE
     created_utc = get_timestamp()
     values = []
     for val in value_list:
         converted_value, _ = Metric.get_converted_value_and_type_v2(val)
         metric_v2_value = MetricV2Value(metric_id=get_new_id(), created_utc=created_utc,
                                         data={self.name: converted_value})
         values.append(metric_v2_value)
     return MetricV2Dto(name=self.name, columns={self.name: metric_value_type}, value=values,
                        properties=MetricProperties(ux_metric_type=self.metric_type))
예제 #4
0
 def create_v2_dto(self):
     keys = self.value.keys()
     if len(keys) == 0:
         return None
     copied_value = {}
     for key in keys:
         copied_value[key] = self.value[key] if isinstance(self.value[key], list) else [self.value[key]]
     TableMetric._check_is_valid_table(copied_value)
     columns = {}
     for key in keys:
         value = TableMetric._get_value_from_column(copied_value[key])
         _, metric_value_type = Metric.get_converted_value_and_type_v2(value)
         columns[key] = metric_value_type
     reference_column = copied_value[list(keys)[0]]
     column_length = len(reference_column)
     metric_values = []
     created_utc = get_timestamp()
     for i in range(column_length):
         metric_values.append(TableMetric._get_metric_v2_value_from_row(copied_value, created_utc, position=i))
     return MetricV2Dto(name=self.name, columns=columns, value=metric_values,
                        properties=MetricProperties(ux_metric_type=self.metric_type))
예제 #5
0
 def create_v2_dto(self):
     columns = {self.name: "Artifact"}
     value = [MetricV2Value(metric_id=get_new_id(), created_utc=get_timestamp(),
                            data={self.name: self.data_location})]
     return MetricV2Dto(name=self.name, columns=columns, value=value,
                        properties=MetricProperties(ux_metric_type=self.metric_type))
예제 #6
0
 def create_v2_dto(self):
     converted_value, value_metric_type = Metric.get_converted_value_and_type_v2(self.value)
     return MetricV2Dto(name=self.name, columns={self.name: value_metric_type},
                        value=[MetricV2Value(metric_id=self.metric_id or get_new_id(),
                                             created_utc=get_timestamp(), data={self.name: converted_value})],
                        properties=MetricProperties(ux_metric_type=self.metric_type))