A Python toolkit to analzye photon timetrace data from qubit sensors
Project description
Qudi Hira Analysis
Analytics suite for qubit SPM using FPGA timetaggers
Installation
pip install qudi-hira-analysis
Update to latest version
pip install --upgrade qudi-hira-analysis
Citation
If you are publishing scientific results that use this code, as good scientific practice you should cite this work.
Features
- Automated data import and handling
- Works natively with data from Qudi and Qudi-Hira
- Fast and robust curve fitting for NV-ODMR 2D maps, Autocorrelation, Rabi, Ramsey, T1, T2 and more...
- Supports all file formats used in NV magnetometry, AFM, MFM and NV-SPM
- Uses a Dataclass-centered design for easy access to data and metadata
Usage
from pathlib import Path
import seaborn as sns
from qudi_hira_analysis import DataHandler
dh = DataHandler(
data_folder=Path("C:/Data"), # Path to data folder
figure_folder=Path("C:/QudiHiraAnalysis"), # Path to figure folder
measurement_folder=Path("20230101_NV1") # Measurement folder name (optional)
)
# Lazy-load all pulsed measurements with "odmr" in the path into a Dataclass
odmr_measurements = dh.load_measurements("odmr", pulsed=True)
# Fit ODMR data with a double Lorentzian
odmr = odmr_measurements["20230101-0420-00"]
x_fit, y_fit, result = dh.fit(x="Controlled variable(Hz)", y="Signal",
fit_function=dh.fit_function.lorentziandouble, data=odmr.data)
# Plot the data and the fit
ax = sns.scatterplot(x="Controlled variable(Hz)", y="Signal", data=odmr.data, label="Data")
sns.lineplot(x=x_fit, y=y_fit, ax=ax, label="Fit")
# Calculate the ODMR splitting
ax.axvline(result.best_values["l0_center"], ls="--", color="C1")
ax.axvline(result.best_values["l1_center"], ls="--", color="C1")
splitting = result.best_values["l1_center"] - result.best_values["l0_center"]
ax.set_title(f"ODMR splitting = {splitting / 1e6:.1f} MHz")
# Generate fit report
print(result.fit_report())
# Save figure
dh.save_figures(filepath=Path("odmr_fit"), fig=ax.get_figure())
Documentation
The full documentation is available here.
Schema
Overall
flowchart TD
IOHandler <-- Handle IO operations --> DataLoader;
DataLoader <-- Map IO callables --> DataHandler;
Qudi[Qudi FitLogic] --> AnalysisLogic;
AnalysisLogic -- Inject fit functions --> DataHandler;
DataHandler -- Fit data --> Plot;
DataHandler -- Structure data --> MeasurementDataclass;
MeasurementDataclass -- Plot data --> Plot[JupyterLab Notebook];
Plot -- Save plotted data --> DataHandler;
style MeasurementDataclass fill: #bbf, stroke: #f66, stroke-width: 2px, color: #fff, stroke-dasharray: 5 5
Dataclass
flowchart LR
subgraph Standard Data
MeasurementDataclass --o filepath1[filepath: Path];
MeasurementDataclass --o data1[data: DataFrame];
MeasurementDataclass --o params1[params: dict];
MeasurementDataclass --o timestamp1[timestamp: datetime.datetime];
MeasurementDataclass --o methods1[get_param_from_filename: Callable];
MeasurementDataclass --o methods2[set_datetime_index: Callable];
end
subgraph Pulsed Data
MeasurementDataclass -- pulsed --> PulsedMeasurementDataclass;
PulsedMeasurementDataclass -- measurement --> PulsedMeasurement;
PulsedMeasurement --o filepath2[filepath: Path];
PulsedMeasurement --o data2[data: DataFrame];
PulsedMeasurement --o params2[params: dict];
PulsedMeasurementDataclass -- laser_pulses --> LaserPulses;
LaserPulses --o filepath3[filepath: Path];
LaserPulses --o data3[data: DataFrame];
LaserPulses --o params3[params: dict];
PulsedMeasurementDataclass -- timetrace --> RawTimetrace;
RawTimetrace --o filepath4[filepath: Path];
RawTimetrace --o data4[data: DataFrame];
RawTimetrace --o params4[params: dict];
end
License
This license of this project is located in the top level folder under LICENSE
. Some specific files contain their
individual licenses in the file header docstring.
Build
Prerequisites
Clone repo, install deps and add environment to Jupyter
git clone https://github.com/dineshpinto/qudi-hira-analysis.git
cd qudi-hira-analysis
poetry install
poetry run python -m ipykernel install --user --name=qudi-hira-analysis
poetry run jupyter lab
Makefile
The Makefile located in notebooks/
is configured to generate a variety of outputs:
make pdf
: Converts all notebooks to PDF (requires LaTeX backend)make html
: Converts all notebooks to HTMLmake py
: Converts all notebooks to Python (can be useful for VCS)make all
: Sequentially runs all the notebooks in folder
To use the make
command on Windows you can install Chocolatey, then
install make with choco install make
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file qudi_hira_analysis-1.6.0.tar.gz
.
File metadata
- Download URL: qudi_hira_analysis-1.6.0.tar.gz
- Upload date:
- Size: 69.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.2 Darwin/23.1.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0698c152f4fba81bdb614eff78e4009914d887ecc9cfa9ab6bd10140beef8a0a |
|
MD5 | 5f85ff459a401b73b2c7a2af57be18d2 |
|
BLAKE2b-256 | 4009d232fb91e096bb9ccdc65eab84f405882100455f0ea2268f60d40f8e963c |
File details
Details for the file qudi_hira_analysis-1.6.0-py3-none-any.whl
.
File metadata
- Download URL: qudi_hira_analysis-1.6.0-py3-none-any.whl
- Upload date:
- Size: 83.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.2 Darwin/23.1.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe6446881fcdebeeab0d4b8c0d9d920d2ef578b38ee193778ec1d9a57c51d040 |
|
MD5 | 47728501402728de4986ecc36b88dd57 |
|
BLAKE2b-256 | ff39a62f94fe0a591ba669223675917b9156ddb066657c3d8c33c2be749a8958 |