Recent Releases of laserbeamsize

laserbeamsize - Fixed beam angle fully supported

This version fixes a number of issues when specifying a fixed angle for the major axis of the elliptical beam. This introduces an api change because now specifying the angle requires using the phi_fixed instead of phi

python xc, yc, d_major, d_minor, phi = lbs.basic_beam_size(image, phi_fixed=np.pi/2)

As part of this fix, the program now always reports the major and minor axis sizes (diameters). The angle returned is always between the major axis and the horizontal axis and will always be between -𝜋/2 < ɸ ≤ 𝜋/2

2.1.0

  • make fixed angle work much better (thanks @przemororo)
  • use major axis (d_major) instead of dx (near x-axis)
  • trim distribution down to core files
  • eliminate dependence on pillow and scikit-image
  • correct angle definitions
  • use black for all formatting
  • adopt pyproject.toml with PEP 621 metadata and eliminate setup.cfg
  • lint YAML files and run ruff during make rcheck
  • allow iso_noise option in display and background functions
  • rename tests/test_all_notebooks.py to tests/all_test_notebooks.py
  • replace master branch references with main in docs
  • numerous style and docstring improvements
  • remove flake8
  • bump minimum python version to 3.9
  • eliminate non-standard use of semi-major and semi-minor

- Python
Published by scottprahl 9 months ago

laserbeamsize - fix error in focused_diameter

2.0.5

  • fix mistake in focused_diameter (thanks @rdgraham)

2.0.4

  • fix zenodo and CITATION.cff
  • fix pypi github action
  • fix copyright
  • fix manifest
  • correct README.rst to use plot_image_analysis()
  • tweak badges
  • allow fixed phi angle of 0° (thanks @cptyannick)

- Python
Published by scottprahl about 2 years ago

laserbeamsize - First release with new github actions

2.0.4

  • allow fixed phi angle of 0° (thanks @cptyannick)
  • fix zenodo and CITATION.cff
  • fix pypi github action
  • fix copyright
  • fix manifest
  • correct README.rst to use plot_image_analysis()
  • tweak badges

Major changes from 2.0.0

  • change default background removal to match ISO recommendation
  • split monolithic laserbeamsize module in separate modules
  • rationalized functions names (API changes!)

- Python
Published by scottprahl over 2 years ago

laserbeamsize - ISO background handling, better packaging

2.0.3

  • readthedocs does not do well with new module names

2.0.2

  • splitting monolithic m2.py
  • added tests for functions in gaussian.py
  • improved docstrings in gaussian.py
  • improved module docstrings in m2fit and m2display

2.0.1

  • trying to get conda release working

2.0.0

  • change default background removal to match ISO recommendation
  • split monolithic laserbeamsize module in separate modules
  • rationalized functions names
  • add citation stuff
  • add github actions to test and update citation
  • improve readme so images work on pypi.org
  • add conda-forge support
  • update copyright years
  • more badges

- Python
Published by scottprahl over 2 years ago

laserbeamsize - Support fixed laser beam orientation

v1.9.4

  • allow beam angle to be specified during fitting
  • new notebook to illustrate constrained fits
  • improve docstrings and therefore api documentation
  • still better ellipse and rect outlines
  • start adding examples

v1.9.3

  • use faster version of creating rotated rect mask
  • move tests to their own directory
  • avoid deprecated np.float
  • improve drawing of rect and ellipse outlines
  • improve some docstrings

- Python
Published by scottprahl almost 4 years ago

laserbeamsize - Faster rotated rect mask

v1.9.3

  • use faster version of creating rotated rect mask
  • move tests to their own directory
  • avoid deprecated np.float
  • improve drawing of rect and ellipse outlines
  • improve some docstrings

v1.9.2

  • use both black and white dashed lines
  • fit to d and not d**2
  • add more dunders to init.py
  • fix residual calculation broken in v1.9.1

- Python
Published by scottprahl almost 4 years ago

laserbeamsize - Changed M2 fitting

M² is found by fitting to a hyperbola. Heretofore the hyperbola was fit using d², laserbeamsize now uses d. Both methods give nearly identical results, but I believe fitting to d is more correct.

v1.9.2

  • use both black and white dashed lines
  • fit to d and not d**2
  • add more dunders to init.py
  • fix residual calculation broken in v1.9.1

v1.9.1

  • centralize version number to a single place

v1.9.0

  • add beam_ellipticity()
  • add beamparameterproduct()
  • rotate x-tick labels when more than 10 ticks
  • removed deprecated use of np.matrix()
  • M2_report now includes BPP values
  • improve API docs
  • code linting

- Python
Published by scottprahl almost 4 years ago

laserbeamsize - Nothing new, just improving versioning

No features. This just reduces the number of places version numbers are used from 3 (setup.cfg, docs/conf.py, laserbeamsize/__init__.py) down to just the __init__.py file.

v1.9.1

  • centralize version number to a single place

v1.9.0

  • add beam_ellipticity()
  • add beamparameterproduct()
  • rotate x-tick labels when more than 10 ticks
  • removed deprecated use of np.matrix()
  • M2_report now includes BPP values
  • improve API docs
  • code linting

- Python
Published by scottprahl almost 4 years ago

laserbeamsize - Add ellipticity and Beam Parameter Product calculations

v1.9.0

  • add beam_ellipticity()
  • add beamparameterproduct()
  • rotate x-tick labels when more than 10 ticks
  • removed deprecated use of np.matrix()
  • M2_report now includes BPP values
  • improve API docs
  • code linting

v1.8.0

  • handle rotated masks properly
  • fix readthedoc configuration

- Python
Published by scottprahl almost 4 years ago

laserbeamsize - Fix masking

Internally, laserbeamsize masks the laser spot in the image. This involves rotating a binary mask which sometimes creates pixels that are not exactly 1. Guilhem noticed this and suggested a fix.

Additionally, building of doc files on readthedocs.io has been made more robust.

- Python
Published by scottprahl about 4 years ago

laserbeamsize - Pure Python Release

v1.7.3

  • create pure python packaging
  • include wheel file
  • package as python3 only

v1.7.2

  • allow non-integer beam centers
  • add badges to docs
  • use sphinx-book-theme for docs

v1.7.1

  • explicit warning for non-monochrome images in beam_size()
  • improve help() messages

v1.7.0

  • fix error in identifying major/minor axes in beam_size_plot()

- Python
Published by scottprahl over 4 years ago

laserbeamsize - Allow fractional pixel beam centers

v1.7.2

  • allow non-integer beam centers
  • add badges to docs
  • use sphinx-book-theme for docs

v1.7.1

  • explicit warning for non-monochrome images in beam_size()
  • improve help() messages

v1.7.0

  • fix error in identifying major/minor axes in beam_size_plot()

- Python
Published by scottprahl almost 5 years ago

laserbeamsize - Better help()

Improve help(laserbeamsize) so it actually says something useful

Add links in help for modules to https://laserbeamsize.readthedocs.io

Add explicit warning when trying to use color files

- Python
Published by scottprahl about 5 years ago

laserbeamsize - Fix bug in `beam_plot_size()`

Semi-major and semi-minor axes were not identified correctly for all astigmatic beam orientations

- Python
Published by scottprahl over 5 years ago

laserbeamsize - Fix annoying deprecation warning

Minor release.

  • Fix the deprecation warning for register_cmap
  • a sphinx and pydocstyle warnings
  • use all points on background rect for fitting tilted background

- Python
Published by scottprahl over 5 years ago

laserbeamsize - Tilted background removal

A number of small changes and

  • new function subtract_tilted_background()
  • M²=1 line added M2_radius_plot()
  • autoselect line color on images for visibility (still imperfect)
  • documentation tweaks

- Python
Published by scottprahl over 5 years ago

laserbeamsize - M² Support!

Support for ISO 11146 measurement of M² now. If you have an array of images, then analysis can be as simple as::

import imageio
import matplotlib.pyplot as plt
import laserbeamsize as lbs

images = [imageio.imread(name) for name in list_of_filenames]
dy, dx= lbs.beam_size_montage(images, pixel_size=3.75)  # pixel_size in microns
plt.show()
lbs.M2_diameter_plot(z10, dx*1e-6, lambda0, dy=dy*1e-6)
plt.show()

- Python
Published by scottprahl over 5 years ago

laserbeamsize - Add visual report

New feature. visual_report() creates four subplots to show the beam analysis. Other updates include::

  • Add routines to plot values along semi axes
  • Fix error when calculating circular radius
  • Add missing scipy requirement
  • Improve README.rst with figure

- Python
Published by scottprahl over 5 years ago

laserbeamsize - Now uses standard ISO 11146 integration areas

Previously, laserbeamsize used the standard definitions for the first and second order moments of the WIgner distribution to calculate beam parameters.

This version now also follows ISO 11146 for * integration areas * background using corners * background subtraction

The overall result is that beam parameters extraction is much more robust.

- Python
Published by scottprahl over 5 years ago

laserbeamsize - Better API documentation

Many changes to improve packaging and automatic documentation of functions.

- Python
Published by scottprahl almost 6 years ago