Recent Releases of slmsuite

slmsuite - v0.3.0

New Features

  • Added a new interface for Meadowlark that is compatible with the different types of SDKs (HDMI, PCIe, ...). Thanks to @darikoneil , @nobias , and Anna at Meadowlark.
  • Completed the interface for Holoeye SLMs. Thanks to @mkm2 .
  • Added a USB interface for Hamamatsu SLMs. Thanks to @ninovarde .
  • Added remote interface where a Server can host cameras and SLMs which clients can connect to with RemoteCamera and RemoteSLM. For instance, I had a 20 MP camera that for whatever reason wasn't playing nicely with the computer with the GPU and SLMs, so this feature allows that camera to be hosted on a different computer. This feature was inspired in part by slmpy's server.
  • Made Camera and SLM explicitly abstract as a resolution to #92 .
  • Fixed a bug with Thorlabs for 0.2.0+. Thanks to @calebrich .
  • Modified binary to accept vectors with coordinate larger than 1, which are interpreted as instead pixel_periods for the gratings.
  • Added quadrant and bahtinov alignment masks. Thanks to @bodokaiser for suggesting quadrant.
  • Started the process of typehinting (this will continue to the rest of the package if it looks alright) and autodocing the types.
  • Minor bugfixes with datatyping, documentation,
  • Fixes and upgrades to CompressedSpotHologram.
  • take_tile to tile a stack of images into a grid. Faster useful alternative to and within take_plot.
  • Other imaging functions.
  • Crosshair feature for live cameras.
  • Updated package citation and badges.
  • Assorted documentation.

Pull Requests

  • Update thorlabs.py by @calebrich in https://github.com/slmsuite/slmsuite/pull/98
  • SLM Hamamatsu by @ichristen in https://github.com/slmsuite/slmsuite/pull/106
  • Added support for Holoeye SLMs by @mkm2 in https://github.com/slmsuite/slmsuite/pull/105
  • Meadowlark Interface for PCIe by @darikoneil in https://github.com/slmsuite/slmsuite/pull/90
  • Camera documentation by @ichristen in https://github.com/slmsuite/slmsuite/pull/107
  • Remote + Gratings. by @ichristen in https://github.com/slmsuite/slmsuite/pull/93

New Contributors

  • @calebrich made their first contribution in https://github.com/slmsuite/slmsuite/pull/98
  • @mkm2 made their first contribution in https://github.com/slmsuite/slmsuite/pull/105
  • @darikoneil made their first contribution in https://github.com/slmsuite/slmsuite/pull/90

Full Changelog: https://github.com/slmsuite/slmsuite/compare/v0.2.1...v0.3.0

- Python
Published by ichristen about 1 year ago

slmsuite - v0.2.1

Small Changes

  • Tweaked array fitting to work better at small resolutions.
  • Added alpha support to colormap saving.

Full Changelog: https://github.com/slmsuite/slmsuite/compare/v0.2.0...v0.2.1

- Python
Published by ichristen over 1 year ago

slmsuite - v0.2.0

New Features

  • Cameras update #57
    • ipywidget interface to view cameras live in jupyter notebooks, asynchronous using asyncio. No longer will it be necessary to close a camera such that it could be opened in an external live viewer. Call .live() on any camera.
    • Instrumental #17 (polish/debugging) #80 ,
    • Micro-Manager #21 (polish/debugging),
    • Imaging Source #25 , #67
    • VimbaX #66 ,
    • MindVision #71 ,
    • Pylablib #72 ,
    • Basler #74 ,
    • Webcam support using cv2 (carryover from 0.1.2).
    • Changed camera internals regarding exposure and image saving.
    • Some extra camera documentation and error reporting.
  • All hardware interfaces have a pickle() method to send attributes to a savable dictionary. This is useful to record system state.
    • The .save() method pickles and saves to .h5.

Breaking Changes

  • Some small changes to the "__meta__" parameter of calibrations.
  • Potentially different behavior in array fitting.

Bugfixes

  • pyglet >=2.0 support with <2.0 backwards compatibility #7 , tested on Windows systems.
  • Small fixes.

New Contributors

  • @bodokaiser made their first contribution in https://github.com/slmsuite/slmsuite/pull/81
  • @kwang428 made their first contribution in https://github.com/slmsuite/slmsuite/pull/67
  • @nacslab made their first contribution in d2d9927
  • @lufermar made their first contribution in 092dcdf
  • @coldkevin1991 made their first contribution in b373e9f

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

- Python
Published by ichristen over 1 year ago

slmsuite - v0.2.0

New Features

  • #57
    • ipywidget interface to view cameras live in jupyter notebooks, asynchronous using asyncio. No longer will it be necessary to close a camera such that it could be opened in an external live viewer. Call .live() on any camera.
    • #17 (polish/debugging) #80 ,
    • #21 (polish/debugging),
    • #25 , #67
    • #66 ,
    • #71 ,
    • #72 ,
    • #74 ,
    • Changed camera internals regarding exposure and image saving.
  • All hardware interfaces have a pickle() method to send attributes to a savable dictionary. This is useful to record system state.
    • The .save() method pickles and saves to .h5.

Breaking Changes

  • Some small changes to the "__meta__" parameter of calibrations.
  • Potentially different behavior in array fitting.

Bugfixes

  • #7
  • Small fixes.

New Contributors

  • @bodokaiser made their first contribution in https://github.com/slmsuite/slmsuite/pull/81
  • @kwang428 made their first contribution in https://github.com/slmsuite/slmsuite/pull/67
  • @nacslab made their first contribution in d2d9927
  • @lufermar made their first contribution in 092dcdf
  • @coldkevin1991 made their first contribution in b373e9f

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

- Python
Published by ichristen over 1 year ago

slmsuite - v0.1.2

v0.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

- Python
Published by ichristen over 1 year ago

slmsuite - v0.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

- Python
Published by ichristen almost 2 years ago

slmsuite - v0.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.
  • Holograms 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 Holograms:
    • 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).

- Python
Published by ichristen almost 2 years ago

slmsuite - v0.0.1

initial release

- Python
Published by tpr0p about 3 years ago