QOCTS is a comprehensive framework for designing, simulating, and executing pulse sequences on NV center quantum systems. It provides a modern web interface for pulse sequence editing, real-time simulation via QUSIM, and future integration with quantum hardware.
QOCTS aims to be a complete workflow solution for quantum control experiments:
- Design - Visual pulse sequence editor with drag-and-drop interface
- Simulate - Real-time quantum dynamics via QUSIM backend
- Optimize - Optimal control algorithms (GRAPE, CRAB, Krotov) [planned]
- Execute - Send sequences to real quantum hardware [planned]
- Analyze - Photon counting statistics and data visualization
- Web-based Pulse Editor: Visual timeline for laser/MW/readout pulses
- Preset Sequences: Ramsey, Hahn Echo, CPMG, XY4, XY8, T1 measurement
- Time-dependent Simulation: Full Lindblad dynamics with QUSIM
- Photon Counting: Realistic detection with efficiency, dark counts, dead time
- Job Queue System: Background processing with history tracking
- Data Analysis: Range selection, statistics, export capabilities
- Optimal control integration (GRAPE, CRAB)
- Hardware backends (Qudi, custom AWG)
- Multi-qubit sequences
- Pulse calibration workflows
- Cloud deployment
QOCTS/
├── server/ # FastAPI backend
│ ├── models.py # Pydantic models
│ ├── routes.py # API endpoints
│ ├── queue.py # Job queue management
│ └── worker.py # Simulation worker (QUSIM integration)
├── web/ # Next.js frontend
│ ├── src/
│ │ ├── app/ # Pages
│ │ ├── components/ # React components
│ │ │ ├── pulse-sequence-editor.tsx
│ │ │ ├── results-display.tsx
│ │ │ ├── job-history.tsx
│ │ │ └── system-settings.tsx
│ │ └── lib/ # API client
│ └── package.json
├── qocts_sim/ # QUSIM adapter
│ ├── interfaces/ # Simulator interface
│ └── adapters/ # Backend adapters
└── docs/ # Documentation
- Python 3.9+
- Node.js 18+
- QUSIM (for simulation backend)
# Clone repository
git clone https://github.com/xleonplayz/QOCTS.git
cd QOCTS
# Install server dependencies
pip install -e .
# Install frontend dependencies
cd web
npm install# Terminal 1: Start backend server
cd QOCTS/server
python -m server
# Terminal 2: Start frontend
cd QOCTS/web
npm run devOpen http://localhost:3000 in your browser.
| Endpoint | Method | Description |
|---|---|---|
/status |
GET | Server status and queue info |
/jobs |
POST | Create new simulation job |
/jobs/{id} |
GET | Get job status |
/jobs/{id}/result |
GET | Get job result |
/history |
GET | List job history |
/history/export |
GET | Export history (JSON/CSV) |
{
"laser_pulses": [
{"start": 0, "duration": 300e-9, "power": 1.0}
],
"mw_pulses": [
{"start": 400e-9, "duration": 25e-9, "omega": 10, "phase": 0, "detuning": 0}
],
"readout_start": 500e-9,
"readout_duration": 300e-9
}QOCTS uses QUSIM as its simulation backend. The qocts_sim module provides an adapter that:
- Translates pulse sequences to QUSIM Hamiltonians
- Creates time-dependent envelopes for MW and laser pulses
- Handles photon counting with realistic noise models
- Manages the Lindblad master equation solver
from qocts_sim import create_simulator
sim = create_simulator()
H = sim.create_hamiltonian()
H.add_term(sim.zfs_term(D=2.87))
H.add_term(sim.mw_drive_term(omega=envelope_function))
# ... execute simulationContributions are welcome! Please feel free to submit issues and pull requests.
- QUSIM - Quantum Simulator for NV Centers
Developed at Modular Supercomputing and Quantum Computing (MSQC)
Faculty 12, Computer Science and Mathematics
Goethe University Frankfurt, Campus Bockenheim
Author: Leon Kaiser
l.kaiser@em.uni-frankfurt.de
Licensed under the MIT License - free to use, modify, and distribute with attribution.