Infrastructure Python pour le contrôle STM et la manipulation atomique
La bibliothèque amrl-transport propose une interface cohérente pour les microscopes à effet tunnel (STM). La classe STMTransport définit 12 méthodes utilisant des unités physiques : nanomètres, millivolts et picoampères. L'implémentation varie selon le contrôleur — Createc, Nanonis ou simulateur.
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: ...
# plus 8 méthodes
Les méthodes incluent le balayage de surface, la manipulation latérale et verticale des atomes, la modification de la pointe et les opérations chimiques. Les agents d'apprentissage par renforcement (RL) agissent sur une couche d'abstraction indépendante de la plateforme matérielle.
Simulation pour le développement sans matériel
SimulatorTransport reproduit intégralement le flux STM. Les atomes de surface sont générés avec des distributions gaussiennes, et un bruit personnalisable est pris en charge. La physique de la manipulation : les atomes se déplacent sous courant suffisant ; la pointe s’émousse puis se reaiguise au fil du temps.
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 — tableau numpy 128x128
Le simulateur permet d’entraîner directement des agents RL sur un ordinateur portable. Le passage au matériel réel nécessite de combler l’écart entre simulation et réalité.
Remplacement du serveur LabVIEW DeepSPM
DeepSPM (Nature Communications, 2020) utilise un serveur TCP LabVIEW pour communiquer avec les contrôleurs Createc. Le protocole a été reverse-engineéré : 6 commandes — scan, tipshaping, tipclean, getparam, approach, movearea. Les réponses sont binaires.
L’implémentation Python basée sur asyncio est pleinement compatible :
python -m amrl_transport.deepspm --transport simulator
Le code DeepSPM se connecte à localhost:5556 sans modification. LabVIEW (coûtant 3 500 $/an, Windows uniquement) est remplacé par un code multiplateforme sous licence MIT.
Système de file d’attente pour tâches parallèles
RabbitMQ + Redis gèrent la répartition des tâches entre plusieurs microscopes. Les tâches sont définies via des modèles Pydantic : ManipulationTask, AtomTarget.
# Worker
python -m amrl_transport.cli worker --transport simulator --worker-id sim-01
# Soumettre une tâche
python -m amrl_transport.cli submit --atoms '[[0,0],[1,0],[0.5,0.866]]'
Supporte le balayage et la manipulation parallèles sur 3 à 5 instruments. Arrêt propre et backoff automatique des tentatives dans les workers.
Intégration aux environnements d’apprentissage par renforcement
TransportEnv remplace directement RealExpEnv de SINGROUP (Université Aalto). Interface compatible 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)
Les modèles entraînés se transfèrent sans effort de la simulation au matériel réel.
Fonctionnalités clés du contrôle STM :
- Balayage à résolution atomique
- Manipulation latérale (~10 secondes par atome)
- Manipulation verticale
- Chimie induite par la pointe
- Contrôle autonome via agents RL
Tests et architecture
41 tests couvrent les protocoles, le simulateur, les mocks COM/TCP, le serveur asyncio, les files d’attente et l’intégration. Tous s’exécutent sans équipement physique :
$ pytest tests/ -v
... 41 passed in 2.34s
Architecture :
amrl_transport/
├── transport/ # ABC + adaptateurs
├── deepspm/ # serveur asyncio
├── queue/ # RabbitMQ/Redis
├── integration.py # Environnement Gym
└── cli.py
Pourquoi cela compte
- API unifiée pour Createc, Nanonis et simulateur
- Émulation complète de la physique STM sans équipement à 500 000 $
- Alternative multiplateforme à LabVIEW (MIT vs 3 500 $/an)
- Environnement Gym prêt à l’emploi pour l’entraînement RL en manipulation atomique
- Exécution parallèle sur plusieurs microscopes
— Editorial Team
Aucun commentaire pour le moment.