From 9bd18e3376d1cb09bab8a5a8a5923387dad9d4b0 Mon Sep 17 00:00:00 2001 From: Jake Lishman Date: Mon, 23 Oct 2023 09:45:08 +0100 Subject: [PATCH] Fix deprecated Numpy logic in `NormalizeRXAngles` (#11023) * Fix deprecated Numpy logic in `NormalizeRXAngles` This new pass added in gh-10634 uses some deprecated Numpy properties and has some slightly fragile exception-based logic when the required properties can be directly tested. This code issues warnings with Numpy 1.25+, which is currently not used by CI due to gh-10305. * Fix return value (cherry picked from commit 6bf90fa5d659e5bc5e35ff93f4291e4b84530fe9) --- .../passes/optimization/normalize_rx_angle.py | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/qiskit/transpiler/passes/optimization/normalize_rx_angle.py b/qiskit/transpiler/passes/optimization/normalize_rx_angle.py index 33b381fc2283..ad39cbc229c5 100644 --- a/qiskit/transpiler/passes/optimization/normalize_rx_angle.py +++ b/qiskit/transpiler/passes/optimization/normalize_rx_angle.py @@ -76,25 +76,16 @@ def quantize_angles(self, qubit, original_angle): float: Quantized angle. """ - # check if there is already a calibration for a simliar angle - try: - angles = self.already_generated[qubit] # 1d ndarray of already generated angles - similar_angle = angles[ - np.isclose(angles, original_angle, atol=self.resolution_in_radian / 2) - ] - quantized_angle = ( - float(similar_angle[0]) if len(similar_angle) > 1 else float(similar_angle) - ) - except KeyError: - quantized_angle = original_angle - self.already_generated[qubit] = np.array([quantized_angle]) - except TypeError: - quantized_angle = original_angle - self.already_generated[qubit] = np.append( - self.already_generated[qubit], quantized_angle - ) - - return quantized_angle + if (angles := self.already_generated.get(qubit)) is None: + self.already_generated[qubit] = np.array([original_angle]) + return original_angle + similar_angles = angles[ + np.isclose(angles, original_angle, atol=self.resolution_in_radian / 2) + ] + if similar_angles.size == 0: + self.already_generated[qubit] = np.append(angles, original_angle) + return original_angle + return float(similar_angles[0]) def run(self, dag): """Run the NormalizeRXAngle pass on ``dag``.