Configuration¶
The configuration file is a Python (.py) file that tells
mesoSPIM-control which hardware is connected and how it is wired.
Every setting — from NI DAQ channel names to stage serial ports — lives here.
Location and selection¶
Config files are stored in mesoSPIM/config/. On startup, if more than
one *.py file is present you will be prompted to select one.
The shipped demo_config.py replaces every hardware device with a software
simulator — use it to verify a fresh installation, or as the starting point
for your own config file.
Tip
Make a copy of demo_config.py, rename it to something like
my_scope_config.py, and edit that copy. Never commit credentials or
personal paths to the main file.
Config file structure¶
A config file is plain Python, so you can use arithmetic, imports, and comments freely. The sections below describe every top-level variable.
plugins¶
Controls where mesoSPIM looks for image-writer plugins and which writer appears first in the file-naming wizard.
plugins = {
'path_list': [
"../src/plugins", # relative paths work
"C:/a/different/plugin/location",
],
'first_image_writer': 'OME_Zarr_Writer',
# other options: 'H5_BDV_Writer', 'MP_OME_Zarr_Writer',
# 'Tiff_Writer', 'Big_Tiff_Writer', 'RAW_Writer'
}
ui_options¶
UI appearance and button visibility.
ui_options = {
'dark_mode': True,
'enable_x_buttons': True,
'enable_y_buttons': True,
'enable_z_buttons': True,
'enable_f_buttons': True,
'enable_f_zero_button': True, # False for revolving objectives
'enable_rotation_buttons': True,
'enable_loading_buttons': True,
'flip_XYZFT_button_polarity': (True, False, False, False, False),
'button_sleep_ms_xyzft': (250, 0, 250, 0, 0),
'window_pos': (0, 0), # top-left corner of the main window
'usb_webcam_ID': 0, # None to disable
'flip_auto_LR_illumination': False,
}
logging_level¶
logging_level = 'INFO' # 'DEBUG' for verbose; 'INFO' for production
acquisition_hardware¶
NI DAQ card line assignments. Names must match exactly what NI MAX shows.
acquisition_hardware = {
'master_trigger_out_line': 'PXI6259/port0/line1',
'camera_trigger_source': '/PXI6259/PFI0',
'camera_trigger_out_line': '/PXI6259/ctr0',
'galvo_etl_task_line': 'PXI6259/ao0:3', # Galvo-L, Galvo-R, ETL-L, ETL-R
'galvo_etl_task_trigger_source':'/PXI6259/PFI0',
'laser_task_line': 'PXI6733/ao0:3', # lasers in wavelength order
'laser_task_trigger_source': '/PXI6259/PFI0',
}
waveformgeneration¶
waveformgeneration = 'NI' # 'DemoWaveFormGeneration' for simulated mode
laser / laserdict¶
laser = 'NI' # 'Demo' or 'NI'
# Keys shown in the GUI; values are digital enable lines.
# Must be in increasing wavelength order.
laserdict = {
'405 nm': 'PXI1Slot4/port0/line2',
'488 nm': 'PXI1Slot4/port0/line3',
'561 nm': 'PXI1Slot4/port0/line4',
'638 nm': 'PXI1Slot4/port0/line5',
}
laser_blanking = 'images' # 'images' or 'stacks'
shutter¶
shutter = 'NI' # 'Demo' or 'NI'
shutterswitch = False # True: left = general shutter, right = L/R switch
shutteroptions = ('Left', 'Right')
shutterdict = {
'shutter_left': 'PXI6259/port0/line0',
'shutter_right': 'PXI6259/port2/line0',
}
camera¶
camera = 'HamamatsuOrca' # 'DemoCamera', 'HamamatsuOrca', or 'Photometrics'
# Example — Hamamatsu Orca Flash 4.0 V2/V3
camera_parameters = {
'x_pixels': 2048,
'y_pixels': 2048,
'x_pixel_size_in_microns': 6.5,
'y_pixel_size_in_microns': 6.5,
'subsampling': [1, 2, 4],
'camera_id': 0,
'sensor_mode': 12, # 12 = progressive
'defect_correct_mode': 2,
'binning': '1x1',
'readout_speed': 1,
'trigger_active': 1,
'trigger_mode': 1,
'trigger_polarity': 2, # positive pulse
'trigger_source': 2, # external
}
binning_dict = {'1x1': (1, 1), '2x2': (2, 2), '4x4': (4, 4)}
For Photometrics camera parameter examples, see demo_config.py.
stages / zoom / ETL¶
For stage, zoom motor, and ETL (electrically tunable lens) configuration
refer to the extensive comments and examples directly in demo_config.py
and the
mesoSPIM hardware wiki.
Mandatory dictionaries (v1.20+)¶
Since release 1.20.0 the following empty dictionaries must be present even if the corresponding feature is not used:
plugins = {}
H5_BDV_Writer = {}
OME_Zarr_Writer = {}
MP_OME_Zarr_Writer = {}
Check the demo_config.py for the latest required keys.
Switching between config files¶
If you have several setups or configurations, place each *.py file in
mesoSPIM/config/ and mesoSPIM-control will display a selection dialog on
startup.
Further reading¶
mesoSPIM/config/demo_config.py— heavily commented reference configmesoSPIM/config/— additional real-world examples