From 3fd61d2d62882f64d27b3c3620d6cf4a1a3ab67a Mon Sep 17 00:00:00 2001 From: Marquess Valdez Date: Wed, 10 Apr 2024 10:00:08 -0700 Subject: [PATCH] fix: Program#out(calibrations=False) will not expand calibrations (#1758) * fix: Program#out(calibrations=False) will not expand matching calibrations * remove debug print * dont filter all quil-t instructions * add more instructions to test --- pyquil/api/_wavefunction_simulator.py | 4 ++-- pyquil/quil.py | 4 +++- test/unit/test_quil.py | 31 +++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/pyquil/api/_wavefunction_simulator.py b/pyquil/api/_wavefunction_simulator.py index abca2db2c..45419f7aa 100644 --- a/pyquil/api/_wavefunction_simulator.py +++ b/pyquil/api/_wavefunction_simulator.py @@ -26,7 +26,7 @@ ) from pyquil.gates import MOVE from pyquil.paulis import PauliSum, PauliTerm -from pyquil.quil import Program, percolate_declares +from pyquil.quil import Program from pyquil.quilatom import MemoryReference from pyquil.wavefunction import Wavefunction @@ -230,4 +230,4 @@ def augment_program_with_memory_values( p += quil_program - return percolate_declares(p) + return p diff --git a/pyquil/quil.py b/pyquil/quil.py index 9daae5b7c..ae41ce981 100644 --- a/pyquil/quil.py +++ b/pyquil/quil.py @@ -832,7 +832,9 @@ def out(self, *, calibrations: Optional[bool] = True) -> str: if calibrations: return self._program.to_quil() else: - return self._program.into_simplified().to_quil() + return self.filter_instructions( + lambda inst: not isinstance(inst, (DefCalibration, DefMeasureCalibration)) + ).out() @deprecated( version="4.0", diff --git a/test/unit/test_quil.py b/test/unit/test_quil.py index 9487c9809..a4ae6c502 100644 --- a/test/unit/test_quil.py +++ b/test/unit/test_quil.py @@ -1163,3 +1163,34 @@ def test_cached_frames(): p.inst(frames[1]) program_frames = p.frames assert program_frames == {frames[0].frame: frames[0], frames[1].frame: frames[1]} + + +def test_out_without_calibrations(): + quilt_program = Program( + """ +DEFCAL J 0: + RX(1.5707963267948966) 0 +DEFCAL MEASURE 0 addr: + FENCE 0 +""" + ) + quil_program = Program( + """ +DEFFRAME 0 1 "cphase": + DIRECTION: "tx" + INITIAL-FREQUENCY: 458935243.82547355 + CENTER-FREQUENCY: 375000000.0 + HARDWARE-OBJECT: "q0_ff" + SAMPLE-RATE: 1000000000.0 +DEFWAVEFORM another1: + 4,5 +DECLARE ro BIT[1] +J 0 +MEASURE 0 ro +DELAY 0 +""" + ) + + combined_program = quilt_program + quil_program + + assert combined_program.out(calibrations=False) == quil_program.out()