Source code for neuralib.imaging.widefield.plot

import numpy as np

from neuralib.plot import plot_figure
from neuralib.plot.colormap import insert_colorbar, insert_cyclic_colorbar
from neuralib.typing import PathLike
from .fft import SequenceFFT

__all__ = ['plot_retinotopic_maps']


[docs] def plot_retinotopic_maps(sequence: np.ndarray, *, output: PathLike | None = None, interp: str = 'none', intensity_cmap='binary', phase_cmap='hsv', **kwargs): """ Plot retinotopic maps based on fft calculation. .. seealso:: :class:`~neuralib.imaging.widefield.fft.SequenceFFT` :param sequence: Image sequence. `Array[float | uint8, [F, H, W]]` :param output: Output path for the figure, defaults is None for ``show()`` :param interp: Kwarg interpolation for ``ax.imshow()`` :param intensity_cmap: Intensity color map, defaults to 'binary' :param phase_cmap: Intensity phase color map, defaults to 'hsv' :param kwargs: Additional arguments passed to :meth:`~neuralib.imaging.widefield.fft.SequenceFFT.as_colormap()` """ seq_fft = SequenceFFT(sequence) with plot_figure(output, 1, 3, figsize=(12, 6)) as _ax: ax = _ax[0] im = ax.imshow(seq_fft.get_intensity(), cmap=intensity_cmap, interpolation=interp) insert_colorbar(ax, im) ax.set_title('intensity') ax.axis('off') ax = _ax[1] im = ax.imshow(seq_fft.get_phase(), cmap=phase_cmap, interpolation=interp) insert_cyclic_colorbar(ax, im, num_colors=36, width=0.2, inner_diameter=1, vmin=0, vmax=1) ax.set_title('phase') ax.axis('off') ax = _ax[2] im = ax.imshow(seq_fft.as_colormap(**kwargs), cmap='hsv', interpolation=interp) insert_cyclic_colorbar(ax, im, num_colors=36, width=0.5, inner_diameter=1, vmin=0, vmax=1) ax.set_title('retinotopic map') ax.axis('off')