Release Notes

The following is a summary of the user-visible changes for each of python-microscope releases.

Version 0.6.0 (upcoming)

  • Selected most important, backwards incompatible, changes:

    • The LaserDevice has changed the methods to set laser power to use fractional values in the [0 1] range instead of milliwatts. Effectively, the following methods have been removed:

      • LaserDevice.get_max_power_mw

      • LaserDevice.get_min_power_mw

      • LaserDevice.get_power_mw

      • LaserDevice.get_set_power_mw

      • LaserDevice.set_power_mw

      And have been replaced with a LaserDevice.power property and LaserDevice.get_set_power method.

  • Changes to device ABCs:

    • FilterWheel:

      • The get_filters method and the constructor filters argument have been removed.

      • New position and n_positions properties added to replace get_position, set_position, and get_num_positions methods.

    • TriggerTargetMixIn:

      • New trigger method for software triggers.

  • New program microscope-gui to display simple GUIs given a Pyro URI for a microscope device.

  • New optional requirement on QtPy for the GUI extra. This effectively adds a dependency on one of the Qt interfaces such as PySide2 or PyQt5.

  • The microscope.gui module was completely rewritten to provide Qt widgets instead of Tkinter.

  • New TestController, TestStage and TestStageAxis classes.

  • The microscope.devices.device function, used to define a device for the device server, is now part of the microscope.device_server module.

  • The AxisLimits, `Binning, ROI, TriggerMode, and TriggerType classes are now available on the microscope module.

Version 0.5.0 (2020/03/10)

  • New devices supported:

    • CoolLED pE-300 series.

  • Changes to device ABCs:

    • New ABCs StageDevice and StageAxis.

  • Device specific changes:

    • Ximea Camera:

      • Instead of device id (dev_id), the constructor now requires the camera serial number. This is required only if there are multiple Ximea cameras on the system.

      • Support for hardware triggers was completely rewritten and now implements the TriggerTargetMixIn interface. The default trigger type is now software only; previously it would default to trigger on rising edge while simultaneously accepting software trigers. In addition to the TriggerTargetMixIn interface, the trigger type can also be set via the ‘trigger source’ setting.

      • Added support for ROIs and temperature readings.

    • AndorSDK3 (Andor CMOS cameras):

      • Fixed acquisition of non-square images.

    • AndorAtmcd (Andor (EM)CCD cameras):

      • Fixed 0.4.0 regression on its settings that caused initialization to always fail.

Version 0.4.0 (2020/01/07)

  • Selected most important, backwards incompatible, changes:

    • The Setting class is now private. The only supported method to add settings to a Device is via its add_setting method.

  • New devices supported:

    • Coherent Obis laser

    • Lumencor Spectra III light engine

    • Prior ProScan III controller

    • Prior filter wheels

    • Toptica iBeam laser

  • Changes to device ABCs:

    • Device:

      • The Device._logger attribute has been removed. It is recommended to use a logger for the module.

    • DeformableMirror:

      • Concrete classes must implement the n_actuators public property instead of the private _n_actuators`.

  • Device specific changes:

    • Ximea Camera:

      • Support for the ximea cameras was completely rewritten to support hardware triggers, as well as fix multiple minor issues.

  • The device server and clients no longer force pickle protocol version 2. If the client and server are running different Python versions it may be necessary to specify a version number. This should be done on the side with the highest support version number by setting Pyro4.config.PICKLE_PROTOCOL_VERSION.

Version 0.3.0 (2019/11/07)

  • Selected most important, backwards incompatible, changes:

    • microscope.device, function used to create a device definition, changed signature. The arguments to the device constructor must now be passed as a dictionary.

    • Python 2 is no longer supported.

    • New requirements:

      • Python >= 3.5

      • hidapi

  • New devices supported:

    • Andor (EM)CCD cameras (requires Andor’s atmcd C library)

    • Aurox Clarity (requires hidapi Python package)

    • Imagine Optic Mirao 52-e deformable mirror (requires mirao52e C library)

    • Linkam Correlative Microscopy Stage (requires LinkamSDK C library)

    • Ximea cameras (requires Ximea’s xiAPI Python package)

  • Changes to device ABCs:

    • New ABC ControllerDevice for controller devices.

    • Laser devices:

      • New abstract methods:

        • LaserDevice.get_min_power_mw

        • LaserDevice.is_alive

      • LaserDevice.set_power_mw now clips the set value to the device actual range. Previously, the behaviour was undefined and device specific.

    • Camera devices:

      • Added ROIs and binning support.

      • New abstract methods:

        • CameraDevice._get_binning

        • CameraDevice._get_roi

        • CameraDevice._set_binning

        • CameraDevice._set_roi

    • DataDevices:

      • Data clients are now on a stack to facilitate temporary redirection of data to some other client.

    • Filterwheel devices:

      • New method FilterWheelBase.get_num_positions

      • New abstract methods:

        • FilterWheelBase.get_position

        • FilterWheelBase.set_position

  • Device specific changes:

    • Omicron TA Deepstar laser:

      • Now returns actual laser power instead of the set laser power. Requires device to be fitted with the APC option.

    • Test camera:

      • Added new setting to control created image. In addition of noise, can also return stripes, spots, or gradients. See microscope.testsuite.devices.ImageGenerator.

  • Removed requirements:

    • enum34

    • six

  • The deviceserver program can now be used as a Windows service.

  • Fixed PyPI releases to include the microscope.mirrorq and `microscope.filterwheels subpackages.

  • New microscope.devices.ROI and microscope.devices.Binning classes to represent those camera settings.

Version 0.2.0 (2018/06/13)

  • New classes:

    • DeformableMirror

    • TriggerTargetMixIn

    • SerialDeviceMixIn

    • TriggerType

    • TriggerMode

  • New hardware supported:

    • Alpao deformable mirrors

    • Boston Micromachines Corporation (BMC) deformable mirrors

    • Thorlabs filter wheels

  • Abstract class for FilterWheel moved to the microscope.devices module, where all other abstract device class are.

  • New module microscope.gui for simple testing of individual devices.

  • Now dependent on the enum34 package for python pre 3.4.

  • Multiple fixes to support Python 3.

  • This is the last release with planned support for Python 2.

Version 0.1.0 (2017/05/04)

  • New abstract class FilterWheel.

  • New classes Client and DataClient.

  • New dependency on six.

  • Removed dependency on PyME.

  • Now works in Linux too.

  • Start writing of user documentation.

Version 0.0.1 (2016/11/24)

  • Initial release of python-microscope.