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)
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)
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)
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