Changelog
[3.0.1] - 2026-04-10
Software
Fixed
- Fix decreasing camera offset not updating image size.
PyMCS
GUI
Fixed
- Fix wrong encoding of log files (was crashing when executing object-tracking script).
Scripts
Fixed
- In microscope alignment and calibration, camera offsets are reset when user stops the script.
- In microscope alignment, a property is verified not to be null when printing it on the status window.
[3.0.0] - 2026-03-12
Software
Added
- During beam scanning, the laser is triggered ON (respectively, OFF) with a delay to accommodate for the acceleration (respectively, deceleration) of the scanners at the beginning (respectively, end) of the scan. This mitigates the shift and the intensity peak at the extremities of the scanned region for both the tunings of the scanners.
- Add wizard to exchange objective blocks.
- Add immersion media selection which affects the magnification and objective alignment.
- Improve objective alignment:
- Add menu to update the objective alignment associated with the current immersion medium from the current illumination alignment.
- Display objective alignment associated with current immersion medium in the illumination module tab.
- Add menu in service mode to save objective alignment as factory settings.
- Improve base offsets calculation in service mode for illumination module and photomanipulation:
- Add arrow buttons to directly edit base offsets.
- Add menu to display a popup that shows the base offsets.
- Add menu to save the base offsets.
- Add menu to save photomanipulation offsets.
- Add option to acquire full field of view in exposure settings (will automatically adjust based on magnification).
- Add uninstaller.
- Auto-import settings from previous versions.
- Integrate PyMCS inside MCS (no separate installation required).
- Add compression with Zstandard for OME-TIFF files.
- Add position-specific Z-Stacks where the number of planes is derived from position's range Z.
- Add support for pyramids (writing/reading) allowing display of full mosaic in image viewer.
- Add support for Leica K8 Camera.
- Add about window with software information.
Changed
- Directory and file name patterns are no longer options of storage.
- Maximum intensity projection is now stored inside optional data folder ("XXX_Optional/MaxZ").
- All settings profiles are now acquired for a tile before proceeding to the next one.
- Pause after position occurs after all position-related tasks (including photomanipulation) are completed.
- Increase no response timeout of Hamamatsu camera driver from 5s to 20s.
- Application is now installed in program files directory and data are stored in program data directory.
- Update SmarAct library to version 1.5.16.0.
- Improve support for filter wheels controlled via serial communication by allowing multiple connections on the same COM port.
- JSON commands are no longer accepted if client is not authenticated.
- Improve robustness of filter wheel serial driver.
- Acquire tiles in snake order (zig-zag) to minimize stage movements.
- Use maximum stage speed for block exchange.
- New exposure settings have full field of view by default.
- Remove photomanipulation auto-trigger option in acquisition settings (trigger if photomanipulation defined for a position and time point).
Removed
- Remove "Calculate base offsets" menu from illumination module and photomanipulation.
Fixed
- Fix crash when opening virtual hand controller window.
- Fix crash when starting application without photomanipulation component.
- Fix missing error reporting in the time-lapse controller initialization.
- Fix error when
DeviceSettingsis undefined in acquisition settings. - Fix position alignment for snap and live acquisition.
- Check signature of Python interpreter executable to ensure security.
- Fix invalid Y-coordinate when marking positions for range XY.
- Fix settings conversion issue when importing settings from previous versions.
- Fix crash when receiving invalid JSON command.
- Fix invalid creation of markers for range XY.
- Fix application not closing properly when closed during startup.
- Fix premature stopping of stage movement.
JSON API
Added
- Add
Authenticatecommand to authenticate client before sending other commands. - Add
GetIlluminationListcommand to illumination module. - Add
ExposureTime,ScanRange,ScanFullFOV,ViewsandSettableDeviceSettingstoSnapcommand. - Add new
ObjectiveBlockcomponent with the following commands: GetObjectiveBlockInfoSetShading- Add
UpdateObjectiveBlockAlignment,GetObjectiveBlockAlignmentandSetObjectiveBlockAlignmentcommands to illumination module. - Add
GetTiltFactors,SetTiltFactorsandSaveTiltFactorscommands to acquisition controller. - Add
MoveTocommand to stage component to move stage to absolute position. - Add
GetCoordinatescommand to stage component to get current absolute position of stage. - Add
GetSensorInfocommand to camera component to get sensor information such size and temperature.
Changed
- Rename
GetDeviceListintoGetComponentList. Response properties are nowComponentNamesandComponentTypes. - Rename
GetDeviceTypeintoGetComponentType. Argument is nowQueryComponentName. Response property is nowComponentType. - Remove
Devicesuffix from component types.
Removed
- Remove
LaserAblateUVcommand. - Remove
TranslationYfromIlluminationSetcommand of illumination module. - Remove
TranslationYfromIlluminationGetandCurrentIlluminationGetresponses of illumination module. - Remove
OffsetsInternalparameter fromOffsetsBaseGetandOffsetsBaseSetcommands of photomanipulation.
Settings
Added
- Add
TaskCacheSizein application settings for controlling the maximum size of the task cache system. - Add
BlockExchangePositionin stage component settings. - Add
IsRangeFullFOVin exposure user settings. - Add
CameraNameto acquisition controller component settings. - Add
ObjectiveBlockNameto acquisition controller, illumination module, camera and time-lapse controller component settings. - Add
DarkOffsetandSensorPixelSizeto camera component settings. - Add new objective block component settings.
- Add new objective block objective settings to store objective block properties (objective, magnification and numerical aperture for illumination and detection objectives).
- Add new immersion medium user settings to store immersion medium properties (name, refractive index, shading correction factor).
- Add new illumination objective user settings to store objective alignment for each pair of illumination branch and immersion medium.
Changed
- Merge
ImagePositionX,ImagePositionY,ImagingPositionZintoImagePositionin stage component settings. - Merge
LoadPositionX,LoadPositionY,LoadPositionZintoLoadPositionin stage component settings. - Move
Objective,MagnificationandNumericAperturefrom camera objective settings to objective block objective settings asObjective,DetectionMagnificationandDetectionNumericalAperture. - Rename
View1and2intoView1And2inViewsof acquisition settings. - Rename
OffsetsBaseintoBaseOffsetsin illumination module component settings. - Rename
OffsetsBaseInternalintoInternalBaseOffsetsandOffsetsBaseExternalintoExternalBaseOffsetsin photomanipulation component settings. - Move
PositionXLimit,PositionYLimit,PositionZLimitandStageDirectionfrom stage component settings to stage objective settings.
Removed
- Remove
MagFactorsfrom camera component settings. - Remove
MagFactorfrom camera user settings. - Remove illumination module objective settings (now in illumination objective user settings).
- Remove
ShowTranslationYfrom illumination module component settings. - Remove
TranslationYfrom illumination module user settings. - Remove the following properties from acquisition controller component settings:
MicroscopeModelIllumin1Scanner1AOChannelIllumin1Scanner2AOChannelIllumin2Scanner1AOChannelIllumin2Scanner2AOChannelIllumin1Scanner1OffsetIllumin1Scanner1FactorIllumin1Scanner1DisabledIllumin1Scanner2OffsetIllumin1Scanner2FactorIllumin1ScannerRelationIllumin2Scanner1OffsetIllumin2Scanner1FactorIllumin2Scanner1DisabledIllumin2Scanner2OffsetIllumin2Scanner2FactorIllumin2ScannerRelationAblationLaserUVDOChannel- Remove
ExternalBaseOffsetsfrom photomanipulation component settings. - Remove
PyMCSPathfrom PyMCS launcher component settings. - Remove
Enabledfrom photomanipulation in acquisition settings, photomanipulation is enabled if defined for a position and time point.
PyMCS
Library
Added
- In the time-lapse controller class, the snap method enables setting of additional properties
- Add method to move the stage to a defined XYZ position.
- Add method to get the size of the camera sensor.
Changed
- Microscope devices are replaced by microscope components.
Advanced modules
Added
- The "objective block alignment" script enables alignment of an objective block. It aligns both rotations and translation, and save the values in the corresponding settings. These values are refractive-index dependent.
- The "scan plane alignment" script enables alignment of the scan plane of the beams. It also enables the measurement of the applied correction and the measurement of the angle between the focal planes of the 2 views. This values are refractive-index independent.
- The "shading correction" script enables correction of the shading effect (also known as vignetting) over the FOV.
- The "align camera rotation" operation of the "microscope calibration" script enables alignment of the camera rotation relative to the microscope base.
- Add script implementing the Moisan algorithms [J. Math. Imag. Vision 39(2), 161-179, doi:10.1007/s10851-010-0227-1] to calculate the smooth and periodic components of an image, and the corresponding Fourier transform with reduced edge artifacts.
- In lightsheet alignment, add management of microscope components.
- In filter wheel check, add the option to actuate illumination filter wheel.
Changed
- "Service tools" are replaced by "Microscope calibration".
- In "Microscope alignment" the automated TranslZ alignment is moved after the manual TranslY to prevent the manual alignment from defocusing the beams.
- Subtract background for camera rotation alignment in microscope calibration.
- In microscope calibration, display difference with the target angle when measuring the center of the illumination aperture, and handle the situation when only one view is used when aligning camera rotation.
- In the alignment scripts, use sensor size, image size and offset to determine if the sensor has been cropped.
- Rename "Lightsheet alignment" into "Lightsheet alignment (on sample)".
Removed
- Remove "Fused views" advanced module, should use post-processing software now.
GUI
Added
- When started without terminal, all messages are logged on files.
Changed
- GUI expect full path of script rather than just name.
- Can be launched without terminal (with pythonw.exe).
[2.2.1.0] - 2025-08-14
Software
Added
- The edition of settings will not affect the current time point execution.
- Add warning message when changing settings during time-lapse.
- Prevent the edition of some settings while time-lapse is running.
- Add "Never" option when acquiring a channel every nth time points to disable it while the time-lapse is running.
- User settings may be marked as required (from JSON file), preventing renaming and deletion at all time.
- Add new "Range XY" tab to define the range of positions in the XY plane.
- Acquire multiple tiles for each position based on range XY when defined. Tiles can be visualized and navigated using a minimap in the image viewer.
Changed
- Automatically disconnect when an unrecoverable error occurs in a device.
- Improve speed of aborting time-lapse (almost instantaneous).
Settings
Added
- Add
MinTileOverlapin stage component settings.
PyMCS
Advanced modules
Added
- The "filter wheel check" script enables testing of response time of filter wheel during actuation protocols
Changed
- In "service tools", remove operation that measures response time of a device.
[2.2.0.2] - 2025-08-06
Software
Fixed
- Fix TIFF writing when transitioning to BigTIFF format (no random pixels at the top of plane close to 405).
[2.2.0.1] - 2025-07-07
Software
Fixed
- Fix overlay not overlapping properly in image viewer.
[2.2.0.0] - 2025-07-01
Software
Added
- Add interactable histogram on top of image viewer.
- Displayable from context menu.
- Y axis can be displayed in log scale.
- Clicking will adjust max threshold.
- Add retrospective image browsing, can look at old time points, settings or positions.
- Add buttons to follow latest plane and time point imaged.
- Add toolbar with buttons for histogram and maximum intensity projection (when available).
- Add delay and duration of time point.
- Don't stop acquisition if a delay is detected (shows warning).
- Show error if acquisition completes with a delay.
- Show duration of last time point.
- Display time stamp in image viewer and store it in ome metadata.
- Add coordinates in ome metadata.
- Documentation of the JSON commands API.
- Documentation of the JSON settings.
- Automatic settings conversion from previous version at application startup and settings import. Compatibility starts from version 2.0.0.5
- Add objective block selection at startup, moved all objective block settings in a dedicated folder.
- Add saturation color lookup table (white with red when value is maximum: 65535).
- Add the virtual hand controller window that can move the stage by clicking on arrows buttons (also work with keyboard). The step size of the move can be defined.
- Allow to define range Z of positions in a dedicated editor tab where it is possible to mark the edges based on stage location. The center Z will always be in the middle of the range.
=>
=>
- Allow photomanipulation at multiple positions and multiple time points.
- Add menu option to reset learned flow of CO2 and O2 concentration in environment control. There is also a warning when starting the flow regulation if the flow is unexpectedly high.
- Add service mode when pressing
Shiftkey at software startup. - Add a menu item in service mode that allows to bypass the min/max validation of illumination module settings.
- Add company name, software name and version in the image metadata.
- Add correction factor for translation-rotation coupling in ACQ_Component of Microscope settings. This factor corrects for the additional rotation induced by scanner 2 when translating the beam along X, since scanner 2 is not at the focal plane of the scan lens. The red and green lightsheets in the picture are the uncorrected and the corrected one, respectively.
- Add correction factors for scan plane tilts in ACQ_Objective of Objective settings. These factors enables alignment of the scan planes of each illumination with the imaging planes of the cameras. The pictures show the uncorrected (i.e. tilted) and corrected (i.e. horizontal) planes. The fact that the imaging planes are curved is due to the field curvature of the detection objectives.
Changed
- When autoscale is enabled, display which scaling is used instead of manual scaling values.
- Change position selection in acquisition settings to dropdown with checkboxes.
- Change path selection input to file dialog.
- Change how EULA are displayed. The EULA is now displayed in a separate window and the user must accept it to continue.
Fixed
- Photomanipulation images are now valid ome.tiff (openable with ImageJ).
- Maximum projection images are now valid ome.tiff (openable with ImageJ).
- Fix crash when PyMCS is already opened.
- Fix missing colors in channel presets.
Settings
Added
- Add
Versionto application and user settings. - Add
PanelLocationin filter wheel and illumination module component settings. - Add new component settings file for time lapse controller, JSON command server, PyMCS launcher and image viewer.
- Photomanipulation component settings:
- Add
StageXYZName. - Acquisition controller component settings:
- Add
PhotomanName. - Camera component settings:
- Add
StageXYZName. - Add
FlowExcessThresholdto environment control PID settings (PID_EIntegrals<gas>.json). - Add
LaserExternalto photomanipulation component settings. - Add
Scanner2To3Factorto acquisition controller component settings.
This factor is used to correct for the additional rotation induced by scanner 2 when translating the beam along X, since scanner 2 is not at the focal plane of the scan lens. - Add
Illumin1TiltFactorandIllumin2TiltFactorto acquisition controller objective settings. These factors enables alignment of the scan planes of each illumination with the imaging planes of the cameras. - Add residual offsets in illumination module objective settings to compensate for residual objective block misalignment.
Changed
- Move device/component name from
MicroscopeDevices.jsonintoMicroscopeSettings.jsonunderComponents. - Move device type and label from
MicroscopeDevices.jsoninto component settings file. - Convert device settings into components settings:
- Rename
XXX_Device.jsonintoXXX_Component.json. - Rename
DeviceTypeintoComponentType. - Rename
DeviceLabelintoComponentLabel. - Converted user settings list into object (to store additional properties, e.g.
Version). - Acquisition settings:
- Merge
TimeIntervalMinandTimeIntervalSecintoTimeInterval. - Rename
SettingsintoSettingsProfiles. - Rename
ZStackNameintoZStack. - Rename
IlluminationSettingintoIllumination. - Rename
ExposureSettingintoExposure. - Rename
IlluminationFilterSettingintoIlluminationFilter. - Convert
Positionsof settings profiles to be a list of positions name. - Convert
Positionsof photomanipulation to be a list of positions name. - Rename
TimePointof photomanipulation intoTimePointsand convert to be a list of time points. - All component settings:
- Rename
StageXYZDeviceNameintoStageXYZName. - Rename
Illumin1DeviceNameintoIlluminModule1Name. - Rename
Illumin2DeviceNameintoIlluminModule2Name. - Application settings:
- Move
PyMCSPathinto PyMCS launcher component settings. - Move
PythonInterpreterinto PyMCS launcher component settings. - Move objective settings into a
Objective/folder.
Removed
- Delete
MicroscopeDevices.json. - Acquisition settings:
- Remove
ZStackEnabled, noZStackmeans disabled. - Remove old image formats from camera storage settings (
TIFF StackandTIFF Image). - Remove unused
ADLS1_Module.jsonandADLS2_Module.jsonfiles. - Remove unused photomanipulation driver settings file.
- Remove
Overlaysfrom camera settings.
PyMCS
Library
Changed
- In TimeLapseController, continue_from_pause now returns a message including the time elapsed for sending the JSON command.
Advanced modules
Added
- The "fuse views" script:
- Enables correction of offsets between views along XYZ.
- Saves the results for the switching plane and the offsets correction. The offsets in Z and XY correspond to the location of the peaks (along Z and XY respectively) of the correlation coefficient plots.
- Match the images (e.g., the XY offsets and maximum-intensity projections along Z) from the other settings of the same position and save them in the corresponding folders.
- In "support functions", added functions to generate projections, filtered arrays, edges of thresholded arrays, centers of mass, and interpolated arrays.
- The "object tracking" script allows to set a maximum allowed displacement between time-points for the 3 axes. This is useful when the displacement of the tracked target between time-points is large.
- The "position centering" script enables centering of positions. The features are the same as for the object tracking, but here the user chooses a range and a step size for the stack that will be acquired to center the positions.
- The "Lightsheet alignment (LS1 Live only)" script supports the alignment features originally present for the LS1 Live microscope. Images with varying Translation Z values are recorded, and the best alignment for each illumination is the one corresponding to the highest image sharpness.
Changed
- The "object tracking" and "position centering" scripts use common functions for calculating projections, filtered arrays and centers of mass.
[2.1.0.1] - 2025-02-06
Software
Fixed
- Photomanipulation tab was displayed when it was unavailable.
[2.1.0.0] - 2025-01-06
Software
Added
- Add scale bar.
- Add settings summary.
A user readable text file is available in the experiment folder when an acquisition is performed. This file contains all the settings used in the current acquisition. - Add End User License Agreement at startup.
- Add notice file for open source libraries.
- Add a menu to calculate scanner base offsets for photomanipulation.
Changed
- Update validation of names to work with file system.
- Improve validation of acquisition settings.
- Improve efficiency when moving through planes in image viewer.
- Update logo to Leica's and change icon colors.
- Detect compatible PyMCS version based on two first version numbers (Milestone and Major).
- Bypass driver communication in Move commands.
FilterWheelDevicecommandsMoveandMoveToskip sending a move command to the driver if filter wheel is already at the correct position. - Extend MAC6000FilterWheel driver hardware response timeout to 10s.
- Increase range of photomanipulation scanner offset from +-10um to +-20um.
Fixed
- Fix inconsistent numeric validation.
Some numeric fields compatible with arithmetic computation were not replaced by the result once saved.
=>
- Fix crash when editing the Z-stack parameters.
- Fix text hidden behind text box icon.
- Fix text box resizing for long text.
- Fix switch of view when moving photomanipulation area in image viewer.
- Fix invalid position computation from image viewer.
JSON API
Added
- Add option to set device to
IlluminationSetcommand of illumination device - Add option to snap fast to
Snapcommand of time lapse controller to bypass the setting of all settable devices. - Add a command to set the displayed view from PyMCS:
DisplayedViewSet. - Add Force option to Move commands.
Add aForceoption toFilterWheelDevicecommandsMoveandMoveTowhich forces move command to be sent to the driver even if filter wheel is already at the correct position.
Changed
- Rename
WithintoWidthforImageGetresponse ofCameraDevice.
Settings
Added
- Add gas concentration regular expression settings and manual COM port settings.
- Add manual COM port settings to SerialFilterWheel driver.
Removed
- Scanner factors of illumination module are now ignored (set from acquisition controller).
PyMCS
Library
Added
-
In the camera class, added methods to get/set the storage settings, the camera settings, and the view to display.
-
In all classes, added types of input and output variables.
-
In the filter wheel class, added method to move to a specific position, and added the property to force the movement.
-
In the microscope device class, added management of filter wheels.
Changed
- In the filter wheel class, returned the response time when asking to move to a defined position.
Advanced modules
Added
-
In the "Align and center views" operation of "Microscope alignment", added two gray bands to indicate the tolerance expected with temperature fluctuations over time.
-
In "Fuse views":
- added saving of the fusion results (a figure for each position/time-point and a common report with all positions and time-points) in a folder called "Fusion results".
- modified plots to display: the sharpness of both views per each plane; the cumulative difference between the sharpness of the views (i.e. the integral of the difference between sharpness of View 2 and sharpness of View 1); the applied threshold for the detection of the peak of the cumulative difference; the switching plane detected as the peak of the cumulative difference.
-
added management of copying files from original folders.
-
In "Service tools", added operation to check the response time of a filter wheel.
-
In "Object tracking", added management of images containing no stack by raising an error, skipping the image analysis, and continue to next position/time-point.
Changed
-
In "Service tools", operations to align the beam axis and the scan axis were separated.
-
In "Fuse views", the name of the folder created by the module also contains the name of the settings used for the fusion. This enables the user to run multiple fusions in parallel for the same experiment folder with different settings.
-
In "Object tracking", changed the default value for the settings to "Settings 1".
Fixed
- In "Object tracking":
- The position is updated only if the new coordinates do not exceed the stage range.
- The center of the detected object is calculated after subtracting the threshold to the thresholded projection, in order to remove the bias coming from the background.
GUI
Added
- Created a mouse-right-click event.
Changed
- Changed to Leica logo and color.
- Increased space for help messages.
Fixed
- Added management of window closing not to rise an error when closing the window while an operation is still running.