Skip to content

Repository files navigation

Asyncroscopy

Asynchronous control framework for smart microscopy. Built on PyTango to be hardware-agnostic.

Architecture V1 Architecture V2

Quick Start

# Install all dependencies
uv sync

# Start the server stack with a configuration
uv run startup_scripts/run_servers.py --yaml configs/Spectra300.yaml

# Or use the DigitalTwin (no hardware required)
uv run startup_scripts/run_servers.py --yaml configs/DigitalTwin.yaml

Start the MCP server in a second terminal for agent/AI integration:

uv run startup_scripts/run_mcp.py --yaml configs/mcp.yaml

Start only the segmentation Tango device against an existing Tango/DATA/Tiled stack:

uv run --extra segment startup_scripts/run_segmentation.py --yaml configs/Segmentation.yaml

Start the oriented-particle digital twin:

uv run --extra diffraction python startup_scripts/run_servers.py --yaml configs/digital_twin_particles.yaml

configs/Segmentation.yaml sets compute_device: cuda. On Linux and Windows, the segment extra installs PyTorch from its CUDA 13.0 package index; macOS continues to use the normal PyPI build. The launcher fails at startup instead of silently using the CPU when CUDA is unavailable. Install and verify on the GPU host before launching:

uv sync --extra segment --reinstall-package torch --reinstall-package torchvision
uv run --extra segment python -c "import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available(), torch.cuda.get_device_name() if torch.cuda.is_available() else '')"

For interactive GUI-based startup:

uv run startup_guis/server_gui.py
uv run startup_guis/mcp_gui.py

Project Structure

asyncroscopy/
├── data/              # Data management device
├── instruments/       # Hardware device implementations
└── mcp/               # FastMCP server for AI agents

Configuration Files (configs/)

Config Purpose
Spectra300.yaml Real Thermo Fisher Spectra 300 setup
DigitalTwin.yaml Simulated microscope for development/testing
diffraction.yaml DigitalTwin with diffraction simulation
digital_twin_tilt.yaml ASE/abTEM multislice silicon lamella tilt twin
mcp.yaml MCP server configuration (not hardware)

These are some examples of the available configs, which define the instrument class, supporting devices, Tango connection, and Tiled settings.

Optional Dependencies

# Diffraction and tilt-twin multislice simulation (abTEM-based)
uv sync --extra diffraction

# AI agent support (LangChain/OpenAI)
uv sync --extra agent

# Local AI models via HuggingFace transformers (requires --extra agent)
uv sync --extra agent --extra localagent

Running Tests

uv run pytest tests/ -v

Architecture

  • Abstraction Layer: Instruments are defined as abstract base classes, with specific implementations for different hardware. As such, models can be defined for various microscopes, digital twins, etc.
  • Device Orchestration: Supporting devices (camera, EDS, stage, etc.) are initialized first and linked to the instrument via Tango properties.
  • Execution Order: The instrument serves as the final integration point, instantiated only after all prerequisite supporting devices are running.
  • Data: Data from devices is saved to Tiled.

Documentation

Refer to the asyncroscopy documentation.

Notebooks

Various example workflows in notebooks/, including:

  • 00_Testing.ipynb - Connection tests
  • 01_Aberrations.ipynb - Probe aberration controls
  • 02_Image_Acquisition.ipynb - HAADF image acquisition
  • 03_Stage_Movement_Sample_Map.ipynb - Stage navigation
  • 04_Image_EDS_Point_Spectra.ipynb - EDS spectrum acquisition
  • 05_Digital_Twin_EDS.ipynb - DigitalTwin EDS simulation
  • 06_Digital_Twin_Tilt.ipynb - DigitalTwin tilt control
  • 11_Test_AI_Agent.ipynb - MCP agent testing
  • 15_MAPED.ipynb - Multi-angle precession electron diffraction
  • 16_Alpha_Tilt_Diffraction_Map.ipynb - Tracked alpha-tilt diffraction mapping

Notes

  • The previous Twisted-based implementation is preserved in the twisted-legacy branch for reference.

About

Asynchronous central server for coordinating microscope hardware, enabling smarter experiments

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages