Measurements
This module contains tools to simulate various measurement models
All the measurements here are safe to use in an automatic differentiation model. There exist tools to simulate detectors with finite saturation thresholds, backgrounds, and more.
- cdtools.tools.measurements.intensity(wavefield, detector_slice=None, epsilon=1e-07, saturation=None, oversampling=1, simulate_finite_pixels=False)
Returns the intensity of a wavefield
The intensity is defined as the magnitude squared of the wavefront. If a detector slice is given, the returned array will only include that slice from the simulated wavefront.
- Parameters:
wavefield (torch.Tensor) – A JxMxN stack of complex-valued wavefields
detector_slice (slice) – Optional, a slice or tuple of slices defining a section of the simulation to return
saturation (float) – Optional, a maximum saturation value to clamp the resulting intensities to
oversampling (int) – Default 1, the width of the region pixels in the wavefield to bin into a single detector pixel
- Returns:
sim_patterns – A real MxN array storing the wavefield’s intensities
- Return type:
torch.Tensor
- cdtools.tools.measurements.incoherent_sum(wavefields, detector_slice=None, epsilon=1e-07, saturation=None, oversampling=1, simulate_finite_pixels=False)
Returns the incoherent sum of the intensities of the wavefields
The intensity is defined as the sum of the magnitudes squared of the wavefields. If a detector slice is given, the returned array will only include that slice from the simulated wavefronts.
The (-3) index is the set of incoherently adding patterns, and any indexes further to the front correspond to the set of diffraction patterns to measure. The (-2) and (-1) indices are the wavefield, and the final index is the complex index
- Parameters:
wavefields (torch.Tensor) – An LxJxMxNx stack of complex wavefields
detector_slice (slice) – Optional, a slice or tuple of slices defining a section of the simulation to return
saturation (float) – Optional, a maximum saturation value to clamp the resulting intensities to
oversampling (int) – Default 1, the width of the region pixels in the wavefield to bin into a single detector pixel
- Returns:
sim_patterns – A real LXMxN array storing the incoherently summed intensities
- Return type:
torch.Tensor
- cdtools.tools.measurements.quadratic_background(wavefield, background, *args, detector_slice=None, measurement=<function intensity>, epsilon=1e-07, saturation=None, oversampling=1, simulate_finite_pixels=False)
Returns the intensity of a wavefield plus a background
The intensity is calculated via the given measurment function Then, the square of the given background is added. This kind of background model is commonly used to enforce positivity of the background model.
- Parameters:
wavefield (torch.Tensor) – A JxMxN stack of complex-valued wavefields
background (torch.Tensor) – An tensor storing the square root of the detector background
detector_slice (slice) – Optional, a slice or tuple of slices defining a section of the simulation to return
measurement (function) – Default is measurements.intensity, the measurement function to use.
saturation (float) – Optional, a maximum saturation value to clamp the resulting intensities to
oversampling (int) – Default 1, the width of the region pixels in the wavefield to bin into a single detector pixel
- Returns:
sim_patterns – A real MxN array storing the wavefield’s intensities
- Return type:
torch.Tensor