@@ -125,6 +125,18 @@ def frequencies(self, qubit):
125125 """Unique qubit frequency"""
126126 return np .unique (self [qubit , 0 , 0 , 0 ].frequency )
127127
128+ def select_samples (self , qubit , state , measure , pi , freq = None , amp = None ):
129+ """
130+ Return samples for a given qubit, state, and measure, filtering
131+ by frequency and amplitude.
132+ """
133+ samples = self .data [qubit , state , measure , pi ]
134+ if freq is not None :
135+ samples = samples [samples .frequency == freq ]
136+ if amp is not None :
137+ samples = samples [samples .amplitude == amp ]
138+ return samples
139+
128140
129141def _acquisition (
130142 params : ResonatorOptimizationParameters ,
@@ -255,26 +267,16 @@ def _fit(data: ResonatorOptimizationData) -> ResonatorOptimizationResults:
255267 pi ,
256268 ) in product (enumerate (freq_vals ), enumerate (amp_vals ), [0 , 1 ]):
257269 version = "pi" if pi else "standard"
258- data_state_0 = data [ qubit , 0 , 0 , pi ]
259- data_state_1 = data [ qubit , 1 , 0 , pi ]
270+ state_0 = data . select_samples ( qubit , 0 , 0 , pi , freq = freq , amp = amp )
271+ state_1 = data . select_samples ( qubit , 1 , 0 , pi , freq = freq , amp = amp )
260272 iq_values = np .concatenate (
261273 (
262- data_state_0 [
263- (data_state_0 .frequency == freq )
264- & (data_state_0 .amplitude == amp )
265- ].iq_values ,
266- data_state_1 [
267- (data_state_1 .frequency == freq )
268- & (data_state_1 .amplitude == amp )
269- ].iq_values ,
274+ state_0 .iq_values ,
275+ state_1 .iq_values ,
270276 )
271277 )
272278
273- nshots = len (
274- data_state_0 [
275- (data_state_0 .frequency == freq ) & (data_state_0 .amplitude == amp )
276- ].iq_values
277- )
279+ nshots = len (state_0 .iq_values )
278280 states = [0 ] * nshots + [1 ] * nshots
279281 if pi :
280282 states .reverse ()
@@ -303,25 +305,10 @@ def _fit(data: ResonatorOptimizationData) -> ResonatorOptimizationResults:
303305 ) in product (enumerate (freq_vals ), enumerate (amp_vals ), [0 , 1 ]):
304306 version = "pi" if pi else "standard"
305307
306- m1_state_1 = data [qubit , 1 , 0 , pi ][
307- (data [qubit , 1 , 0 , pi ].frequency == freq )
308- & (data [qubit , 1 , 0 , pi ].amplitude == amp )
309- ].samples
310-
311- m1_state_0 = data [qubit , 0 , 0 , pi ][
312- (data [qubit , 0 , 0 , pi ].frequency == freq )
313- & (data [qubit , 0 , 0 , pi ].amplitude == amp )
314- ].samples
315-
316- m2_state_1 = data [qubit , 1 , 1 , pi ][
317- (data [qubit , 1 , 1 , pi ].frequency == freq )
318- & (data [qubit , 1 , 1 , pi ].amplitude == amp )
319- ].samples
320-
321- m2_state_0 = data [qubit , 0 , 1 , pi ][
322- (data [qubit , 0 , 1 , pi ].frequency == freq )
323- & (data [qubit , 0 , 1 , pi ].amplitude == amp )
324- ].samples
308+ m1_state_1 = data .select_samples (qubit , 1 , 0 , pi , freq = freq , amp = amp )
309+ m1_state_0 = data .select_samples (qubit , 0 , 0 , pi , freq = freq , amp = amp )
310+ m2_state_1 = data .select_samples (qubit , 1 , 1 , pi , freq = freq , amp = amp )
311+ m2_state_0 = data .select_samples (qubit , 0 , 1 , pi , freq = freq , amp = amp )
325312
326313 result , _ , _ = compute_qnd (m1_state_1 , m1_state_0 , m2_state_1 , m2_state_0 )
327314 grids ["qnd" ][version ][j , k ] = result
0 commit comments