def run(self) -> Table: """ calculates metric table for all techniques and applies post processing techinques defined in module :return: metric table with metrics """ Cache.CACHE_ON = True dataset_name = prompt_for_dataset() metric_table = calculate_technique_metric_table(dataset_name) metric_table.sort(DATASET_COLUMN_ORDER).save( create_export_path(dataset_name)) # export metric table aggregate_metric_table = MetricTable( Table.aggregate_intermediate_files(PATH_TO_METRIC_TABLES).sort( DATASET_COLUMN_ORDER).table).save( PATH_TO_METRIC_TABLE_AGGREGATE) # create graphable metrics and export table aggregate_metric_table.create_lag_norm_inverted( drop_old=True).melt_metrics().col_values_to_upper( METRIC_COLNAME).save(PATH_TO_GRAPH_METRIC_TABLE_AGGREGATE) self.export_paths.append(create_export_path(dataset_name)) self.export_paths.append(PATH_TO_METRIC_TABLE_AGGREGATE) Cache.cleanup(dataset_name) return metric_table
def test_crate_lag_norm_inverted(self): metric_table = MetricTable(self.data) values = metric_table.create_lag_norm_inverted().table.set_index( [DATASET_COLNAME, NAME_COLNAME]) for d_name in self.DATASETS: for name, e_value in self.expected_values: value = values.loc[(d_name, name)][LAG_NORMALIZED_INVERTED_COLNAME] self.assertEqual(e_value, value)
def run(self) -> Table: """ Returns a metric table containing all of the metrics calculated for each technique in df :return: metric table with single query metrics for each technique applied to specified dataset in row """ tracer = Tracer() metric_table = MetricTable() for dataset_name in DATASET_COLUMN_ORDER: hybrid_query_metrics: List[Metrics] = tracer.get_metrics( dataset_name, BEST_OVERALL_TECHNIQUE, summary_metrics=False) metric_table.add( hybrid_query_metrics, other={ DATASET_COLNAME: dataset_name, TECHNIQUE_TYPE_COLNAME: HYBRID_ID, }, create_index=True, ) direct_query_metrics: List[Metrics] = tracer.get_metrics( dataset_name, get_best_direct_technique(dataset_name), summary_metrics=False, ) metric_table.add( direct_query_metrics, other={ DATASET_COLNAME: dataset_name, TECHNIQUE_TYPE_COLNAME: DIRECT_ID, }, create_index=True, ) individual_queries_aggregate = (metric_table.create_lag_norm_inverted( drop_old=True).melt_metrics( metric_value_col_name=METRIC_SCORE_COLNAME).sort( DATASET_COLUMN_ORDER).col_values_to_upper( METRIC_COLNAME).save(EXPORT_PATH)) self.export_paths.append(PATH_TO_INDIVIDUAL_QUERIES_AGG) return individual_queries_aggregate