Skip to content

samhitech/microEye

Repository files navigation

The microEye

microEye

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.

Package Health Python Version Package Version Package Version DOI Package Version Package Version Package Version

   __  ____              ____                ___   ___ ___
  /  |/  (_)__________  / __/_ _____   _  __|_  | <  // _ \
 / /|_/ / / __/ __/ _ \/ _// // / -_) | |/ / __/_ / // // /
/_/  /_/_/\__/_/  \___/___/\_, /\__/  |___/____(_)_(_)___/
                          /___/

Table of Contents

How to Install microEye

  1. Install Python:

    Download and install the latest Python ≥3.9 stable release.

  2. Install microEye package:

    Open a terminal and execute the following command to install microEye using pip:

    pip install microEye --upgrade

    Or for a specific version:

    pip install microEye==version
  3. Install required packages: (Optional)

    Download the requirements.txt file. Navigate to the directory containing the requirements file in your terminal and run:

    pip install -r requirements.txt

    Note: This step is optional as dependecies are installed with the package.

  4. Install specific hardware drivers: (Optional)

    • For Integrated Optics: Download and install Laser control software.

    • For IDS uEye CMOS cameras: Install IDS Software Suite 4.96.1 for Windows 32/64-bit.

    • For Allied Vision CMOS cameras: Install Vimba SDK 5.0 or 6.0 outside the Program Files. Navigate to the directory containing setup.py and run:

      python -m pip install .
    • For Thorlabs CMOS cameras: Install Thorcam in its default directory. Note: Some Thorlabs cameras may be identified as IDS uEye cameras by Windows and may run without Thorcam.

    • For Thorlabs hardware, install Kinesis® Software and Elliptec™ Software.

  5. Open a terminal and execute microEye: 🥳

    usage: microEye.exe [-h] [--module MODULE] [--QT_API QT_API] [--theme THEME]
    
    optional arguments:
     -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.

Note: Ensure all necessary drivers are installed for microEye to function properly.

Troubleshooting Installation

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).
  • 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.

microEye Launcher

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.

Launcher Screenshot

Usage

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 API to use. Options are PySide6, PyQt6, or PyQt5.
  • Theme (dropdown): Select the theme for the application. Options are None (default), qdarktheme, or qdarkstyle.

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. Sounds good, here's the updated section with the simplified commands:

Modules

The miEye Module

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 Acquisition Camera
miEye CamStack

How to use:

To launch the miEye module, run the following command:

microEye --module mieye

The Multi Viewer Module

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
imagesStack locStack

How to use:

To launch the Multi Viewer module, run the following command:

microEye --module viewer

Uses Packages

The microEye uses the following Python packages:

Data Analysis and Visualization GUI and UI Development Code Quality and Formatting Image and Video Processing File and Data Storage Other Utilities
dask PySide6 autopep8 opencv-python ome-types hidapi
matplotlib pyqtdarktheme pyflakes tables pyfiglet
numba pyqtgraph zarr pyserial
numpy QDarkStyle pyjokes
pandas QScintilla setuptools
scikit-image PyQt5 (optional) tabulate
scikit_learn PyQt6 (optional) pyueye
scipy
tifffile
vispy

Note: VimbaPython is included in Vimba SDK and needs to be installed manually.

Microscope Scheme

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
Quad Scheme Scheme GIT

Key Components: AC: Achromat lens, AS: Aspheric lens, BFP: Back-focal plane, TL: Tube lens, B: B-coated N-BK7 optics, BS: Beamsplitter.

Hardware

Supported Cameras

Camera Description Link
IDS uEye UI-3060CP Rev. 2 IDS industrial-grade CMOS cameras Link
Thorlabs DCC1545M DCx camera using UC480 driver Link
Allied Vision Alvium 1800 Allied Vision industrial-grade CMOS cameras (U-158m, U-511m) Link

Additional Hardware

Hardware Description Link
Integrated Optics MatchBox Multi-wavelength Laser Combiner, Single Laser MatchBox Link
Piezo Concept FOC Nanopositioner for microscope objectives Link
Thorlabs Elliptec ELL6/ELL9 Dual/Four-Position Support ELL6, ELL9
Thorlabs KDC101 Kinesis Controller for Z825B/Z925B actuators (Activate USB VCP to access the COM port in device manager) Link
Parallax TSL1401-DB (#28317) Linescan Camera Module Link
RelayBox Arduino For laser control using camera GPIO signals RelayBox
miEye OSF Project Parts List Parts list of miEye OSF Project Link

Authors

Mohammad Nour Alsamsam, PhD student @ Vilnius University.

Twitter URL

People Involved

PhD supervision: Dr. Marijonas Tutkus

Twitter URL

Sample preparation, experiments and testing:

Acknowledgement

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. The pyfit3Dcspline module 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 pyfit3Dcspline README.

  • 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 TARDIS software 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). Link

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.

Citation

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!

About

A python toolkit for fluorescence microscopy.

Resources

License

Stars

Watchers

Forks

Languages