コード例 #1
0
    def to_csv(self, index=False):
        '''
        Get the JSON representation of this object
        :return: JSON string
        '''
        data_frame = self.data_frame
        headers = [str(sub_col) for _, sub_col in data_frame.columns]
        headers.insert(0, 'experiment_name')
        headers.append('_empty_')
        headers.extend(Configuration.get_parameters())
        datas = []
        for index, row in data_frame.iterrows():
            data = []
            data.append(str(row.name))

            for col_name, sub_col_name in data_frame.columns:
                data_value = float(row[col_name][sub_col_name])
                # check for NaN
                if math.isnan(data_value):
                    data_value = 0.0

                data.append(str(data_value))
            data.extend(str(row.name).split('-'))
            datas.append(data)

        csv_string = ','.join(headers) + '\n'
        for row in datas:
            csv_string += ','.join(row) + '\n'
        return csv_string
コード例 #2
0
    def process(self, data_object):
        '''
        Process a given file
        :param data_object: JSON object
        :return: Updated data_object reference
        '''
        super(ExperimentConfig, self).process(data_object)
        self.config = data_object
        row = []
        for param in Configuration.get_parameters():
            if param == 'repeat':
                continue
            if param in data_object:
                self.add_column(param)
                row.append(data_object[param])

        self.add_row(row)
        return data_object
コード例 #3
0
    def compare_experiments(self, experiment_metric_file_paths):
        '''
        Run analysis the compares the output from each experiment
        :param experiment_metric_file_paths: List of the metric files
         for each of the experiments
        :return: dict of the metric objects
        '''
        # pivot data and generate graph for each metric
        for variable in Configuration.get_parameters():
            if variable == 'repeat':
                continue
            # get metrics for variable
            cmp_exps = MetricManagerComparer(variable)
            class_reader = ClassReader([cmp_exps], MetricManager)
            finder = FileFinder([class_reader])
            finder.process_file_list(self.base_directory,
                                     experiment_metric_file_paths)

            for group_name, metric_name, _ in metric_iter(cmp_exps.metric_map):
                if group_name == 'variables':
                    continue

                metric_cmp = SummationVariableComparer(cmp_exps, metric_name)
                metric_cmp.process(None)
                self._set_data(metric_cmp.to_string(True), variable,
                               group_name, metric_name)
                self._set_graph(metric_cmp.create_graph(), variable,
                                group_name, metric_name)

        # get one table of all the values
        cmp_exps = MetricManagerComparer('')
        class_reader = ClassReader([cmp_exps], MetricManager)
        finder = FileFinder([class_reader])
        finder.process_file_list(self.base_directory,
                                 experiment_metric_file_paths)
        self._set_data(cmp_exps.to_string(), 'all')