Python框架实现STM控制与原子操控
amrl-transport库为扫描隧道显微镜(STM)提供了一致的接口。STMTransport类定义了12个使用物理单位的方法:纳米、毫伏和皮安。具体实现因控制器而异——Createc、Nanonis或模拟器。
from amrl_transport.transport.protocol import STMTransport
class STMTransport(ABC):
def connect(self) -> None: ...
def scan_image(self, size_nm, offset_nm, pixel, bias_mv) -> ScanResult: ...
def lateral_manipulation(self, x_start_nm, y_start_nm,
x_end_nm, y_end_nm, ...) -> ManipResult: ...
def tip_shape(self, x_nm, y_nm, ...) -> bool: ...
# 还有8个方法
这些方法涵盖表面扫描、横向与纵向原子操控、探针形状调整及化学操作。强化学习(RL)智能体运行在抽象层上,与硬件平台无关。
无需硬件即可开发的仿真环境
SimulatorTransport 模拟完整的STM工作流程。表面原子通过高斯分布生成,支持自定义噪声。操控物理机制:当电流足够时原子会移动;探针随时间逐渐变钝或重新变尖。
from amrl_transport.transport import SimulatorTransport
import numpy as np
with SimulatorTransport(seed=42) as stm:
img = stm.scan_image(
size_nm=5.0,
offset_nm=np.array([0.0, 0.0]),
pixel=128,
bias_mv=100,
)
# img.img_forward —— 128x128的numpy数组
该模拟器可在笔记本电脑上直接训练RL智能体。迁移到真实硬件时需解决“仿真到现实”的差距问题。
替代LabVIEW服务器DeepSPM
DeepSPM(《自然·通讯》,2020年)使用LabVIEW TCP服务器与Createc控制器通信。协议已逆向工程:共6条命令——scan、tipshaping、tipclean、getparam、approach、movearea。响应为二进制格式。
基于asyncio的Python实现完全兼容:
python -m amrl_transport.deepspm --transport simulator
DeepSPM代码可直接连接localhost:5556,无需修改。原需$3,500/年且仅限Windows的LabVIEW被跨平台、MIT许可的开源代码取代。
支持并行任务的队列系统
RabbitMQ + Redis 负责在多台显微镜间分发任务。任务由Pydantic模型定义:ManipulationTask、AtomTarget。
# 工作节点
python -m amrl_transport.cli worker --transport simulator --worker-id sim-01
# 提交任务
python -m amrl_transport.cli submit --atoms '[[0,0],[1,0],[0.5,0.866]]'
支持3–5台仪器的并行扫描与操控。工作节点具备优雅关闭与重试退避机制。
与强化学习环境的集成
TransportEnv 是Aalto大学SINGROUP项目中RealExpEnv的即插即用替代品。兼容Gym接口:
from amrl_transport.transport import SimulatorTransport
from amrl_transport.integration import TransportEnv
stm = SimulatorTransport(seed=42)
stm.connect()
env = TransportEnv(
transport=stm,
step_nm=0.2,
max_mvolt=20,
max_pcurrent_to_mvolt_ratio=2850,
goal_nm=2.0,
)
state, info = env.reset()
next_state, reward, done, info = env.step(action)
训练好的模型可无缝从仿真环境迁移至真实设备。
核心STM控制功能:
- 原子级分辨率扫描
- 横向操控(每原子约10秒)
- 纵向操控
- 探针诱导化学反应
- 基于RL智能体的自主控制
测试与架构设计
41项测试覆盖协议、模拟器、COM/TCP模拟、asyncio服务器、队列及集成模块。所有测试均无需实体设备即可运行:
$ pytest tests/ -v
... 41 passed in 2.34s
架构结构如下:
amrl_transport/
├── transport/ # ABC基类 + 适配器
├── deepspm/ # asyncio服务器
├── queue/ # RabbitMQ/Redis
├── integration.py # Gym环境封装
└── cli.py
为何这项技术至关重要
- 统一API支持Createc、Nanonis与模拟器
- 无需花费50万美元设备即可完整模拟STM物理过程
- 跨平台替代LabVIEW(MIT许可证 vs $3,500/年)
- 即插即用的Gym环境,用于原子操控强化学习训练
- 支持多台显微镜并行执行任务
— Editorial Team
暂无评论。