11from collections import defaultdict
22from dataclasses import dataclass , field
3+ from functools import partial
34from typing import Optional
45
56import numpy as np
2324)
2425from . import utils
2526
26- __all__ = ["ResonatorFluxParameters" , "resonator_flux" ]
27+ __all__ = ["ResonatorFluxParameters" , "resonator_flux" , "resonator_flux_dc" ]
2728
2829
2930@dataclass
@@ -38,8 +39,6 @@ class ResonatorFluxParameters(Parameters):
3839 """Width for bias sweep [V]."""
3940 bias_step : Optional [float ] = None
4041 """Bias step for sweep [a.u.]."""
41- dc_source : bool = False
42- """Sweep bias offset on software when external DC source is used."""
4342
4443
4544@dataclass
@@ -97,6 +96,7 @@ def _acquisition(
9796 params : ResonatorFluxParameters ,
9897 platform : CalibrationPlatform ,
9998 targets : list [QubitId ],
99+ dc_source : bool ,
100100) -> ResonatorFluxData :
101101 """Data acquisition for ResonatorFlux experiment."""
102102
@@ -122,7 +122,7 @@ def _acquisition(
122122 sequence += ro_sequence
123123
124124 qubit = platform .qubits [q ]
125- flux_channel = qubit .dc_flux if params . dc_source else qubit .flux
125+ flux_channel = qubit .dc_flux if dc_source else qubit .flux
126126 offset0 = platform .config (flux_channel ).offset
127127
128128 freq_sweepers .append (
@@ -160,7 +160,7 @@ def _acquisition(
160160 acquisition_type = AcquisitionType .INTEGRATION ,
161161 averaging_mode = AveragingMode .CYCLIC ,
162162 )
163- if params . dc_source :
163+ if dc_source :
164164 results = defaultdict (list )
165165 for ioffset in range (len (delta_offset_range )):
166166 updates = [
@@ -320,14 +320,28 @@ def _plot(data: ResonatorFluxData, fit: ResonatorFluxResults, target: QubitId):
320320
321321
322322def _update (
323- results : ResonatorFluxResults , platform : CalibrationPlatform , qubit : QubitId
323+ results : ResonatorFluxResults ,
324+ platform : CalibrationPlatform ,
325+ qubit : QubitId ,
326+ dc_source : bool ,
324327):
325328 update .dressed_resonator_frequency (results .frequency [qubit ], platform , qubit )
326329 update .readout_frequency (results .frequency [qubit ], platform , qubit )
327330 update .coupling (results .coupling [qubit ], platform , qubit )
328- update .flux_offset (results .sweetspot [qubit ], platform , qubit )
331+ if dc_source :
332+ update .dc_flux_offset (results .sweetspot [qubit ], platform , qubit )
333+ else :
334+ update .flux_offset (results .sweetspot [qubit ], platform , qubit )
329335 update .sweetspot (results .sweetspot [qubit ], platform , qubit )
330336
331337
332- resonator_flux = Routine (_acquisition , _fit , _plot , _update )
338+ resonator_flux = Routine (
339+ partial (_acquisition , dc_source = False ),
340+ _fit ,
341+ _plot ,
342+ partial (_update , dc_source = False ),
343+ )
333344"""ResonatorFlux Routine object."""
345+ resonator_flux_dc = Routine (
346+ partial (_acquisition , dc_source = True ), _fit , _plot , partial (_update , dc_source = True )
347+ )
0 commit comments