prysm.detector¶
Detector-related simulations.
-
class
prysm.detector.
Detector
(pitch_x=None, pitch_y=None, pixel='rectangle', resolution=(1024, 1024), nbits=16, framebuffer=10)¶ Bases:
object
Model of a image sensor.
-
capture
(convolvable)¶ Sample a convolvable, mimics capturing a photo of an oversampled representation of an image.
- Parameters
convolvable (prysm.Convolvable) – a convolvable object
- Returns
a new convolvable object, as it would be sampled by the detector
- Return type
prysm.convolvable
- Raises
ValueError – if the convolvable would have to become supersampled by the detector; this would lead to an inaccurate result and is not supported
-
save_image
(path, which='last')¶ Save an image captured by the detector.
- Parameters
path (string) – path to save the image to
which (string or int) – if string, “first” or “last”, otherwise index into the capture buffer of the camera.
- Raises
ValueError – bad target frame to save; should always be the a valid int < buffer_depth
-
show_image
(which='last', fig=None, ax=None)¶ Show an image captured by the detector.
- Parameters
which (string or int) – if string, “first” or “last”, otherwise index into the capture buffer of the camera
fig (matplotlib.figure.Figure, optional) – Figure containing the plot
ax (matplotlib.axes.Axis, optional) – Axis containing the plot
- Returns
fig (`matplotlib.figure.Figure) – Figure containing the plot
ax (matplotlib.axes.Axis) – Axis containing the plot
-
pitch
¶ 1D pixel pitch - minimum of x/y pitches.
-
fill_factor_x
¶ Fill factor in the X axis.
-
fill_factor_y
¶ Fill factor in the Y axis.
-
fill_factor
¶ 1D fill factor – minimum of x/y fill factors.
-
fs
¶ Sampling frequency in cy/mm.
-
nyquist
¶ Nyquist frequency in cy/mm.
-
last
¶ Last frame captured.
-
-
class
prysm.detector.
OLPF
(width_x, width_y=None, sample_spacing=0, samples_x=None, samples_y=None)¶ Bases:
prysm.convolution.Convolvable
Optical Low Pass Filter.
-
analytic_ft
(x, y)¶ Analytic fourier transform of a pixel aperture.
- Parameters
x (numpy.ndarray) – sample points in x axis
y (numpy.ndarray) – sample points in y axis
- Returns
2D numpy array containing the analytic fourier transform
- Return type
numpy.ndarray
-
astype
(other_type)¶ Change this instance of one type into another.
Useful to access methods of the other class.
- Parameters
other_type (object) – the name of the other type to “cast” to, e.g. Interferogram. Not a string.
- Returns
type-converted to the other type.
- Return type
self
-
center_x
¶ Center “pixel” in x.
-
center_y
¶ Center “pixel” in y.
-
change_xy_unit
(to, inplace=True)¶ Change the x/y unit to a new one, scaling the data in the process.
- Parameters
to (astropy.unit or str) – if not an astropy unit, a string that is a valid attribute of astropy.units.
inplace (bool, optional) – if True, returns self. Otherwise returns the modified data.
- Returns
RichData – self, if inplace=True
numpy.ndarray, numpy.ndarray – x, y from self, if inplace=False
-
change_z_unit
(to, inplace=True)¶ Change the z unit to a new one, scaling the data in the process.
- Parameters
to (astropy.unit or str) – if not an astropy unit, a string that is a valid attribute of astropy.units.
inplace (bool, optional) – if True, returns self. Otherwise returns the modified data.
- Returns
RichData – self, if inplace=True
numpy.ndarray – data from self, if inplace=False
-
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.
-
copy
()¶ Return a (deep) copy of this instance.
-
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
-
exact_polar
(rho, phi=None)¶ Retrieve data at the specified radial coordinates pairs.
- Parameters
rho (iterable) – radial coordinate(s) to sample
phi (iterable) – azimuthal coordinate(s) to sample
- Returns
data at the given points
- Return type
numpy.ndarray
-
exact_x
(x)¶ Return data at an exact x coordinate along the y=0 axis.
- Parameters
x (number or numpy.ndarray) – x coordinate(s) to return
- Returns
ndarray of values
- Return type
numpy.ndarray
-
exact_xy
(x, y=None)¶ Retrieve data at the specified X-Y frequency pairs.
- Parameters
x (iterable) – X coordinate(s) to retrieve
y (iterable) – Y coordinate(s) to retrieve
- Returns
data at the given points
- Return type
numpy.ndarray
-
exact_y
(y)¶ Return data at an exact y coordinate along the x=0 axis.
- Parameters
y (number or numpy.ndarray) – y coordinate(s) to return
- Returns
ndarray of values
- Return type
numpy.ndarray
-
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
-
msaa
(factor=2)¶ Multi-Sample anti-aliasing.
Perform anti-aliasing by averaging blocks of (factor, factor) pixels into a simple value.
- Parameters
factor (int, optional) – factor by which to decimate the data
- Returns
self
- Return type
Convolvable
-
plot2d
(xlim=None, ylim=None, clim=None, cmap=None, log=False, power=1, interpolation=None, show_colorbar=True, show_axlabels=True, fig=None, ax=None)¶ Plot the data in 2D.
- Parameters
xlim (float or iterable, optional) – x axis limits. If not iterable, symmetric version of the single value
ylim (float or iterable, optional) – y axis limits. If None and xlim is not None, copied from xlim. If not iterable, symmetric version of the single value.
clim (iterable, optional) – clim passed directly to matplotlib. If None, looked up on self._default_clim.
cmap (str, optional) – colormap to use, passed directly to matplotlib if not None. If None, looks up the default cmap for self._data_type on config
log (bool, optional) – if True, plot on a log color scale
power (float, optional) – if not 1, plot on a power stretched color scale
interpolation (str, optional) – interpolation method to use, passed directly to matplotlib
show_colorbar (bool, optional) – if True, draws the colorbar
show_axlabels (bool, optional) – if True, draws the axis labels
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
-
renorm
()¶ Renormalize so that the peak is at a value of unity and the minimum value is zero.
-
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.
-
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
-
shape
¶ Proxy to phase or data shape.
-
size
¶ Proxy to phase or data size.
-
slices
(twosided=None)¶ Create a Slices instance from this instance.
- Parameters
twosided (bool, optional) – if None, copied from self._default_twosided
- Returns
a Slices object
- Return type
Slices
-
support
¶ Width of the domain.
-
support_x
¶ Width of the domain in X.
-
support_y
¶ Width of the domain in Y.
-
-
class
prysm.detector.
PixelAperture
(width_x, width_y=None, sample_spacing=0, samples_x=None, samples_y=None)¶ Bases:
prysm.convolution.Convolvable
The aperture of a rectangular pixel.
-
analytic_ft
(x, y)¶ Analytic fourier transform of a pixel aperture.
- Parameters
x (numpy.ndarray) – sample points in x axis
y (numpy.ndarray) – sample points in y axis
- Returns
2D numpy array containing the analytic fourier transform
- Return type
numpy.ndarray
-
astype
(other_type)¶ Change this instance of one type into another.
Useful to access methods of the other class.
- Parameters
other_type (object) – the name of the other type to “cast” to, e.g. Interferogram. Not a string.
- Returns
type-converted to the other type.
- Return type
self
-
center_x
¶ Center “pixel” in x.
-
center_y
¶ Center “pixel” in y.
-
change_xy_unit
(to, inplace=True)¶ Change the x/y unit to a new one, scaling the data in the process.
- Parameters
to (astropy.unit or str) – if not an astropy unit, a string that is a valid attribute of astropy.units.
inplace (bool, optional) – if True, returns self. Otherwise returns the modified data.
- Returns
RichData – self, if inplace=True
numpy.ndarray, numpy.ndarray – x, y from self, if inplace=False
-
change_z_unit
(to, inplace=True)¶ Change the z unit to a new one, scaling the data in the process.
- Parameters
to (astropy.unit or str) – if not an astropy unit, a string that is a valid attribute of astropy.units.
inplace (bool, optional) – if True, returns self. Otherwise returns the modified data.
- Returns
RichData – self, if inplace=True
numpy.ndarray – data from self, if inplace=False
-
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.
-
copy
()¶ Return a (deep) copy of this instance.
-
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
-
exact_polar
(rho, phi=None)¶ Retrieve data at the specified radial coordinates pairs.
- Parameters
rho (iterable) – radial coordinate(s) to sample
phi (iterable) – azimuthal coordinate(s) to sample
- Returns
data at the given points
- Return type
numpy.ndarray
-
exact_x
(x)¶ Return data at an exact x coordinate along the y=0 axis.
- Parameters
x (number or numpy.ndarray) – x coordinate(s) to return
- Returns
ndarray of values
- Return type
numpy.ndarray
-
exact_xy
(x, y=None)¶ Retrieve data at the specified X-Y frequency pairs.
- Parameters
x (iterable) – X coordinate(s) to retrieve
y (iterable) – Y coordinate(s) to retrieve
- Returns
data at the given points
- Return type
numpy.ndarray
-
exact_y
(y)¶ Return data at an exact y coordinate along the x=0 axis.
- Parameters
y (number or numpy.ndarray) – y coordinate(s) to return
- Returns
ndarray of values
- Return type
numpy.ndarray
-
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
-
msaa
(factor=2)¶ Multi-Sample anti-aliasing.
Perform anti-aliasing by averaging blocks of (factor, factor) pixels into a simple value.
- Parameters
factor (int, optional) – factor by which to decimate the data
- Returns
self
- Return type
Convolvable
-
plot2d
(xlim=None, ylim=None, clim=None, cmap=None, log=False, power=1, interpolation=None, show_colorbar=True, show_axlabels=True, fig=None, ax=None)¶ Plot the data in 2D.
- Parameters
xlim (float or iterable, optional) – x axis limits. If not iterable, symmetric version of the single value
ylim (float or iterable, optional) – y axis limits. If None and xlim is not None, copied from xlim. If not iterable, symmetric version of the single value.
clim (iterable, optional) – clim passed directly to matplotlib. If None, looked up on self._default_clim.
cmap (str, optional) – colormap to use, passed directly to matplotlib if not None. If None, looks up the default cmap for self._data_type on config
log (bool, optional) – if True, plot on a log color scale
power (float, optional) – if not 1, plot on a power stretched color scale
interpolation (str, optional) – interpolation method to use, passed directly to matplotlib
show_colorbar (bool, optional) – if True, draws the colorbar
show_axlabels (bool, optional) – if True, draws the axis labels
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
-
renorm
()¶ Renormalize so that the peak is at a value of unity and the minimum value is zero.
-
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.
-
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
-
shape
¶ Proxy to phase or data shape.
-
size
¶ Proxy to phase or data size.
-
slices
(twosided=None)¶ Create a Slices instance from this instance.
- Parameters
twosided (bool, optional) – if None, copied from self._default_twosided
- Returns
a Slices object
- Return type
Slices
-
support
¶ Width of the domain.
-
support_x
¶ Width of the domain in X.
-
support_y
¶ Width of the domain in Y.
-
-
prysm.detector.
pixelaperture_analytic_otf
(width_x, width_y, freq_x, freq_y)¶ Analytic MTF of a rectangular pixel aperture.
- Parameters
width_x (float) – x diameter of the pixel, in microns
width_y (float) – y diameter of the pixel, in microns
freq_x (numpy.ndarray) – x spatial frequency, in cycles per micron
freq_y (numpy.ndarray) – y spatial frequency, in cycles per micron
- Returns
MTF of the pixel aperture
- Return type
numpy.ndarray
-
prysm.detector.
bindown
(array, nsamples_x, nsamples_y=None, mode='avg')¶ Bin (resample) an array.
- Parameters
array (numpy.ndarray) – array of values
nsamples_x (int) – number of samples in x axis to bin by
nsamples_y (int) – number of samples in y axis to bin by. If None, duplicates value from nsamples_x
mode (str, {‘avg’, ‘sum’}) – sum or avg, how to adjust the output signal
- Returns
ndarray binned by given number of samples
- Return type
numpy.ndarray
Notes
Array should be 2D. TODO: patch to allow 3D data.
If the size of array is not evenly divisible by the number of samples, the algorithm will trim around the border of the array. If the trim length is odd, one extra sample will be lost on the left side as opposed to the right side.
- Raises
ValueError – invalid mode
-
prysm.detector.
bindown_with_units
(px_x, px_y, source_spacing, source_data)¶ Perform bindown, returning unit axes and data.
- Parameters
px_x (float) – pixel pitch in the x direction, microns
px_y (float) – pixel pitch in the y direction, microns
source_spacing (float) – pixel pitch in the source data, microns
source_data (numpy.ndarray) – ndarray of regularly spaced data
- Returns
ux (numpy.ndarray) – 1D array of sample coordinates in the x direction
uy (numpy.ndarray) – 1D array of sample coordinates in the y direction
data (numpy.ndarray) – binned-down data