Skip to content

Commit 4061c41

Browse files
committed
Split minmax determination in a helper function
This reduces the size of field.cmd which was starting to be too complex.
1 parent a3293b7 commit 4061c41

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

stagpy/field.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,25 @@ def plot_vec(axis, step, var):
259259
linewidths=1)
260260

261261

262+
def _findminmax(sdat, sovs):
263+
"""Find min and max values of several fields."""
264+
minmax = {}
265+
for step in sdat.walk.filter(snap=True):
266+
for var in sovs:
267+
if var in step.fields:
268+
if var in phyvars.FIELD:
269+
dim = phyvars.FIELD[var].dim
270+
else:
271+
dim = phyvars.FIELD_EXTRA[var].dim
272+
field, _ = sdat.scale(step.fields[var], dim)
273+
if var in minmax:
274+
minmax[var] = (min(minmax[var][0], np.nanmin(field)),
275+
max(minmax[var][1], np.nanmax(field)))
276+
else:
277+
minmax[var] = np.nanmin(field), np.nanmax(field)
278+
return minmax
279+
280+
262281
def cmd():
263282
"""Implementation of field subcommand.
264283
@@ -275,19 +294,7 @@ def cmd():
275294
conf.plot.vmin = None
276295
conf.plot.vmax = None
277296
sovs = set(slov[0] for plov in lovs for slov in plov)
278-
for step in sdat.walk.filter(snap=True):
279-
for var in sovs:
280-
if var in step.fields:
281-
if var in phyvars.FIELD:
282-
dim = phyvars.FIELD[var].dim
283-
else:
284-
dim = phyvars.FIELD_EXTRA[var].dim
285-
field, _ = sdat.scale(step.fields[var], dim)
286-
if var in minmax:
287-
minmax[var] = (min(minmax[var][0], np.nanmin(field)),
288-
max(minmax[var][1], np.nanmax(field)))
289-
else:
290-
minmax[var] = np.nanmin(field), np.nanmax(field)
297+
minmax = _findminmax(sdat, sovs)
291298
for step in sdat.walk.filter(snap=True):
292299
for vfig in lovs:
293300
fig, axes = plt.subplots(ncols=len(vfig), squeeze=False,

0 commit comments

Comments
 (0)