Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Analytics suite for FPGA based qubit time-series photonics

License

NotificationsYou must be signed in to change notification settings

dineshpinto/qudi-hira-analysis

Repository files navigation

DOIPyPi versionPython 3.10Downloadscodecovunittest

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 youshould citethis work.

Features

  • 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

Usage

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())

ODMR

Documentation

The full documentation is availablehere.

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
Loading

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
Loading

License

This license of this project is located in the top level folder underLICENSE. Some specific files contain theirindividual 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.gitcd qudi-hira-analysispoetry installpoetry run python -m ipykernel install --user --name=qudi-hira-analysispoetry run jupyter lab

Makefile

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 HTML
  • make 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


[8]ページ先頭

©2009-2025 Movatter.jp