Slmsuite

Latest version: v0.1.2

Safety actively analyzes 687918 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

0.1.2

New Features

- `Webcam` interface using `cv2`'s `VideoCapture` interface. This supports builtin or USB webcams, among other things.
- Polished the `Instrumental` camera interface.
- Honed Zernike wavefront calibration functionality.
- Renamed `SLM.write` to `SLM.set_phase` with backwards compatibility.

Breaking Changes

- Reverted `read_`/`write_` paradigm in favor of `load_`/`save_`.
- `CameraSLM.save_calibration`
- `CameraSLM.load_calibration`
- `SLM.load_vendor_phase_correction`
- `SLM.save_phase`
- `SLM.load_phase`
- `Santec.load_csv`
- `Hologram.save_stats`
- `Hologram.load_stats`
- `analysis.files.save_image`

Bugfixes

- 79

**Full Changelog**: https://github.com/slmsuite/slmsuite/compare/v0.1.1...v0.1.2

0.1.1

Fixes PyPI bug which did not include cuda.cu. Minor documentation and enhancements.

**Full Changelog**: https://github.com/slmsuite/slmsuite/compare/v0.1.0...v0.1.1

0.1.0

New Features

- Simulation of hardware with `SimulatedSLM` and `SimulatedCamera`, modeling experimental effects.
- New `toolbox.phase` functions
- `sinusoid()` grating.
- `binary()` grating.
- 2D general `polynomial()`.
- Fitting the SLM's source amplitude data to recenter grids and derive scales.
- For instance, functions like `lens()` which use the SLM grid are now centered on the source amplitude and will focus coaxially.
- This also is now used in choosing a radius for structured light conversions and Zernike data (see next).
- Revamped Zernike functionality.
- New `convert_zernike_index()` function to convert between common indexing standards.
- Auto-choosing a good Zernike aperture from fitted source amplitude data.
- Zernike derivatives (computed via the chain rule, so fast).
- 3D support for `convert_vector()` (previously known as `convert_blaze_vector()`) and new units, including:
- `"zernike"`, which expresses 3D points as the result of coordinates (in radians) directly multiplied with normalized tilt and focus Zernike polynomials.
- metric units in camera-space, making use of knowledge of the camera pixel size and magnification between the camera and experiment.
- 3D spot arrays `CompressedSpotHologram`. 41
- Spot arrays with unique Zernike aberration compensation for every spot (generalization of the above). Every spot goes to the desired point in 'aberration space'.
- Conjugate gradient optimization of holograms using `pytorch` working alongside `cupy`.
- Quadratic initial phase guess (instead of random) to promote a smoother hologram.
- Multiplane holography with the meta-hologram `MultiplaneHologram`, which simultaneously optimizes the objectives of multiple child holograms.
- Experimental holography features:
- `remove_vortices()` and optical vortex analysis tools to remove phase kinks from the farfield.
- `get_multiplane_defocus_blur()` for realistic defocus.
- Wavefront calibration `wavefront_calibrate()` that simultaneously measures at multiple calibration points.
- When combined with the above, implemented 60 in spot arrays.
- This also includes other updates to wavefront calibration 42
- New calibration algorithm based on removal of Zernike terms.
- More robust `fourier_calibrate()` fitting.
- `pixel_calibrate()` measuring phase swing and crosstalk.
- `settle_calibrate()` measuring the $1/e$ SLM settle time.
- Revamped `CameraSLM` calibration internal storage and saving.
- `format_2vectors()` generalized to `format_vectors()` with N-dimensional support.
- Allow moments to accept arbitrary grids, among other small changes.
- Divide and conquer algorithm for `smallest_distance()` (now can handle millions of points in $O(N\log N)$ time).
- Artificial bitdepth enhancement for cameras:
- Multi-exposure High Dynamic Range imaging,
- Software averaging.
- Upon `get_image()`error, cameras now try again `capture_attempts` times. This improves reliability against rare errors.
- `SLM`, `Camera`, and `CameraSLM` subclasses now have default plotting `.plot()` method that makes it easy to see what's happening in the phase and image domains.
- `Hologram`s also have improved `.plot_farfield()` enabling different units and helper boxes.
- Added untested 17
- Added skeleton for 26
- Docs have moved from the readthedocs theme to the very nice pydata theme (used by numpy, etc).
- Lots of documentation cleanup and polishing.
- The package index moved from `QPG-MIT/slmsuite` to `slmsuite/slmsuite`.

Breaking Changes

- Changed `toolbox.phase` functions:
- `zernike()` and `zernike_sum()` are completely changed.
- `blaze()` had the `offset=` parameter removed as it was redundant with `+=`.
- Renamed variables in cameras and SLMs to reduce clutter:
- `dx_um`, `dy_um` -> `pitch_um`
- `dx`, `dy` -> `pitch`
- `x_grid`, `y_grid` -> `grid`
- `phase_correction`, `measured_amplitude`, -> `source`
- Constructors are also modified in some cases.
- Default parameters are changed in most cases.
- High-level SLMs (`Santec`, `Meadowlark`, ...) should largely be fine, but direct calls to the `SLM` constructor might break.
- Renamed variables in `Hologram`s:
- `method` was moved to `flags`.
- `extract_phase()` and `extract_farfield()` -> `get_phase()` and `get_farfield()`.
- Renaming in `FourierSLM`:
- Different calibrations are now stored in a single dict `calibrations`.
- Saving was revamped to use a single method to save all calibrations to avoid method bloat as calibrations are added.
- For instance `save_wavefront_calibration()` and `load_wavefront_calibration()` is now changed to `write_calibration("wavefront_superpixel")` and `read_calibration("wavefront_superpixel")` or `write_calibration("wavefront_zernike")` and `read_calibration("wavefront_zernike")`.
- `wavefront_calibrate()` has renamed and reorganized variables.
- In particular `interference_point` -> `calibration_points`.
- Processing methods were also renamed for better organization. For instance `process_wavefront_calibration()` -> `wavefront_calibration_process()`
- Assorted general attempts at improving packaging naming uniformity.
- For instance, using `get_` and `set_`, `read_` and `write_`, etc as the dominant language.

Bugfixes

- Warning for 49
- 53
- 62
- 63
- 73
- Many small things.

Under the Hood

- Major reorganization of internal files.
- `algorithms` is split into many smaller files.
- `fitfunctions` and `files` are moved from `misc` to `analysis` and `toolbox`.
- Introduced a number of custom CUDA kernels (in cuda.cu).


**Full Changelog**: https://github.com/slmsuite/slmsuite/compare/v0.0.1...v0.1.0

0.0.1

initial release

Links

Releases

Has known vulnerabilities

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.