@@ -116,32 +116,33 @@ def from_dc_pulse(cls, pulse: Pulse):
116
116
)
117
117
118
118
119
+ def _convert_integration_weights (x : list [tuple ], minus : bool = False ) -> list [tuple ]:
120
+ """Convert integration weights array for QM."""
121
+ return [(- i [0 ] if minus else i [0 ], i [1 ]) for i in x ]
122
+
123
+
119
124
def integration_weights (element : str , readout_len : int , kernel = None , angle : float = 0 ):
120
125
"""Create integration weights section for QM config."""
121
- cos , sin = np .cos (angle ), np .sin (angle )
122
- if kernel is None :
123
126
124
- def convert (x ):
125
- return [(x , readout_len )]
127
+ if kernel is None :
128
+ cos = [(np .cos (angle ), readout_len )]
129
+ sin = [(np .sin (angle ), readout_len )]
126
130
else :
127
- cos = kernel * cos
128
- sin = kernel * sin
129
-
130
- def convert (x ):
131
- return x
131
+ cos = [(i , 4 ) for i in kernel .real [::4 ]]
132
+ sin = [(i , 4 ) for i in kernel .imag [::4 ]]
132
133
133
134
return {
134
135
f"cosine_weights_{ element } " : {
135
- "cosine" : convert (cos ),
136
- "sine" : convert ( - sin ),
136
+ "cosine" : _convert_integration_weights (cos ),
137
+ "sine" : _convert_integration_weights ( sin , minus = True ),
137
138
},
138
139
f"sine_weights_{ element } " : {
139
- "cosine" : convert (sin ),
140
- "sine" : convert (cos ),
140
+ "cosine" : _convert_integration_weights (sin ),
141
+ "sine" : _convert_integration_weights (cos ),
141
142
},
142
143
f"minus_sine_weights_{ element } " : {
143
- "cosine" : convert ( - sin ),
144
- "sine" : convert ( - cos ),
144
+ "cosine" : _convert_integration_weights ( sin , minus = True ),
145
+ "sine" : _convert_integration_weights ( cos , minus = True ),
145
146
},
146
147
}
147
148
0 commit comments