diff --git a/params/system_params.json b/params/system_params.json index d7949a9..c455ac2 100644 --- a/params/system_params.json +++ b/params/system_params.json @@ -55,5 +55,8 @@ ], "UML_time_scaler": [ 1000.0 + ], + "Range ME, mm": [ + 250 ] } \ No newline at end of file diff --git a/src/OptAlgorithm/__pycache__/ConstantCalculator.cpython-310.pyc b/src/OptAlgorithm/__pycache__/ConstantCalculator.cpython-310.pyc index 4d1f74f..1dac748 100644 Binary files a/src/OptAlgorithm/__pycache__/ConstantCalculator.cpython-310.pyc and b/src/OptAlgorithm/__pycache__/ConstantCalculator.cpython-310.pyc differ diff --git a/src/OptAlgorithm/__pycache__/OptAlgorithm.cpython-310.pyc b/src/OptAlgorithm/__pycache__/OptAlgorithm.cpython-310.pyc index 12605a3..33a7e93 100644 Binary files a/src/OptAlgorithm/__pycache__/OptAlgorithm.cpython-310.pyc and b/src/OptAlgorithm/__pycache__/OptAlgorithm.cpython-310.pyc differ diff --git a/src/OptAlgorithm/__pycache__/OptTimeCalculator.cpython-310.pyc b/src/OptAlgorithm/__pycache__/OptTimeCalculator.cpython-310.pyc index ce8e571..01aa6e0 100644 Binary files a/src/OptAlgorithm/__pycache__/OptTimeCalculator.cpython-310.pyc and b/src/OptAlgorithm/__pycache__/OptTimeCalculator.cpython-310.pyc differ diff --git a/src/controller/__pycache__/passportFormer.cpython-310.pyc b/src/controller/__pycache__/passportFormer.cpython-310.pyc index bfa39d1..32ed97c 100644 Binary files a/src/controller/__pycache__/passportFormer.cpython-310.pyc and b/src/controller/__pycache__/passportFormer.cpython-310.pyc differ diff --git a/src/controller/passportFormer.py b/src/controller/passportFormer.py index 77d90ed..f89e7e5 100644 --- a/src/controller/passportFormer.py +++ b/src/controller/passportFormer.py @@ -41,8 +41,9 @@ class PassportFormer(BasePointPassportFormer): return [] system_settings = {key: value[0] for key, value in self._params[1].items()} - + Range = system_settings["Range ME, mm"] tesla_time = sum(self._params[0].get("Tesla summary time", [])) + useful_data = {"tesla_time": tesla_time, "range_ME": Range} points_pocket = [] @@ -59,7 +60,7 @@ class PassportFormer(BasePointPassportFormer): } params_list = [operator_settings, system_settings] cache_key = self._generate_cache_key(params_list) - if cache_key in self._ideal_data_cashe: + if cache_key in self._ideal_data_cashe : ideal_data = self._ideal_data_cashe[cache_key] print(f"Cache hit") else: @@ -71,7 +72,7 @@ class PassportFormer(BasePointPassportFormer): point_events = {key: [value[0][i], value[1][i]] for key, value in events.items()} points_pocket.append([point_timeframe, ideal_data, point_events]) - return dataframe, points_pocket, tesla_time + return dataframe, points_pocket, useful_data def update_settings(self, params: list[dict, dict]): self._params = params \ No newline at end of file diff --git a/src/gui/__pycache__/plotter.cpython-310.pyc b/src/gui/__pycache__/plotter.cpython-310.pyc index 38f4ade..b1df31e 100644 Binary files a/src/gui/__pycache__/plotter.cpython-310.pyc and b/src/gui/__pycache__/plotter.cpython-310.pyc differ diff --git a/src/gui/plotter.py b/src/gui/plotter.py index 14b1885..efacfbf 100644 --- a/src/gui/plotter.py +++ b/src/gui/plotter.py @@ -1,5 +1,6 @@ import pandas as pd from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel +import copy import pyqtgraph as pg @@ -192,15 +193,29 @@ class PlotWidget(BasePlotWidget): layout.addWidget(performance_label) performance_label.update() + def _mirror_shift_data(self, + valid_str: str, + signals: list[dict], + dataframe: pd.DataFrame, + shift: float) -> pd.DataFrame: + keys = dataframe.keys() + for signal in signals: + if valid_str in signal["name"] and signal["name"] in keys: + dataframe[signal["name"]] = dataframe[signal["name"]].apply(lambda x: shift-x) + return dataframe + + def _build_widget(self, data: list[Any]) -> QWidget: """ Собирает графический виджет для одного набора данных. - Параметр `data` предполагается списком: [dataframe, points_pocket, tesla_time]. + Параметр `data` предполагается списком: [dataframe, points_pocket, useful_data]. """ widget = QWidget() layout = QVBoxLayout(widget) - dataframe, points_pocket, tesla_time = data + dataframe, points_pocket, useful_data = data + tesla_time = useful_data["tesla_time"] + range_ME = useful_data["range_ME"] dataframe_headers = dataframe.columns.tolist() for widget_num, (channel, description) in enumerate(self._plt_channels.items()): @@ -210,11 +225,21 @@ class PlotWidget(BasePlotWidget): TWC_time = 0.0 ideal_time = 0.0 worst_perf = 2 - + + if settings["mirror ME"]: + dataframe = self._mirror_shift_data("ME", description["Real_signals"], dataframe, range_ME) + + # Итерация по точкам for cur_point, point_data in enumerate(points_pocket): # point_data структура: [point_timeframe, ideal_data, point_events] - point_timeframe, ideal_data, point_events = point_data + point_timeframe, ideal_dat, point_events = point_data + ideal_data = copy.deepcopy(ideal_dat) + # Модифицируем данные для отображения гарфика + if settings["ideals"] and settings["mirror ME"]: + for stage in point_events.keys(): + ideal_data[stage] = self._mirror_shift_data("ME", description["Ideal_signals"], ideal_data[stage], range_ME) + # Добавляем реальные стадии if settings["stages"]: diff --git a/src/utils/base/__pycache__/base.cpython-310.pyc b/src/utils/base/__pycache__/base.cpython-310.pyc index ca99e60..451bb53 100644 Binary files a/src/utils/base/__pycache__/base.cpython-310.pyc and b/src/utils/base/__pycache__/base.cpython-310.pyc differ diff --git a/src/utils/base/base.py b/src/utils/base/base.py index de07623..adb572f 100644 --- a/src/utils/base/base.py +++ b/src/utils/base/base.py @@ -111,7 +111,6 @@ class BasePlotWidget: mediator: Optional[BaseMediator] = None): super().__init__() self._mediator = mediator - self._stage_colors = { "Closing": [220, 20, 60, 100], # Crimson @@ -126,7 +125,8 @@ class BasePlotWidget: "zoom": False, "stages": True, "performance": True, - "ideals": True + "ideals": True, + "mirror ME": False }, "Real_signals": [ { @@ -154,7 +154,8 @@ class BasePlotWidget: "zoom": False, "stages": True, "performance": False, - "ideals": True + "ideals": True, + "mirror ME": True }, "Real_signals": [ { @@ -182,7 +183,8 @@ class BasePlotWidget: "zoom": False, "stages": True, "performance": False, - "ideals": True + "ideals": True, + "mirror ME": False }, "Real_signals": [ {