Merge branch 'avoid-nan-cast-warning' into 'development'
Silence Runtime warning when casting (masking) NaN values to color See merge request damask/DAMASK!847
This commit is contained in:
commit
873ca78b8c
|
@ -296,7 +296,7 @@ class Colormap(mpl.colors.ListedColormap):
|
||||||
RGBA image of shaded data.
|
RGBA image of shaded data.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
mask = np.logical_not(np.isnan(field) if gap is None else \
|
mask = np.logical_not(np.isnan(field) if gap is None else
|
||||||
np.logical_or(np.isnan(field), field == gap)) # mask NaN (and gap if present)
|
np.logical_or(np.isnan(field), field == gap)) # mask NaN (and gap if present)
|
||||||
|
|
||||||
l,r = (field[mask].min(),field[mask].max()) if bounds is None else \
|
l,r = (field[mask].min(),field[mask].max()) if bounds is None else \
|
||||||
|
@ -305,9 +305,11 @@ class Colormap(mpl.colors.ListedColormap):
|
||||||
if abs(delta := r-l) * 1e8 <= (avg := 0.5*abs(r+l)): # delta is similar to numerical noise
|
if abs(delta := r-l) * 1e8 <= (avg := 0.5*abs(r+l)): # delta is similar to numerical noise
|
||||||
l,r = (l-0.5*avg*np.sign(delta),r+0.5*avg*np.sign(delta)) # extend range to have actual data centered within
|
l,r = (l-0.5*avg*np.sign(delta),r+0.5*avg*np.sign(delta)) # extend range to have actual data centered within
|
||||||
|
|
||||||
|
field_ = np.nan_to_num(field, nan=(l+r)/2, posinf=r, neginf=l)
|
||||||
|
|
||||||
return Image.fromarray(
|
return Image.fromarray(
|
||||||
(np.dstack((
|
(np.dstack((
|
||||||
self.colors[(np.round(np.clip((field-l)/delta,0.0,1.0)*(self.N-1))).astype(np.uint16),:3],
|
self.colors[np.round(np.clip((field_-l)/(r-l),0.0,1.0)*(self.N-1)).astype(np.uint16),:3],
|
||||||
mask.astype(float)
|
mask.astype(float)
|
||||||
)
|
)
|
||||||
)*255
|
)*255
|
||||||
|
|
Loading…
Reference in New Issue