| name | analysis-scripts |
| description | Write and run Python scripts to analyze quantum experiment data stored in HDF5 files. Use when the user asks to analyze experiment results, fit peaks or curves, extract features from measurement arrays, or when reusable analysis logic should be saved alongside an experiment for future reuse. |
Analysis Scripts
Write Python scripts to analyze experiment data. Scripts are saved alongside the experiment for reuse.
Storage Location
Scripts go in a subfolder next to the experiment's HDF5 file:
data/experiments/
├── YYYYMMDD_HHMMSS_type.h5 # Experiment data
└── YYYYMMDD_HHMMSS_type_scripts/ # Scripts for this experiment
└── analysis_name.py
To find the scripts folder:
- Get experiment:
lab(action="history_show", experiment_id="...")
- Response includes
file_path (e.g., .../20240315_143022_qubit_spectroscopy.h5)
- Scripts folder: replace
.h5 with _scripts/
Script Template
"""Description of what this script does."""
import sys
import json
from pathlib import Path
from core import storage
DATA_DIR = Path(__file__).parent.parent.parent
experiment_id = sys.argv[1]
exp = storage.load_experiment(experiment_id, DATA_DIR)
if exp is None:
print(json.dumps({"error": f"Experiment {experiment_id} not found"}))
sys.exit(1)
data = exp.to_dict()
import numpy as np
result = {
"status": "success",
}
print(json.dumps(result))
Running a Script
python /path/to/script.py <experiment_id>
Example:
python data/experiments/20240315_143022_qubit_spectroscopy_scripts/fit_peak.py 20240315_143022_qubit_spectroscopy
Workflow
- User asks to analyze an experiment
- Get experiment info:
lab(action="history_show", experiment_id="...")
- Check for existing scripts:
ls {file_path.replace('.h5', '_scripts/')}
- If script exists: run it
- If not: write new script using template, then run it
Finding Scripts from Similar Experiments
lab(action="history_list", filter_type="qubit_spectroscopy")
ls data/experiments/20240315_143022_qubit_spectroscopy_scripts/
cat data/experiments/.../fit_peak.py