def generate_curves_specific_function(self, function, path: list,
                                          curve_content, x_values, all_ids,
                                          requested_indices):
        if function not in curve_content:
            print("no '{}' available under this path. Current content: {}".
                  format(function, curve_content))
            return None

        y_values = self.read_numpy_ndarray_values_from_path([1, 2], *path,
                                                            function)

        if y_values.ndim == 1:
            curve_name = self.get_curve_name(path, function)
            curve = Curve(curve_name, x_values, y_values)
            tag = self.create_tag(path, function)
            self._curves.add_curve(curve, tag)
        elif y_values.ndim == 2:
            if all_ids is None:
                print(
                    "no 'ids' available under this path. Current content: {}".
                    format(curve_content))
                return None
            for ind in requested_indices:
                curve_name = self.get_curve_name(path, function, all_ids[ind],
                                                 ind)
                curve = Curve(curve_name, x_values, y_values[..., ind])
                tag = self.create_tag(path, function, all_ids[ind])
                self._curves.add_curve(curve, tag)
Example #2
0
 def post_metapost_run(self):
     for slot in self._slots:
         for value_extraction in self._value_extractions:
             file_path = self.get_history_curve_filename(
                 slot, value_extraction)
             try:
                 csv_content = read_csv(file_path,
                                        sep=",",
                                        skip_blank_lines=True,
                                        decimal=".",
                                        engine='python',
                                        error_bad_lines=True,
                                        skiprows=[0, 1, 2, 3, 4],
                                        skipfooter=1)
                 number_columns = csv_content.shape[1]
                 if isnull(csv_content.iloc[:, number_columns - 1]).all():
                     csv_content = csv_content.drop(
                         csv_content.columns[[number_columns - 1]], axis=1)
                 curve_title = self.get_history_curve_name(
                     slot, value_extraction)
                 x_values = csv_content.iloc[:, 0]
                 y_values = csv_content.iloc[:, 1]
                 curve = Curve(curve_title, x_values, y_values)
                 self._curves.add_curve(curve, curve_title)
             except FileNotFoundError:
                 print("Curve Name doesn't exist: {}".format(
                     value_extraction))
     self.store_curves_in_register()
 def post_animator_run(self):
     for slot in self._slots:
         for current_id in self._ids:
             for value_extraction in self._value_extractions:
                 file_path = self.get_history_curve_filename(
                     slot, current_id,
                     self._variable_names_dict[value_extraction])
                 try:
                     csv_content = read_csv(file_path,
                                            sep=",",
                                            skip_blank_lines=True,
                                            decimal=".",
                                            error_bad_lines=True,
                                            skiprows=[1, 2])
                     number_columns = csv_content.shape[1]
                     if isnull(csv_content.iloc[:,
                                                number_columns - 1]).all():
                         csv_content = csv_content.drop(
                             csv_content.columns[[number_columns - 1]],
                             axis=1)
                     curve_title = self.get_history_curve_name(
                         slot, current_id, value_extraction)
                     x_values = csv_content.iloc[:, 0]
                     y_values = csv_content.iloc[:, 1]
                     curve = Curve(curve_title, x_values, y_values)
                     self._curves.add_curve(curve, curve_title)
                 except FileNotFoundError:
                     print("Node Id doesn't exist: {}".format(current_id))
     self.store_curves_in_register()
 def generate_curve_data(self, index_data_start: int, count_data_lines: int,
                         curve_title: str) -> Curve:
     index_data_end = index_data_start + count_data_lines
     x_values = []
     y_values = []
     for line in self._crv_content[index_data_start:index_data_end]:
         match_data_line = re.match(r'^\s*([^\s]+)\s+([^\s]+)\s*$', line)
         x_values.append(float(match_data_line.group(1)))
         y_values.append(float(match_data_line.group(2)))
     return Curve(curve_title, x_values, y_values)
Example #5
0
 def generate_curves(self):
     columns = list(self._csv_content.columns)
     number_columns = self._csv_content.shape[1]
     for column_id in range(1, number_columns):
         curve_title = columns[column_id]
         if self.is_curve_requested(curve_title):
             x_values = self._csv_content.iloc[:, 0]
             y_values = self._csv_content.iloc[:, column_id]
             curve = Curve(curve_title, x_values, y_values)
             self._curves.add_curve(curve, curve_title)
 def generate_curve(self):
     print(self._data_table)
     count_lines = len(self._data_table[0])
     if self._line_number_x_values >= count_lines or self._line_number_y_values >= count_lines:
         print("data table doesn't contain enough lines")
         raise ValueError
     x_line = []
     y_line = []
     for col in self._data_table:
         x_line.append(col[self._line_number_x_values])
         y_line.append(col[self._line_number_y_values])
     self._x_label = x_line[0]
     x_values = x_line[1:]
     self._y_label = y_line[0]
     y_values = y_line[1:]
     self._curve = Curve("curve", x_values, y_values)
Example #7
0
 def apply_modification(self, curve: Curve) -> Curve:
     return Curve(curve.name, curve.df.X, curve.df.Y * self._factor)
 def apply_modification(self, curve: Curve) -> Curve:
     data_frame = curve.df
     result_df = self.apply_filter(data_frame)
     result_curve = Curve(curve.name, result_df.X, result_df.Y)
     return result_curve