From 03eb5b7e15f9dce629442b64f525a9aaf8d7d333 Mon Sep 17 00:00:00 2001 From: mattzur Date: Tue, 31 Mar 2026 10:12:06 +0100 Subject: [PATCH 01/10] create vis folder structure --- packs/vis/_init | 0 packs/vis/visualise.py | 0 packs/vis/visualise_utils.py | 0 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 packs/vis/_init create mode 100644 packs/vis/visualise.py create mode 100644 packs/vis/visualise_utils.py diff --git a/packs/vis/_init b/packs/vis/_init new file mode 100644 index 0000000..e69de29 diff --git a/packs/vis/visualise.py b/packs/vis/visualise.py new file mode 100644 index 0000000..e69de29 diff --git a/packs/vis/visualise_utils.py b/packs/vis/visualise_utils.py new file mode 100644 index 0000000..e69de29 From 555643b661fc11f2f9e6c9be81a4cbf0dbb02f86 Mon Sep 17 00:00:00 2001 From: mattzur Date: Thu, 30 Apr 2026 17:45:16 +0100 Subject: [PATCH 02/10] add visualise as a process in proc --- packs/configs/vis_wd1_1channel.conf | 9 +++ packs/proc/proc.py | 3 + packs/proc/visualise_utils.py | 112 ++++++++++++++++++++++++++++ packs/vis/_init | 0 packs/vis/visualise.py | 0 packs/vis/visualise_utils.py | 0 6 files changed, 124 insertions(+) create mode 100644 packs/configs/vis_wd1_1channel.conf create mode 100644 packs/proc/visualise_utils.py delete mode 100644 packs/vis/_init delete mode 100644 packs/vis/visualise.py delete mode 100644 packs/vis/visualise_utils.py diff --git a/packs/configs/vis_wd1_1channel.conf b/packs/configs/vis_wd1_1channel.conf new file mode 100644 index 0000000..2c5935e --- /dev/null +++ b/packs/configs/vis_wd1_1channel.conf @@ -0,0 +1,9 @@ +[required] + +process = 'visualise' +file_path = '/path/to/file.h5' +vis_params = { + 'baseline_sub' : 'median', + 'sidebands' : ((100, 300), (2900, 3100)), + 'negative' : False} + diff --git a/packs/proc/proc.py b/packs/proc/proc.py index 4684185..cf6b86e 100644 --- a/packs/proc/proc.py +++ b/packs/proc/proc.py @@ -7,6 +7,7 @@ from packs.proc.processing_utils import process_bin_WD1 from packs.proc.calibration_utils import calibrate from packs.core.core_utils import check_test +from packs.proc.visualise_utils import visualise def proc(config_file): print("Starting the processing pack...") @@ -33,6 +34,8 @@ def proc(config_file): raise RuntimeError(f"wavedump edition {other} decoding isn't currently implemented.") case 'calibrate': calibrate(**conf_dict) + case 'visualise': + visualise(**conf_dict) case other: raise RuntimeError(f"process {other} not currently implemented.") except KeyError as e: diff --git a/packs/proc/visualise_utils.py b/packs/proc/visualise_utils.py new file mode 100644 index 0000000..17a4139 --- /dev/null +++ b/packs/proc/visualise_utils.py @@ -0,0 +1,112 @@ +import io +import sys +import os +import h5py +import argparse +import math as m +import numpy as np +import pandas as pd +import warnings +import matplotlib + +from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg +import tkinter as tk +from tkinter import ttk + +from packs.core.io import load_evt_info, load_rwf_info, reader, check_chunking +from packs.types import types +from packs.proc.waveform_utils import subtract_baseline, collect_sidebands + +def visualise( + file_path : str, + vis_params : dict): + + filename = (file_path.rsplit('.')[1]).rsplit('/')[0] + + # Load event + waveform info + wf_evt = load_evt_info(file_path) + samples = int(wf_evt.loc[0].samples) + wf_rwf = load_rwf_info(file_path, samples) + print(' ... number of samples ... ', samples) + + max_wf = len(wf_rwf['rwf']) - 1 + + # --- GUI setup --- + root = tk.Tk() + root.title(f"Waveform Viewer — {filename}") + + fig, ax = plt.subplots(layout='constrained', figsize=(8, 4)) + canvas = FigureCanvasTkAgg(fig, master=root) + canvas.get_tk_widget().pack(fill=tk.BOTH, expand=True) + + def plot_waveform(wf_num): + ax.clear() + single_wf = wf_rwf['rwf'][wf_num] + if vis_params['negative']: + single_wf = -single_wf + + # check if chunked for backwards compatibility + chunked, keys, l_keys, e_keys = check_chunking(file_path) + + # extract relevant information from event info (assuming static) + scout = reader(file_path, 'event_information', e_keys[0]) + _, _, samples, sampling_period, channels = next(scout) + del scout + + calibration_info_type = types.calibration_info_type + wf_dtype = types.rwf_type(samples) + + print(f'file: {file_path}\nsamples: {samples}\nsampling_period: {sampling_period}\nchannels: {channels}') + + time = np.linspace(0,samples * sampling_period, num = samples) + + sideband_values = collect_sidebands(single_wf, time, vis_params) + single_wf = single_wf - subtract_baseline(sideband_values, sub_type = vis_params['baseline_sub']) + ax.plot(time, single_wf, + marker='o', markerfacecolor='None', linestyle='None', markersize=1) + ax.set_title(f'Waveform #{wf_num}') + ax.set_xlabel('Time (s)') + ax.set_ylabel('ADC') + canvas.draw() + + # Controls frame + ctrl = ttk.Frame(root, padding=8) + ctrl.pack(fill=tk.X) + + ttk.Label(ctrl, text="Waveform #").pack(side=tk.LEFT) + + # Number entry + entry_var = tk.StringVar(value="0") + + def on_entry(event=None): + try: + val = int(entry_var.get()) + val = max(0, min(val, max_wf)) + entry_var.set(val) + slider_var.set(val) + plot_waveform(val) + except ValueError: + pass + + entry = ttk.Entry(ctrl, textvariable=entry_var, width=7) + entry.pack(side=tk.LEFT, padx=4) + entry.bind("", on_entry) + entry.bind("", on_entry) + + # Slider + slider_var = tk.IntVar(value=0) + + def on_slider(event=None): + val = slider_var.get() + entry_var.set(str(val)) + plot_waveform(val) + + slider = ttk.Scale(ctrl, from_=0, to=max_wf, orient=tk.HORIZONTAL, + variable=slider_var, command=on_slider, length=400) + slider.pack(side=tk.LEFT, padx=8, fill=tk.X, expand=True) + + ttk.Label(ctrl, text=f"(0 – {max_wf})").pack(side=tk.LEFT) + + # Draw initial waveform + plot_waveform(0) + root.mainloop() \ No newline at end of file diff --git a/packs/vis/_init b/packs/vis/_init deleted file mode 100644 index e69de29..0000000 diff --git a/packs/vis/visualise.py b/packs/vis/visualise.py deleted file mode 100644 index e69de29..0000000 diff --git a/packs/vis/visualise_utils.py b/packs/vis/visualise_utils.py deleted file mode 100644 index e69de29..0000000 From 63b105fb3f94ef34fd98050668c42435f2f3d805 Mon Sep 17 00:00:00 2001 From: mattzur Date: Thu, 30 Apr 2026 18:05:13 +0100 Subject: [PATCH 03/10] fix variables for time calculation --- packs/proc/visualise_utils.py | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/packs/proc/visualise_utils.py b/packs/proc/visualise_utils.py index 17a4139..523e151 100644 --- a/packs/proc/visualise_utils.py +++ b/packs/proc/visualise_utils.py @@ -8,12 +8,14 @@ import pandas as pd import warnings import matplotlib +import matplotlib.pyplot as plt +from matplotlib.pyplot import cm from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import tkinter as tk from tkinter import ttk -from packs.core.io import load_evt_info, load_rwf_info, reader, check_chunking +from packs.core.io import load_evt_info, load_rwf_info from packs.types import types from packs.proc.waveform_utils import subtract_baseline, collect_sidebands @@ -26,10 +28,11 @@ def visualise( # Load event + waveform info wf_evt = load_evt_info(file_path) samples = int(wf_evt.loc[0].samples) + sampling_period = float(wf_evt.loc[0].sampling_period) wf_rwf = load_rwf_info(file_path, samples) - print(' ... number of samples ... ', samples) - + print(f'file: {file_path}\nsamples: {samples}\nsampling_period: {sampling_period}') max_wf = len(wf_rwf['rwf']) - 1 + time = np.linspace(0,samples * sampling_period, num = samples) # --- GUI setup --- root = tk.Tk() @@ -45,21 +48,6 @@ def plot_waveform(wf_num): if vis_params['negative']: single_wf = -single_wf - # check if chunked for backwards compatibility - chunked, keys, l_keys, e_keys = check_chunking(file_path) - - # extract relevant information from event info (assuming static) - scout = reader(file_path, 'event_information', e_keys[0]) - _, _, samples, sampling_period, channels = next(scout) - del scout - - calibration_info_type = types.calibration_info_type - wf_dtype = types.rwf_type(samples) - - print(f'file: {file_path}\nsamples: {samples}\nsampling_period: {sampling_period}\nchannels: {channels}') - - time = np.linspace(0,samples * sampling_period, num = samples) - sideband_values = collect_sidebands(single_wf, time, vis_params) single_wf = single_wf - subtract_baseline(sideband_values, sub_type = vis_params['baseline_sub']) ax.plot(time, single_wf, From 6e6281af6452bb76437b007ccef275a5b0fb4326 Mon Sep 17 00:00:00 2001 From: mattzur Date: Mon, 11 May 2026 12:03:37 +0100 Subject: [PATCH 04/10] fix function calling in visualise_utils --- packs/proc/visualise_utils.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packs/proc/visualise_utils.py b/packs/proc/visualise_utils.py index 523e151..48177d4 100644 --- a/packs/proc/visualise_utils.py +++ b/packs/proc/visualise_utils.py @@ -17,11 +17,10 @@ from packs.core.io import load_evt_info, load_rwf_info from packs.types import types -from packs.proc.waveform_utils import subtract_baseline, collect_sidebands +from packs.proc.calibration_utils import subtract_baseline, collect_sidebands -def visualise( - file_path : str, - vis_params : dict): +def visualise( file_path : str, + vis_params : dict): filename = (file_path.rsplit('.')[1]).rsplit('/')[0] From 10f1834958750b099faa35db48f4029dfc3ad048 Mon Sep 17 00:00:00 2001 From: mattzur Date: Mon, 11 May 2026 12:05:13 +0100 Subject: [PATCH 05/10] align `:` of visualise() --- packs/proc/visualise_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packs/proc/visualise_utils.py b/packs/proc/visualise_utils.py index 48177d4..d11ad66 100644 --- a/packs/proc/visualise_utils.py +++ b/packs/proc/visualise_utils.py @@ -19,8 +19,8 @@ from packs.types import types from packs.proc.calibration_utils import subtract_baseline, collect_sidebands -def visualise( file_path : str, - vis_params : dict): +def visualise(file_path : str, + vis_params : dict): filename = (file_path.rsplit('.')[1]).rsplit('/')[0] From 570344e83fef5c27db6808f5a282b5dcc28ebe38 Mon Sep 17 00:00:00 2001 From: mattzur Date: Mon, 11 May 2026 14:24:36 +0100 Subject: [PATCH 06/10] add type hinting --- packs/proc/visualise_utils.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/packs/proc/visualise_utils.py b/packs/proc/visualise_utils.py index d11ad66..d11eaa3 100644 --- a/packs/proc/visualise_utils.py +++ b/packs/proc/visualise_utils.py @@ -21,6 +21,18 @@ def visualise(file_path : str, vis_params : dict): + """ + Launch an interactive Tkinter GUI for browsing raw waveforms from a file. + + Parameters + ---------- + file_path : str + Path to the data file. Used to load event/waveform info. + vis_params : dict + Visualisation options: + - 'negative' (bool) – invert the waveform amplitude. + - 'baseline_sub' (str) – method for determining baseline, 'median' or 'mean' + """ filename = (file_path.rsplit('.')[1]).rsplit('/')[0] @@ -41,7 +53,8 @@ def visualise(file_path : str, canvas = FigureCanvasTkAgg(fig, master=root) canvas.get_tk_widget().pack(fill=tk.BOTH, expand=True) - def plot_waveform(wf_num): + def plot_waveform(wf_num : int): + """Clear the axes and draw waveform wf_num with baseline subtraction applied.""" ax.clear() single_wf = wf_rwf['rwf'][wf_num] if vis_params['negative']: @@ -65,7 +78,8 @@ def plot_waveform(wf_num): # Number entry entry_var = tk.StringVar(value="0") - def on_entry(event=None): + def on_entry(event : tk.Event | None = None): + """Check and apply the waveform index, fixing the diagram to the valid range.""" try: val = int(entry_var.get()) val = max(0, min(val, max_wf)) @@ -83,7 +97,8 @@ def on_entry(event=None): # Slider slider_var = tk.IntVar(value=0) - def on_slider(event=None): + def on_slider(value : str | None = None): + """Command for ttk.Scale. Sync the entry box to the slider position and redraw the selected waveform.""" val = slider_var.get() entry_var.set(str(val)) plot_waveform(val) From c79c83af880e993a2f7ed506f55c6626ff0e8907 Mon Sep 17 00:00:00 2001 From: mattzur Date: Mon, 11 May 2026 14:28:50 +0100 Subject: [PATCH 07/10] add comments to each section --- packs/proc/visualise_utils.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packs/proc/visualise_utils.py b/packs/proc/visualise_utils.py index d11eaa3..df1989e 100644 --- a/packs/proc/visualise_utils.py +++ b/packs/proc/visualise_utils.py @@ -36,7 +36,7 @@ def visualise(file_path : str, filename = (file_path.rsplit('.')[1]).rsplit('/')[0] - # Load event + waveform info + # load event + waveform info wf_evt = load_evt_info(file_path) samples = int(wf_evt.loc[0].samples) sampling_period = float(wf_evt.loc[0].sampling_period) @@ -45,10 +45,11 @@ def visualise(file_path : str, max_wf = len(wf_rwf['rwf']) - 1 time = np.linspace(0,samples * sampling_period, num = samples) - # --- GUI setup --- + # init GUI root = tk.Tk() root.title(f"Waveform Viewer — {filename}") + # generate plot fig, ax = plt.subplots(layout='constrained', figsize=(8, 4)) canvas = FigureCanvasTkAgg(fig, master=root) canvas.get_tk_widget().pack(fill=tk.BOTH, expand=True) @@ -69,13 +70,13 @@ def plot_waveform(wf_num : int): ax.set_ylabel('ADC') canvas.draw() - # Controls frame + # controls frame ctrl = ttk.Frame(root, padding=8) ctrl.pack(fill=tk.X) ttk.Label(ctrl, text="Waveform #").pack(side=tk.LEFT) - # Number entry + # number entry entry_var = tk.StringVar(value="0") def on_entry(event : tk.Event | None = None): @@ -94,7 +95,7 @@ def on_entry(event : tk.Event | None = None): entry.bind("", on_entry) entry.bind("", on_entry) - # Slider + # slider slider_var = tk.IntVar(value=0) def on_slider(value : str | None = None): @@ -103,12 +104,13 @@ def on_slider(value : str | None = None): entry_var.set(str(val)) plot_waveform(val) + # controls slider slider = ttk.Scale(ctrl, from_=0, to=max_wf, orient=tk.HORIZONTAL, variable=slider_var, command=on_slider, length=400) slider.pack(side=tk.LEFT, padx=8, fill=tk.X, expand=True) ttk.Label(ctrl, text=f"(0 – {max_wf})").pack(side=tk.LEFT) - # Draw initial waveform + # draw initial waveform plot_waveform(0) root.mainloop() \ No newline at end of file From 5a3ab652039c0a780833027b4be16d215db4f33f Mon Sep 17 00:00:00 2001 From: mattzur Date: Mon, 11 May 2026 14:34:04 +0100 Subject: [PATCH 08/10] move supporting functions for readability --- packs/proc/visualise_utils.py | 69 ++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/packs/proc/visualise_utils.py b/packs/proc/visualise_utils.py index df1989e..a1cc46f 100644 --- a/packs/proc/visualise_utils.py +++ b/packs/proc/visualise_utils.py @@ -33,6 +33,41 @@ def visualise(file_path : str, - 'negative' (bool) – invert the waveform amplitude. - 'baseline_sub' (str) – method for determining baseline, 'median' or 'mean' """ + # supporting functions + # --------------------------------------------------------------------------------- + def plot_waveform(wf_num : int): + """Clear the axes and draw waveform wf_num with baseline subtraction applied.""" + ax.clear() + single_wf = wf_rwf['rwf'][wf_num] + if vis_params['negative']: + single_wf = -single_wf + + sideband_values = collect_sidebands(single_wf, time, vis_params) + single_wf = single_wf - subtract_baseline(sideband_values, sub_type = vis_params['baseline_sub']) + ax.plot(time, single_wf, + marker='o', markerfacecolor='None', linestyle='None', markersize=1) + ax.set_title(f'Waveform #{wf_num}') + ax.set_xlabel('Time (s)') + ax.set_ylabel('ADC') + canvas.draw() + + def on_entry(event : tk.Event | None = None): + """Check and apply the waveform index, fixing the diagram to the valid range.""" + try: + val = int(entry_var.get()) + val = max(0, min(val, max_wf)) + entry_var.set(val) + slider_var.set(val) + plot_waveform(val) + except ValueError: + pass + + def on_slider(value : str | None = None): + """Command for ttk.Scale. Sync the entry box to the slider position and redraw the selected waveform.""" + val = slider_var.get() + entry_var.set(str(val)) + plot_waveform(val) + # --------------------------------------------------------------------------------- filename = (file_path.rsplit('.')[1]).rsplit('/')[0] @@ -54,22 +89,6 @@ def visualise(file_path : str, canvas = FigureCanvasTkAgg(fig, master=root) canvas.get_tk_widget().pack(fill=tk.BOTH, expand=True) - def plot_waveform(wf_num : int): - """Clear the axes and draw waveform wf_num with baseline subtraction applied.""" - ax.clear() - single_wf = wf_rwf['rwf'][wf_num] - if vis_params['negative']: - single_wf = -single_wf - - sideband_values = collect_sidebands(single_wf, time, vis_params) - single_wf = single_wf - subtract_baseline(sideband_values, sub_type = vis_params['baseline_sub']) - ax.plot(time, single_wf, - marker='o', markerfacecolor='None', linestyle='None', markersize=1) - ax.set_title(f'Waveform #{wf_num}') - ax.set_xlabel('Time (s)') - ax.set_ylabel('ADC') - canvas.draw() - # controls frame ctrl = ttk.Frame(root, padding=8) ctrl.pack(fill=tk.X) @@ -79,17 +98,7 @@ def plot_waveform(wf_num : int): # number entry entry_var = tk.StringVar(value="0") - def on_entry(event : tk.Event | None = None): - """Check and apply the waveform index, fixing the diagram to the valid range.""" - try: - val = int(entry_var.get()) - val = max(0, min(val, max_wf)) - entry_var.set(val) - slider_var.set(val) - plot_waveform(val) - except ValueError: - pass - + # controls entry entry = ttk.Entry(ctrl, textvariable=entry_var, width=7) entry.pack(side=tk.LEFT, padx=4) entry.bind("", on_entry) @@ -98,12 +107,6 @@ def on_entry(event : tk.Event | None = None): # slider slider_var = tk.IntVar(value=0) - def on_slider(value : str | None = None): - """Command for ttk.Scale. Sync the entry box to the slider position and redraw the selected waveform.""" - val = slider_var.get() - entry_var.set(str(val)) - plot_waveform(val) - # controls slider slider = ttk.Scale(ctrl, from_=0, to=max_wf, orient=tk.HORIZONTAL, variable=slider_var, command=on_slider, length=400) From 919d28dd599c28128da9c523824c314370c19260 Mon Sep 17 00:00:00 2001 From: mattzur Date: Mon, 11 May 2026 14:39:01 +0100 Subject: [PATCH 09/10] remove unnecessary imports --- packs/proc/visualise_utils.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/packs/proc/visualise_utils.py b/packs/proc/visualise_utils.py index a1cc46f..0281da2 100644 --- a/packs/proc/visualise_utils.py +++ b/packs/proc/visualise_utils.py @@ -1,22 +1,12 @@ -import io -import sys -import os -import h5py -import argparse -import math as m import numpy as np import pandas as pd -import warnings -import matplotlib import matplotlib.pyplot as plt -from matplotlib.pyplot import cm from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import tkinter as tk from tkinter import ttk from packs.core.io import load_evt_info, load_rwf_info -from packs.types import types from packs.proc.calibration_utils import subtract_baseline, collect_sidebands def visualise(file_path : str, From a9ad8abd8824fc20c1dc5703808299886ef3a8ce Mon Sep 17 00:00:00 2001 From: mattzur Date: Mon, 11 May 2026 15:14:27 +0100 Subject: [PATCH 10/10] add vis to pack choices --- bin/mule | 3 ++- packs/configs/vis_wd1_1channel.conf | 6 +++--- packs/proc/proc.py | 3 --- packs/vis/vis.py | 30 ++++++++++++++++++++++++++ packs/{proc => vis}/visualise_utils.py | 4 ++-- 5 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 packs/vis/vis.py rename packs/{proc => vis}/visualise_utils.py (97%) diff --git a/bin/mule b/bin/mule index 52db84b..c625bf0 100755 --- a/bin/mule +++ b/bin/mule @@ -27,11 +27,12 @@ MULE pack runtime executable Use 'mule --help' for more information ======================================''', formatter_class=argparse.RawTextHelpFormatter) -parser.add_argument("pack", choices = ['acq','proc','tests','ana'], help = '''The pack implemented: +parser.add_argument("pack", choices = ['acq','proc','tests','ana', 'vis'], help = '''The pack implemented: acq - Acquisition of data using wavedump 1 proc - Processing of data tests - Testing directory (IGNORE) ana - Analysing data + vis - Visualise data ''') parser.add_argument("config", help = 'The config file provided to the pack, this differs based on which pack youre using') # acquire arguments diff --git a/packs/configs/vis_wd1_1channel.conf b/packs/configs/vis_wd1_1channel.conf index 2c5935e..8dc848c 100644 --- a/packs/configs/vis_wd1_1channel.conf +++ b/packs/configs/vis_wd1_1channel.conf @@ -1,8 +1,8 @@ [required] -process = 'visualise' -file_path = '/path/to/file.h5' -vis_params = { +visualise = 'waveform' # only 'waveform' as in single waveform so far +file_path = '/path/to/file.h5' +vis_params = { 'baseline_sub' : 'median', 'sidebands' : ((100, 300), (2900, 3100)), 'negative' : False} diff --git a/packs/proc/proc.py b/packs/proc/proc.py index cf6b86e..4684185 100644 --- a/packs/proc/proc.py +++ b/packs/proc/proc.py @@ -7,7 +7,6 @@ from packs.proc.processing_utils import process_bin_WD1 from packs.proc.calibration_utils import calibrate from packs.core.core_utils import check_test -from packs.proc.visualise_utils import visualise def proc(config_file): print("Starting the processing pack...") @@ -34,8 +33,6 @@ def proc(config_file): raise RuntimeError(f"wavedump edition {other} decoding isn't currently implemented.") case 'calibrate': calibrate(**conf_dict) - case 'visualise': - visualise(**conf_dict) case other: raise RuntimeError(f"process {other} not currently implemented.") except KeyError as e: diff --git a/packs/vis/vis.py b/packs/vis/vis.py new file mode 100644 index 0000000..75717bf --- /dev/null +++ b/packs/vis/vis.py @@ -0,0 +1,30 @@ +import os +import sys +import traceback + +from packs.core.io import read_config_file +from packs.core.core_utils import check_test +from packs.vis.visualise_utils import visualise_waveform + +def vis(config_file): + print("Starting the visualisation pack...") + + # checks if test, if so ends run + if check_test(config_file): + return + + # take full path + full_path = os.path.expandvars(config_file) + + conf_dict = read_config_file(full_path) + # check the method implemented, currently just process + try: + match conf_dict.pop('visualise'): + case 'waveform': + visualise_waveform(**conf_dict) + case other: + raise RuntimeError(f"process {other} not currently implemented.") + except KeyError as e: + print(f"\nError in the configuration file, incorrect or missing argument: {e} \n") + traceback.print_exc() + sys.exit(2) \ No newline at end of file diff --git a/packs/proc/visualise_utils.py b/packs/vis/visualise_utils.py similarity index 97% rename from packs/proc/visualise_utils.py rename to packs/vis/visualise_utils.py index 0281da2..02e42bd 100644 --- a/packs/proc/visualise_utils.py +++ b/packs/vis/visualise_utils.py @@ -9,8 +9,8 @@ from packs.core.io import load_evt_info, load_rwf_info from packs.proc.calibration_utils import subtract_baseline, collect_sidebands -def visualise(file_path : str, - vis_params : dict): +def visualise_waveform(file_path : str, + vis_params : dict): """ Launch an interactive Tkinter GUI for browsing raw waveforms from a file.