- 💎 "Auto L/R illumination" button in the Acquisition manager to select tile illumination based on its x-position.
- 💎 A long awaited feature: Tile Overview window (View/Open Tile Overview), showing the entire acquisition area with tile positions, their overlap, and current FOV position relative to them.
- Some setups need to flip x- and/or y-stage polarity for correct tile display: use
'flip_XYZFT_button_polarity': (True, False, False, False, False),
in the config file.
- Some setups need to flip x- and/or y-stage polarity for correct tile display: use
- 💎 Center Button added in the Main Window GUI, for bringing the sample holder in the X- and Z- center relative to the light-sheet and detection objective.
- during acqusition, the currently acquiring row is highlighted in Acquisition Manager and in Tile Overview windows.
This has to be set up in the config file with
'x_center_position'
and'z_center_position'
parameters for stage motion. - Buttons for movement in horizontal plane got shorter, for more intuitive navigation.
- Current FPS shown in the progress bar.
- Webcam window always opens at startup, empty if no camera is present in config file:
'usb_webcam_ID': 0, # open USB web-camera (if available): None, 0 (first cam), 1 (second cam), ...
- Tooltips were added to the navigation buttons.
- occasional glitch with ASI stages caused by updating stage positions between acquisitions, with serial communication going in two separate threads (mainWindow vs Core).
- check motion limits for all tiles before starting the acquisition list, in absolute or relative coodinates (zeroed axes or not).
- estimated remaining acquisition time is now calculated correctly, based on the current frame rate.
- sample centering and objectiv exchange positions work also when in zeroed-stage regime (local coordinates, user-defined). No need to inactivate
Zero F-stage
button for safe revolver operation.
💎 Light-sheet direction is shown in the camera window as an image overlay. It interactively changes depending on the Left/Right/Both arms illimination state.
- Support of Mitutoyo 5-position objective turret (revolver, part #378-726D), for mesoSPIM v4-5 upgrade.
- Safety movement of the focus stage backward to
f_objective_exchange
position for motorized objective exchange. Thef_objective_exchange
parameter is defined in the config file. - Optional buffering of images into RAM and flushing to disk when RAM is full or the stack is finished, PR#72 by @AlanMWatson. Controlled by adding
buffering
dictionary to the config file. - support of ZWO 2" 7-position filterwheel support (PR#79 by Fabian Voigt)
- checks and warnings for AO maximum voltage range (5V or 10V, which depends on hardware, but can be damaging if not set correctly).
- incorrect focus stage steps when interpolating between two focus positions in a stack. Reported and tested by Ivana Gantar and Laura Batti (Wyss Center Geneva). Affected small-amplitude focus interpolation, where required F-stage steps between planes were smaller than minimum feasible stage step. The minimum feasible stage step changed from 0.1 to 0.25 µm in function
get_focus_stepsize_generator(self, f_stage_min_step_um=0.25)
. - no more dropped frames during long acquisitions with slow disks.
- New filter wheel ZWO EFWmini supported
- added
'speed'
config parameter for ASI Tiger controller that allows to change default speed settings. - more config examples from various systems were uploaded.
- official mesoSPIM logo is uploaded, also for use as desktop icon (mesoSPIM-logo.ico)
- non-relevant ETL settings are grayed out depending on the left/right illumination to minimize confusion during ETL optimization (#71).
- for slow stages the Move buttons can be set to sleep for N ms to limit the click frequency from the user (prevent stage runout): paremeter
'button_sleep_ms_xyzft' : (250, 0, 250, 0, 0),
in the config file. - file names now include magnification and rotation (if several rotations are present)
- GUI allows to change
scale_galvo_amp_with_zoom
flag interactively, - developer-only GUI sections have smaller font and are marked as such,
- STOP Stages button is big red.
- tile translation metadata in XML/H5 data were transposed in some configurations (x-y)
'etl_l_delay_%'
config parameter was updated to avoid edge artifacts in ETL scanning- in auto-focus optimization pipeline, the first image of the sequence was incorrect
✨ Galvo amplitude can be automatically rescaled depending on selected zoom.
Add scale_galvo_amp_with_zoom = True
to config file to enable this feature.
🔧 Galvo and ETL of non-active arm are held still to minimize unnecessary heating and stress.
💎 Optional webcam window can be opened (e.g. for sample overview)
🔧 Logging can be defined in config file using logging_level = 'DEBUG'
parameter (possible values INFO
,DEBUG
).
🔧 Log messages are printed in Log
tab for quick review, in addition to the log file.
💎 BigTIFF file support
🔧 User is forced to select clearing-specific ETL parameters file (e.g. ETL-CLARITY-cuvette40x40.csv
) at the startup, to avoid non-optimal default settings (often forgotten step).
💎 Acquisition Manager
shows estimated dataset size (GB) before acquisition to help planning data management.
💎 Disk space check: if the disk has insufficient free space, acquisition does not start (shows error message).
✨ New icon for the desktop shortcut.
💎 Optional Image Contrast
window can be opened from Alignment Tab (for calibration purposes)
🔧 Multi-tile wizard can have up to 4 channels (previously max: 3).
🔧 Version management can now be done using PyPi: pip install mesospim-control
.
Control software can be launched in Anaconda prompt from any folder, by mesospim-control
command.
Beware that installation path is determined by Anaconda and can be deep (inconvenient). Feature for developers.
💎 Stage position indicators turn red if stage is within 1 mm from software limits.
💎 Main Window > View > Cascade windows
to bring all windows to screen center (for small screens).
🔧 Config file simplified, redundant blocks removed (galvo_etl_designation
, laser_designation
), warnings are issued if deprecated blocks are present.
🔧 Remove F-stage homing to startfocus
position, since it added overhead (manual focusing) every time the software was restarted.
🐛 laser lines were hard-coded 0:7
, irrespective of config file settings.
🐛 PI stage did not send position updates properly due to missing signal/slot connection: stages were frequently stuck outside of allowed range.
🐛 Image and metadata files are closed properly if the acquisition is aborted.
🐛 npy2bdv
was creating XML files unreadabla for Imaris, due to extra spaces between affine transofmration matrix values.
Fixed in npy2bdv==1.0.8
, upgrade via pip install -U npy2bdv
.
💎 All DAQ waveforms can be generated by a single NI-6733 card (up to 4 laser lines).
💎 ASI Tiger stage controller, with TTL triggering option.
💎 Photometrics Iris 15 camera
💎 Arm switching / shutter control by shutterswitch
parameter in config file.
💎 DIY filter wheel, driven by Dynamixel servo (same model as V5 zoom servo)
🐛 fix: ASI Tiger communication issues resolved, multithreading simplified.
✨ TIFF file name pattern for multi-tile/channel datasets is fully compatible with BigStitcher auto-loader, no renaming is needed.
🐛 fix: Files must always have extension (currently one of .tiff
, .tif
, .raw
, .h5
). Files without extension return an error.
.h5
for streamlined import into BigStitcher.
💎 💎 💎 Autofocus has been added and works beautifully, outperforming expert human in focusing accuracy by 10x. Highly recommended!
🐛 fix: Going back to previously configured channel in the Tiling Manager
appended a new channel to the acquisition list, rather than amending it.
✨ Laser intensity can be edited directly via spinbox, alternative to slider.
In Acquisition manager, slider is replaced by a spinbox for convenience.
✨ Mark All
button is added to the Acquisition Manager, per @raacampbell request.
♻️ Buttons Mark Rotation Position
and Go To Rotation Position
are removed from the main panel,
since they are redundant and rarely (if ever) used. Rotation position can be marked in the Acquisition Manager,
and one can go to rotation position by using increment buttons.
🐛 fixed: Image processing option generates MAX projections as TIFF files when output file format is either .raw
or .tiff
, #60.
✨ File name wizard auto-starts after Tiling Wizard.
💎 Image sharpness metric of user-defined ROI (by DCTS algorithm) is added to the Camera Window for easier adjustment of focus and ETL values.
💎 TIFF files can be opened for preview: Ctrl + O
.
💎 Button Freeze galvos
is added to ETL tab for quick adjustment of ETL parameters outside of sample, see video tutorial.
tifffile
).
💎 💎 Saving datasets as ImageJ TIFF files, including big ones (Fiji TIFF format that allows > 4 GB size). Voxel dimension saved in TIFF metadata.
💎 Simplified installation and upgrading via pip install -r requirements-anaconda.txt
. See installation instructions.
💎 Easy launching via double-clicking start_mesoSPIM.bat
file (needs to be configured by the user).
💎 Support of multiple PI single-axis controllers, thanks to #52 by @drchrisch.
Note the changes in config file: single multi-axis controller (C-884) is initialized by 'PI_1controllerNstages'
,
while multiple single-axis controllers (C-663) by 'PI_NcontrollersNstages'
.
🐛 Incorrect tiling count (off by -1 in some cases) is fixed.
-
💎 Improved Tiling Wizard:
- buttons
x-start, x-end, y-start, y-end
added for easier navigation: no need to search for corners of imaginary box around the sample. left, then right
illuminations can be created automatically for each tile: no need for manual duplication and changing the illumination directions in the Acquisition Manager.
- buttons
-
💎 Improved saving options in Fiji/BigStitcher H5 format:
laser
,illumination
,angle
attributes are saved in the BigStitcher XML file.- (optional) downsampling and compression are supported.
-
💎 Image window got
Adjust levels
button for automatic intensity adjustment. -
💎 Image window got optional
Box overlay
to help measure sample dimensions. -
🔍 Tests for tiling and serial communication are created.
-
🐛 Bugfix: long-standing
permission denied
issues with serial communication to filter wheel and zoom servo are fixed. The fix opens serial ports once and keeps them open during the session. The root cause was due to laser control software polling serial ports regularly, thus blocking access to them.
⚠️ Config files need to be updated Please note: Updating to this version requires updating your microscope configuration file. Please copy the new configuration options from thedemo_config.py
file into your config files.⚠️ 💎 New handling of config files - If there is a single config file (without a 'demo' prefix in the filename and apart from thedemo_config.py
-file) in the config folder, the software will automatically load this file. Otherwise, the config selection GUI is opened. This is especially helpful when operating a mesoSPIM with multiple users. Thanks to @raacampbell for this feature!- 💎 New: Writing HDF5 - If all rows in the acquistion manager contain the same file name (ending in
.h5
), the entire acquisition list will be saved in a single hdf5 file and a XML created automatically. Both can then be loaded into Bigstitcher for stitching & multiview fusion. This file format is also readable by Imaris. For this, thenpy2bdv
package by @nvladimus needs to be installed via pip. - 💎 New: Dark mode - If the
dark_mode
option in the config file is set toTrue
, the user interface appears in a dark mode. For this, theqdarkstyle
package needs to be installed viapython -m pip install qdarkstyle
. - 💎 New: Camera and Acquisition Manager Windows can be reopened - A new menu allows the camera and acquisition manager windows to be reopened in case they get closed. The same menu bar allows exiting the program as well.
- 💎 New: Disabling arrow buttons - To allow mesoSPIM configurations with less than 5 motorized stages, the arrow buttons in the main window can now be disabled in the configuration file. Typical examples are a mesoSPIM without a rotation stage or a mesoSPIM using only a single motorized z-stage. This feature can also be useful if the serial connection to the stages is too slow and pressing the arrow buttons leads to incorrect movements.
- 💎 Interactive IPython console - If the software is launched via
python mesoSPIM-control.py -C
, an interactive IPython console is launched for debugging. Feature by @raacampbell. - 💎 Command-line demo mode option - If the software is launched via
python mesoSPIM-control.py -D
, it launches automatically into demo mode. Feature by @raacampbell. - 💎 New: Support for PCO cameras - PCO cameras with lightsheet mode are now supported. For this the
pco
Python package needs to be installed viapython -m pip install pco
. Currently, the only tested camera is the PCO panda 4.2 bi with lightsheet firmware. - 💎 New: Support for Sutter Lambda 10B Filter Controller Thanks to Kevin Dean @AdvancedImagingUTSW, Sutter filter wheels are now supported.
- 💎 New: Support for Physik Instrumente stepper motor stages in a XYZ configuration Thanks to @drchrisch, a mesoSPIM configuration ('PI_xyz') using stepper motor stages for sample movement is now supported. Please note that this is currently not supporting focus movements or sample rotations.
- 💎 New: Support for Physik Instrumente C-863 controller in a single-stage config To allow setting up a simplified mesoSPIM using only a single motorized z-stage (all other stages need to be manually operated), the combination of the C-863 motor controller and L-509 stage is now supported ('PI_z')
- ✨ Improvement: Disabling movement buttons in the GUI By modifying the
ui_options
dictionary in the configuration file, the X,Y,Z, focus, rotation, and load/unload buttons can be disabled. This allows modifing the UI for mesoSPIM setups which do not utilize the full set of 5 axes. Disabled buttons are greyed out. - ✨ Improvement: Updated multicolor tiling wizard The tiling wizard now displays the FOV size and calculates the X and Y FOV offsets using a percentage setting. For this, the pixel size settings in the configuration file need to be set correctly.
- ✨ Improvement: Physik Instrumente stages now report their referencing status after startup in the logfile This allows for easier diagnosis of unreferenced stages during startup. Feature by @raacampbell.
- 🐛 Bugfix: Binning was not working properly with all cameras.
- 🐛 Bugfix: Removed unnecessary imports.
- 🐛 Bugfix: Laser power setting
max_laser_voltage
was always 10V, ignoring the config file. This can damage some lasers that operate on lower command voltage.
⚠️ Depending on your microscope configuration, this release breaks backward compatibility with previous configuration files. If necessary, update your configuration file usingdemo_config.py
as an example.⚠️ There are new startup parameters in the config file - make sure to update your config files accordingly. For example,average_frame_rate
has been added.⚠️ This release removes unnecessary configuration files from the public repository - make sure to back up your mesoSPIM & ETL configuration files beforehand. In addition, old example acquisition tables (inmesoSPIM-control\mesoSPIM\acquisitions\
) are removed as well.- 💎 New: Support for more cameras: Photometrics cameras are now supported if
PyVCAM
and the PVCAM-SDK are installed. Only the Iris 15 has been tested so far. In addition, the Hamamatsu Orca Fusion is now supported. - 💎 New: Multicolor tiling wizard: The Tiling wizard can now support up to 3 color channels with different ETL parameters and focus tracking settings.
- 💎 New: Full demo mode - addresses #16:
mesoSPIM-control
can now be run without any microscope hardware by using thedemo_config.py
configuration file. - 💎 New: Snap function -- Single pictures can now be taken by clicking the snap button. The filename is autogenerated from the current time. Files are saved as
.tif
which requirestifffile
as an additional library. - 💎 New: Acquisition time prediction --
mesoSPIM-control
now measures the average framerate every 100 frames to predict the acquisition time. To have a correct initial estimate in theAcquisition Manager
, please update theaverage_frame_rate
with the measured values from your microscope (are now logged in the metadata files after an acquisition). - 💎 New: Focus tracking -- Different start and end focus positions can now be specified in the Acquisition Manager. When moving the sample to acquire the stack, the microscope changes focus according to a linear interpolation between these values. At z_start, the microscope moves the detection path
to f_start and at z_end, the detection path focus is at z_end. This allows imaging a liquid-filled sample cuvette without an immersion cuvette. The
Mark current focus
button changes both values at once. - 💎 New: Improved acquisition previews -- An additional checkbox allows to switch off Z axis movements when previewing acquisitions. This way, the field-of-view does not move outside of the sample which is especially helpful when updating ETL value for individual tiles/stacks in large acquisition tables.
⚠️ When previewing an acquistion requires a rotation, z movements still occur for safety reasons. - 💎 New: Image Processing Wizard:
mesoSPIM-control
now has an Image Processing Wizard (accessible via a button in theAcquisition Manager
). Currently, this allows maximum projections to be generated automatically after acquisitions. - ✨ Improvement:
Acquisition Manager
: Naming of buttons has been improved, in addition, tooltips have been added to improve usability. - ✨ Improvement: Removed unnecessary microscope and ETL configuration files cluttering the repository. Changed
.gitignore
correspondingly - future changes to configuration files. This addresses issue #16. - ✨ Improvement: The software now provides more verbose warnings when acquisitions cannot be started due to missing folders, duplicated filenames and already existing files.
- ✨ Improvement: Better warnings if no row is selected while clicking Mark buttons.
- ✨ New: Added a
CHANGELOG.md
file - 🐛 Bugfix: Manually entering a value in a field in the Acquisition Manager table would change values in other rows as well if the row had been copied before.
- 🐛 Bugfix: Mark buttons and dropdown menus in the Acquisition Manager table slowed down the GUI when a lot of rows (>25) were present. As a fix, only the selected row shows the menu.
- 🐛 Bugfix #26: Fixed: First row is selected by mark buttons by default if only a single row exists in the Acquisition Manager Table
- 🐛 Bugfix #27: Fixed: Entering text into boxes is a bit buggy
- 🐛 Bugfix #30: Fixed: Zooming drop down menu often fails to update after a zoom
- 🐛 Bugfix #31: Fixed:
demo_config.py
now contains subsampling settings - 🐛 Bugfix #34: Fixed: Last frame in a stack is blank due to an off-by-one error
- 🐛 Bugfix #35: Fixed: Software crashes when one folder (to save data in) in the acquisition list does not exist
- New: Logging is now supported. Logfiles go in the
log
folder. - New: Improved support for a specific mesoSPIM configuration using sample & focusing stages by Steinmayer Mechantronik and in combination with PI stages for sample rotation and z-movement.
- Fix: Reduced the output to the command line
- Fix: To decrease laggyness of the GUI in live mode and during acquisitions, display subsampling is now available. This way, less image data has to be rendered by the GUI.
- Fix: Fixed a variety of multithreading bugs.
- Fix: Galvo amplitude and frequency in the startup part of the configuration file are now used to set startup parameters properly
- Fabian Voigt (@ffvoigt)
- Nikita Vladimirov (@nvladimus)
- Kevin Dean (@AdvancedImagingUTSW)
- Christian Schulze (@drchrisch)
- Rob Campbell (@raacampbell)