- Notifications
You must be signed in to change notification settings - Fork2
Analytics suite for FPGA based qubit time-series photonics
License
NotificationsYou must be signed in to change notification settings
dineshpinto/qudi-hira-analysis
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Analytics suite for qubit SPM using FPGA timetaggers
pip install qudi-hira-analysis
pip install --upgrade qudi-hira-analysis
If you are publishing scientific results that use this code, as good scientific practice youshould citethis work.
- Automated data import and handling
- Works natively with data fromQudi andQudi-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
frompathlibimportPathimportseabornassnsfromqudi_hira_analysisimportDataHandlerdh=DataHandler(data_folder=Path("C:/Data"),# Path to data folderfigure_folder=Path("C:/QudiHiraAnalysis"),# Path to figure foldermeasurement_folder=Path("20230101_NV1")# Measurement folder name (optional))# Lazy-load all pulsed measurements with "odmr" in the path into a Dataclassodmr_measurements=dh.load_measurements("odmr",pulsed=True)# Fit ODMR data with a double Lorentzianodmr=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 fitax=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 splittingax.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 reportprint(result.fit_report())# Save figuredh.save_figures(filepath=Path("odmr_fit"),fig=ax.get_figure())
The full documentation is availablehere.
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
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
This license of this project is located in the top level folder underLICENSE
. Some specific files contain theirindividual licenses in the file header docstring.
git clone https://github.com/dineshpinto/qudi-hira-analysis.gitcd qudi-hira-analysispoetry installpoetry run python -m ipykernel install --user --name=qudi-hira-analysispoetry run jupyter lab
The Makefile located innotebooks/
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 themake
command on Windows you can installChocolatey, theninstall make withchoco install make
About
Analytics suite for FPGA based qubit time-series photonics
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.