prysm.convolution

Defines behavior of convolvable items and a base class to encapsulate that behavior.

class prysm.convolution.Convolvable(x, y, data, has_analytic_ft=False)

Bases: prysm._basicdata.BasicData

A base class for convolvable objects to inherit from.

support_x

Width of the domain in X.

support_y

Width of the domain in Y.

support

Width of the domain.

plot_slice_xy(axlim=20, lw=3, zorder=3, fig=None, ax=None)

Create a plot of slices through the X and Y axes of the PSF.

Parameters
  • axlim (float or int, optional) – axis limits, in microns

  • lw (float, optional) – line width

  • zorder (int, optional) – zorder

  • fig (matplotlib.figure.Figure, optional) – Figure to draw plot in

  • ax (matplotlib.axes.Axis) – Axis to draw plot in

Returns

  • fig (matplotlib.figure.Figure, optional) – Figure containing the plot

  • ax (matplotlib.axes.Axis, optional) – Axis containing the plot

conv(other)

Convolves this convolvable with another.

Parameters

other (Convolvable) – A convolvable object

Returns

a convolvable object

Return type

Convolvable

Notes

If self and other both have analytic Fourier transforms, no math will be done and the aFTs are merged directly.

If only one of self or other has an analytic Fourier transform, the output grid will be defined by the object which does not have an analytic Fourier transform.

If neither has an analytic transform, the output grid will: - span max(self.support, other.support) - have sample spacing min(self.sample_spacing, other.sample_spacing)

This ensures the signal remains Nyquist sampled and (probably) doesn’t expand beyond the extent of the output window. The latter condition will be violated when two large convolvables are convolved.

deconv(other, balance=1000, reg=None, is_real=True, clip=False, postnormalize=True)

Perform the deconvolution of this convolvable object by another.

Parameters
  • other (Convolvable) – another convolvable object, used as the PSF in a Wiener deconvolution

  • balance (float, optional) – regularization parameter; passed through to skimage

  • reg (numpy.ndarray, optional) – regularization operator, passed through to skimage

  • is_real (bool, optional) – True if self and other are both real

  • clip (bool, optional) – clips self and other into (0,1)

  • postnormalize (bool, optional) – normalize the result such that it falls in [0,1]

Returns

a new Convolable object

Return type

Convolvable

Notes

See skimage: http://scikit-image.org/docs/dev/api/skimage.restoration.html#skimage.restoration.wiener

renorm()

Renormalize so that the peak is at a value of unity.

show(xlim=None, ylim=None, interp_method=None, power=1, show_colorbar=True, fig=None, ax=None)

Display the image.

Parameters
  • xlim (iterable, optional) – x axis limits

  • ylim (iterable,) – y axis limits

  • interp_method (string) – interpolation technique used in display

  • power (float) – inverse of power to stretch image by. E.g. power=2 will plot img ** (1/2)

  • show_colorbar (bool) – whether to show the colorbar or not.

  • fig (matplotlib.figure.Figure, optional:) – Figure containing the plot

  • ax (matplotlib.axes.Axis, optional:) – Axis containing the plot

Returns

  • fig (matplotlib.figure.Figure, optional:) – Figure containing the plot

  • ax (matplotlib.axes.Axis, optional:) – Axis containing the plot

show_fourier(freq_x=None, freq_y=None, interp_method='lanczos', fig=None, ax=None)

Display the fourier transform of the image.

Parameters
  • interp_method (string) – method used to interpolate the data for display.

  • freq_x (iterable) – x frequencies to use for convolvable with analytical FT and no data

  • freq_y (iterable) – y frequencies to use for convolvable with analytic FT and no data

  • fig (matplotlib.figure.Figure) – Figure containing the plot

  • ax (matplotlib.axes.Axis) – Axis containing the plot

Returns

  • fig (matplotlib.figure.Figure) – Figure containing the plot

  • ax (matplotlib.axes.Axis) – Axis containing the plot

Notes

freq_x and freq_y are unused when the convolvable has a .data field.

save(path, nbits=8)

Write the image to a png, jpg, tiff, etc.

Parameters
  • path (string) – path to write the image to

  • nbits (int) – number of bits in the output image

static from_file(path, scale)

Read a monochrome 8 bit per pixel file into a new Image instance.

Parameters
  • path (string) – path to a file

  • scale (float) – pixel scale, in microns

Returns

a new image object

Return type

Convolvable

center_x

Center “pixel” in x.

center_y

Center “pixel” in y.

copy()

Return a (deep) copy of this instance.

sample_spacing

center-to-center sample spacing.

samples_x

Number of samples in the x dimension.

samples_y

Number of samples in the y dimension.

shape

Proxy to phase or data shape.

size

Proxy to phase or data size.

slice_x

Retrieve a slice through the X axis of the phase.

Returns

  • self.unit (numpy.ndarray) – ordinate axis

  • slice of self.phase or self.data (numpy.ndarray)

slice_y

Retrieve a slice through the Y axis of the phase.

Returns

  • self.unit (numpy.ndarray) – ordinate axis

  • slice of self.phase or self.data (numpy.ndarray)

class prysm.convolution.ConvolutionEngine(c1, c2=None, spatial_finalization=(<built-in function abs>, ), Q=2, pad_method='linear_ramp')

Bases: object

An engine to facilitate fine-grained control over convolutions.

fire()

Convolve self.c1 and self.c2 with no fuss.

compute_kspace_data()

Compute the k-space representation of the convolution of c1 and c2.

compute_kspace_units()

Compute the k-space domain of the convolution of c1 and c2.

compute_spatial_units()

Compute the spatial domain units of the convolution of c1 and c2.

ifft()

Take the iFT to compute the spatial representation of the convolution of c1 and c2.

crop_output()

Crop the output in the spatial domain to remove the padded area.

postprocess_spatial()

Post-process the spatial domain.

merge_analytics()

Merge c1 and c2 if they both have analytic FTs, else raise.

Raises

ValueError – c1 or c2 does not have an analytic FT.

spatial

Spatial representation, x, y, data.

kspace

k-space representation, fx, fy, data.