Skip to content

Updates display warnings / errors #43

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 31, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 15 additions & 12 deletions src/pyrtools/tools/display.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,6 @@
from matplotlib import cm
from matplotlib.figure import Figure
from matplotlib import animation
try:
from IPython.display import HTML
except ImportError:
warnings.warn("Unable to import IPython.display.HTML, animshow must be called with "
"as_html5=False")
from ..pyramids import convert_pyr_coeffs_to_pyr


Expand Down Expand Up @@ -529,16 +524,18 @@ def _process_signal(signal, title, plot_complex, video=False):
if sig.ndim == (3 + time_dim):
if sig.shape[-1] not in [3, 4]:
raise Exception(
"Can't figure out how to plot {} with shape {}"
f"Can't figure out how to plot {sigtype} with shape {sig.shape} "
"as RGB(A)! RGB(A) signals should have their final"
"dimension of shape 3 or 4.".format(sigtype, sig.shape))
"dimension of shape 3 or 4."
)
contains_rgb = True
elif sig.ndim != (2 + time_dim):
raise Exception(
"Can't figure out how to plot image with "
"shape {}! Images should be be either 2d "
"(grayscale) or 3d (RGB(A), last dimension with 3 or"
" 4 elements).".format(sig.shape))
f"Can't figure out how to plot {sigtype} with "
f"shape {sig.shape}! {sigtype.capitalize()}s should be be either "
f"{2 + time_dim}d (grayscale) or {3 + time_dim}d (RGB(A), last "
"dimension with 3 or 4 elements)."
)
if np.iscomplexobj(sig):
if plot_complex == 'rectangular':
signal_tmp.extend([np.real(sig), np.imag(sig)])
Expand Down Expand Up @@ -776,6 +773,7 @@ def animshow(video, framerate=2., as_html5=True, repeat=False,
as_html : `bool`
If True, return an HTML5 video; otherwise return the underying matplotlib animation object
(e.g. to save to .gif). should set to True to display in a Jupyter notebook.
Requires ipython to be installed.
repeat : `bool`
whether to loop the animation or just play it once
vrange : `tuple` or `str`
Expand Down Expand Up @@ -832,7 +830,12 @@ def animshow(video, framerate=2., as_html5=True, repeat=False,
Animation, format depends on `as_html`.

"""

if as_html5:
try:
from IPython.display import HTML
except ImportError:
raise ImportError("Unable to import IPython.display.HTML, animshow must be called with "
"as_html5=False")
video = _convert_signal_to_list(video)
video_n_frames = np.array([v.shape[0] for v in video])
if (video_n_frames != video_n_frames[0]).any():
Expand Down
Loading