From 2f6e5d0dda3e26ac755dfe85a11145fd5734ade1 Mon Sep 17 00:00:00 2001 From: awe Date: Wed, 4 Feb 2026 14:56:33 +0300 Subject: [PATCH] fix median --- .../visualization/matplotlib_backend.py | 11 ++++++---- .../visualization/pyqtgraph_backend.py | 22 ++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/rfg_adc_plotter/visualization/matplotlib_backend.py b/rfg_adc_plotter/visualization/matplotlib_backend.py index 20d9c49..b430e1b 100644 --- a/rfg_adc_plotter/visualization/matplotlib_backend.py +++ b/rfg_adc_plotter/visualization/matplotlib_backend.py @@ -77,18 +77,21 @@ def run_matplotlib(args): # Автоматическая загрузка медианы при старте if ref_in_file: try: - data = [] + pairs = [] with open(ref_in_file, 'r') as f: reader = csv.reader(f) next(reader) # Пропускаем заголовок for row in reader: if len(row) >= 2: try: - data.append(float(row[1])) + pairs.append((int(row[0]), float(row[1]))) except ValueError: continue - if data: - median_data = np.array(data, dtype=np.float32) + if pairs: + max_idx = max(idx for idx, _ in pairs) + median_data = np.full(max_idx + 1, np.nan, dtype=np.float32) + for idx, val in pairs: + median_data[idx] = val median_subtract_enabled = True print(f"[ref-in] Загружена медиана из {ref_in_file} ({len(median_data)} точек), вычитание включено") else: diff --git a/rfg_adc_plotter/visualization/pyqtgraph_backend.py b/rfg_adc_plotter/visualization/pyqtgraph_backend.py index 807a2a8..6804461 100644 --- a/rfg_adc_plotter/visualization/pyqtgraph_backend.py +++ b/rfg_adc_plotter/visualization/pyqtgraph_backend.py @@ -203,22 +203,25 @@ def run_pyqtgraph(args): try: # Загружаем CSV файл - data = [] + pairs = [] with open(filename, 'r') as f: reader = csv.reader(f) next(reader) # Пропускаем заголовок for row in reader: if len(row) >= 2: try: - data.append(float(row[1])) + pairs.append((int(row[0]), float(row[1]))) except ValueError: continue - if not data: + if not pairs: status.setText("Ошибка: файл пустой или неверный формат") return - median_data = np.array(data, dtype=np.float32) + max_idx = max(idx for idx, _ in pairs) + median_data = np.full(max_idx + 1, np.nan, dtype=np.float32) + for idx, val in pairs: + median_data[idx] = val status.setText(f"Загружена медиана из {filename} ({len(median_data)} точек)") # Автоматически включаем чекбокс @@ -289,18 +292,21 @@ def run_pyqtgraph(args): # Автоматическая загрузка медианы при старте if ref_in_file: try: - data = [] + pairs = [] with open(ref_in_file, 'r') as f: reader = csv.reader(f) next(reader) # Пропускаем заголовок for row in reader: if len(row) >= 2: try: - data.append(float(row[1])) + pairs.append((int(row[0]), float(row[1]))) except ValueError: continue - if data: - median_data = np.array(data, dtype=np.float32) + if pairs: + max_idx = max(idx for idx, _ in pairs) + median_data = np.full(max_idx + 1, np.nan, dtype=np.float32) + for idx, val in pairs: + median_data[idx] = val median_subtract_enabled = True print(f"[ref-in] Загружена медиана из {ref_in_file} ({len(median_data)} точек), вычитание включено") else: