Supported Hardware ================== This page lists all hardware devices that mesoSPIM-control can drive, together with the configuration key used to enable each one. Every category also includes a ``Demo`` simulator for software-only testing. Cameras ------- .. list-table:: :widths: 30 25 45 :header-rows: 1 * - Camera model - Config key - Notes * - **Demo (simulated)** - ``'DemoCamera'`` - Software simulator; no driver required. * - **Hamamatsu Orca Flash 4.0 V3** - ``'HamamatsuOrca'`` - 2048 × 2048, 6.5 µm pixel. Supported and recommended for classic mesoSPIM v4–v5. Requires `DCAM API `_. Use PCIe frame grabber (not USB3). Config: ``sensor_mode=12``, ``readout_speed=1``. * - **Hamamatsu Orca Fusion** - ``'HamamatsuOrca'`` - 2304 × 2304, 6.5 µm pixel. Tested, stable. Use CoaXPress frame grabber (not USB3). Requires DCAM API. Config: ``sensor_mode=12``, ``readout_speed=2``. * - **Hamamatsu Orca Lightning** - ``'HamamatsuOrca'`` - 4608 × 2592, 5.5 µm pixel. High-speed sCMOS; used in mesoSPIM v6 (ZMB / HIFO). Requires DCAM API with Lightning firmware. Config: ``trigger_mode=1`` (NORMAL), ``high_dynamic_range_mode=2``; no ``readout_speed`` key. * - **Teledyne Photometrics Kinetix** - ``'Photometrics'`` - 3200 × 3200, 6.5 µm pixel. Tested, stable. High resolution across entire FOV only with large-FOV detection objectives. Requires PVCAM + PVCAM-SDK + PyVCAM. * - **Teledyne Photometrics Prime BSI / Prime BSI Express** - ``'Photometrics'`` - 2048 × 2048, 6.5 µm pixel. Tested, stable. Requires PVCAM + PVCAM-SDK + PyVCAM. * - **Teledyne Photometrics Iris 15** - ``'Photometrics'`` - 5056 × 2960, 4.25 µm pixel. Supported and recommended for Benchtop-mesoSPIM. Requires PVCAM + PVCAM-SDK + PyVCAM. Default config: ``exp_mode='Edge Trigger'``, ``gain_index=1``, ``scan_mode=1`` (Line Delay). * - **Teledyne Photometrics Retiga E9** - ``'Photometrics'`` - 3000 × 3000, 3.76 µm pixel. Requires PVCAM + PVCAM-SDK + PyVCAM. Use USB3 frame grabber. Supported and recommended for Benchtop-mesoSPIM. Default config: ``exp_mode='Edge Trigger'``, ``gain_index=3`` (HDR), ``exp_out_mode=4`` (line out), ``scan_mode=1`` (Line Delay). * - **PCO cameras** - ``'PCO'`` - Requires the ``pco`` Python package (≥ 0.1.3). Camera parameters — pixel size, binning, trigger mode, etc. — are set in the ``camera_parameters`` dict. See :doc:`configuration` for examples. Stages ------ mesoSPIM-control supports a variety of stage combinations. The ``stage`` config key selects the stage *class*; individual axis assignments are set in the ``stage_parameters`` dict. .. list-table:: :widths: 35 35 30 :header-rows: 1 * - Stage class - Config key - Typical use * - **Demo stage** - ``'DemoStage'`` - Simulation; no hardware. * - **PI (1 controller → N axes)** - ``'PI'`` or ``'PI_1controllerNstages'`` - Single PI C-884 controller (up to 6 axes incl. rotation). Both keys are accepted. Axes: V4 stage set uses M-112K033 / L-406.40DG10 / M-116.DG / M-406.4PD; V5 uses L-509 series. Default for mesoSPIM v4–v6 (ZMB/USZ/HIFO sites). * - **PI (N controllers → N axes)** - ``'PI_NcontrollersNstages'`` - One PI controller per axis (e.g. C-663, one stage per controller). mesoSPIM v5 option. * - **PI (rot+Z) + Galil (X,Y,F)** - ``'PI_rotz_and_Galil_xyf'`` - PI C-884 drives rotation (M-061.PD) and Z (M-406.4PD); Galil DMC drives X/Y/F (Ethernet or serial). Used in mesoSPIM H45 geometry (HIFO), currently deprecated. * - **ASI Tiger / MS2000** - ``'TigerASI'`` - ASI Tiger TG8-BASIC: 4 motor slots + 5 free slots. Benchtop mesoSPIM default controller; supports TTL trigger. PI stages require the `PI software suite `_. Galil stages require the `Galil API `_. ASI stages require `ASI Tiger drivers `_. Filter wheels ------------- .. list-table:: :widths: 30 25 45 :header-rows: 1 * - Filter wheel - Config key - Notes * - **Demo** - ``'Demo'`` - Simulation. * - **Ludl 96A350 (single)** - ``'Ludl'`` - 32 mm, 10 positions (0–9; Ludl position 10 = index 0). Large filter wheel with separate MAC6000 controller, serial cable. mesoSPIM v4–v6 at ZMB/USZ/H45 sites. Supports **dual-wheel** mode: set two Ludl wheels, use tuples ``(pos_wheel1, pos_wheel2)`` as filter positions. * - **Sutter Lambda 10** - ``'Sutter'`` - 25 mm, 10 positions. Serial communication; configurable baud rate and wheel speed. Deprecated (used in early versions). * - **ZWO EFW-MINI** - ``'ZWO'`` - 31 mm, 5 positions (0–4). Compact, low-cost astronomy filter wheel with integrated USB controller. mesoSPIM Benchtop and v6. Requires ``pyzwoefw`` bindings. Zoom / magnification -------------------- .. list-table:: :widths: 30 25 45 :header-rows: 1 * - Zoom actuator - Config key - Notes * - **Demo zoom** - ``'Demo'`` - Simulation. * - **Dynamixel servo** - ``'Dynamixel'`` - Robotis Dynamixel servo for motorised zoom body. * - **Mitutoyo turret** - ``'Mitu'`` - Mitutoyo motorized objective-turret revolver. Baudrate **9600**; positions A–E map to objective magnifications (e.g. 2×/5×/7.5×/10×/20×). Used in mesoSPIM v6 (ZMB) and some Benchtop setups. Lasers / laser enable --------------------- Laser power is modulated via **analogue output** on the NI DAQ card. Individual laser lines are enabled / blanked via **digital output** lines. .. list-table:: :widths: 30 25 45 :header-rows: 1 * - Laser control - Config key - Notes * - **Demo** - ``'Demo'`` - Simulation. * - **NI DAQ digital enable** - ``'NI'`` - One DO line per laser (see ``laserdict`` in :doc:`configuration`). Analog modulation via AO lines on the same card. * - **NI cDAQ digital enable** - ``'cDAQ'`` - CompactDAQ version (e.g. ``cDAQ1Mod2``). Used with the cDAQ waveform-generation backend. Shutters -------- .. list-table:: :widths: 30 25 45 :header-rows: 1 * - Shutter type - Config key - Notes * - **Demo** - ``'Demo'`` - Simulation. * - **NI DAQ** - ``'NI'`` - Digital output shutter control (see ``shutterdict``). * - **NI cDAQ** - ``'cDAQ'`` - CompactDAQ digital output shutter (e.g. ``/cDAQ1Mod1/port0/line2``). Used with the cDAQ waveform-generation backend. Data acquisition (DAQ) ----------------------- Galvo scan waveforms, ETL (electrically tunable lens) ramps, laser modulation, and camera triggers are generated by National Instruments cards. .. list-table:: :widths: 30 25 45 :header-rows: 1 * - DAQ backend - Config key - Notes * - **Demo waveform generator** - ``'DemoWaveFormGeneration'`` - Simulation. * - **NI PXI/PCIe** - ``'NI'`` - Two-card system: PXI-6259 (galvo/ETL AO + shutter DO) + PXI-6733 (laser AO + DO). Classic mesoSPIM v4–v5 (HIFO, ZMB, USZ, Wyss setups). - Single-card variants also work (e.g. PXI-6733 for standard Benchtop; PXIe-6738 for UCL version). * - **NI CompactDAQ** - ``'cDAQ'`` - USB/Ethernet cDAQ chassis with NI-9401 (digital) and NI-9264 (analog) modules; see ``config_benchtop-cDAQ.py`` example. Note: concurrent-task limits apply (≤ 1 DO, 1 AO, 4 counters). Adding custom hardware ----------------------- mesoSPIM-control uses a plugin architecture for image writers and a class hierarchy for hardware devices. To add a new device type: 1. Create a new ``.py`` file in the appropriate sub-folder of ``mesoSPIM/src/devices/``. 2. Subclass the relevant base class (e.g. ``mesoSPIM_Stage``, ``mesoSPIM_GenericCamera``). 3. Register the new class name in your config file. See :doc:`contributing` and the :doc:`api/index` for details.