From 68e94e3db644b01820642710092e3521646c63d1 Mon Sep 17 00:00:00 2001 From: Nils Brueggemann <nils.brueggemann@mpimet.mpg.de> Date: Mon, 10 Mar 2025 15:36:57 +0100 Subject: [PATCH] pyic_view: Encapsulate default print statements into function to allow for verbosity options later on. --- scripts/pyic_view.py | 47 ++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/scripts/pyic_view.py b/scripts/pyic_view.py index 7fb0e3e..37e71a4 100755 --- a/scripts/pyic_view.py +++ b/scripts/pyic_view.py @@ -127,7 +127,7 @@ def get_data(ds, var_name, it, iz, res, lon_reg, lat_reg): class view(object): def __init__(self, flist, path_grid, fig_size_fac=1.0): # Initialize Tkinter - print('setup TKinter') + self.message('setup TKinter') root = tk.Tk() root.title("pyicon view") root.geometry("1200x800") @@ -178,7 +178,7 @@ class view(object): self.selected_var = tk.StringVar(value=self.var_names[0]) self.selected_cmap = tk.StringVar(value=self.colormaps[0]) self.color_limits = tk.StringVar(value="auto") # Default color limits - self.lon_lat_reg_tk = tk.StringVar(value="-180,180,-90,90") + self.lon_lat_reg_tk = tk.StringVar(value=f"{self.lon_reg[0]},{self.lon_reg[1]},{self.lat_reg[0]},{self.lat_reg[1]}") self.save_fig_tk = tk.StringVar(value="./fig.pdf") self.selected_res = tk.StringVar(value="0.3") self.selected_proj = tk.StringVar(value="None") @@ -204,7 +204,7 @@ class view(object): self.canvas.mpl_connect("button_press_event", self.on_click) # --- 1st row - print('Setup sliders') + self.message('Setup sliders') pady_num = 8 frame1 = tk.Frame(root) frame1.pack(fill="x", pady=pady_num) @@ -240,7 +240,7 @@ class view(object): frame2.pack(fill="x", pady=pady_num) # Create dropdown menus - print('Setup var dropdown') + self.message('Setup var dropdown') var_menu = ttk.Combobox( frame2, textvariable=self.selected_var, values=list(self.ds.data_vars.keys()), state="readonly" @@ -249,14 +249,14 @@ class view(object): var_menu.bind("<<ComboboxSelected>>", self.update_data) # Cmap dropdown - print('Setup cmap dropdown') + self.message('Setup cmap dropdown') cmap_menu = ttk.Combobox(frame2, textvariable=self.selected_cmap, values=self.colormaps, state="readonly") cmap_menu.pack(side="left", padx=5) cmap_menu.bind("<<ComboboxSelected>>", self.update_cmap) # Color limit entry - print('Setup color limits') + self.message('Setup color limits') entry = tk.Entry(frame2, textvariable=self.color_limits) entry.pack(side="left", padx=5) entry.insert(0, "") # Default value @@ -279,14 +279,14 @@ class view(object): frame3.pack(fill="x", pady=pady_num) # res entry - print('Setup res dropdown') + self.message('Setup res dropdown') res_menu = ttk.Combobox(frame3, textvariable=self.selected_res, values=self.res_all, state="readonly") res_menu.pack(side="left", padx=5) res_menu.bind("<<ComboboxSelected>>", self.make_new_axis) # lon_lat_reg entry - print('Setup lon_reg') + self.message('Setup lon_reg') self.entry_lon_lat_reg = tk.Entry(frame3, textvariable=self.lon_lat_reg_tk) self.entry_lon_lat_reg.pack(side="left", padx=5) self.entry_lon_lat_reg.insert(0, "") # Default value @@ -321,10 +321,13 @@ class view(object): self.canvas.draw() # Start Tkinter loop - print('Go into mainloop') + self.message('Go into mainloop') root.mainloop() return + def message(self, message): + print(f'pyic_view: {message}') + # reset zoom def reset_zoom(self): self.selected_res.set("0.3") @@ -335,7 +338,7 @@ class view(object): # for saving the figure def save_figure(self, *args): fpath = self.save_fig_tk.get() - print(f'Saving figure {fpath}') + self.message(f'Saving figure {fpath}') #plt.savefig(fpath, dpi=300) plt.savefig(fpath, dpi=300, bbox_inches='tight') @@ -389,7 +392,7 @@ class view(object): self.canvas.mpl_disconnect(self.cid_motion) def load_data(self): - print('opening dataset') + self.message('opening dataset') mfdset_kwargs = dict( combine='nested', concat_dim='time', data_vars='minimal', coords='minimal', @@ -398,6 +401,8 @@ class view(object): ) + self.message('Data from these files is considered:') + self.message(self.flist) self.ds = xr.open_mfdataset( self.flist, **mfdset_kwargs, chunks=dict(time=1, depth=1, depth_2=1) @@ -416,7 +421,7 @@ class view(object): except: pass self.var_names = list(self.ds) - print(f"variables in data set: {self.var_names}") + self.message(f"variables in data set: {self.var_names}") self.var_name = self.var_names[0] # copy uuidOfHGrid to each variable as attribute @@ -440,7 +445,7 @@ class view(object): self.nzs[var] = 0 except: delvars.append(var) - print(f'Excluding the following variables from data set due to issues with dimension specification: {delvars}') + self.message(f'Excluding the following variables from data set due to issues with dimension specification: {delvars}') self.ds = self.ds.drop_vars(delvars) def plot_data(self): @@ -587,7 +592,7 @@ class view(object): # update depth slider self.slider_d.config(to=self.nzs[self.var_name]-1) - print(f'Updating data: {self.var_name}: it = {self.it}; iz = {self.iz}') + self.message(f'Updating data: {self.var_name}: it = {self.it}; iz = {self.iz}') # Get data and plot self.update_lon_lat_reg() @@ -621,7 +626,7 @@ class view(object): try: clim = self.get_clim(clim_str, self.dai) self.hm[0].set_clim(clim[0], clim[1]) - print(f'Updating clim to {tuple(map(float, clim))}') + self.message(f'Updating clim to {tuple(map(float, clim))}') self.canvas.draw() except ValueError: print(f'Invalid value for clim: {clim_str}') @@ -633,7 +638,7 @@ class view(object): def update_cmap(self, *args): # update cmap cmap = self.selected_cmap.get() - print(f"Updating cmap to {cmap}") + self.message(f"Updating cmap to {cmap}") if cmap.startswith('cmo'): cmap = cmap.split('.')[-1] cmap = getattr(cmocean.cm, cmap) @@ -647,7 +652,7 @@ class view(object): lon_lat_reg = str_to_array(lon_lat_reg_str) self.lon_reg = [lon_lat_reg[0], lon_lat_reg[1]] self.lat_reg = [lon_lat_reg[2], lon_lat_reg[3]] - print(f'Updating lon_reg to {tuple(map(float, self.lon_reg))} and lat_reg to {tuple(map(float, self.lat_reg))}') + self.message(f'Updating lon_reg to {tuple(map(float, self.lon_reg))} and lat_reg to {tuple(map(float, self.lat_reg))}') def get_clim(self, clim, data): # --- clim @@ -667,7 +672,7 @@ class view(object): def toggle_grid(self): if self.do_grid.get(): - print('Adding grid lines') + self.message('Adding grid lines') color='k' linewidth=0.5 if self.proj=="+proj=stere +lat_0=90 +lon_0=0": @@ -714,7 +719,7 @@ class view(object): self.hgs.append(hg) #print(f'nn = {nn}, {self.hgs}') else: - print('Removing grid lines') + self.message('Removing grid lines') for hg in self.hgs: hg.remove() self.canvas.draw() @@ -768,11 +773,7 @@ def main(): flist = iopts.fpath_data flist.sort() - print('Data from these files is considered:') - print(flist) - # Initial plot - print('Initialize plot') path_grid = 'auto' View = view(flist, path_grid=path_grid, -- GitLab