The microEye is a Python toolkit for fluorescence microscopy that supports super-resolution single-molecule localization microscopy and single-particle tracking. It features hardware control, data analysis, and visualization.
This toolkit is compatible with the hardware used in our microscope. For further details, refer to the miEye microscope paper and OSF project.
__ ____ ____ ___ ____ ___ ___
/ |/ (_)__________ / __/_ _____ _ __|_ |/ / / / _ \___ _( _ )
/ /|_/ / / __/ __/ _ \/ _// // / -_) | |/ / __//_ _// // / _ `/ _ |
/_/ /_/_/\__/_/ \___/___/\_, /\__/ |___/____(_)_/(_)___/\_,_/\___/
/___/
___ __ __
/ _ | / /__ / / ___ _
/ __ |/ / _ \/ _ \/ _ `/
/_/ |_/_/ .__/_//_/\_,_/
/_/- The microEye
How to Install microEye
-
Install Python:
Download and install the latest
Pythonstable release (version ≥3.11.9). -
Install microEye package:
Open a terminal and execute the following command to install microEye using pip:
pip install microEye --upgradeOr for a specific version:
pip install microEye==version -
Install specific hardware drivers: (Optional)
-
Allied Vision CMOS cameras:
Install the
Vimba X SDK(avoid installing it inside the Program Files directory). After installation, navigate to thePython APIdirectory (e.g.,C:\Allied Vision\Vimba X\api\python) where thevmbpywheel file (.whl) is located, and install it using:python -m pip install vmbpy-1.1.1-py3-none-win_amd64.whl
Important note
It has been observed that
vmbpycan hang when initializingGenICAMtransport layers (TLs) if theGENICAM_GENTL64_PATHenvironment variable contains.ctifolders from other providers (e.g.,IDS Peakorpylon). To avoid this, restrictVimba Xto load only its own TLs by explicitly specifying theVimba X.ctidirectory inVmbC.xml.Steps
-
Auto (recommended)
Set the
VIMBA_X_HOMEenvironment variable to yourVimba Xinstallation directory.microEyewill readVIMBA_X_HOMEat startup and use it to point the Vimba X transport-layer (.cti) configuration (e.g.,VIMBA_X_HOME/cti).Note: On Windows the
Vimba X installertypically creates this variable automatically — verify it before manually setting it. -
Manual
If the automatic method is not prefered, create the environment variable
VIMBA_X_CTIand point it to the directory (or directories) that contain theVimba X.ctitransport-layer files. Use directory paths (not individual.ctifiles). Multiple directories are allowed — separate them with the platform-specific path separator.
-
-
Basler CMOS cameras: Install
pylon(avoid installing it inside the Program Files directory). -
IDS CMOS cameras:
-
Install
IDS Software Suite 4.96.1for Windows 32/64-bit. -
Alternatively,
IDS Peak Extended Setupis prefered as it support old uEye models and the new uEye+ ones.- The installation package also includes the uEye camera drivers for UI models in addition to the standard setup. Therefore, no installation of the IDS Software Suite is required for the operation of UI models.
- If the process cannot read the system-wide
GENICAM_GENTL_PATH/GENICAM_GENTL64_PATH, add the same variable to your User environment variables (not just System) and restart any open terminals or applications for the change to take effect.
-
-
Integrated Optics Lasers: Install
Laser control software. -
PCO cameras: Install
pco.sdk,pco.runtime.Note: Support is under development.
-
Thorlabs CMOS cameras: Install
Thorcamin its default directory. Note: Some Thorlabs cameras may be identified as IDS uEye cameras by Windows and may run without Thorcam. -
Thorlabs hardware, install
Kinesis® SoftwareandElliptec™ Software.
-
-
Open a terminal and execute microEye: 🥳
usage: microEye.exe [-h] [--module {mieye,viewer}] [--QT_API {PySide6,PyQt6,PyQt5}] [--theme {None,qdarktheme,qdarkstyle,...}] [--log-level {CRITICAL,ERROR,WARNING,INFO,DEBUG}] [--no-log-file] [--no-log-console] options: -h, --help show this help message and exit --module {mieye,viewer} The module to launch [mieye|viewer], If not specified, launcher is executed. --QT_API {PySide6,PyQt6,PyQt5} Select QT API [PySide6|PyQT6|PyQt5], If not specified, the environment variable QT_API is used. --theme {None,qdarktheme,qdarkstyle,...} The theme of the app, if not specified, the environment variable MITHEME is used. --log-level {CRITICAL,ERROR,WARNING,INFO,DEBUG} Root logging level (default WARNING). --no-log-file Disable logging to file. --no-log-console Disable logging to console.
Note: Ensure all necessary drivers are installed for microEye to function properly.
If you encounter any issues during the installation process, please check the following:
- Ensure that you have the latest version of Python installed (
3.9 ≤ version ≤3.11). - Try installing the required packages repeating step (2) or individually using
pip install <package_name>. - Check the system requirements for specific hardware drivers and follow the installation instructions provided by the manufacturers.
- Refer to the project's issue tracker on GitHub for any known installation issues and solutions.
If the issue persists, feel free to open a new issue on the project's GitHub repository, providing detailed information about the problem and any error messages you encountered.
The microEye Launcher allows you to launch either the miEye Module or the Viewer Module, and provides options to select the Qt API and theme for the application.
Upon running the launcher, you will be presented with the following interface:
- miEye Module: Launches the miEye module for microscope control and acquisition.
- Viewer Module: Launches the viewer module for image/data anlysis and visualization.
- QT API (dropdown): Select the
Qt APIto use. Options arePySide6,PyQt6, orPyQt5. - Theme (dropdown): Select the
themefor the application. Options areNone(default),qdarktheme, orqdarkstyle.
To launch a module, simply click on the respective button (miEye Module or Viewer Module). If you wish to change the Qt API or theme, select the desired option from the dropdown menus before launching.
The miEye_module provides the primary graphical user interface (GUI) for microscope control and data acquisition, combining the functionalities of the deprecated Acquisition and Control modules.
| miEye module (NOT UP TO DATE) | Acquisition Camera |
|---|---|
![]() |
![]() |
How to use:
To launch the miEye module, run the following command:
microEye --module mieyeThe Experiment Designer is a new feature within the miEye Module that allows users to create and manage complex acquisition protocols through a graphical interface.
Key features include:
- GUI-based design of acquisition protocols;
- Support for loops and device parameter adjustments/actions;
- Export and import capabilities for protocols;
- Threaded execution with pause functionality;
- Configurable delays between protocol steps
- Context menu for easy adjustments
- Nested protocol structure
- Acquisition action wait option
- Cell reordering and deletion via keyboard shortcuts
- Real-time execution progress view
To access the Experiment Designer:
- Launch the
miEye module. - Look for the
Protocolsview in the interface.
Note: This feature is currently in beta. We value your feedback to enhance its functionality and improve the user experience.
The multi_viewer Module is an improved GUI that replaces the deprecated tiff_viewer module. It allows users to process multiple files and provides data analysis and visualization tools for super-resolution single-molecule localization microscopy and single-particle tracking.
| Raw Data | Localizations |
|---|---|
![]() |
![]() |
How to use:
To launch the Multi Viewer module, run the following command:
microEye --module viewerThe microEye uses the following Python packages:
| Code Quality and Formatting | Data Analysis and Visualization | File and Data Storage | GUI and UI Development | Image and Video Processing | Microscopy | Other Utilities |
|---|---|---|---|---|---|---|
| autopep8 | dask | h5py | PyQt5 (optional) | opencv_python | pco | hidapi |
| pyflakes | matplotlib | ome_types | PyQt6 (optional) | PyOpenGL | pycromanager | mmpycorex |
| numba | tables | PyQt6-QScintilla (optional) | pyueye | pyfiglet | ||
| numpy | tifffile | PySide6 | pypylon | pyjokes | ||
| pandas | zarr | pyqtgraph | pyserial | |||
| pystackreg | pyqtdarktheme | setuptools | ||||
| scikit-image | QDarkStyle | tabulate | ||||
| scikit_learn | QScintilla | tqdm | ||||
| scipy |
Note: The VimbaPython package is bundled with the Vimba SDK and must be installed manually.
IMPORTANT: Starting from microEye v2.4.0, the legacy Vimba SDK is no longer supported. Please use the Vimba X SDK and its accompanying vmbpy Python package instead.
Schematic overview of the miEye instrument:
- A) Single-Mode Fiber (SMF): Excitation path for TIRF-, HILO-, and Epi-mode.
- B) Multi-Mode Fiber (MMF): Excitation path for Epi-mode when imaging MMF output on the sample plane.
- C) Fluorescence Emission: Path for fluorescence emission.
- D) Automatic Focus Stabilization: the automatic focus stabilization path using an IR laser in TIRF setting.
| Scheme 1 | Scheme 2 |
|---|---|
![]() |
![]() |
Key Components: AC: Achromat lens, AS: Aspheric lens, BFP: Back-focal plane, TL: Tube lens, B: B-coated N-BK7 optics, BS: Beamsplitter.
| Camera | Description | Driver | Link |
|---|---|---|---|
| IDS uEye UI-3060CP Rev. 2 | IDS industrial-grade CMOS cameras | IDS uEye SDK 4.96.1 pyueye |
Product Link |
| Thorlabs DCC1545M | DCx camera using UC480 driver | ThorCam 3.7.0 |
Product Link |
| Allied Vision Alvium 1800 | Allied Vision industrial-grade CMOS cameras (U-158m, U-511m) | Vimba X SDK vmbpy |
Product Link |
| Excelitas PCO sCMOS | Excelitas pco.edge 4.2 LT USB sCMOS Camera | pco.sdk pco.python |
Product Link |
| Pycro-camera | Access to cameras via Micro-Manager drivers/adapters using Pycro-Manager | uManager Pycro-Manager |
- |
| Hardware | Description | Driver | Link |
|---|---|---|---|
| Integrated Optics MatchBox | Multi-wavelength Laser Combiner, Single Laser MatchBox | Native |
Products Link |
| Piezo Concept FOC | Nanopositioner for microscope objectives | Native |
Piezo Concept FOC |
| Thorlabs Elliptec ELL6/ELL9/ELL12 | Dual/Four/Six-Position Slider | Native |
ELL6, ELL9, ELL12 |
| Thorlabs Elliptec ELL14 | Rotation Mount: SM1 Threaded | Native |
ELL14 |
| Thorlabs Elliptec ELL20 | Linear Stage: 60 mm Travel | Native |
ELL20 |
| Thorlabs KDC101 | Kinesis Controller for Z825B/Z925B actuators (Activate USB VCP to access the COM port in device manager) | Native |
KDC101 |
| Parallax TSL1401-DB (#28317) | Linescan Camera Module | Native |
Parallax TSL1401-DB |
| RelayBox Arduino | For laser control using camera GPIO signals | Native |
RelayBox |
| miEye OSF Project Parts List | Parts list of miEye OSF Project | - | Repo Link |
Integration with Pycro-Manager is now implemented, providing support for managing headless instances and Core instances. This allows for seamless control and configuration of hardware devices through the Pycro-Manager framework.
- Headless Manager: Manage multiple headless Micro-Manager instances (JavaBackend), including starting, stopping, and saving configurations.
- Core Instances Manager: Handle multiple
PycroCoreinstances for device communication and control.
The following table lists the hardware devices that are integrated and supported by the miEye module:
| Device | Description |
|---|---|
Camera |
Access Micro-Manager cameras (mainly done for focus stabilization). |
ZStage |
Access Micro-Manager Z-stage devices for focus stabilization and axial positioning control. |
-
Headless Manager:
- Open the
miEye_moduleand navigate toTools -> Micro-Manager Headless Managerin the main menu. - Start a new headless instance using a specific configuration file.
- Stop individual running instances or terminate all instances simultaneously.
- Save configurations for future use or load previously saved configurations for headless instances.
- Open the
-
Core Instances:
-
Open the
miEye_moduleand navigate toTools -> Micro-Manager Core Bridgesin the main menu. -
Click on
Add Core Bridgeand provide the port address in the dialog box. -
A list of connected devices will be displayed, allowing you to view each device's properties.
-
Close the window and refresh the camera list to access Pycro-Manager cameras.
Accessing other types of devices is under development!
Note: Currently, only acquisition and focus stabilization features are implemented. Support for additional hardware and stage-related controls is under active development.
-
For comprehensive step-by-step instructions, please refer to the Pycro-Manager Integration Guide.
PhD supervision:
Sample preparation, experiments and testing:
Aurimas Kopūstas
Tutkus Lab Team
Research and access to intruments and samples is credited to:
- Vilnius University, Lithuania.
- Center For Physical Sciences and Technology, Vilnius, Lithuania.
- Research Council of Lithuania.
Special thanks to the following projects and libraries that make this work possible:
-
SMAP/fit3Dcspline: The original code, provided as a part of the Ries group
SMAP software. Thepyfit3Dcsplinemodule in our project is a Python adaptation of this functionality, offering both CPU and GPU accelerated fitting of Single-Molecule Localization Microscopy (SMLM) data. For more details, refer to the pyfit3DcsplineREADME. -
ACCéNT: a partial implementation of the photon free calibration within the acquisition pipeline which generates pixel-wise mean and variance images.
Robin Diekmann, Joran Deschamps, Yiming Li, Aline Tschanz, Maurice Kahnwald, Ulf Matti, Jonas Ries, "Photon-free (s)CMOS camera characterization for artifact reduction in high- and super-resolution microscopy", bioRxiv 2021.04.16.440125. doi: 2021.04.16.440125
-
Phasor Fit: We have implemented the 2D phasor fitting algorithm in Python for fast pre-fitting visualization of localizations.
K.J.A. Martens, A.N. Bader, S. Baas, B. Rieger, J. Hohlbein. "Phasor based single-molecule localization microscopy in 3D (pSMLM-3D): an algorithm for MHz localization rates using standard CPUs," bioRxiv, 2017. DOI: 10.1101/191957.
-
Endesfelder Lab/SMLMComputational: A numba accelerated adaptation of Drift Correction, Fourier Ring Correlation (FRC) structural resolution and Nearest Neighbour Analysis (NeNA) for localization precision from Endesfelder Lab.
Raw data to results: a hands-on introduction and overview of computational analysis for single-molecule localization microscopy", Martens et al., (2022), Frontiers in Bioinformatics. Paper
-
TARDIS (Temporal Analysis of Relative Distances): We have developed a partial Python implementation of TARDIS without fitting for now. For more information, refer to the
TARDISsoftware releases. The underlying algorithms and scientific details of TARDIS are detailed in the manuscript:Martens et al., “Temporal analysis of relative distances (TARDIS) is a robust, parameter-free alternative to single-particle tracking”, Nature Methods (2024). Article
Note: I'm committed to maintaining an accurate acknowledgment list for our project. However, if I inadvertently miss acknowledging your work, please don't hesitate to reach out to us. I appreciate your understanding, and I'm doing my best to manage all acknowledgments amidst my other responsibilities.
I make it a standard practice to cite and provide credit within a function's docstring whenever I draw inspiration from any external reference.
If you find our work or software helpful in your research or project, we kindly request that you cite it appropriately. Here is the suggested citation format:
M.N. Alsamsam, A. Kopūstas, M. Jurevičiūtė, and M. Tutkus, “The miEye: Bench-top super-resolution microscope with cost-effective equipment,” HardwareX 12, e00368 (2022). Paper
Additionally, we would appreciate it if you could provide a link to our GitHub repository or any relevant publication associated with the software.
Alsamsam, M. N. microEye, https://github.com/samhitech/microEye [Computer software]
Thank you for your support!









