From 5e116b8e3f2a686bf2f725c0393bc34934979337 Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Thu, 6 Aug 2020 13:08:22 -0400 Subject: [PATCH] Prepare 0.15.0 release (#4850) * Prepare 0.15.0 release This commit moves the release notes into a 0.15 subdirectory to keep them separate from development notes post-release. It also adds an incomplete release note to add the prelude section providing the high level overview of the release. When this merges it should be the commit used to to tag the 0.15.0 release. * Cleanup and fix dag deprelease notes and remove unused dag_drawer arg This starts the processes of cleaning up and fixing the release notes by starting with the release notes for DAGDependency and the supporting functions. As part of that a release note for a new argument to the dag_drawer was removed because that argument was not actually needed. Since it was just being used to type check and it was just error prone. This refactors the dag drawer so that the uneccessary arg is removed and isinstance is just used. * Avoid potential cyclic import in dag_drawer * Start cleanup and fixing release notes This commit starts the process of going through and cleaning up, fixing, and rewriting the release notes for the release. * Move and cleanup new release notes * More release note cleanups and fixes * More updates * More feature releasenote updates * Update another release note * Start fixes of upgrade notes * More upgrade note fixes * More updates * Apply suggestions from code review Co-authored-by: Julien Gacon * Update phase estimate release note with review comments * Move and fix new release notes * Fix the rest of the deprecation notes * More updates * Update releasenotes/notes/0.15/u-and-phase-gate-e308fb4bb009014f.yaml Co-authored-by: Julien Gacon * Finish first pass of release note fixes * Update new release notes * Remove out of date docstring addition * Update 0.15.0-release-c7d85921f85f0b4d.yaml * Move and touch up new release notes * Move and fix new release notes * Move new release note * Fix whitespace in prelude * Update releasenotes/notes/0.15/transpiler_fails_with_condition-9b4b4d66406548f0.yaml Co-authored-by: Luciano Bello * Update rename-rescheduler-d4210a234714ed5d.yaml * Apply suggestions from code review * Update remove-marshmallow-validation-283fa62b3acc51e4.yaml * Update remove-deprecated-qi-b7d5a8ca00849b02.yaml * Apply suggestions from code review Co-authored-by: Luciano Bello * Apply suggestions from code review Co-authored-by: Luciano Bello Co-authored-by: Julien Gacon Co-authored-by: Ali Javadi-Abhari Co-authored-by: Luciano Bello --- qiskit/circuit/__init__.py | 2 + qiskit/circuit/library/__init__.py | 4 + qiskit/dagcircuit/dagdependency.py | 2 +- qiskit/visualization/dag_visualization.py | 43 +++--- .../0.15/0.15.0-release-c7d85921f85f0b4d.yaml | 14 ++ ...ed-as-non-local-gate-6cb31d63a9052632.yaml | 10 ++ ...ssembled-as-MCX-gate-df73b216e9777ecf.yaml | 12 ++ ...ot-marked-equivalent-729bc971c897ede3.yaml | 7 + .../Add-canonical-form-47e0466ed57640f3.yaml | 35 +++++ ...basistranslator-pass-d5e7de69ab9f20a1.yaml | 13 ++ ...or-to-default-levels-1c0de250f8ca4a59.yaml | 28 ++++ .../add-counts-class-7c75bd94d12a161a.yaml | 17 +++ ...ircuit-from-networkx-7815b9c575232b14.yaml | 0 ...recate-rho-state-viz-7bcd3f4112f32823.yaml | 0 ...d-init-qubits-option-ea1844f88fcddcf6.yaml | 13 ++ .../0.15/add-rep-delay-c97d5aa8fc9696da.yaml | 31 ++++ ...quantumcircuit_phase-5006d1e930348d2e.yaml | 32 ++++ ...rQuantumRegisterSize-2e9a6cc033bc962e.yaml | 12 ++ .../0.15/ancilla-qubit-cdf5fb28373b8553.yaml | 9 ++ ...minators-and-kernels-5e0f7083054b01a2.yaml | 0 ...bugfix-set-frequency-29608d213a8cbece.yaml | 8 + ...pulse_lib-to-library-f8e76ff3136128ec.yaml | 6 + .../circuit-control-8734da01db4f92e5.yaml | 9 ++ .../0.15/circuit-repeat-8db21ef8d8c21cda.yaml | 21 +++ ...circuit-reverse-bits-ce1873a89b06e3df.yaml | 17 +++ ...ombine-into-edge-map-279441b53ed4e790.yaml | 7 + ...configurable-backend-af0623b43bdcc35e.yaml | 10 +- ...egistration-optional-266758d497d82ce3.yaml | 18 +++ .../0.15/cregbundle-8c0ae7bd7875dd0f.yaml | 32 ++++ .../defective_qubits-d826ccbd049603b9.yaml | 0 ...te-dag-qubits-method-0a61b37fa4a5bcd5.yaml | 10 ++ ...ate-get_sample_pulse-b97028b14317996c.yaml | 10 ++ ...tional-condition-arg-7645c645c738e290.yaml | 10 ++ ...e-default-plot-table-330705e3118fac6a.yaml | 8 + ...num_ctrl_qubits_zero-eb102aa087f30250.yaml | 12 ++ .../equiv-lib-draw-8f3c4bd897a2fa6c.yaml | 4 +- ...lling-open-ctrl-gate-4a72116526afb1fd.yaml | 10 ++ ...feature-map-barriers-ab1a2d930a6b5af1.yaml | 7 + .../implement-set-phase-b5581ad6085b3cec.yaml | 19 +++ ...ment-shift-frequency-46d4ea16d8be2f58.yaml | 17 +++ .../large_gate_bugfix-cbf0b6f1dcfbd5dd.yaml | 0 ...moveResetInZeroState-942c0fb19cb6c087.yaml | 14 ++ ...e_length_remove_0.10-d13e5a15524e67c0.yaml | 8 + .../mpl-scaling-fix-823c3e3d3cb2d9d1.yaml | 21 +++ .../op_tolerance_dep-d0d931f029e27a44.yaml | 33 +++++ .../parameter-conjugate-a16fd7ae0dc18ede.yaml | 8 + ...e-estimation-circuit-c22d71d88873aa77.yaml | 19 +++ ...ylatexenc-matplotlib-428f285f4cfd2d7c.yaml | 2 +- .../qasm_remove_0.9-7150d53da8eebfd8.yaml | 9 ++ ...sphere-state-display-819cc1e3e61314a2.yaml | 21 +++ ...adratic-form-circuit-f0ddb1694960cbc1.yaml | 32 ++++ ...quantum_state_expval-18359552aab42343.yaml | 0 .../quantum_volume_rng-2e6f46e3821aebeb.yaml | 11 ++ ...-compose-without-dag-b19e518a8f2fbeb0.yaml | 19 +++ ...els-to-plot-argument-388c6b33ed00b0d6.yaml | 11 ++ ...cuit-instruction-map-37fb34c3b5fe033c.yaml | 8 + ...eprecated-pulse-code-9ec2dba175058c5f.yaml | 18 +++ ...cated-pulse-commands-18381c59264090dd.yaml | 41 +++++ ...remove-deprecated-qi-b7d5a8ca00849b02.yaml | 8 +- .../remove-iplot-150c97e5a4d399e4.yaml | 6 +- ...rshmallow-validation-283fa62b3acc51e4.yaml | 4 +- ...emove-multi-acquires-747701103ddd816c.yaml | 20 +++ .../remove-use_networkx-e1c846a9f8f2ff6a.yaml | 10 ++ .../rename-rescheduler-d4210a234714ed5d.yaml | 2 +- ...plepulse-to-waveform-add2c0482623f752.yaml | 3 +- .../notes/0.15/sabre-2a3bba505e48ee82.yaml | 13 ++ .../schedule-replace-2c5634a6133db237.yaml | 5 +- .../0.15/sqrt-x-gates-3aba219f0efd8900.yaml | 13 ++ .../statevector-reset-3c819d1e2d598cc4.yaml | 10 +- ...-parameterexpression-5f140ba243ba126a.yaml | 6 +- .../0.15/to_gate_label-d825a2997a504604.yaml | 19 +++ ...tionpass_propertyset-3d1d9aedad9860be.yaml | 15 ++ ...fails_with_condition-9b4b4d66406548f0.yaml | 12 ++ .../u-and-phase-gate-e308fb4bb009014f.yaml | 20 +++ .../updated_mpl_drawer-1498741fc64ac42a.yaml | 140 ++++++++++++++++++ ...ero-param-pulse-ends-c3ad82eae66f9252.yaml | 8 + ...ed-as-non-local-gate-6cb31d63a9052632.yaml | 7 - ...ssembled-as-MCX-gate-df73b216e9777ecf.yaml | 10 -- ...ot-marked-equivalent-729bc971c897ede3.yaml | 6 - .../Add-canonical-form-47e0466ed57640f3.yaml | 44 ------ ...basistranslator-pass-d5e7de69ab9f20a1.yaml | 10 -- ...or-to-default-levels-1c0de250f8ca4a59.yaml | 14 -- .../add-counts-class-7c75bd94d12a161a.yaml | 18 --- ...d-init-qubits-option-ea1844f88fcddcf6.yaml | 11 -- .../notes/add-rep-delay-c97d5aa8fc9696da.yaml | 15 -- ...quantumcircuit_phase-5006d1e930348d2e.yaml | 17 --- ...rQuantumRegisterSize-2e9a6cc033bc962e.yaml | 6 - .../notes/ancilla-qubit-cdf5fb28373b8553.yaml | 7 - ...anslate-by-synthesis-7bdfa76cdb1eee91.yaml | 7 - ...bugfix-set-frequency-29608d213a8cbece.yaml | 6 - ...pulse_lib-to-library-f8e76ff3136128ec.yaml | 8 - .../circuit-control-8734da01db4f92e5.yaml | 8 - .../circuit-repeat-8db21ef8d8c21cda.yaml | 6 - ...circuit-reverse-bits-ce1873a89b06e3df.yaml | 13 -- ...ombine-into-edge-map-279441b53ed4e790.yaml | 5 - ...egistration-optional-266758d497d82ce3.yaml | 9 -- .../notes/cregbundle-8c0ae7bd7875dd0f.yaml | 5 - ...te-dag-qubits-method-0a61b37fa4a5bcd5.yaml | 7 - ...ate-get_sample_pulse-b97028b14317996c.yaml | 5 - ...tional-condition-arg-7645c645c738e290.yaml | 6 - ...e-default-plot-table-330705e3118fac6a.yaml | 6 - ...num_ctrl_qubits_zero-eb102aa087f30250.yaml | 7 - ...lling-open-ctrl-gate-4a72116526afb1fd.yaml | 7 - ...feature-map-barriers-ab1a2d930a6b5af1.yaml | 6 - .../implement-set-phase-b5581ad6085b3cec.yaml | 10 -- ...ment-shift-frequency-46d4ea16d8be2f58.yaml | 10 -- ...moveResetInZeroState-942c0fb19cb6c087.yaml | 4 - ...e_length_remove_0.10-d13e5a15524e67c0.yaml | 5 - .../mpl-scaling-fix-823c3e3d3cb2d9d1.yaml | 20 --- .../op_tolerance_dep-d0d931f029e27a44.yaml | 18 --- .../parameter-conjugate-a16fd7ae0dc18ede.yaml | 7 - ...e-estimation-circuit-c22d71d88873aa77.yaml | 4 - .../qasm_remove_0.9-7150d53da8eebfd8.yaml | 5 - ...sphere-state-display-819cc1e3e61314a2.yaml | 13 -- ...adratic-form-circuit-f0ddb1694960cbc1.yaml | 9 -- .../quantum_volume_rng-2e6f46e3821aebeb.yaml | 5 - ...-compose-without-dag-b19e518a8f2fbeb0.yaml | 5 - ...els-to-plot-argument-388c6b33ed00b0d6.yaml | 7 - ...cuit-instruction-map-37fb34c3b5fe033c.yaml | 6 - ...eprecated-pulse-code-9ec2dba175058c5f.yaml | 15 -- ...cated-pulse-commands-18381c59264090dd.yaml | 23 --- ...emove-multi-acquires-747701103ddd816c.yaml | 13 -- .../remove-use_networkx-e1c846a9f8f2ff6a.yaml | 9 -- .../notes/sabre-2a3bba505e48ee82.yaml | 9 -- .../notes/sqrt-x-gates-3aba219f0efd8900.yaml | 7 - .../notes/to_gate_label-d825a2997a504604.yaml | 5 - ...tionpass_propertyset-3d1d9aedad9860be.yaml | 6 - ...fails_with_condition-9b4b4d66406548f0.yaml | 6 - .../u-and-phase-gate-e308fb4bb009014f.yaml | 9 -- .../updated_mpl_drawer-1498741fc64ac42a.yaml | 114 -------------- ...ero-param-pulse-ends-c3ad82eae66f9252.yaml | 5 - 131 files changed, 1062 insertions(+), 671 deletions(-) create mode 100644 releasenotes/notes/0.15/0.15.0-release-c7d85921f85f0b4d.yaml create mode 100644 releasenotes/notes/0.15/4500-barrier-counted-as-non-local-gate-6cb31d63a9052632.yaml create mode 100644 releasenotes/notes/0.15/4524-MCXVChain-gate-being-incorrectly-assembled-as-MCX-gate-df73b216e9777ecf.yaml create mode 100644 releasenotes/notes/0.15/4573-Open-ControlledGates-not-marked-equivalent-729bc971c897ede3.yaml create mode 100644 releasenotes/notes/0.15/Add-canonical-form-47e0466ed57640f3.yaml create mode 100644 releasenotes/notes/0.15/add-basistranslator-pass-d5e7de69ab9f20a1.yaml create mode 100644 releasenotes/notes/0.15/add-basistranslator-to-default-levels-1c0de250f8ca4a59.yaml create mode 100644 releasenotes/notes/0.15/add-counts-class-7c75bd94d12a161a.yaml rename releasenotes/notes/{ => 0.15}/add-dagcircuit-from-networkx-7815b9c575232b14.yaml (100%) rename releasenotes/notes/{ => 0.15}/add-deprecate-rho-state-viz-7bcd3f4112f32823.yaml (100%) create mode 100644 releasenotes/notes/0.15/add-init-qubits-option-ea1844f88fcddcf6.yaml create mode 100644 releasenotes/notes/0.15/add-rep-delay-c97d5aa8fc9696da.yaml create mode 100644 releasenotes/notes/0.15/add_quantumcircuit_phase-5006d1e930348d2e.yaml create mode 100644 releasenotes/notes/0.15/allowIntegerforQuantumRegisterSize-2e9a6cc033bc962e.yaml create mode 100644 releasenotes/notes/0.15/ancilla-qubit-cdf5fb28373b8553.yaml rename releasenotes/notes/{ => 0.15}/broadcasting-discriminators-and-kernels-5e0f7083054b01a2.yaml (100%) create mode 100644 releasenotes/notes/0.15/bugfix-set-frequency-29608d213a8cbece.yaml create mode 100644 releasenotes/notes/0.15/change-pulse_lib-to-library-f8e76ff3136128ec.yaml create mode 100644 releasenotes/notes/0.15/circuit-control-8734da01db4f92e5.yaml create mode 100644 releasenotes/notes/0.15/circuit-repeat-8db21ef8d8c21cda.yaml create mode 100644 releasenotes/notes/0.15/circuit-reverse-bits-ce1873a89b06e3df.yaml create mode 100644 releasenotes/notes/0.15/combine-into-edge-map-279441b53ed4e790.yaml rename releasenotes/notes/{ => 0.15}/configurable-backend-af0623b43bdcc35e.yaml (63%) create mode 100644 releasenotes/notes/0.15/converters-equivalence-library-registration-optional-266758d497d82ce3.yaml create mode 100644 releasenotes/notes/0.15/cregbundle-8c0ae7bd7875dd0f.yaml rename releasenotes/notes/{ => 0.15}/defective_qubits-d826ccbd049603b9.yaml (100%) create mode 100644 releasenotes/notes/0.15/deprecate-dag-qubits-method-0a61b37fa4a5bcd5.yaml create mode 100644 releasenotes/notes/0.15/deprecate-get_sample_pulse-b97028b14317996c.yaml create mode 100644 releasenotes/notes/0.15/deprecate-optional-condition-arg-7645c645c738e290.yaml create mode 100644 releasenotes/notes/0.15/disable-default-plot-table-330705e3118fac6a.yaml create mode 100644 releasenotes/notes/0.15/disallow_num_ctrl_qubits_zero-eb102aa087f30250.yaml rename releasenotes/notes/{ => 0.15}/equiv-lib-draw-8f3c4bd897a2fa6c.yaml (95%) create mode 100644 releasenotes/notes/0.15/fix-unrolling-open-ctrl-gate-4a72116526afb1fd.yaml create mode 100644 releasenotes/notes/0.15/fix-zz-feature-map-barriers-ab1a2d930a6b5af1.yaml create mode 100644 releasenotes/notes/0.15/implement-set-phase-b5581ad6085b3cec.yaml create mode 100644 releasenotes/notes/0.15/implement-shift-frequency-46d4ea16d8be2f58.yaml rename releasenotes/notes/{ => 0.15}/large_gate_bugfix-cbf0b6f1dcfbd5dd.yaml (100%) create mode 100644 releasenotes/notes/0.15/level0_RemoveResetInZeroState-942c0fb19cb6c087.yaml create mode 100644 releasenotes/notes/0.15/line_length_remove_0.10-d13e5a15524e67c0.yaml create mode 100644 releasenotes/notes/0.15/mpl-scaling-fix-823c3e3d3cb2d9d1.yaml create mode 100644 releasenotes/notes/0.15/op_tolerance_dep-d0d931f029e27a44.yaml create mode 100644 releasenotes/notes/0.15/parameter-conjugate-a16fd7ae0dc18ede.yaml create mode 100644 releasenotes/notes/0.15/phase-estimation-circuit-c22d71d88873aa77.yaml rename releasenotes/notes/{ => 0.15}/pylatexenc-matplotlib-428f285f4cfd2d7c.yaml (90%) create mode 100644 releasenotes/notes/0.15/qasm_remove_0.9-7150d53da8eebfd8.yaml create mode 100644 releasenotes/notes/0.15/qsphere-state-display-819cc1e3e61314a2.yaml create mode 100644 releasenotes/notes/0.15/quadratic-form-circuit-f0ddb1694960cbc1.yaml rename releasenotes/notes/{ => 0.15}/quantum_state_expval-18359552aab42343.yaml (100%) create mode 100644 releasenotes/notes/0.15/quantum_volume_rng-2e6f46e3821aebeb.yaml create mode 100644 releasenotes/notes/0.15/quantumcircuit-compose-without-dag-b19e518a8f2fbeb0.yaml create mode 100644 releasenotes/notes/0.15/remove-channels-to-plot-argument-388c6b33ed00b0d6.yaml create mode 100644 releasenotes/notes/0.15/remove-circuit-instruction-map-37fb34c3b5fe033c.yaml create mode 100644 releasenotes/notes/0.15/remove-deprecated-pulse-code-9ec2dba175058c5f.yaml create mode 100644 releasenotes/notes/0.15/remove-deprecated-pulse-commands-18381c59264090dd.yaml rename releasenotes/notes/{ => 0.15}/remove-deprecated-qi-b7d5a8ca00849b02.yaml (58%) rename releasenotes/notes/{ => 0.15}/remove-iplot-150c97e5a4d399e4.yaml (93%) rename releasenotes/notes/{ => 0.15}/remove-marshmallow-validation-283fa62b3acc51e4.yaml (88%) create mode 100644 releasenotes/notes/0.15/remove-multi-acquires-747701103ddd816c.yaml create mode 100644 releasenotes/notes/0.15/remove-use_networkx-e1c846a9f8f2ff6a.yaml rename releasenotes/notes/{ => 0.15}/rename-rescheduler-d4210a234714ed5d.yaml (75%) rename releasenotes/notes/{ => 0.15}/rename-samplepulse-to-waveform-add2c0482623f752.yaml (73%) create mode 100644 releasenotes/notes/0.15/sabre-2a3bba505e48ee82.yaml rename releasenotes/notes/{ => 0.15}/schedule-replace-2c5634a6133db237.yaml (72%) create mode 100644 releasenotes/notes/0.15/sqrt-x-gates-3aba219f0efd8900.yaml rename releasenotes/notes/{ => 0.15}/statevector-reset-3c819d1e2d598cc4.yaml (63%) rename releasenotes/notes/{ => 0.15}/support-substituting-parameterexpression-5f140ba243ba126a.yaml (65%) create mode 100644 releasenotes/notes/0.15/to_gate_label-d825a2997a504604.yaml create mode 100644 releasenotes/notes/0.15/transformationpass_propertyset-3d1d9aedad9860be.yaml create mode 100644 releasenotes/notes/0.15/transpiler_fails_with_condition-9b4b4d66406548f0.yaml create mode 100644 releasenotes/notes/0.15/u-and-phase-gate-e308fb4bb009014f.yaml create mode 100644 releasenotes/notes/0.15/updated_mpl_drawer-1498741fc64ac42a.yaml create mode 100644 releasenotes/notes/0.15/zero-param-pulse-ends-c3ad82eae66f9252.yaml delete mode 100644 releasenotes/notes/4500-barrier-counted-as-non-local-gate-6cb31d63a9052632.yaml delete mode 100644 releasenotes/notes/4524-MCXVChain-gate-being-incorrectly-assembled-as-MCX-gate-df73b216e9777ecf.yaml delete mode 100644 releasenotes/notes/4573-Open-ControlledGates-not-marked-equivalent-729bc971c897ede3.yaml delete mode 100644 releasenotes/notes/Add-canonical-form-47e0466ed57640f3.yaml delete mode 100644 releasenotes/notes/add-basistranslator-pass-d5e7de69ab9f20a1.yaml delete mode 100644 releasenotes/notes/add-basistranslator-to-default-levels-1c0de250f8ca4a59.yaml delete mode 100644 releasenotes/notes/add-counts-class-7c75bd94d12a161a.yaml delete mode 100644 releasenotes/notes/add-init-qubits-option-ea1844f88fcddcf6.yaml delete mode 100644 releasenotes/notes/add-rep-delay-c97d5aa8fc9696da.yaml delete mode 100644 releasenotes/notes/add_quantumcircuit_phase-5006d1e930348d2e.yaml delete mode 100644 releasenotes/notes/allowIntegerforQuantumRegisterSize-2e9a6cc033bc962e.yaml delete mode 100644 releasenotes/notes/ancilla-qubit-cdf5fb28373b8553.yaml delete mode 100644 releasenotes/notes/basis-translate-by-synthesis-7bdfa76cdb1eee91.yaml delete mode 100644 releasenotes/notes/bugfix-set-frequency-29608d213a8cbece.yaml delete mode 100644 releasenotes/notes/change-pulse_lib-to-library-f8e76ff3136128ec.yaml delete mode 100644 releasenotes/notes/circuit-control-8734da01db4f92e5.yaml delete mode 100644 releasenotes/notes/circuit-repeat-8db21ef8d8c21cda.yaml delete mode 100644 releasenotes/notes/circuit-reverse-bits-ce1873a89b06e3df.yaml delete mode 100644 releasenotes/notes/combine-into-edge-map-279441b53ed4e790.yaml delete mode 100644 releasenotes/notes/converters-equivalence-library-registration-optional-266758d497d82ce3.yaml delete mode 100644 releasenotes/notes/cregbundle-8c0ae7bd7875dd0f.yaml delete mode 100644 releasenotes/notes/deprecate-dag-qubits-method-0a61b37fa4a5bcd5.yaml delete mode 100644 releasenotes/notes/deprecate-get_sample_pulse-b97028b14317996c.yaml delete mode 100644 releasenotes/notes/deprecate-optional-condition-arg-7645c645c738e290.yaml delete mode 100644 releasenotes/notes/disable-default-plot-table-330705e3118fac6a.yaml delete mode 100644 releasenotes/notes/disallow_num_ctrl_qubits_zero-eb102aa087f30250.yaml delete mode 100644 releasenotes/notes/fix-unrolling-open-ctrl-gate-4a72116526afb1fd.yaml delete mode 100644 releasenotes/notes/fix-zz-feature-map-barriers-ab1a2d930a6b5af1.yaml delete mode 100644 releasenotes/notes/implement-set-phase-b5581ad6085b3cec.yaml delete mode 100644 releasenotes/notes/implement-shift-frequency-46d4ea16d8be2f58.yaml delete mode 100644 releasenotes/notes/level0_RemoveResetInZeroState-942c0fb19cb6c087.yaml delete mode 100644 releasenotes/notes/line_length_remove_0.10-d13e5a15524e67c0.yaml delete mode 100644 releasenotes/notes/mpl-scaling-fix-823c3e3d3cb2d9d1.yaml delete mode 100644 releasenotes/notes/op_tolerance_dep-d0d931f029e27a44.yaml delete mode 100644 releasenotes/notes/parameter-conjugate-a16fd7ae0dc18ede.yaml delete mode 100644 releasenotes/notes/phase-estimation-circuit-c22d71d88873aa77.yaml delete mode 100644 releasenotes/notes/qasm_remove_0.9-7150d53da8eebfd8.yaml delete mode 100644 releasenotes/notes/qsphere-state-display-819cc1e3e61314a2.yaml delete mode 100644 releasenotes/notes/quadratic-form-circuit-f0ddb1694960cbc1.yaml delete mode 100644 releasenotes/notes/quantum_volume_rng-2e6f46e3821aebeb.yaml delete mode 100644 releasenotes/notes/quantumcircuit-compose-without-dag-b19e518a8f2fbeb0.yaml delete mode 100644 releasenotes/notes/remove-channels-to-plot-argument-388c6b33ed00b0d6.yaml delete mode 100644 releasenotes/notes/remove-circuit-instruction-map-37fb34c3b5fe033c.yaml delete mode 100644 releasenotes/notes/remove-deprecated-pulse-code-9ec2dba175058c5f.yaml delete mode 100644 releasenotes/notes/remove-deprecated-pulse-commands-18381c59264090dd.yaml delete mode 100644 releasenotes/notes/remove-multi-acquires-747701103ddd816c.yaml delete mode 100644 releasenotes/notes/remove-use_networkx-e1c846a9f8f2ff6a.yaml delete mode 100644 releasenotes/notes/sabre-2a3bba505e48ee82.yaml delete mode 100644 releasenotes/notes/sqrt-x-gates-3aba219f0efd8900.yaml delete mode 100644 releasenotes/notes/to_gate_label-d825a2997a504604.yaml delete mode 100644 releasenotes/notes/transformationpass_propertyset-3d1d9aedad9860be.yaml delete mode 100644 releasenotes/notes/transpiler_fails_with_condition-9b4b4d66406548f0.yaml delete mode 100644 releasenotes/notes/u-and-phase-gate-e308fb4bb009014f.yaml delete mode 100644 releasenotes/notes/updated_mpl_drawer-1498741fc64ac42a.yaml delete mode 100644 releasenotes/notes/zero-param-pulse-ends-c3ad82eae66f9252.yaml diff --git a/qiskit/circuit/__init__.py b/qiskit/circuit/__init__.py index da5def5f8e7c..45775044d8db 100644 --- a/qiskit/circuit/__init__.py +++ b/qiskit/circuit/__init__.py @@ -180,6 +180,8 @@ Qubit ClassicalRegister Clbit + AncillaRegister + AncillaQubit Gates and Instructions ---------------------- diff --git a/qiskit/circuit/library/__init__.py b/qiskit/circuit/library/__init__.py index 9e847c73c1ec..d038525baec7 100644 --- a/qiskit/circuit/library/__init__.py +++ b/qiskit/circuit/library/__init__.py @@ -46,6 +46,10 @@ HGate IGate MCPhaseGate + MCXGate + MCXGrayCode + MCXRecursive + MCXVChain Measure MSGate PhaseGate diff --git a/qiskit/dagcircuit/dagdependency.py b/qiskit/dagcircuit/dagdependency.py index 3c9c0931e955..273a96543a30 100644 --- a/qiskit/dagcircuit/dagdependency.py +++ b/qiskit/dagcircuit/dagdependency.py @@ -446,7 +446,7 @@ def draw(self, scale=0.7, filename=None, style='color'): """ from qiskit.visualization.dag_visualization import dag_drawer return dag_drawer(dag=self, scale=scale, filename=filename, - style=style, category='dependency') + style=style) def merge_no_duplicates(*iterables): diff --git a/qiskit/visualization/dag_visualization.py b/qiskit/visualization/dag_visualization.py index f1ecb0e38282..099bbb8c345c 100644 --- a/qiskit/visualization/dag_visualization.py +++ b/qiskit/visualization/dag_visualization.py @@ -33,7 +33,7 @@ HAS_PIL = False -def dag_drawer(dag, scale=0.7, filename=None, style='color', category=None): +def dag_drawer(dag, scale=0.7, filename=None, style='color'): """Plot the directed acyclic graph (dag) to represent operation dependencies in a quantum circuit. @@ -52,7 +52,6 @@ def dag_drawer(dag, scale=0.7, filename=None, style='color', category=None): filename (str): file path to save image to (format inferred from name) style (str): 'plain': B&W graph 'color' (default): color input/output/op nodes - category (str): 'dependency' for drawing DAG dependency Returns: PIL.Image: if in Jupyter notebook and not saving to file, @@ -87,7 +86,11 @@ def dag_drawer(dag, scale=0.7, filename=None, style='color', category=None): except ImportError: raise ImportError("dag_drawer requires pydot. " "Run 'pip install pydot'.") - if category is None: + # NOTE: use type str checking to avoid potential cyclical import + # the two tradeoffs ere that it will not handle subclasses and it is + # slower (which doesn't matter for a visualization function) + type_str = str(type(dag)) + if 'dagcircuit.DAGDependency' in type_str: G = dag.to_networkx() G.graph['dpi'] = 100 * scale @@ -96,25 +99,28 @@ def dag_drawer(dag, scale=0.7, filename=None, style='color', category=None): elif style == 'color': for node in G.nodes: n = G.nodes[node] - n['label'] = node.name - if node.type == 'op': + n['label'] = str(node.node_id) + ': ' + node.name + if node.name == 'measure': n['color'] = 'blue' n['style'] = 'filled' n['fillcolor'] = 'lightblue' - if node.type == 'in': + if node.name == 'barrier': n['color'] = 'black' n['style'] = 'filled' n['fillcolor'] = 'green' - if node.type == 'out': + if node.name == 'snapshot': n['color'] = 'black' n['style'] = 'filled' n['fillcolor'] = 'red' - for e in G.edges(data=True): - e[2]['label'] = e[2]['name'] + if node.condition: + n['label'] = str(node.node_id) + ': ' + node.name + ' (conditional)' + n['color'] = 'black' + n['style'] = 'filled' + n['fillcolor'] = 'lightgreen' else: raise VisualizationError("Unrecognized style for the dag_drawer.") - elif category == 'dependency': + else: G = dag.to_networkx() G.graph['dpi'] = 100 * scale @@ -123,28 +129,23 @@ def dag_drawer(dag, scale=0.7, filename=None, style='color', category=None): elif style == 'color': for node in G.nodes: n = G.nodes[node] - n['label'] = str(node.node_id) + ': ' + node.name - if node.name == 'measure': + n['label'] = node.name + if node.type == 'op': n['color'] = 'blue' n['style'] = 'filled' n['fillcolor'] = 'lightblue' - if node.name == 'barrier': + if node.type == 'in': n['color'] = 'black' n['style'] = 'filled' n['fillcolor'] = 'green' - if node.name == 'snapshot': + if node.type == 'out': n['color'] = 'black' n['style'] = 'filled' n['fillcolor'] = 'red' - if node.condition: - n['label'] = str(node.node_id) + ': ' + node.name + ' (conditional)' - n['color'] = 'black' - n['style'] = 'filled' - n['fillcolor'] = 'lightgreen' + for e in G.edges(data=True): + e[2]['label'] = e[2]['name'] else: raise VisualizationError("Unrecognized style for the dag_drawer.") - else: - raise VisualizationError("Unrecognized category of DAG") dot = to_pydot(G) diff --git a/releasenotes/notes/0.15/0.15.0-release-c7d85921f85f0b4d.yaml b/releasenotes/notes/0.15/0.15.0-release-c7d85921f85f0b4d.yaml new file mode 100644 index 000000000000..e90012b3b0f4 --- /dev/null +++ b/releasenotes/notes/0.15/0.15.0-release-c7d85921f85f0b4d.yaml @@ -0,0 +1,14 @@ +--- +prelude: | + The 0.15.0 release includes several new features and bug fixes. Some + highlights for this release are: + + This release includes the introduction of arbitrary + basis translation to the transpiler. This includes support for directly + targeting a broader range of device basis sets, e.g. backends + implementing RZ, RY, RZ, CZ or iSwap gates. + + The :class:`~qiskit.circuits.QuantumCircuit` class now tracks global + phase. This means controlling a circuit which has global phase now + correctly adds a relative phase, and gate matrix definitions are now + exact rather than equal up to a global phase. diff --git a/releasenotes/notes/0.15/4500-barrier-counted-as-non-local-gate-6cb31d63a9052632.yaml b/releasenotes/notes/0.15/4500-barrier-counted-as-non-local-gate-6cb31d63a9052632.yaml new file mode 100644 index 000000000000..108a07fe36cd --- /dev/null +++ b/releasenotes/notes/0.15/4500-barrier-counted-as-non-local-gate-6cb31d63a9052632.yaml @@ -0,0 +1,10 @@ +--- +fixes: + - | + The :class:`qiskit.circuit.QuantumCircuit` method + :attr:`~qiskit.circuit.QuantumCircuit.num_nonlocal_gates` previously + included multi-qubit :class:`qiskit.circuit.Instruction` objects + (for example, :class:`~qiskit.circuit.library.Barrier`) in its count of + non-local gates. This has been corrected so that only non-local + :class:`~qiskit.circuit.Gate` objects are counted. + Fixes `#4500 `__ diff --git a/releasenotes/notes/0.15/4524-MCXVChain-gate-being-incorrectly-assembled-as-MCX-gate-df73b216e9777ecf.yaml b/releasenotes/notes/0.15/4524-MCXVChain-gate-being-incorrectly-assembled-as-MCX-gate-df73b216e9777ecf.yaml new file mode 100644 index 000000000000..cf990c9c80f8 --- /dev/null +++ b/releasenotes/notes/0.15/4524-MCXVChain-gate-being-incorrectly-assembled-as-MCX-gate-df73b216e9777ecf.yaml @@ -0,0 +1,12 @@ +--- +upgrade: + - | + Implementations of the multi-controlled X Gate ( + :class:`~qiskit.circuit.library.MCXGrayCode`, + :class:`~qiskit.circuit.library.MCXRecursive`, and + :class:`~qiskit.circuit.library.MCXVChain`) have had their ``name`` + properties changed to more accurately describe their + implementation: ``mcx_gray``, ``mcx_recursive``, and + ``mcx_vchain`` respectively. Previously, these gates shared the + name ``mcx`` with :class:`~qiskit.circuit.library.MCXGate`, which caused + these gates to be incorrectly transpiled and simulated. diff --git a/releasenotes/notes/0.15/4573-Open-ControlledGates-not-marked-equivalent-729bc971c897ede3.yaml b/releasenotes/notes/0.15/4573-Open-ControlledGates-not-marked-equivalent-729bc971c897ede3.yaml new file mode 100644 index 000000000000..bde09b96693b --- /dev/null +++ b/releasenotes/notes/0.15/4573-Open-ControlledGates-not-marked-equivalent-729bc971c897ede3.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + :class:`~qiskit.circuit.ControlledGate` instances with a set + ``ctrl_state`` were in some cases not being evaluated as equal, even if the + compared gates were equivalent. This has been resolved so that + Fixes `#4573 `__ diff --git a/releasenotes/notes/0.15/Add-canonical-form-47e0466ed57640f3.yaml b/releasenotes/notes/0.15/Add-canonical-form-47e0466ed57640f3.yaml new file mode 100644 index 000000000000..2cdc1bcc3ff2 --- /dev/null +++ b/releasenotes/notes/0.15/Add-canonical-form-47e0466ed57640f3.yaml @@ -0,0 +1,35 @@ +--- +features: + - | + A new DAG class :class:`qiskit.dagcircuit.DAGDependency` for representing + the dependency form of circuit, In this DAG, the nodes are + operations (gates, measure, barrier, etc...) and the edges corresponds to + non-commutation between two operations. + - | + Four new functions are added to :mod:`qiskit.converters` for converting back and + forth to :class:`~qiskit.dagcircuit.DAGDependency`. These functions are: + + * :func:`~qiskit.converters.circuit_to_dagdependency` to convert + from a :class:`~qiskit.circuit.QuantumCircuit` object to a + :class:`~qiskit.dagcircuit.DAGDependency` object. + * :func:`~qiskit.converters.dagdependency_to_circuit` to convert from a + :class:`~qiskit.dagcircuit.DAGDependency` object to a + :class:`~qiskit.circuit.QuantumCircuit` object. + * :func:`~qiskit.converters.dag_to_dagdependency` to convert from + a :class:`~qiskit.dagcircuit.DAGCircuit` object to a + :class:`~qiskit.dagcircuit.DAGDependency` object. + * :func:`~qiskit.converters.dagdependency_to_ciruit` to convert from + a :class:`~qiskit.dagcircuit.DAGDependency` object to a + :class:`~qiskit.dagcircuit.DAGCircuit` object. + + For example:: + + from qiskit.converters.dagdependency_to_circuit import dagdependency_to_circuit + from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit + + circuit_in = QuantumCircuit(2) + circuit_in.h(qr[0]) + circuit_in.h(qr[1]) + + dag_dependency = circuit_to_dagdependency(circuit_in) + circuit_out = dagdepency_to_circuit(dag_dependency) diff --git a/releasenotes/notes/0.15/add-basistranslator-pass-d5e7de69ab9f20a1.yaml b/releasenotes/notes/0.15/add-basistranslator-pass-d5e7de69ab9f20a1.yaml new file mode 100644 index 000000000000..bde593831984 --- /dev/null +++ b/releasenotes/notes/0.15/add-basistranslator-pass-d5e7de69ab9f20a1.yaml @@ -0,0 +1,13 @@ +--- +features: + - | + Two new transpiler passes have been added to :mod:`qiskit.transpiler.passes` + The first, :class:`~qiskit.transpiler.passes.UnrollCustomDefinitions`, + unrolls all instructions in the + circuit according to their :attr:`~qiskit.circuit.Instruction.definition` + property, stopping when reaching either the specified ``basis_gates`` + or a set of gates in the provided + :class:`~qiskit.circuit.EquivalenceLibrary`. The second, + :class:`~qiskit.transpiler.passes.BasisTranslator`, uses the set of + translations in the provided :class:`~qiskit.circuit.EquivalenceLibrary` to + re-write circuit instructions in a specified basis. diff --git a/releasenotes/notes/0.15/add-basistranslator-to-default-levels-1c0de250f8ca4a59.yaml b/releasenotes/notes/0.15/add-basistranslator-to-default-levels-1c0de250f8ca4a59.yaml new file mode 100644 index 000000000000..d0268a77c167 --- /dev/null +++ b/releasenotes/notes/0.15/add-basistranslator-to-default-levels-1c0de250f8ca4a59.yaml @@ -0,0 +1,28 @@ +--- +features: + - | + A new ``translation_method`` keyword argument has been added to + :func:`~qiskit.compiler.transpile` to allow selection of the method to be + used for translating circuits to the available device gates. For example, + ``transpile(circ, backend, translation_method='translator')``. Valid + choices are: + + * ``'unroller'``: to use the :class:`~qiskit.transpiler.passes.Unroller` + pass + * ``'translator'``: to use the + :class:`~qiskit.transpiler.passes.BasisTranslator` pass. + * ``'synthesis'``: to use the + :class:`~qiskit.transpiler.passes.UnitarySynthesis` pass. + + The default value is ``'translator'``. +upgrade: + - | + By default the preset passmanagers in + :mod:`qiskit.transpiler.preset_passmanagers` are using + :class:`~qiskit.transpiler.passes.UnrollCustomDefinitions` and + :class:`~qiskit.transpiler.passes.BasisTranslator` to handle basis changing + instead of the previous default :class:`~qiskit.transpiler.passes.Unroller`. + This was done because the new passes are more flexible and allow targeting + any basis set, however the output may differ. To use the previous default + you can set the ``translation_method`` kwarg on + :func:`~qiskit.compiler.transpile` to ``'unroller'``. diff --git a/releasenotes/notes/0.15/add-counts-class-7c75bd94d12a161a.yaml b/releasenotes/notes/0.15/add-counts-class-7c75bd94d12a161a.yaml new file mode 100644 index 000000000000..39be04210224 --- /dev/null +++ b/releasenotes/notes/0.15/add-counts-class-7c75bd94d12a161a.yaml @@ -0,0 +1,17 @@ +--- +features: + - | + A new class for handling counts result data, :class:`qiskit.result.Counts`, + has been added. This class is a subclass of ``dict`` and can be interacted + with like any other dictionary. But, it includes helper methods and + attributes for dealing with counts results from experiments and also + handles post processing and formatting of binary strings at object + initialization. A :class:`~qiskit.result.Counts` object can be created by + passing a dictionary of counts with the keys being either integers, + hexadecimal strings of the form ``'0x4a'``, binary strings of the form + ``'0b1101'``, a bit string formatted across register and memory slots + (ie ``'00 10'``), or a dit string. For example:: + + from qiskit.result import Counts + + counts = Counts({"0x0': 1, '0x1', 3, '0x2': 1020}) diff --git a/releasenotes/notes/add-dagcircuit-from-networkx-7815b9c575232b14.yaml b/releasenotes/notes/0.15/add-dagcircuit-from-networkx-7815b9c575232b14.yaml similarity index 100% rename from releasenotes/notes/add-dagcircuit-from-networkx-7815b9c575232b14.yaml rename to releasenotes/notes/0.15/add-dagcircuit-from-networkx-7815b9c575232b14.yaml diff --git a/releasenotes/notes/add-deprecate-rho-state-viz-7bcd3f4112f32823.yaml b/releasenotes/notes/0.15/add-deprecate-rho-state-viz-7bcd3f4112f32823.yaml similarity index 100% rename from releasenotes/notes/add-deprecate-rho-state-viz-7bcd3f4112f32823.yaml rename to releasenotes/notes/0.15/add-deprecate-rho-state-viz-7bcd3f4112f32823.yaml diff --git a/releasenotes/notes/0.15/add-init-qubits-option-ea1844f88fcddcf6.yaml b/releasenotes/notes/0.15/add-init-qubits-option-ea1844f88fcddcf6.yaml new file mode 100644 index 000000000000..fcc6e4f515af --- /dev/null +++ b/releasenotes/notes/0.15/add-init-qubits-option-ea1844f88fcddcf6.yaml @@ -0,0 +1,13 @@ +--- +features: + - | + A new kwarg for ``init_qubits`` has been added to + :func:`~qiskit.compiler.assemble` and :func:`~qiskit.execute.execute`. + For backends that support this feature ``init_qubits`` can be used to + control whether the backend executing the circuits inserts any + initialization sequences at the start of each shot. By default this is set + to ``True`` meaning that all qubits can assumed to be in the ground state + at the start of each shot. However, when ``init_qubits`` is set to + ``False`` qubits will be uninitialized at the start of each + experiment and between shots. Note, that the backend running the circuits + has to support this feature for this flag to have any effect. diff --git a/releasenotes/notes/0.15/add-rep-delay-c97d5aa8fc9696da.yaml b/releasenotes/notes/0.15/add-rep-delay-c97d5aa8fc9696da.yaml new file mode 100644 index 000000000000..bdb03c0e6f28 --- /dev/null +++ b/releasenotes/notes/0.15/add-rep-delay-c97d5aa8fc9696da.yaml @@ -0,0 +1,31 @@ +--- +features: + - | + A new kwarg ``rep_delay`` has been added to + :func:`qiskit.compiler.assemble`, :func:`qiskit.execute.execute`, and the + constructor for :class:`~qiskit.qobj.PulseQobjtConfig`.qiskit + This new kwarg is used to denotes the time between program executions. It + must be chosen from the list of valid values set as the + ``rep_delays`` from a backend's + :class:`~qiskit.providers.models.PulseBackendConfiguration` object which + can be accessed as ``backend.configuration().rep_delays``). + + The ``rep_delay`` kwarg will only work on backends which allow for dynamic + repetition time. This will also be indicated in the + :class:`~qiskit.providers.models.PulseBackendConfiguration` object for a + backend as the ``dynamic_reprate_enabled`` attribute. If + ``dynamic_reprate_enabled`` is ``False`` then the ``rep_time`` value + specified for :func:`qiskit.compiler.assemble`, + :func:`qiskit.execute.execute`, or the constructor for + :class:`~qiskit.qobj.PulseQobjtConfig` will be used rather than + ``rep_delay``. ``rep_time`` only allows users to specify the duration of a + program, rather than the delay between programs. + - | + The ``qobj_schema.json`` JSON Schema file in :mod:`qiskit.schemas` has + been updated to include the ``rep_delay`` as an optional configuration + property for pulse qobjs. + - | + The ``backend_configuration_schema.json`` JSON Schema file in + mod:`qiskit.schemas` has been updated to include ``rep_delay_range`` and + ``default_rep_delay`` as optional properties for a pulse backend + configuration. diff --git a/releasenotes/notes/0.15/add_quantumcircuit_phase-5006d1e930348d2e.yaml b/releasenotes/notes/0.15/add_quantumcircuit_phase-5006d1e930348d2e.yaml new file mode 100644 index 000000000000..a453eb41bc83 --- /dev/null +++ b/releasenotes/notes/0.15/add_quantumcircuit_phase-5006d1e930348d2e.yaml @@ -0,0 +1,32 @@ +features: + - | + A new attribute, :attr:`~qiskit.circuit.QuantumCircuit.global_phase`, + which is is used for tracking the global phase has been added to the + :class:`qiskit.circuit.QuantumCircuit` class. For example:: + + import math + + from qiskit import QuantumCircuit + + circ = QuantumCircuit(1, global_phase=math.pi) + circ.u1(0) + + The global phase may also be changed or queried with + ``circ.global_phase`` in the above example. In either case the setting is + in radians. If the circuit is converted to an instruction or gate the + global phase is represented by two single qubit rotations on the first + qubit. + + This allows for other methods and functions which consume a + :class:`~qiskit.circuit.QuantumCircuit` object to take global phase into + account. For example. with the + :attr:`~qiskit.circuit.QuantumCircuit.global_phase` + attribute the :meth:`~qiskit.circuit.Gate.to_matrix` method for a gate + can now exactly correspond to its decompositions instead of + just up to a global phase. + + The same attribute has also been added to the + :class:`~qiskit.dagcircuit.DAGCircuit` class so that global phase + can be tracked when converting between + :class:`~qiskit.circuit.QuantumCircuit` and + :class:`~qiskit.dagcircuit.DAGCircuit`. diff --git a/releasenotes/notes/0.15/allowIntegerforQuantumRegisterSize-2e9a6cc033bc962e.yaml b/releasenotes/notes/0.15/allowIntegerforQuantumRegisterSize-2e9a6cc033bc962e.yaml new file mode 100644 index 000000000000..384e6bda6963 --- /dev/null +++ b/releasenotes/notes/0.15/allowIntegerforQuantumRegisterSize-2e9a6cc033bc962e.yaml @@ -0,0 +1,12 @@ +--- +fixes: + - | + When accessing a bit from a + :class:`qiskit.circuit.QuantumRegister` or + :class:`qiskit.circuit.ClassicalRegister` by index when using numpy + `integer types` `__ + would previously raise a ``CircuitError`` exception. This has been + resolved so numpy types can be used in addition to Python's built-in + ``int`` type. + Fixes `#3929 `__. + diff --git a/releasenotes/notes/0.15/ancilla-qubit-cdf5fb28373b8553.yaml b/releasenotes/notes/0.15/ancilla-qubit-cdf5fb28373b8553.yaml new file mode 100644 index 000000000000..4ed367461065 --- /dev/null +++ b/releasenotes/notes/0.15/ancilla-qubit-cdf5fb28373b8553.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + Two new classes, :class:`~qiskit.circuit.AncillaRegister` and + :class:`~qiskit.circuit.AncillaQubit` have been added to the + :mod:`qiskit.circuit` module. These are subclasses of + :class:`~qiskit.circuit.QuantumRegister` and :class:`~qiskit.circuit.Qubit` + respectively and enable marking qubits being ancillas. This will allow + these qubits to be re-used in larger circuits and algorithms. diff --git a/releasenotes/notes/broadcasting-discriminators-and-kernels-5e0f7083054b01a2.yaml b/releasenotes/notes/0.15/broadcasting-discriminators-and-kernels-5e0f7083054b01a2.yaml similarity index 100% rename from releasenotes/notes/broadcasting-discriminators-and-kernels-5e0f7083054b01a2.yaml rename to releasenotes/notes/0.15/broadcasting-discriminators-and-kernels-5e0f7083054b01a2.yaml diff --git a/releasenotes/notes/0.15/bugfix-set-frequency-29608d213a8cbece.yaml b/releasenotes/notes/0.15/bugfix-set-frequency-29608d213a8cbece.yaml new file mode 100644 index 000000000000..e9f32f70df21 --- /dev/null +++ b/releasenotes/notes/0.15/bugfix-set-frequency-29608d213a8cbece.yaml @@ -0,0 +1,8 @@ +--- +fixes: + - | + The SI unit use for constructing :py:class:`qiskit.pulse.SetFrequency` + objects is in Hz, but when a :class:`~qiskit.qobj.PulseQobjInstruction` + object is created from a :py:class:`~qiskit.pulse.SetFrequency` instance + it needs to be converted to GHz. This conversion was missing from previous + releases and has been fixed. diff --git a/releasenotes/notes/0.15/change-pulse_lib-to-library-f8e76ff3136128ec.yaml b/releasenotes/notes/0.15/change-pulse_lib-to-library-f8e76ff3136128ec.yaml new file mode 100644 index 000000000000..5a52f8507c31 --- /dev/null +++ b/releasenotes/notes/0.15/change-pulse_lib-to-library-f8e76ff3136128ec.yaml @@ -0,0 +1,6 @@ +--- +deprecations: + - | + The ``qiskit.pulse.pulse_lib`` module has been deprecated and will be + removed in a future release. It has been renamed to + :py:mod:`qiskit.pulse.library` which should be used instead. diff --git a/releasenotes/notes/0.15/circuit-control-8734da01db4f92e5.yaml b/releasenotes/notes/0.15/circuit-control-8734da01db4f92e5.yaml new file mode 100644 index 000000000000..3b519ae11333 --- /dev/null +++ b/releasenotes/notes/0.15/circuit-control-8734da01db4f92e5.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + A new method, :meth:`~qiskit.circuit.QuantumCircuit.control`, has been + added to the :class:`~qiskit.circuit.QuantumCircuit`. This method will + return a controlled version of the :class:`~qiskit.circuit.QuantumCircuit` + object, with both open and closed controls. This functionality had + previously only been accessible via the :class:`~qiskit.circuit.Gate` + class. diff --git a/releasenotes/notes/0.15/circuit-repeat-8db21ef8d8c21cda.yaml b/releasenotes/notes/0.15/circuit-repeat-8db21ef8d8c21cda.yaml new file mode 100644 index 000000000000..f6d687f45d7e --- /dev/null +++ b/releasenotes/notes/0.15/circuit-repeat-8db21ef8d8c21cda.yaml @@ -0,0 +1,21 @@ +--- +features: + - | + A new method :meth:`~qiskit.circuit.QuantumCircuit.repeat` has been added + to the :class:`~qiskit.circuit.QuantumCircuit` class. It returns a new + circuit object containing a specified number of repetitions of the original + circuit. For example: + + .. jupyter-execute:: + + from qiskit.circuit import QuantumCircuit + + qc = QuantumCircuit(2) + qc.h(0) + qc.cx(0, 1) + repeated_qc = qc.repeat(3) + repeated_qc.decompose().draw(output='mpl') + + The parameters are copied by reference, meaning that if you update + the parameters in one instance of the circuit all repetitions will be + updated. diff --git a/releasenotes/notes/0.15/circuit-reverse-bits-ce1873a89b06e3df.yaml b/releasenotes/notes/0.15/circuit-reverse-bits-ce1873a89b06e3df.yaml new file mode 100644 index 000000000000..6aee8e6e8351 --- /dev/null +++ b/releasenotes/notes/0.15/circuit-reverse-bits-ce1873a89b06e3df.yaml @@ -0,0 +1,17 @@ +--- +features: + - | + A new method :meth:`~qiskit.circuit.QuantumCircuit.reverse_bits` has been + added to the :class:`~qiskit.circuit.QuantumCircuit` class. This method + will reverse the order of bits in a circuit (both quantum and classical + bits). This can be used to switch a circuit from little-endian to big-endian + and vice-versa. +deprecations: + - | + The :class:`qiskit.circuit.QuantumCircuit` method + :meth:`~qiskit.circuit.QuantumCircuit.mirror` has been deprecated and will + be removed in a future release. The method + :meth:`qiskit.circuit.QuantumCircuit.reverse_ops` should be used instead, + since mirroring could be confused with swapping the output qubits of the + circuit. The :meth:`~qiskit.circuit.QuantumCircuit.reverse_ops` method + only reverses the order of gates that are applied instead of mirroring. diff --git a/releasenotes/notes/0.15/combine-into-edge-map-279441b53ed4e790.yaml b/releasenotes/notes/0.15/combine-into-edge-map-279441b53ed4e790.yaml new file mode 100644 index 000000000000..a72f67c56751 --- /dev/null +++ b/releasenotes/notes/0.15/combine-into-edge-map-279441b53ed4e790.yaml @@ -0,0 +1,7 @@ +--- +features: + - | + A new method, :meth:`~qiskit.transpiler.Layout.combine_into_edge_map()`, + was added to the :class:`qiskit.transpiler.Layout` class. This method + enables converting converting two :class:`~qiskit.transpiler.Layout` objects + into a qubit map for composing two circuits. diff --git a/releasenotes/notes/configurable-backend-af0623b43bdcc35e.yaml b/releasenotes/notes/0.15/configurable-backend-af0623b43bdcc35e.yaml similarity index 63% rename from releasenotes/notes/configurable-backend-af0623b43bdcc35e.yaml rename to releasenotes/notes/0.15/configurable-backend-af0623b43bdcc35e.yaml index 2129dfe641e3..d07b0a517f68 100644 --- a/releasenotes/notes/configurable-backend-af0623b43bdcc35e.yaml +++ b/releasenotes/notes/0.15/configurable-backend-af0623b43bdcc35e.yaml @@ -1,9 +1,10 @@ --- features: - | - A new class :py:class:`~qiskit.test.mock.utils.ConfigurableFakeBackend` has - been added which allows users to create configurable mock backends. - Example:: + A new class, :class:`~qiskit.test.mock.utils.ConfigurableFakeBackend`, has + been added to the :mod:`qiskit.test.mock.utils` module. This new class + enables the creation of configurable mock backends for use in testing. + For example:: from qiskit.test.mock.utils import ConfigurableFakeBackend @@ -16,3 +17,6 @@ features: qubit_frequency=5., qubit_readout_error=0.01, single_qubit_gates=['u1']) + + will create a backend object with 100 qubits and all the other parameters + specified in the constructor. diff --git a/releasenotes/notes/0.15/converters-equivalence-library-registration-optional-266758d497d82ce3.yaml b/releasenotes/notes/0.15/converters-equivalence-library-registration-optional-266758d497d82ce3.yaml new file mode 100644 index 000000000000..7be0d0376a5c --- /dev/null +++ b/releasenotes/notes/0.15/converters-equivalence-library-registration-optional-266758d497d82ce3.yaml @@ -0,0 +1,18 @@ +--- +feature: + - | + A new kwarg ``equivalence_library`` has been added to the + :func:`qiskit.converters.circuit_to_gate` and + :func`qiskit.converters.circuit_to_instruction` converter functions + This new keyword argument is used to specify an + :class:`~qiskit.circuit.EquivalenceLibrary` object to register the + converted gate with. +upgrade: + - | + The :func:`qiskit.converters.circuit_to_gate` and + :func`qiskit.converters.circuit_to_instruction` converter functions + had previously automatically included the generated gate or instruction + in the active ``SessionEquivalenceLibrary``. These converters now accept + an optional ``equivalence_library`` keyword argument to specify if and + where the converted instances should be registered. The default behavior + has changed to not register the converted instance. diff --git a/releasenotes/notes/0.15/cregbundle-8c0ae7bd7875dd0f.yaml b/releasenotes/notes/0.15/cregbundle-8c0ae7bd7875dd0f.yaml new file mode 100644 index 000000000000..8db9f985b65e --- /dev/null +++ b/releasenotes/notes/0.15/cregbundle-8c0ae7bd7875dd0f.yaml @@ -0,0 +1,32 @@ +--- +upgrade: + - | + The default value of the ``cregbundle`` kwarg for the + :meth:`qiskit.circuit.QuantumCircuit.draw` method and + :func:`qiskit.visualization.circuit_drawer` function has been changed + to ``True``. This means that by default the classical bits in the + circuit diagram will now be bundled by default, for example: + + .. jupyter-execute:: + + from qiskit.circuit import QuantumCircuit + + circ = QuantumCircuit(4) + circ.x(0) + circ.h(1) + circ.measure_all() + circ.draw(output='mpl') + + If you want to have your circuit drawing retain the previous behavior + and show each classical bit in the diagram you can set the ``cregbundle`` + kwarg to ``False``. For example: + + .. jupyter-execute:: + + from qiskit.circuit import QuantumCircuit + + circ = QuantumCircuit(4) + circ.x(0) + circ.h(1) + circ.measure_all() + circ.draw(output='mpl', cregbundle=False) diff --git a/releasenotes/notes/defective_qubits-d826ccbd049603b9.yaml b/releasenotes/notes/0.15/defective_qubits-d826ccbd049603b9.yaml similarity index 100% rename from releasenotes/notes/defective_qubits-d826ccbd049603b9.yaml rename to releasenotes/notes/0.15/defective_qubits-d826ccbd049603b9.yaml diff --git a/releasenotes/notes/0.15/deprecate-dag-qubits-method-0a61b37fa4a5bcd5.yaml b/releasenotes/notes/0.15/deprecate-dag-qubits-method-0a61b37fa4a5bcd5.yaml new file mode 100644 index 000000000000..95910ff46e7f --- /dev/null +++ b/releasenotes/notes/0.15/deprecate-dag-qubits-method-0a61b37fa4a5bcd5.yaml @@ -0,0 +1,10 @@ +--- +deprecations: + - | + The :meth:`~qiskit.dagcircuit.DAGCircuit.qubits` and + :meth:`~qiskit.dagcircuit.DAGCircuit.clbits` methods of + :class:`qiskit.dagcircuit.DAGCircuit` have been deprecated and will be + removed in a future release. They have been replaced with properties of + the same name, :attr:`qiskit.dagcircuit.DAGCircuit.qubits` and + :attr:`qiskit.dagcircuit.DAGCircuit.clbits`, and are cached so + accessing them is much faster. diff --git a/releasenotes/notes/0.15/deprecate-get_sample_pulse-b97028b14317996c.yaml b/releasenotes/notes/0.15/deprecate-get_sample_pulse-b97028b14317996c.yaml new file mode 100644 index 000000000000..7f170b820822 --- /dev/null +++ b/releasenotes/notes/0.15/deprecate-get_sample_pulse-b97028b14317996c.yaml @@ -0,0 +1,10 @@ +--- +deprecations: + - | + The ``get_sample_pulse`` method for + ``qiskit.pulse.library.ParametricPulse`` derived classes (for example + :class:`~qiskit.pulse.library.GaussianSquare`) has been deprecated and + will be removed in a future release. It has been replaced by the + ``get_waveform`` method (for example + :meth:`~qiskit.pulse.library.GaussianSquare.get_waveform`) which should + behave identically. diff --git a/releasenotes/notes/0.15/deprecate-optional-condition-arg-7645c645c738e290.yaml b/releasenotes/notes/0.15/deprecate-optional-condition-arg-7645c645c738e290.yaml new file mode 100644 index 000000000000..a293ac5ee48f --- /dev/null +++ b/releasenotes/notes/0.15/deprecate-optional-condition-arg-7645c645c738e290.yaml @@ -0,0 +1,10 @@ +--- +deprecations: + - | + The use of the optional ``condition`` argument on + :class:`qiskit.dagcircuit.DAGNode`, + :meth:`qiskit.dagcircuit.DAGCircuit.apply_operation_back`, and + :meth:`qiskit.dagcircuit.DAGCircuit.apply_operation_front` has been + deprecated and will be removed in a future release. Instead the + ``control`` set in :class:`qiskit.circuit.Instruction` instances being + added to a :class:`~qiskit.dagcircuit.DAGCircuit` should be used. diff --git a/releasenotes/notes/0.15/disable-default-plot-table-330705e3118fac6a.yaml b/releasenotes/notes/0.15/disable-default-plot-table-330705e3118fac6a.yaml new file mode 100644 index 000000000000..2b68b9dda67c --- /dev/null +++ b/releasenotes/notes/0.15/disable-default-plot-table-330705e3118fac6a.yaml @@ -0,0 +1,8 @@ +--- +upgrade: + - | + :class:`~qiskit.pulse.Schedule` plotting with + :py:meth:`qiskit.pulse.Schedule.draw` and + :func:`qiskit.visualization.pulse_drawer` will no + longer display the event table by default. This can be reenabled by setting + the ``table`` kwarg to ``True``. diff --git a/releasenotes/notes/0.15/disallow_num_ctrl_qubits_zero-eb102aa087f30250.yaml b/releasenotes/notes/0.15/disallow_num_ctrl_qubits_zero-eb102aa087f30250.yaml new file mode 100644 index 000000000000..b64ca72e2dc1 --- /dev/null +++ b/releasenotes/notes/0.15/disallow_num_ctrl_qubits_zero-eb102aa087f30250.yaml @@ -0,0 +1,12 @@ +--- +fixes: + - | + Previously it was possible to set the number of control qubits to zero in + which case the the original, potentially non-controlled, operation would be + returned. This could cause an ``AttributeError`` to be raised if the caller + attempted to access an attribute which only + :class:`~qiskit.circuit.ControlledGate` object have. This has been fixed + by adding a getter and setter for + :attr:`~qiskit.circuit.ControlledGate.num_ctrl_qubits` to validate + that a valid value is being used. + Fixes `#4576 `__ diff --git a/releasenotes/notes/equiv-lib-draw-8f3c4bd897a2fa6c.yaml b/releasenotes/notes/0.15/equiv-lib-draw-8f3c4bd897a2fa6c.yaml similarity index 95% rename from releasenotes/notes/equiv-lib-draw-8f3c4bd897a2fa6c.yaml rename to releasenotes/notes/0.15/equiv-lib-draw-8f3c4bd897a2fa6c.yaml index 1ea391ae9ee4..d24ffbf326d6 100644 --- a/releasenotes/notes/equiv-lib-draw-8f3c4bd897a2fa6c.yaml +++ b/releasenotes/notes/0.15/equiv-lib-draw-8f3c4bd897a2fa6c.yaml @@ -6,7 +6,9 @@ features: method can be used for drawing the contents of an equivalence library, which can be useful for debugging. For example: - .. jupyter-execute: + .. jupyter-execute:: + + from numpy import pi from qiskit.circuit import EquivalenceLibrary from qiskit.circuit import QuantumCircuit diff --git a/releasenotes/notes/0.15/fix-unrolling-open-ctrl-gate-4a72116526afb1fd.yaml b/releasenotes/notes/0.15/fix-unrolling-open-ctrl-gate-4a72116526afb1fd.yaml new file mode 100644 index 000000000000..f1457b44dc30 --- /dev/null +++ b/releasenotes/notes/0.15/fix-unrolling-open-ctrl-gate-4a72116526afb1fd.yaml @@ -0,0 +1,10 @@ +fixes: + - | + Open controls were implemented by modifying a :class:`~qiskit.circuit.Gate` + objects :attr:`~qiskit.circuit.Gate.definition`. However, when the gate + already exists in the basis set, this definition was not used, which + resulted in incorrect circuits being sent to a backend after transpilation. + This has been fixed by modifying the :class:`~qiskit.transpiler.Unroller` + pass to use the definition if it encounters a controlled gate with open + controls. + Fixes `#4437 `__ diff --git a/releasenotes/notes/0.15/fix-zz-feature-map-barriers-ab1a2d930a6b5af1.yaml b/releasenotes/notes/0.15/fix-zz-feature-map-barriers-ab1a2d930a6b5af1.yaml new file mode 100644 index 000000000000..8a5087938fcb --- /dev/null +++ b/releasenotes/notes/0.15/fix-zz-feature-map-barriers-ab1a2d930a6b5af1.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + The ``insert_barriers`` keyword argument in the + :class:`~qiskit.circuit.library.ZZFeatureMap` class didn't actually insert + barriers in between the Hadamard layers and evolution layers. This has been + fixed so that barriers are now properly inserted. diff --git a/releasenotes/notes/0.15/implement-set-phase-b5581ad6085b3cec.yaml b/releasenotes/notes/0.15/implement-set-phase-b5581ad6085b3cec.yaml new file mode 100644 index 000000000000..e19af4a61a47 --- /dev/null +++ b/releasenotes/notes/0.15/implement-set-phase-b5581ad6085b3cec.yaml @@ -0,0 +1,19 @@ +--- +features: + - | + A new Phase instruction, :class:`~qiskit.pulse.SetPhase`, has been added + to :mod:`qiskit.pulse`. This instruction sets the phase of the + subsequent pulses to the specified phase (in radians. For example:: + + import numpy as np + + from qiskit.pulse import DriveChannel + from qiskit.pulse import Schedule + from qiskit.pulse import SetPhase + + sched = Schedule() + sched += SetPhase(np.pi, DriveChannel(0)) + + In this example, the phase of the pulses applied to ``DriveChannel(0)`` + after the :class:`~qiskit.pulse.SetPhase` instruction will be set to + :math:`\pi` radians. diff --git a/releasenotes/notes/0.15/implement-shift-frequency-46d4ea16d8be2f58.yaml b/releasenotes/notes/0.15/implement-shift-frequency-46d4ea16d8be2f58.yaml new file mode 100644 index 000000000000..1cdef1e62ff2 --- /dev/null +++ b/releasenotes/notes/0.15/implement-shift-frequency-46d4ea16d8be2f58.yaml @@ -0,0 +1,17 @@ +--- +features: + - | + A new pulse instruction :class:`~qiskit.pulse.ShiftFrequency` has been + added to :mod:`qiskit.pulse.instructions`. This instruction enables + shifting the frequency of a channel from its set frequency. For example:: + + from qiskit.pulse import DriveChannel + from qiskit.pulse import Schedule + from qiskit.pulse import ShiftFrequency + + sched = Schedule() + sched += ShiftFrequency(-340e6, DriveChannel(0)) + + In this example all the pulses applied to ``DriveChannel(0)`` after the + :class:`~qiskit.pulse.ShiftFrequency` command will have the envelope a + frequency decremented by 340MHz. diff --git a/releasenotes/notes/large_gate_bugfix-cbf0b6f1dcfbd5dd.yaml b/releasenotes/notes/0.15/large_gate_bugfix-cbf0b6f1dcfbd5dd.yaml similarity index 100% rename from releasenotes/notes/large_gate_bugfix-cbf0b6f1dcfbd5dd.yaml rename to releasenotes/notes/0.15/large_gate_bugfix-cbf0b6f1dcfbd5dd.yaml diff --git a/releasenotes/notes/0.15/level0_RemoveResetInZeroState-942c0fb19cb6c087.yaml b/releasenotes/notes/0.15/level0_RemoveResetInZeroState-942c0fb19cb6c087.yaml new file mode 100644 index 000000000000..1d587354b771 --- /dev/null +++ b/releasenotes/notes/0.15/level0_RemoveResetInZeroState-942c0fb19cb6c087.yaml @@ -0,0 +1,14 @@ +--- +upgrade: + - | + The pass :class:`~qiskit.transpiler.passes.RemoveResetInZeroState` was + previously included in the preset pass manager + :func:`~qiskit.transpiler.preset_passmanagers.level_0_pass_manager` which + was used with the ``optimization_level=0`` for + :func:`~qiskit.compiler.transpile` and :func:`~qiskit.execute.execute` + functions. However, + :class:`~qiskit.transpiler.passes.RemoveResetInZeroState` is an + optimization pass and should not have been included in optiimzation level + 0 and was removed. If you need to run :func:`~qiskit.compiler.transpile` + with :class:`~qiskit.transpiler.passes.RemoveResetInZeroState` either use + a custom pass manager or ``optimization_level`` 1, 2, or 3. diff --git a/releasenotes/notes/0.15/line_length_remove_0.10-d13e5a15524e67c0.yaml b/releasenotes/notes/0.15/line_length_remove_0.10-d13e5a15524e67c0.yaml new file mode 100644 index 000000000000..e6dbb99e4ddd --- /dev/null +++ b/releasenotes/notes/0.15/line_length_remove_0.10-d13e5a15524e67c0.yaml @@ -0,0 +1,8 @@ +--- +upgrade: + - | + The deprecated kwarg ``line_length`` for the + :func:`qiskit.visualization.circuit_drawer` function and + :meth:`qiskit.circuit.QuantumCircuit.draw` method has been removed. It + had been deprecated since the 0.10.0 release. Instead you can use the + ``fold`` kwarg to adjust the width of the circuit diagram. diff --git a/releasenotes/notes/0.15/mpl-scaling-fix-823c3e3d3cb2d9d1.yaml b/releasenotes/notes/0.15/mpl-scaling-fix-823c3e3d3cb2d9d1.yaml new file mode 100644 index 000000000000..e9d66f01001c --- /dev/null +++ b/releasenotes/notes/0.15/mpl-scaling-fix-823c3e3d3cb2d9d1.yaml @@ -0,0 +1,21 @@ +--- + +fixes: + - | + The matplotlib (``'mpl'``) output backend for the + :class:`qiskit.circuit.QuantumCircuit` method + :meth:`~qiskit.circuit.QuantumCircuit.draw` and the + :func:`qiskit.visualization.circuit_drawer` function was not properly + scaling when the kwarg ``scale`` was set. Fonts and line widths + did not scale with the rest of the image. This has been fixed and all + elements of the circuit diagram now scale properly. For example: + + .. jupyter-execute:: + + from qiskit import QuantumCircuit + circuit = QuantumCircuit(2) + circuit.h(0) + circuit.cx(0, 1) + circuit.draw(output='mpl', scale=0.5) + + Fixes `#4179 `_. diff --git a/releasenotes/notes/0.15/op_tolerance_dep-d0d931f029e27a44.yaml b/releasenotes/notes/0.15/op_tolerance_dep-d0d931f029e27a44.yaml new file mode 100644 index 000000000000..3b93a1f72e53 --- /dev/null +++ b/releasenotes/notes/0.15/op_tolerance_dep-d0d931f029e27a44.yaml @@ -0,0 +1,33 @@ +--- +feature: + - | + The :class:`qiskit.quantum_info.BaseOperator` and + :class:`qiskit.quantum_info.QuantumState` classes (and their subclasses + such as :class:`~qiskit.quantum_info.Operator` and + :class:`~qiskit.quantum_info.DensityMatrix`) + now have property style setters and getters to retrieve and set the + default ``atol`` and ``rtol`` class properties. These can be used + to query or set the default tolerances used for all instances of a + class. For example, + + .. code-block:: + + from qiskit.quantum_info import ScalarOp + + ScalarOp.atol = 3e-5 + op = ScalarOp(2) + +deprecations: + - | + The ``set_atol`` and ``set_rtol`` class methods of the + :class:`qiskit.quantum_info.BaseOperator` and + :class:`qiskit.quantum_info.QuantumState` classes (and + their subclasses such as :class:`~qiskit.quantum_info.Operator` + and :class:`qiskit.quantum_info.DensityMatrix`) are deprecated and will + be removed in a future release. Instead the value for the attributes + ``.atol`` and ``.rtol`` should be set on the class instead. For example:: + + from qiskit.quantum_info import ScalarOp + + ScalarOp.atol = 3e-5 + op = ScalarOp(2) diff --git a/releasenotes/notes/0.15/parameter-conjugate-a16fd7ae0dc18ede.yaml b/releasenotes/notes/0.15/parameter-conjugate-a16fd7ae0dc18ede.yaml new file mode 100644 index 000000000000..e30386b5dfd1 --- /dev/null +++ b/releasenotes/notes/0.15/parameter-conjugate-a16fd7ae0dc18ede.yaml @@ -0,0 +1,8 @@ +--- +features: + - | + A new method :meth:`~qiskit.circuit.ParameterExpression.conjugate` has + been added to the :class:`~qiskit.circuit.ParameterExpression` class. + This enables calling ``numpy.conj()`` without raising an error. Since a + :class:`~qiskit.circuit.ParameterExpression` object is real, it will + return itself. This behaviour is analogous to Python floats/ints. diff --git a/releasenotes/notes/0.15/phase-estimation-circuit-c22d71d88873aa77.yaml b/releasenotes/notes/0.15/phase-estimation-circuit-c22d71d88873aa77.yaml new file mode 100644 index 000000000000..d091a8801769 --- /dev/null +++ b/releasenotes/notes/0.15/phase-estimation-circuit-c22d71d88873aa77.yaml @@ -0,0 +1,19 @@ +--- +features: + - | + A new class :class:`~qiskit.circuit.library.PhaseEstimation` has been + added to :mod:`qiskit.circuit.library`. This circuit library class is + the circuit used in the original formulation of the phase estimation + algorithm in + `arXiv:quant-ph/9511026 `__. + Phase estimation is the task to to estimate the phase :math:`\phi` of an + eigenvalue :math:`e^{2\pi i\phi}` of a unitary operator :math:`U`, provided + with the corresponding eigenstate :math:`|psi\rangle`. That is + + .. math:: + + U|\psi\rangle = e^{2\pi i\phi} |\psi\rangle + + This estimation (and thereby this circuit) is a central routine to several + well-known algorithms, such as Shor's algorithm or Quantum Amplitude + Estimation. diff --git a/releasenotes/notes/pylatexenc-matplotlib-428f285f4cfd2d7c.yaml b/releasenotes/notes/0.15/pylatexenc-matplotlib-428f285f4cfd2d7c.yaml similarity index 90% rename from releasenotes/notes/pylatexenc-matplotlib-428f285f4cfd2d7c.yaml rename to releasenotes/notes/0.15/pylatexenc-matplotlib-428f285f4cfd2d7c.yaml index 8e2602e1e969..60aec0df4f51 100644 --- a/releasenotes/notes/pylatexenc-matplotlib-428f285f4cfd2d7c.yaml +++ b/releasenotes/notes/0.15/pylatexenc-matplotlib-428f285f4cfd2d7c.yaml @@ -2,7 +2,7 @@ upgrade: - | The ``'mpl'`` output mode for the - :meth:`~qiskit.circuit.QuantumCircuit.draw` method and + :meth:`qiskit.circuit.QuantumCircuit.draw` method and :func:`~qiskit.visualization.circuit_drawer` now requires the `pylatexenc `__ library to be installed. This was already an optional dependency for diff --git a/releasenotes/notes/0.15/qasm_remove_0.9-7150d53da8eebfd8.yaml b/releasenotes/notes/0.15/qasm_remove_0.9-7150d53da8eebfd8.yaml new file mode 100644 index 000000000000..32046d00bc9b --- /dev/null +++ b/releasenotes/notes/0.15/qasm_remove_0.9-7150d53da8eebfd8.yaml @@ -0,0 +1,9 @@ +--- +upgrade: + - | + The deprecated ``get_tokens`` methods for the :class:`qiskit.qasm.Qasm` + and :class:`qiskit.qasm.QasmParser` has been removed. These methods have + been deprecated since the 0.9.0 release. The + :meth:`qiskit.qasm.Qasm.generate_tokens` and + :meth:`qiskit.qasm.QasmParser.generate_tokens` methods should be used + instead. diff --git a/releasenotes/notes/0.15/qsphere-state-display-819cc1e3e61314a2.yaml b/releasenotes/notes/0.15/qsphere-state-display-819cc1e3e61314a2.yaml new file mode 100644 index 000000000000..5164f7a662fa --- /dev/null +++ b/releasenotes/notes/0.15/qsphere-state-display-819cc1e3e61314a2.yaml @@ -0,0 +1,21 @@ +--- +features: + - | + The :mod:`qiskit.visualization` function + :func:`~qiskit.visualization.plot_state_qsphere` has a new kwarg + ``show_state_labels`` which is used to control whether each blob in the + qsphere visualization is labeled. By default this kwarg is set to ``True`` + and shows the basis states next to each blob by default. This feature can be + disabled, reverting to the previous behavior, by setting the + ``show_state_labels`` kwarg to ``False``. + - | + The :mod:`qiskit.visualization` function + :func:`~qiskit.visualization.plot_state_qsphere` has a new kwarg + ``show_state_phases`` which is set to ``False`` by default. When set to + ``True`` it displays the phase of each basis state. + - | + The :mod:`qiskit.visualization` function + :func:`~qiskit.visualization.plot_state_qsphere` has a new kwarg + ``use_degrees`` which is set to ``False`` by default. When set to ``True`` + it displays the phase of each basis state in degrees, along with the phase + circle at the bottom right. diff --git a/releasenotes/notes/0.15/quadratic-form-circuit-f0ddb1694960cbc1.yaml b/releasenotes/notes/0.15/quadratic-form-circuit-f0ddb1694960cbc1.yaml new file mode 100644 index 000000000000..7b4bbee71aa7 --- /dev/null +++ b/releasenotes/notes/0.15/quadratic-form-circuit-f0ddb1694960cbc1.yaml @@ -0,0 +1,32 @@ +--- +features: + - | + A new class, :class:`~qiskit.circuit.library.QuadraticForm` to the + :mod:`qiskit.circuit.library` module for implementing a a quadratic form on + binary variables. The circuit library element implements the operation + + .. math:: + + |x\rangle |0\rangle \mapsto |x\rangle |Q(x) \mod 2^m\rangle + + for the quadratic form :math:`Q` and :math:`m` output qubits. + The result is in the :math:`m` output qubits is encoded in two's + complement. If :math:`m` is not specified, the circuit will choose + the minimal number of qubits required to represent the result + without applying a modulo operation. + The quadratic form is specified using a matrix for the quadratic + terms, a vector for the linear terms and a constant offset. + If all terms are integers, the circuit implements the quadratic form + exactly, otherwise it is only an approximation. + + For example:: + + import numpy as np + + from qiskit.circuit.library import QuadraticForm + + A = np.array([[1, 2], [-1, 0]]) + b = np.array([3, -3]) + c = -2 + m = 4 + quad_form_circuit = QuadraticForm(m, A, b, c) diff --git a/releasenotes/notes/quantum_state_expval-18359552aab42343.yaml b/releasenotes/notes/0.15/quantum_state_expval-18359552aab42343.yaml similarity index 100% rename from releasenotes/notes/quantum_state_expval-18359552aab42343.yaml rename to releasenotes/notes/0.15/quantum_state_expval-18359552aab42343.yaml diff --git a/releasenotes/notes/0.15/quantum_volume_rng-2e6f46e3821aebeb.yaml b/releasenotes/notes/0.15/quantum_volume_rng-2e6f46e3821aebeb.yaml new file mode 100644 index 000000000000..dbda31b0fad1 --- /dev/null +++ b/releasenotes/notes/0.15/quantum_volume_rng-2e6f46e3821aebeb.yaml @@ -0,0 +1,11 @@ +--- +features: + - | + For the ``seed`` kwarg in the constructor for + :class:`qiskit.circuit.library.QuantumVolume` `numpy random Generator + objects `__ + can now be used. Previously, only integers were a valid input. This is + useful when integrating :class:`~qiskit.circuit.library.QuantumVolume` as + part of a larger function with its own random number generation, e.g. + generating a sequence of + :class:`~qiskit.circuit.library.QuantumVolume` circuits. diff --git a/releasenotes/notes/0.15/quantumcircuit-compose-without-dag-b19e518a8f2fbeb0.yaml b/releasenotes/notes/0.15/quantumcircuit-compose-without-dag-b19e518a8f2fbeb0.yaml new file mode 100644 index 000000000000..0711227d0e85 --- /dev/null +++ b/releasenotes/notes/0.15/quantumcircuit-compose-without-dag-b19e518a8f2fbeb0.yaml @@ -0,0 +1,19 @@ +--- +features: + - | + The :class:`~qiskit.circuit.QuantumCircuit` method + :meth:`~qiskit.circuit.QuantumCircuit.compose` has a new kwarg ``front`` + which can be used for prepending the other circuit before the origin + circuit instead of appending. For example: + + .. jupyter-execute:: + + from qiskit.circuit import QuantumCircuit + + circ1 = QuantumCircuit(2) + circ2 = QuantumCircuit(2) + + circ2.h(0) + circ1.cx(0, 1) + + circ1.compose(circ2, front=True).draw(output='mpl') diff --git a/releasenotes/notes/0.15/remove-channels-to-plot-argument-388c6b33ed00b0d6.yaml b/releasenotes/notes/0.15/remove-channels-to-plot-argument-388c6b33ed00b0d6.yaml new file mode 100644 index 000000000000..99cbdd306b94 --- /dev/null +++ b/releasenotes/notes/0.15/remove-channels-to-plot-argument-388c6b33ed00b0d6.yaml @@ -0,0 +1,11 @@ +--- +upgrade: + - | + The deprecated kwarg ``channels_to_plot`` for + :meth:`qiskit.pulse.Schedule.draw`, + :meth:`qiskit.pulse.Instruction.draw`, + ``qiskit.visualization.pulse.matplotlib.ScheduleDrawer.draw`` and + :func:`~qiskit.visualization.pulse_drawer` has been removed. The kwarg + has been deprecated since the 0.11.0 release and was replaced by + the ``channels`` kwarg, which functions identically and should be used + instead. diff --git a/releasenotes/notes/0.15/remove-circuit-instruction-map-37fb34c3b5fe033c.yaml b/releasenotes/notes/0.15/remove-circuit-instruction-map-37fb34c3b5fe033c.yaml new file mode 100644 index 000000000000..ec4e55a06a7a --- /dev/null +++ b/releasenotes/notes/0.15/remove-circuit-instruction-map-37fb34c3b5fe033c.yaml @@ -0,0 +1,8 @@ +--- +upgrade: + - | + The deprecated ``circuit_instruction_map`` attribute of the + :class:`qiskit.providers.models.PulseDefaults` class has been removed. + This attribute has been deprecated since the 0.12.0 release and was + replaced by the ``instruction_schedule_map`` attribute which can be used + instead. diff --git a/releasenotes/notes/0.15/remove-deprecated-pulse-code-9ec2dba175058c5f.yaml b/releasenotes/notes/0.15/remove-deprecated-pulse-code-9ec2dba175058c5f.yaml new file mode 100644 index 000000000000..abbf45a65ba2 --- /dev/null +++ b/releasenotes/notes/0.15/remove-deprecated-pulse-code-9ec2dba175058c5f.yaml @@ -0,0 +1,18 @@ +--- +upgrade: + - | + The ``union`` method of :py:class:`~qiskit.pulse.Schedule` and + :py:class:`~qiskit.pulse.Instruction` have been deprecated since + the 0.12.0 release and have now been removed. Use + :meth:`qiskit.pulse.Schedule.insert` and + :meth:`qiskit.pulse.Instruction.meth` methods instead with the + kwarg``time=0``. + - | + The deprecated ``scaling`` argument to the ``draw`` method of + :py:class:`~qiskit.pulse.Schedule` and :py:class:`~qiskit.pulse.Instruction` + has been replaced with ``scale`` since the 0.12.0 release and now has been + removed. Use the ``scale`` kwarg instead. + - | + The deprecated ``period`` argument to :py:mod:`qiskit.pulse.library` functions + have been replaced by ``freq`` since the 0.13.0 release and now removed. Use the + ``freq`` kwarg instead of ``period``. diff --git a/releasenotes/notes/0.15/remove-deprecated-pulse-commands-18381c59264090dd.yaml b/releasenotes/notes/0.15/remove-deprecated-pulse-commands-18381c59264090dd.yaml new file mode 100644 index 000000000000..60d7d43457ef --- /dev/null +++ b/releasenotes/notes/0.15/remove-deprecated-pulse-commands-18381c59264090dd.yaml @@ -0,0 +1,41 @@ +--- +upgrade: + - | + The ``qiskit.pulse.commands`` module containing ``Commands`` classes + was deprecated in the 0.13.0 release and has now been removed. You will + have to upgrade your Pulse code if you were still using commands. For + example: + + .. list-table:: + :header-rows: 2 + + * - Old + - New + * - ``Command(args)(channel)`` + - ``Instruction(args, channel)`` + * - .. code-block:: python + + Acquire(duration)(AcquireChannel(0)) + - .. code-block:: python + + Acquire(duration, AcquireChannel(0)) + * - .. code-block:: python + + Delay(duration)(channel) + - .. code-block:: python + + Delay(duration, channel) + * - .. code-block:: python + + FrameChange(angle)(DriveChannel(0)) + - .. code-block:: python + + # FrameChange was also renamed + ShiftPhase(angle, DriveChannel(0)) + * - .. code-block:: python + + Gaussian(...)(DriveChannel(0)) + - .. code-block:: python + + # Pulses need to be `Play`d + Play(Gaussian(...), DriveChannel(0)) diff --git a/releasenotes/notes/remove-deprecated-qi-b7d5a8ca00849b02.yaml b/releasenotes/notes/0.15/remove-deprecated-qi-b7d5a8ca00849b02.yaml similarity index 58% rename from releasenotes/notes/remove-deprecated-qi-b7d5a8ca00849b02.yaml rename to releasenotes/notes/0.15/remove-deprecated-qi-b7d5a8ca00849b02.yaml index b1e3a7081d21..bdd2e168d0fb 100644 --- a/releasenotes/notes/remove-deprecated-qi-b7d5a8ca00849b02.yaml +++ b/releasenotes/notes/0.15/remove-deprecated-qi-b7d5a8ca00849b02.yaml @@ -1,14 +1,14 @@ --- upgrade: - | - All classes in the ``qiskit.tool.qi`` namespace were deprecated as of - Qiskit Terra 0.14.0 and are now removed. Instead use the - ``qiskit.quantum_info`` namespace and the new methods and classes that + All classes and function in the ``qiskit.tool.qi`` module were deprecated + in the 0.12.0 release and have now been removed. Instead use the + :mod:`qiskit.quantum_info` module and the new methods and classes that it has for working with quantum states and operators. - | The ``qiskit.quantum_info.basis_state`` and ``qiskit.quantum_info.projector`` functions are deprecated as of Qiskit Terra 0.12.0 as are now removed. Use the - :class:`qiskit.quantum_info.QuantumState` and its derivitives + :class:`qiskit.quantum_info.QuantumState` and its derivatives :class:`qiskit.quantum_info.Statevector` and :class:`qiskit.quantum_info.DensityMatrix` to work with states. diff --git a/releasenotes/notes/remove-iplot-150c97e5a4d399e4.yaml b/releasenotes/notes/0.15/remove-iplot-150c97e5a4d399e4.yaml similarity index 93% rename from releasenotes/notes/remove-iplot-150c97e5a4d399e4.yaml rename to releasenotes/notes/0.15/remove-iplot-150c97e5a4d399e4.yaml index 9376a3feef55..d90e1f648006 100644 --- a/releasenotes/notes/remove-iplot-150c97e5a4d399e4.yaml +++ b/releasenotes/notes/0.15/remove-iplot-150c97e5a4d399e4.yaml @@ -1,7 +1,7 @@ --- upgrade: - | - The interactive plotting functions from :mod:`qiskit.visualizations`, + The interactive plotting functions from :mod:`qiskit.visualization`, ``iplot_bloch_multivector``, ``iplot_state_city``, ``iplot_state_qsphere``, ``iplot_state_hinton``, ``iplot_histogram``, ``iplot_state_paulivec`` now are just deprecated aliases for the matplotlib based equivalents and are @@ -11,11 +11,11 @@ upgrade: exists. deprecations: - | - The interactive plotting functions from :mod:`qiskit.visualizations`, + The interactive plotting functions from :mod:`qiskit.visualization`, ``iplot_bloch_multivector``, ``iplot_state_city``, ``iplot_state_qsphere``, ``iplot_state_hinton``, ``iplot_histogram``, ``iplot_state_paulivec`` have been deprecated and will be removed in a future release. The matplotlib - based equivalent functions from :mod:`qiskit.visualizations`, + based equivalent functions from :mod:`qiskit.visualization`, :func:`~qiskit.visualization.plot_bloch_multivector`, :func:`~qiskit.visualization.plot_state_city`, :func:`~qiskit.visualization.plot_state_qsphere`, diff --git a/releasenotes/notes/remove-marshmallow-validation-283fa62b3acc51e4.yaml b/releasenotes/notes/0.15/remove-marshmallow-validation-283fa62b3acc51e4.yaml similarity index 88% rename from releasenotes/notes/remove-marshmallow-validation-283fa62b3acc51e4.yaml rename to releasenotes/notes/0.15/remove-marshmallow-validation-283fa62b3acc51e4.yaml index 017bce08d5ea..8d2d51f022a3 100644 --- a/releasenotes/notes/remove-marshmallow-validation-283fa62b3acc51e4.yaml +++ b/releasenotes/notes/0.15/remove-marshmallow-validation-283fa62b3acc51e4.yaml @@ -5,7 +5,7 @@ upgrade: have been removed from terra. Since they are no longer used to build any objects in terra. - | - The marshmallow schema classes in :mod:`qiskit.results` have been removed + The marshmallow schema classes in :mod:`qiskit.result` have been removed since they are no longer used by the :class:`qiskit.result.Result` class. - The output of the :meth:`~qiskit.result.Result.to_dict` method for the :class:`qiskit.result.Result` class is no longer in a format for direct @@ -19,6 +19,6 @@ other: - | The :class:`qiskit.result.Result` class which was previously constructed using the marshmallow library has been refactored to not depend on - marshmallow anymore. This new implementation should be a seemless transition + marshmallow anymore. This new implementation should be a seamless transition but some specific behavior that was previously inherited from marshmallow may not work. Please file issues for any incompatibilities found. diff --git a/releasenotes/notes/0.15/remove-multi-acquires-747701103ddd816c.yaml b/releasenotes/notes/0.15/remove-multi-acquires-747701103ddd816c.yaml new file mode 100644 index 000000000000..c4d0a16c0e6b --- /dev/null +++ b/releasenotes/notes/0.15/remove-multi-acquires-747701103ddd816c.yaml @@ -0,0 +1,20 @@ +--- +deprecations: + - | + The properties ``acquires``, ``mem_slots``, and ``reg_slots`` of the + :class:`qiskit.pulse.instructions.Acquire` pulse instruction have been + deprecated and will be removed in a future release. They are just + duplicates of :attr:`~qiskit.pulse.instructions.Acquire.channel`, + :attr:`~qiskit.pulse.instructions.Acquire.mem_slot`, + and :attr:`~qiskit.pulse.instructions.Acquire.reg_slot` respectively + now that previously deprecated support for using multiple qubits in a + single :class:`~qiskit.pulse.instructions.Acquire` instruction has been + removed. + +upgrade: + - | + The option to acquire multiple qubits at once was deprecated in the 0.12.0 + release and is now removed. Specifically, the init args ``mem_slots`` and + ``reg_slots`` have been removed from + :class:`qiskit.pulse.instructions.Acquire`, and ``channel``, ``mem_slot`` + and ``reg_slot`` will raise an error if a list is provided as input. diff --git a/releasenotes/notes/0.15/remove-use_networkx-e1c846a9f8f2ff6a.yaml b/releasenotes/notes/0.15/remove-use_networkx-e1c846a9f8f2ff6a.yaml new file mode 100644 index 000000000000..4849e69f1142 --- /dev/null +++ b/releasenotes/notes/0.15/remove-use_networkx-e1c846a9f8f2ff6a.yaml @@ -0,0 +1,10 @@ +--- +upgrade: + - | + Support for the use of the ``USE_RETWORKX`` environment variable which was + introduced in the 0.13.0 release to provide an optional fallback to the + legacy `networkx `__ based + :class:`qiskit.dagcircuit.DAGCircuit` implementation + has been removed. This flag was only intended as provide a relief valve + for any users that encountered a problem with the new implementation for + one release during the transition to retworkx. diff --git a/releasenotes/notes/rename-rescheduler-d4210a234714ed5d.yaml b/releasenotes/notes/0.15/rename-rescheduler-d4210a234714ed5d.yaml similarity index 75% rename from releasenotes/notes/rename-rescheduler-d4210a234714ed5d.yaml rename to releasenotes/notes/0.15/rename-rescheduler-d4210a234714ed5d.yaml index 8b010ec48d80..b79d9d19d22c 100644 --- a/releasenotes/notes/rename-rescheduler-d4210a234714ed5d.yaml +++ b/releasenotes/notes/0.15/rename-rescheduler-d4210a234714ed5d.yaml @@ -1,7 +1,7 @@ --- upgrade: - | - The module within ``pulse`` responsible for schedule->schedule transformations + The module within :mod:`qiskit.pulse` responsible for schedule->schedule transformations has been renamed from ``reschedule.py`` to ``transforms.py``. The previous import path has been deprecated. To upgrade your code:: diff --git a/releasenotes/notes/rename-samplepulse-to-waveform-add2c0482623f752.yaml b/releasenotes/notes/0.15/rename-samplepulse-to-waveform-add2c0482623f752.yaml similarity index 73% rename from releasenotes/notes/rename-samplepulse-to-waveform-add2c0482623f752.yaml rename to releasenotes/notes/0.15/rename-samplepulse-to-waveform-add2c0482623f752.yaml index 776475108130..8a222b774a3a 100644 --- a/releasenotes/notes/rename-samplepulse-to-waveform-add2c0482623f752.yaml +++ b/releasenotes/notes/0.15/rename-samplepulse-to-waveform-add2c0482623f752.yaml @@ -2,4 +2,5 @@ deprecations: - | The ``SamplePulse`` class from :mod:`qiskit.pulse` has been renamed to - :py:class:`~qiskit.pulse.library.Waveform`. ``SamplePulse`` is deprecated. + :py:class:`~qiskit.pulse.library.Waveform`. ``SamplePulse`` is deprecated + and will be removed in a future release. diff --git a/releasenotes/notes/0.15/sabre-2a3bba505e48ee82.yaml b/releasenotes/notes/0.15/sabre-2a3bba505e48ee82.yaml new file mode 100644 index 000000000000..0b384b1eff15 --- /dev/null +++ b/releasenotes/notes/0.15/sabre-2a3bba505e48ee82.yaml @@ -0,0 +1,13 @@ +--- +features: + - | + Two new passes, :class:`~qiskit.transpiler.passes.SabreLayout` and + :class:`~qiskit.transpiler.passes.SabreSwap` for layout and routing have + been added to :mod:`qiskit.transpiler.passes`. These new passes are based + on the algorithm presented in Li et al., "Tackling the Qubit Mapping + Problem for NISQ-Era Quantum Devices", ASPLOS 2019. They can also be + selected when using the :func:`~qiskit.compiler.transpile` function by + setting the ``layout_method`` kwarg to ``'sabre'`` and/or the + ``routing_method`` to ``'sabre'`` to use + :class:`~qiskit.transpiler.passes.SabreLayout` and + :class:`~qiskit.transpiler.passes.SabreSwap` respectively. diff --git a/releasenotes/notes/schedule-replace-2c5634a6133db237.yaml b/releasenotes/notes/0.15/schedule-replace-2c5634a6133db237.yaml similarity index 72% rename from releasenotes/notes/schedule-replace-2c5634a6133db237.yaml rename to releasenotes/notes/0.15/schedule-replace-2c5634a6133db237.yaml index 9a8ee3d7370c..e1ac44b4aedc 100644 --- a/releasenotes/notes/schedule-replace-2c5634a6133db237.yaml +++ b/releasenotes/notes/0.15/schedule-replace-2c5634a6133db237.yaml @@ -1,10 +1,11 @@ --- features: - | - Added the method :meth:`~qiskit.pulse.Schedule.replace` allowing a + Added the method :meth:`~qiskit.pulse.Schedule.replace` to the + :class:`qiskit.pulse.Schedule` class which allows a pulse instruction to be replaced with another. For example:: - .. jupyter-execute:: + .. code-block:: python from qiskit import pulse diff --git a/releasenotes/notes/0.15/sqrt-x-gates-3aba219f0efd8900.yaml b/releasenotes/notes/0.15/sqrt-x-gates-3aba219f0efd8900.yaml new file mode 100644 index 000000000000..f90f84198c91 --- /dev/null +++ b/releasenotes/notes/0.15/sqrt-x-gates-3aba219f0efd8900.yaml @@ -0,0 +1,13 @@ +--- +features: + - | + Added new gate classes to :mod:`qiskit.circuit.library` for the + :math:`\sqrt{X}`, its adjoint :math:`\sqrt{X}^\dagger`, and + controlled :math:`\sqrt{X}` gates as + :class:`~qiskit.circuit.library.SXGate`, + :class:`~qiskit.circuit.library.SXdgGate`, and + :class:`~qiskit.circuit.library.CSXGate`. They can also be added to + a :class:`~qiskit.circuit.QuantumCircuit` object using the + :meth:`~qiskit.circuit.QuantumCircuit.sx`, + :meth:`~qiskit.circuit.QuantumCircuit.sxdg`, and + :meth:`~qiskit.circuit.QuantumCircuit.csx` respectively. diff --git a/releasenotes/notes/statevector-reset-3c819d1e2d598cc4.yaml b/releasenotes/notes/0.15/statevector-reset-3c819d1e2d598cc4.yaml similarity index 63% rename from releasenotes/notes/statevector-reset-3c819d1e2d598cc4.yaml rename to releasenotes/notes/0.15/statevector-reset-3c819d1e2d598cc4.yaml index 08a23a1fc097..e5d6232fe4e3 100644 --- a/releasenotes/notes/statevector-reset-3c819d1e2d598cc4.yaml +++ b/releasenotes/notes/0.15/statevector-reset-3c819d1e2d598cc4.yaml @@ -8,7 +8,9 @@ features: can be set using the :meth:`~qiskit.quantum_info.Statevector.seed` method. fixes: - | - Fixes issue where initializing or evolving :class:`qiskit.quantum_info.Statevector` - and :class:`qiskit.quantum_info.DensityMatrix` classes by circuits by - circuit containing :class:`~qiskit.circuit.Barrier` instructions would raise - an exception. + Fixes issue where initializing or evolving + :class:`qiskit.quantum_info.Statevector` and + :class:`qiskit.quantum_info.DensityMatrix` classes by circuits by + circuit containing :class:`~qiskit.circuit.Barrier` instructions would + raise an exception. Fixes + `#4461 `__ diff --git a/releasenotes/notes/support-substituting-parameterexpression-5f140ba243ba126a.yaml b/releasenotes/notes/0.15/support-substituting-parameterexpression-5f140ba243ba126a.yaml similarity index 65% rename from releasenotes/notes/support-substituting-parameterexpression-5f140ba243ba126a.yaml rename to releasenotes/notes/0.15/support-substituting-parameterexpression-5f140ba243ba126a.yaml index 3bd8c8f26135..f48392390769 100644 --- a/releasenotes/notes/support-substituting-parameterexpression-5f140ba243ba126a.yaml +++ b/releasenotes/notes/0.15/support-substituting-parameterexpression-5f140ba243ba126a.yaml @@ -1,8 +1,10 @@ --- features: - | - ```ParameterExpression.subs`` and ``QuantumCircuit.assign_parameters`` now - accept ``ParameterExpression`` s as the target value to be substituted. + The methods :meth:`qiskit.circuit.ParameterExpression.subs` and + :meth:`qiskit.circuit.QuantumCircuit.assign_parameters` now + accept :class:`~qiskit.circuit.ParameterExpression` as the target value + to be substituted. For example, diff --git a/releasenotes/notes/0.15/to_gate_label-d825a2997a504604.yaml b/releasenotes/notes/0.15/to_gate_label-d825a2997a504604.yaml new file mode 100644 index 000000000000..5fc00b44ee94 --- /dev/null +++ b/releasenotes/notes/0.15/to_gate_label-d825a2997a504604.yaml @@ -0,0 +1,19 @@ +--- +features: + - | + The :meth:`~qiskit.circuit.QuantumCircuit` method + :meth:`~qiskit.circuit.QuantumCircuit.to_gate` has a new kwarg + ``label`` which can be used to set a label for for the output + :class:`~qiskit.circuit.Gate` object. For example: + + .. jupyter-execute:: + + from qiskit.circuit import QuantumCircuit + + circuit_gate = QuantumCircuit(2) + circuit_gate.h(0) + circuit_gate.cx(0, 1) + custom_gate = circuit_gate.to_gate(label='My Special Bell') + new_circ = QuantumCircuit(2) + new_circ.append(custom_gate, [0, 1], []) + new_circ.draw(output='mpl') diff --git a/releasenotes/notes/0.15/transformationpass_propertyset-3d1d9aedad9860be.yaml b/releasenotes/notes/0.15/transformationpass_propertyset-3d1d9aedad9860be.yaml new file mode 100644 index 000000000000..6d62f642e429 --- /dev/null +++ b/releasenotes/notes/0.15/transformationpass_propertyset-3d1d9aedad9860be.yaml @@ -0,0 +1,15 @@ +--- +upgrade: + - | + In previous releases a :class:`~qiskit.transpiler.PassManager` + did not allow ``TransformationPass`` classes to modify the + :class:`~qiskit.transpiler.PropertySet`. This restriction has been lifted + so a ``TransformationPass`` class now has read and write access to both + the :class:`~qiskit.transpiler.PropertySet` and + :class:`~qiskit.transpiler.DAGCircuit` during + :meth:`~qiskit.transpiler.PassManager.run`. This change was made to + more efficiently facilitate ``TransformationPass`` classes that have an + internal state which may be necessary for later passes in the + :class:`~qiskit.transpiler.PassManager`. Without this change a second + redundant ``AnalysisPass`` would have been necessary to recreate the + internal state, which could add significant overhead. diff --git a/releasenotes/notes/0.15/transpiler_fails_with_condition-9b4b4d66406548f0.yaml b/releasenotes/notes/0.15/transpiler_fails_with_condition-9b4b4d66406548f0.yaml new file mode 100644 index 000000000000..704fa38861f7 --- /dev/null +++ b/releasenotes/notes/0.15/transpiler_fails_with_condition-9b4b4d66406548f0.yaml @@ -0,0 +1,12 @@ +--- +fixes: + - | + Previously when a :class:`~qiskit.circuit.QuantumCircuit` contained a + :class:`~qiskit.circuit.Gate` with a classical condition the transpiler + would sometimes fail when using ``optimization_level=3`` on + :func:`~qiskit.compiler.transpile` or + :func:`~qiskit.execute.execute` raising an ``UnboundLocalError``. This has + been fixed by updating the + :class:`~qiskit.transpiler.passes.ConsolidateBlocks` pass to account for + the classical condition. + Fixes `#4672 `_. diff --git a/releasenotes/notes/0.15/u-and-phase-gate-e308fb4bb009014f.yaml b/releasenotes/notes/0.15/u-and-phase-gate-e308fb4bb009014f.yaml new file mode 100644 index 000000000000..ba035a9abaef --- /dev/null +++ b/releasenotes/notes/0.15/u-and-phase-gate-e308fb4bb009014f.yaml @@ -0,0 +1,20 @@ +--- +features: + - | + Added the :class:`~qiskit.circuit.library.UGate`, + :class:`~qiskit.circuit.library.CUGate`, + :class:`~qiskit.circuit.library.PhaseGate`, and + :class:`~qiskit.circuit.library.CPhaseGate` with the corresponding + :class:`~qiskit.circuit.QuantumCircuit` methods + :meth:`~qiskit.circuit.QuantumCircuit.u`, + :meth:`~qiskit.circuit.QuantumCircuit.cu`, + :meth:`~qiskit.circuit.QuantumCircuit.p`, and + :meth:`~qiskit.circuit.QuantumCircuit.cp`. + The :class:`~qiskit.circuit.library.UGate` gate is the generic single qubit + rotation gate with 3 Euler angles and the + :class:`~qiskit.circuit.library.CUGate` gate its controlled version. + :class:`~qiskit.circuit.library.CUGate` has 4 parameters to account for a + possible global phase of the U gate. The + :class:`~qiskit.circuit.library.PhaseGate` and + :class:`~qiskit.circuit.library.CPhaseGate` gates are the general Phase + gate at an arbitrary angle and it's controlled version. diff --git a/releasenotes/notes/0.15/updated_mpl_drawer-1498741fc64ac42a.yaml b/releasenotes/notes/0.15/updated_mpl_drawer-1498741fc64ac42a.yaml new file mode 100644 index 000000000000..3e1589705f63 --- /dev/null +++ b/releasenotes/notes/0.15/updated_mpl_drawer-1498741fc64ac42a.yaml @@ -0,0 +1,140 @@ +--- +features: + - | + A new kwarg, ``cregbundle`` has been added to the + :func:`qiskit.visualization.circuit_drawer` function and the + :class:`~qiskit.circuit.QuantumCircuit` method + :meth:`~qiskit.circuit.QuantumCircuit.draw`. When set to ``True`` the + cregs will be bundled into a single line in circuit visualizations for the + ``text`` and ``mpl`` drawers. The default value is ``True``. + Addresses issue `#4290 `_. + + For example: + + .. jupyter-execute:: + + from qiskit import QuantumCircuit + circuit = QuantumCircuit(2) + circuit.measure_all() + circuit.draw(output='mpl', cregbundle=True) + - | + A new kwarg, ``initial_state`` has been added to the + :func:`qiskit.visualization.circuit_drawer` function and the + :class:`~qiskit.circuit.QuantumCircuit` method + :meth:`~qiskit.circuit.QuantumCircuit.draw`. When set to ``True`` the + initial state will now be included in circuit visualizations for all drawers. + Addresses issue `#4293 `_. + + For example: + + .. jupyter-execute:: + + from qiskit import QuantumCircuit + circuit = QuantumCircuit(2) + circuit.measure_all() + circuit.draw(output='mpl', initial_state=True) + - | + Labels will now be displayed when using the 'mpl' drawer. There are 2 + types of labels - gate labels and control labels. Gate labels will + replace the gate name in the display. Control labels will display + above or below the controls for a gate. + Fixes issues #3766, #4580 + Addresses issues `#3766 `_ + and `#4580 `_. + + For example: + + .. jupyter-execute:: + + from qiskit import QuantumCircuit + from qiskit.circuit.library.standard_gates import YGate + circuit = QuantumCircuit(2) + circuit.append(YGate(label='A Y Gate').control(label='Y Control'), [0, 1]) + circuit.draw(output='mpl') +deprecations: + - | + The style dictionary key ``cregbundle`` has been deprecated and will be + removed in a future release. This has been replaced by the + kwarg ``cregbundle`` added to the + :func:`qiskit.visualization.circuit_drawer` function and the + :class:`~qiskit.circuit.QuantumCircuit` method + :meth:`~qiskit.circuit.QuantumCircuit.draw`. +fixes: + - | + In some situations long gate and register names would overflow, or leave + excessive empty space around them when using the ``'mpl'`` output backend + for the :meth:`qiskit.circuit.QuantumCircuit.draw` method and + :func:`qiskit.visualization.circuit_drawer` function. This has been fixed + by using correct text widths for a proportional font. Fixes + `#4611 `__, + `#4605 `__, + `#4545 `__, + `#4497 `__, + `#4449 `__, and + `#3641 `__. + - | + When using the ``style` kwarg on the + :meth:`qiskit.circuit.QuantumCircuit.draw` or + :func:`qiskit.visualization.circuit_drawer` with the ``'mpl'`` output + backend the dictionary key ``'showindex'`` set to ``True``, the index + numbers at the top of the column did not line up properly. This has been + fixed. + - | + When using ``cregbunde=True`` with the ``'mpl'`` output backend for the + :meth:`qiskit.circuit.QuantumCircuit.draw` method and + :func:`qiskit.visualization.circuit_drawer` function and measuring onto + a second fold, the measure arrow would overwrite the creg count. The count + was moved to the left to prevent this. Fixes + `#4148 `__. + - | + When using the ``'mpl'`` output backend for the + :meth:`qiskit.circuit.QuantumCircuit.draw` method and + :func:`qiskit.visualization.circuit_drawer` function + :class:`~qiskit.circuit.library.CSwapGate` gates and a controlled + :class:`~qiskit.circuit.library.RZZGate` gates now display with their + appropriate symbols instead of in a box. + - | + When using the ``'mpl'`` output backend for the + :meth:`qiskit.circuit.QuantumCircuit.draw` method and + :func:`qiskit.visualization.circuit_drawer` function controlled gates + created using the :meth:`~qiskit.circuit.QuantumCircuit.to_gate` method + were not properly spaced and could overlap with other gates in the circuit + diagram. This issue has been fixed. + - | + When using the ``'mpl'`` output backend for the + :meth:`qiskit.circuit.QuantumCircuit.draw` method and + :func:`qiskit.visualization.circuit_drawer` function + gates with arrays as parameters, such as + :class:`~qiskit.extensions.HamiltonianGate`, no longer display with + excessive space around them. Fixes + `#4352 `__. + - | + When using the ``'mpl'`` output backend for the + :meth:`qiskit.circuit.QuantumCircuit.draw` method and + :func:`qiskit.visualization.circuit_drawer` function + generic gates created by directly instantiating :class:`qiskit.circuit.Gate` + method now display the proper background color for the gate. Fixes + `#4496 `__. + - | + When using the ``'mpl'`` output backend for the + :meth:`qiskit.circuit.QuantumCircuit.draw` method and + :func:`qiskit.visualization.circuit_drawer` function + an ``AttributeError`` that occurred when using + :class:`~qiskit.extensions.Isometry` or :class:`~qiskit.extensions.Initialize` + has been fixed. Fixes + `#4439 `__. + - | + When using the ``'mpl'`` output backend for the + :meth:`qiskit.circuit.QuantumCircuit.draw` method and + :func:`qiskit.visualization.circuit_drawer` function + some open-controlled gates did not properly display the open controls. + This has been corrected so that open controls are properly displayed + as open circles. Fixes + `#4248 `__. + - | + When using the ``'mpl'`` output backend for the + :meth:`qiskit.circuit.QuantumCircuit.draw` method and + :func:`qiskit.visualization.circuit_drawer` function + setting the ``fold`` kwarg to -1 will now properly display the circuit + without folding. Fixes + `#4506 `__. diff --git a/releasenotes/notes/0.15/zero-param-pulse-ends-c3ad82eae66f9252.yaml b/releasenotes/notes/0.15/zero-param-pulse-ends-c3ad82eae66f9252.yaml new file mode 100644 index 000000000000..d88f27e0fb9c --- /dev/null +++ b/releasenotes/notes/0.15/zero-param-pulse-ends-c3ad82eae66f9252.yaml @@ -0,0 +1,8 @@ +--- +fixes: + - | + Parametric pulses from :mod:`qiskit.pulse.library.discrete` + now have zero ends of parametric pulses by default. The endpoints are + defined such that for a function :math:`f(x)` then + :math:`f(-1) = f(duration + 1) = 0`. + Fixes `#4317 `__ diff --git a/releasenotes/notes/4500-barrier-counted-as-non-local-gate-6cb31d63a9052632.yaml b/releasenotes/notes/4500-barrier-counted-as-non-local-gate-6cb31d63a9052632.yaml deleted file mode 100644 index 677c412951e8..000000000000 --- a/releasenotes/notes/4500-barrier-counted-as-non-local-gate-6cb31d63a9052632.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -fixes: - - | - ``QuantumCircuit.num_nonlocal_gates`` previously included multi-qubit - ``Instruction`` (for example, ``Barrier``) in its count of non-local - gates. This has been corrected so that only nonlocal ``Gate`` s are - counted. diff --git a/releasenotes/notes/4524-MCXVChain-gate-being-incorrectly-assembled-as-MCX-gate-df73b216e9777ecf.yaml b/releasenotes/notes/4524-MCXVChain-gate-being-incorrectly-assembled-as-MCX-gate-df73b216e9777ecf.yaml deleted file mode 100644 index b9cb17d45ccb..000000000000 --- a/releasenotes/notes/4524-MCXVChain-gate-being-incorrectly-assembled-as-MCX-gate-df73b216e9777ecf.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -fixes: - - | - Implementations of the multi-controlled X Gate (``MCXGrayCode``, - ``MCXRecursive`` and ``MCXVChain``) have had their ``name`` - properties changed to more accurately describe their - implementation (``mcx_gray``, ``mcx_recursive``, and - ``mcx_vchain`` respectively.) Previously, these gates shared the - name ``mcx` with ``MCXGate``, which caused these gates to be - incorrectly transpiled and simulated. diff --git a/releasenotes/notes/4573-Open-ControlledGates-not-marked-equivalent-729bc971c897ede3.yaml b/releasenotes/notes/4573-Open-ControlledGates-not-marked-equivalent-729bc971c897ede3.yaml deleted file mode 100644 index ab01693f4e0e..000000000000 --- a/releasenotes/notes/4573-Open-ControlledGates-not-marked-equivalent-729bc971c897ede3.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - ``ControlledGate`` instances with a set ``ctrl_state`` were in some cases - not being evaluated as equal, even if the compared gates were equivalent. - This has been resolved. diff --git a/releasenotes/notes/Add-canonical-form-47e0466ed57640f3.yaml b/releasenotes/notes/Add-canonical-form-47e0466ed57640f3.yaml deleted file mode 100644 index 8f209440267b..000000000000 --- a/releasenotes/notes/Add-canonical-form-47e0466ed57640f3.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -features: - - | - Added a new DAG to qiskit; the dependency form. In this DAG, the node are - operation (gates, measure, barrier, etc...). The edges corresponds to - non-commutation between two operations. - The ''qiskit.dagcircuit.dagdependency'' introduces the DAGDependency class. - It allows to create an empty DAG dependency. For exmaple: - - from qiskit.dagcircuit.dependency import DAGDependency - - dag_dependency = DAGDependency() - - - | - The ''qiskit.converters.circuit_to_dagdependency'' introduces a converter - from a QuantumCircuit() object to a DAGDependency() object. - The ''qiskit.converters.dagdependency_to_ciruit'' introduces a converter - from a DAGDependency() object to a QuantumCircuit() object. - The ''qiskit.converters.dag_to_dagdepency'' introduces a converter - from a DAGCircuit() object to a DAGDependency() object. - The ''qiskit.converters.dagdependency_to_ciruit'' introduces a converter - from a DAGDependcy() object to a DAGCircuit() object. - - For example: - - from qiskit.converters.dagdependency_to_circuit import dagdependency_to_circuit - from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit - - circuit_in = QuantumCircuit(2) - circuit_in.h(qr[0]) - circuit_in.h(qr[1]) - - dag_dependency = circuit_to_dagdependency(circuit_in) - circuit_out = dagdepency_to_circuit(dag_dependency) - - - | - The ''qiskit/visualization/dag_visualization'' has been updated such that - it can draw DAG dependency forms. It takes the new argument 'type'. - - -issues: - - | - In ''qiskit.dagcircuit.dagdependency' the function commute could be - improved. diff --git a/releasenotes/notes/add-basistranslator-pass-d5e7de69ab9f20a1.yaml b/releasenotes/notes/add-basistranslator-pass-d5e7de69ab9f20a1.yaml deleted file mode 100644 index 9469f5b62455..000000000000 --- a/releasenotes/notes/add-basistranslator-pass-d5e7de69ab9f20a1.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -features: - - | - Two transpiler passes have been added to ``qiskit.transpiler.passes.basis``. - The first, ``UnrollCustomDefinitions``, unrolls all instructions in the - circuit according to their ``.definition`` property, stopping when reaching - either the specified ``basis_gates`` or a set of gates in the provided - ``EquivalenceLibrary``. The second, ``BasisTranslator``, uses the set of - translations in the provided ``EquivalenceLibrary`` to re-write circuit - instructions in a specified basis. diff --git a/releasenotes/notes/add-basistranslator-to-default-levels-1c0de250f8ca4a59.yaml b/releasenotes/notes/add-basistranslator-to-default-levels-1c0de250f8ca4a59.yaml deleted file mode 100644 index 897457c60ad4..000000000000 --- a/releasenotes/notes/add-basistranslator-to-default-levels-1c0de250f8ca4a59.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -prelude: - The transpiler now supports directly targeting a broader range of - device basis sets, including backends implementing the CZ and - iSwap gates. -features: - - | - A new ``translation_method`` keyword argument has been added to - ``qiskit.transpile`` to allow selection of the method to be used - for translating circuits to the available device gates. For example, - ``transpile(circ, backend, translation_method='translator')``. Valid - choices are ``'unroller'`` to use the ``Unroller`` pass and - ``'translator'`` to use the ``BasisTranslator`` pass. The default value - is ``'translator'``. diff --git a/releasenotes/notes/add-counts-class-7c75bd94d12a161a.yaml b/releasenotes/notes/add-counts-class-7c75bd94d12a161a.yaml deleted file mode 100644 index 560ca4707245..000000000000 --- a/releasenotes/notes/add-counts-class-7c75bd94d12a161a.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -features: - - | - A new class, :class:`qiskit.result.Counts` has been added. This class - is a subclass of ``dict`` and can be interacted with like any other - dictionary. But, it includes helper methods and attributes for dealing - with counts results from experiments and also handles post processing - and formatting of binary strings at object initialization. A ``Counts`` - object can be created by passing a dictionary of counts with the keys - being hexademical strings of the form ``'0x4a'`` and the value is the - number of shots. For example:: - - from qiskit.result import Counts - - counts = Counts({"0x0': 1, '0x1', 3, '0x2': 1020}) - - A ``Counts`` object can be treated as a dictionary of binary string keys - like the output of :meth:`qiskit.result.Result.get_counts`. diff --git a/releasenotes/notes/add-init-qubits-option-ea1844f88fcddcf6.yaml b/releasenotes/notes/add-init-qubits-option-ea1844f88fcddcf6.yaml deleted file mode 100644 index 0fc56fb93bbf..000000000000 --- a/releasenotes/notes/add-init-qubits-option-ea1844f88fcddcf6.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -features: - - | - Users can request whether the backend inserts any initialization sequences - at the start of each shot via ``assemble`` or ``execute``. By passing - ``init_qubits = False``, qubits will be uninitialized at the start of each - experiment and between shots. - - The default behavior is ``init_qubits = True``, which replicates the - previously implict behavior: all qubits are assumed to be in the ground - state at the start of each shot. diff --git a/releasenotes/notes/add-rep-delay-c97d5aa8fc9696da.yaml b/releasenotes/notes/add-rep-delay-c97d5aa8fc9696da.yaml deleted file mode 100644 index f9a8f6f46dc1..000000000000 --- a/releasenotes/notes/add-rep-delay-c97d5aa8fc9696da.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -features: - - | - Support for ``rep_delay`` flag added when assembling/executing a ``qobj``. ``rep_delay`` - denotes the time between program executions. It will only be used if - ``backend.configuration().dynamic_reprate_enabled``. In this case, its value must be within - range defined by the backend as ``backend.configuration().rep_delay_range``. If the user does - not supply a ``rep_delay`, the backend default - ``backend.configuration().default_rep_delay`` will be used (assuming it exists). If dynamic rep - rates are not enabled on the device, the qobj value of ``rep_delay`` will be ignored and - ``rep_time`` (the total duration of the program) will be used instead. - - | - ``qobj`` schema has been updated to include ``rep_delay``. - Backend configuration schema has been updated to include ``rep_delay_range`` and - ``default_rep_delay``. diff --git a/releasenotes/notes/add_quantumcircuit_phase-5006d1e930348d2e.yaml b/releasenotes/notes/add_quantumcircuit_phase-5006d1e930348d2e.yaml deleted file mode 100644 index 255913a55734..000000000000 --- a/releasenotes/notes/add_quantumcircuit_phase-5006d1e930348d2e.yaml +++ /dev/null @@ -1,17 +0,0 @@ -features: - - | - Adds a `global_phase` attribute to `QuantumCircuit` for tracking global - phase. This allows, for instance, to have the `to_matrix` method - of a gate to exactly correspond to its decompositions instead of - just up to a global phase. The same attribute has also been - extended to DAGCircuit so the phase can be tracked when converting - between QuantumCircuit and DAGCircuit. For example:: - - from qiskit import QuantumCircuit - circ = QuantumCircuit(1, phase=math.pi) - circ.u1(0) - - The global phase may also be set or queried with the `circ.global_phase` - property. In either case the setting is in radians. If the circuit - is converted to an instruction or gate the global phase is - represented by two single qubit rotations on the first qubit. diff --git a/releasenotes/notes/allowIntegerforQuantumRegisterSize-2e9a6cc033bc962e.yaml b/releasenotes/notes/allowIntegerforQuantumRegisterSize-2e9a6cc033bc962e.yaml deleted file mode 100644 index b137a7bb03e2..000000000000 --- a/releasenotes/notes/allowIntegerforQuantumRegisterSize-2e9a6cc033bc962e.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - Use numbers.Integral instead of Python's built-in ``int`` as - supported index to ``QuantumRegister`` and ``ClassicalRegister``. - diff --git a/releasenotes/notes/ancilla-qubit-cdf5fb28373b8553.yaml b/releasenotes/notes/ancilla-qubit-cdf5fb28373b8553.yaml deleted file mode 100644 index 71984f9ca477..000000000000 --- a/releasenotes/notes/ancilla-qubit-cdf5fb28373b8553.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -features: - - | - Add the concept of ancilla qubits, which wrap the qubit type but allow - to mark certain qubits as ancillas. This allows to re-use these work qubits - in larger circuits and algorithms or during transpilation. - The types are called ``AncillaRegister`` and ``AncillaQubit``. diff --git a/releasenotes/notes/basis-translate-by-synthesis-7bdfa76cdb1eee91.yaml b/releasenotes/notes/basis-translate-by-synthesis-7bdfa76cdb1eee91.yaml deleted file mode 100644 index c1fba0dd6457..000000000000 --- a/releasenotes/notes/basis-translate-by-synthesis-7bdfa76cdb1eee91.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -features: - - | - A new translation method which will attempt to synthesize gates - directly to the device basis has been added to the transpiler. - It can be invoked by providing ``translation_method='synthesis'`` - to calls to ``qiskit.transpile``. diff --git a/releasenotes/notes/bugfix-set-frequency-29608d213a8cbece.yaml b/releasenotes/notes/bugfix-set-frequency-29608d213a8cbece.yaml deleted file mode 100644 index 360e5339509a..000000000000 --- a/releasenotes/notes/bugfix-set-frequency-29608d213a8cbece.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - Fixed the SI unit conversion for :py:class:`qiskit.pulse.SetFrequency`. The - ``SetFrequency`` instruction should be in Hz on the frontend and has to be - converted to GHz when ``SetFrequency`` is converted to ``PulseQobjInstruction``. diff --git a/releasenotes/notes/change-pulse_lib-to-library-f8e76ff3136128ec.yaml b/releasenotes/notes/change-pulse_lib-to-library-f8e76ff3136128ec.yaml deleted file mode 100644 index 83fb1bd5f944..000000000000 --- a/releasenotes/notes/change-pulse_lib-to-library-f8e76ff3136128ec.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -upgrade: - - | - The ``qiskit.pulse.pulse_lib`` has been renamed ``qiskit.pulse.library``. -deprecations: - - | - The ``qiskit.pulse.pulse_lib`` has been deprecated and renamed to - :py:mod:`qiskit.pulse.library`. diff --git a/releasenotes/notes/circuit-control-8734da01db4f92e5.yaml b/releasenotes/notes/circuit-control-8734da01db4f92e5.yaml deleted file mode 100644 index 614c3a5c648d..000000000000 --- a/releasenotes/notes/circuit-control-8734da01db4f92e5.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -features: - - | - Add a ``control`` method to the ``QuantumCircuit`` to return a controlled - version of the circuit, with both open and closed controls. - This functionality has previously only been accessible via the ``Gate`` - object. The underlying implementation of ``QuantumCircuit.control`` - relies on ``Gate.control``. diff --git a/releasenotes/notes/circuit-repeat-8db21ef8d8c21cda.yaml b/releasenotes/notes/circuit-repeat-8db21ef8d8c21cda.yaml deleted file mode 100644 index c4e8fd74514d..000000000000 --- a/releasenotes/notes/circuit-repeat-8db21ef8d8c21cda.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -features: - - | - Add a ``QuantumCircuit.repeat`` method, which returns a new circuit object containing - a specified number of repetitions of the original circuit. The parameters are copied by - reference. \ No newline at end of file diff --git a/releasenotes/notes/circuit-reverse-bits-ce1873a89b06e3df.yaml b/releasenotes/notes/circuit-reverse-bits-ce1873a89b06e3df.yaml deleted file mode 100644 index 536eb3d8e9af..000000000000 --- a/releasenotes/notes/circuit-reverse-bits-ce1873a89b06e3df.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -features: - - | - A new method :meth:`~qiskit.circuit.QuantumCircuit.reverse_bits` has been - added to reverse the order of bits in a circuit (both quantum and classical - bits). This can be used to switch a circuit from little-endian to big-endian - and vice-versa. -deprecations: - - | - :meth:`~qiskit.circuit.QuantumCircuit.mirror` has been deprecated in favor - of :meth:`~qiskit.circuit.QuantumCircuit.reverse_ops` since mirroring could be - confused with swapping the output qubits of the circuit. Instead this method - only reverses the order of gates that are applied. diff --git a/releasenotes/notes/combine-into-edge-map-279441b53ed4e790.yaml b/releasenotes/notes/combine-into-edge-map-279441b53ed4e790.yaml deleted file mode 100644 index bab3998e4273..000000000000 --- a/releasenotes/notes/combine-into-edge-map-279441b53ed4e790.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -features: - - | - A :meth:`~qiskit.transpiler.Layout.combine_into_edge_map()` method is added - for converting two Layouts into a qubit map composing two circuits. diff --git a/releasenotes/notes/converters-equivalence-library-registration-optional-266758d497d82ce3.yaml b/releasenotes/notes/converters-equivalence-library-registration-optional-266758d497d82ce3.yaml deleted file mode 100644 index 40f0cbf4bf9b..000000000000 --- a/releasenotes/notes/converters-equivalence-library-registration-optional-266758d497d82ce3.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -upgrade: - - | - The ``circuit_to_gate`` and ``circuit_to_instruction`` converters had - previously automatically included the generated gate or instruction in the - active ``SessionEquivalenceLibrary``. These converters now accept an - optional ``equivalence_library`` keyword argument to specify if and where - the converted instances should be registered. The default behavior is not - to register the converted instance. diff --git a/releasenotes/notes/cregbundle-8c0ae7bd7875dd0f.yaml b/releasenotes/notes/cregbundle-8c0ae7bd7875dd0f.yaml deleted file mode 100644 index 7573e0bf058a..000000000000 --- a/releasenotes/notes/cregbundle-8c0ae7bd7875dd0f.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -upgrade: - - | - All the circuit drawers changed the default of the ``cregbundle`` to ``True``. If you want to preserver the - previous behavior, given a circuit ``circuit``, run ``circuit.draw(..., cregbundle=False)``. diff --git a/releasenotes/notes/deprecate-dag-qubits-method-0a61b37fa4a5bcd5.yaml b/releasenotes/notes/deprecate-dag-qubits-method-0a61b37fa4a5bcd5.yaml deleted file mode 100644 index 3f40dd1250d0..000000000000 --- a/releasenotes/notes/deprecate-dag-qubits-method-0a61b37fa4a5bcd5.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -deprecations: - - | - :meth:`~qiskit.dagcircuit.DAGCircuit.qubits` and - :meth:`~qiskit.dagcircuit.DAGCircuit.clbits` have been deprecated - as methods. They are now properties of the dag, and are cached so - accessing them is much faster. diff --git a/releasenotes/notes/deprecate-get_sample_pulse-b97028b14317996c.yaml b/releasenotes/notes/deprecate-get_sample_pulse-b97028b14317996c.yaml deleted file mode 100644 index d184218bffaf..000000000000 --- a/releasenotes/notes/deprecate-get_sample_pulse-b97028b14317996c.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -deprecations: - - | - Deprecated :meth:`qiskit.pulse.library.ParametricPulse.get_sample_pulse` in - favour of :meth:`qiskit.pulse.library.ParametricPulse.get_waveform`. diff --git a/releasenotes/notes/deprecate-optional-condition-arg-7645c645c738e290.yaml b/releasenotes/notes/deprecate-optional-condition-arg-7645c645c738e290.yaml deleted file mode 100644 index 3ba603e6832a..000000000000 --- a/releasenotes/notes/deprecate-optional-condition-arg-7645c645c738e290.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -deprecations: - - | - Use of optional ``condition`` argument in ``DAGNode``, ``apply_operation_back``, - ``apply_operation_front`` has been deprecated in favour of ``control`` - set in ``qiskit.circuit.Instruction``. \ No newline at end of file diff --git a/releasenotes/notes/disable-default-plot-table-330705e3118fac6a.yaml b/releasenotes/notes/disable-default-plot-table-330705e3118fac6a.yaml deleted file mode 100644 index 4ae1aedd4d3e..000000000000 --- a/releasenotes/notes/disable-default-plot-table-330705e3118fac6a.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -deprecations: - - | - Schedule plotting with :py:meth:`qiskit.pulse.Schedule.draw` will no - longer display the event table by default. This may be reenabled with - ``Schedule.draw(table=True)``. diff --git a/releasenotes/notes/disallow_num_ctrl_qubits_zero-eb102aa087f30250.yaml b/releasenotes/notes/disallow_num_ctrl_qubits_zero-eb102aa087f30250.yaml deleted file mode 100644 index aad8236a695e..000000000000 --- a/releasenotes/notes/disallow_num_ctrl_qubits_zero-eb102aa087f30250.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -fixes: - - | - Previously it was possible to set the number of control qubits to zero in which case the - the original, potentially non-controlled, operation would be returned. This could cause - an AttributeError if the caller attempts to access an attribute which only ControlledGates - have. This fix adds a getter/setter for num_ctrl_qubits to handle validation. diff --git a/releasenotes/notes/fix-unrolling-open-ctrl-gate-4a72116526afb1fd.yaml b/releasenotes/notes/fix-unrolling-open-ctrl-gate-4a72116526afb1fd.yaml deleted file mode 100644 index 1b822775eb8d..000000000000 --- a/releasenotes/notes/fix-unrolling-open-ctrl-gate-4a72116526afb1fd.yaml +++ /dev/null @@ -1,7 +0,0 @@ -fixes: - - | - Open controls were implemented by modifying a gate\'s - definition. However, when the gate already exists in the basis, - this definition is not used, which yields incorrect circuits sent - to a backend. This modifies the unroller to output the definition - if it encounters a controlled gate with open controls. diff --git a/releasenotes/notes/fix-zz-feature-map-barriers-ab1a2d930a6b5af1.yaml b/releasenotes/notes/fix-zz-feature-map-barriers-ab1a2d930a6b5af1.yaml deleted file mode 100644 index f88192f8a0bf..000000000000 --- a/releasenotes/notes/fix-zz-feature-map-barriers-ab1a2d930a6b5af1.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - The ``insert_barriers`` keyword argument in the ``ZZFeatureMap`` class - didn't actually insert barriers in between the Hadamard layers and - evolution layers. This has been fixed. diff --git a/releasenotes/notes/implement-set-phase-b5581ad6085b3cec.yaml b/releasenotes/notes/implement-set-phase-b5581ad6085b3cec.yaml deleted file mode 100644 index 9165ce05fd3f..000000000000 --- a/releasenotes/notes/implement-set-phase-b5581ad6085b3cec.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -features: - - | - Added Phase instruction - :py:class:`~qiskit.pulse.SetPhase`. It sets the phase of the - proceeding pulses to ``phase`` radians. For example:: - - sched += SetPhase(3.14, DriveChannel(0)) - - In this example, the phase of the pulses applied to ``DriveChannel(0)`` after the - ``SetPhase`` instruction will be set to 3.14 radians. diff --git a/releasenotes/notes/implement-shift-frequency-46d4ea16d8be2f58.yaml b/releasenotes/notes/implement-shift-frequency-46d4ea16d8be2f58.yaml deleted file mode 100644 index c5e264ab3c74..000000000000 --- a/releasenotes/notes/implement-shift-frequency-46d4ea16d8be2f58.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -features: - - | - The :py:class:`~qiskit.pulse.instructions.ShiftFrequency` instruction allows users - to shift the frequency from the set frequency. For example:: - - sched += ShiftFrequency(-340e6, DriveChannel(0)) - - In this example, all the pulses applied to ``DriveChannel(0)`` after the - ``ShiftFrequency`` command will have the envelope a frequency decremented by 340MHz. diff --git a/releasenotes/notes/level0_RemoveResetInZeroState-942c0fb19cb6c087.yaml b/releasenotes/notes/level0_RemoveResetInZeroState-942c0fb19cb6c087.yaml deleted file mode 100644 index 59e198d055d2..000000000000 --- a/releasenotes/notes/level0_RemoveResetInZeroState-942c0fb19cb6c087.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -upgrade: - - | - The pass ``RemoveResetInZeroState`` is not run in transpiler optimization level 0 anymore. diff --git a/releasenotes/notes/line_length_remove_0.10-d13e5a15524e67c0.yaml b/releasenotes/notes/line_length_remove_0.10-d13e5a15524e67c0.yaml deleted file mode 100644 index 9b3f63fe5eea..000000000000 --- a/releasenotes/notes/line_length_remove_0.10-d13e5a15524e67c0.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -upgrade: - - | - In 0.10 the parameter ``line_length`` in the method ``QuantumCircuit.draw`` was deprecated. - This parameter is being removed. diff --git a/releasenotes/notes/mpl-scaling-fix-823c3e3d3cb2d9d1.yaml b/releasenotes/notes/mpl-scaling-fix-823c3e3d3cb2d9d1.yaml deleted file mode 100644 index fe39c0da7830..000000000000 --- a/releasenotes/notes/mpl-scaling-fix-823c3e3d3cb2d9d1.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -fixes: - - | - The matplotlib (mpl) drawer was not properly scaling when the kwarg - ``scale`` was set in the QuantumCircuit.draw method. Fonts and linewidths - did not scale with the rest of the image. All elements of the circuit - scale properly now. - - Fixes issue `#4179 `_. - - For example: - - .. jupyter-execute:: - - from qiskit import QuantumCircuit - circuit = QuantumCircuit(2) - circuit.h(0) - circuit.cx(0, 1) - circuit.draw(output='mpl', scale=0.5) diff --git a/releasenotes/notes/op_tolerance_dep-d0d931f029e27a44.yaml b/releasenotes/notes/op_tolerance_dep-d0d931f029e27a44.yaml deleted file mode 100644 index 4764b1d198f9..000000000000 --- a/releasenotes/notes/op_tolerance_dep-d0d931f029e27a44.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -upgrade: - - | - The :class:`qiskit.quantum_info.operators.BaseOperator` and - :class:`qiskit.quantum_info.states.QuantumState` and their derived - classes use now property style setters and getters to retrieve - and set `atol` and `rtol` class properties - - .. code-block:: - - ScalarOp.atol = 3e-5 - -deprecations: - - | - The ``set_atol`` and ``set_rtol`` class methods of the - :class:`qiskit.quantum_info.operators.BaseOperator` and - :class:`qiskit.quantum_info.states.QuantumState` classes are deprecated. - Use `.atol` and `.rtol` instead. diff --git a/releasenotes/notes/parameter-conjugate-a16fd7ae0dc18ede.yaml b/releasenotes/notes/parameter-conjugate-a16fd7ae0dc18ede.yaml deleted file mode 100644 index ee911b6d5fb2..000000000000 --- a/releasenotes/notes/parameter-conjugate-a16fd7ae0dc18ede.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -fixes: - - | - Add a ``conjugate`` method to the ``ParameterExpression`` to allow - calling ``numpy.conj()`` without raising an error. Since the - ``ParameterExpression`` is real, it returns itself. - This behaviour is analogous to Python floats/ints. diff --git a/releasenotes/notes/phase-estimation-circuit-c22d71d88873aa77.yaml b/releasenotes/notes/phase-estimation-circuit-c22d71d88873aa77.yaml deleted file mode 100644 index 5858e3592a39..000000000000 --- a/releasenotes/notes/phase-estimation-circuit-c22d71d88873aa77.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -features: - - | - Add the ``PhaseEstimation`` circuit to the circuit library. diff --git a/releasenotes/notes/qasm_remove_0.9-7150d53da8eebfd8.yaml b/releasenotes/notes/qasm_remove_0.9-7150d53da8eebfd8.yaml deleted file mode 100644 index a9dc28bf697a..000000000000 --- a/releasenotes/notes/qasm_remove_0.9-7150d53da8eebfd8.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -upgrade: - - | - In 0.9, ``Qasm.get_tokens`` and ``QasmParser.get_tokens`` were deprecated. - These methods are being removed. diff --git a/releasenotes/notes/qsphere-state-display-819cc1e3e61314a2.yaml b/releasenotes/notes/qsphere-state-display-819cc1e3e61314a2.yaml deleted file mode 100644 index 98d3d9ab4f69..000000000000 --- a/releasenotes/notes/qsphere-state-display-819cc1e3e61314a2.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -features: - - | - Introduced an update to ``plot_state_qsphere`` that shows the basis states next - to each blob by default. This feature can be disabled using the ``show_state_labels`` - argument. - - | - Introduced an argument to ``plot_state_qsphere`` called ``show_state_phases`` which is - set to ``False`` by default. When enabled, it displays the phase of each basis state. - - | - Introduced an argument to ``plot_state_qsphere`` called ``use_degrees`` which is - set to ``False`` by default. When enabled, it displays the phase of each basis state - in degrees, along with the phase circle at the bottom right. diff --git a/releasenotes/notes/quadratic-form-circuit-f0ddb1694960cbc1.yaml b/releasenotes/notes/quadratic-form-circuit-f0ddb1694960cbc1.yaml deleted file mode 100644 index ebc7dc7c4d4d..000000000000 --- a/releasenotes/notes/quadratic-form-circuit-f0ddb1694960cbc1.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -features: - - | - Added a circuit implementing a quadratic form on binary variables. - The circuit implements the operation - :math:`|x\rangle |0\rangle \mapsto |x\rangle |Q(x) \mod 2^m\rangle` - for the quadratic form :math:`Q` and :math:`m` output qubits. - The quadratic form is specified using a matrix for the quadratic - terms, a vector for the linear terms and a constant offset. diff --git a/releasenotes/notes/quantum_volume_rng-2e6f46e3821aebeb.yaml b/releasenotes/notes/quantum_volume_rng-2e6f46e3821aebeb.yaml deleted file mode 100644 index a4541e1fa437..000000000000 --- a/releasenotes/notes/quantum_volume_rng-2e6f46e3821aebeb.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -features: - - | - Allow passing in a Numpy random ``Generator`` object for the ``seed`` kwarg - in :class:`qiskit.circuit.library.QuantumVolume`. diff --git a/releasenotes/notes/quantumcircuit-compose-without-dag-b19e518a8f2fbeb0.yaml b/releasenotes/notes/quantumcircuit-compose-without-dag-b19e518a8f2fbeb0.yaml deleted file mode 100644 index bc4d9d15abab..000000000000 --- a/releasenotes/notes/quantumcircuit-compose-without-dag-b19e518a8f2fbeb0.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -features: - - | - ``QuantumCircuit.compose`` now supports the ``front`` keyword argument for - prepending the other circuit before the origin circuit. diff --git a/releasenotes/notes/remove-channels-to-plot-argument-388c6b33ed00b0d6.yaml b/releasenotes/notes/remove-channels-to-plot-argument-388c6b33ed00b0d6.yaml deleted file mode 100644 index c53e2ae088da..000000000000 --- a/releasenotes/notes/remove-channels-to-plot-argument-388c6b33ed00b0d6.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -other: - - | - Removed ``channels_to_plot`` argument from :meth:`~qiskit.pulse.Schedule.draw`, - :meth:`~qiskit.pulse.Instruction.draw`, :meth:`~qiskit.visualization.pulse.matplotlib.ScheduleDrawer.draw`, - :func:`~qiskit.visualization.pulse_drawer` which had been deprecated and replaced with ``channels`` in - Terra release 0.11.0. diff --git a/releasenotes/notes/remove-circuit-instruction-map-37fb34c3b5fe033c.yaml b/releasenotes/notes/remove-circuit-instruction-map-37fb34c3b5fe033c.yaml deleted file mode 100644 index 9ca24748ea9e..000000000000 --- a/releasenotes/notes/remove-circuit-instruction-map-37fb34c3b5fe033c.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -other: - - | - Removed ``circuit_instruction_map`` attribute from ``PulseDefaults`` which - had been deprecated and replaced with ``instruction_schedule_map`` in - Terra release 0.12.0. diff --git a/releasenotes/notes/remove-deprecated-pulse-code-9ec2dba175058c5f.yaml b/releasenotes/notes/remove-deprecated-pulse-code-9ec2dba175058c5f.yaml deleted file mode 100644 index 03b4a1a0fe75..000000000000 --- a/releasenotes/notes/remove-deprecated-pulse-code-9ec2dba175058c5f.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -upgrade: - - | - The ``union`` method of :py:class:`~qiskit.pulse.Schedule` and - :py:class:`~qiskit.pulse.Instruction` have been deprecated since - Terra 0.12.0 and have now been removed. Use ``insert`` with ``time=0``. - - | - The ``scaling`` argument to the ``draw`` method of - :py:class:`~qiskit.pulse.Schedule` and :py:class:`~qiskit.pulse.Instruction` - has been replaced with ``scale`` since Terra 0.12.0 and now removed. Use - ``scale`` instead. - - | - The ``period`` argument to :py:mod:`qiskit.pulse.library` functions has - been replaced by ``freq`` since Terra 0.13.0 and now removed. Use ``freq`` - instead of ``period``. diff --git a/releasenotes/notes/remove-deprecated-pulse-commands-18381c59264090dd.yaml b/releasenotes/notes/remove-deprecated-pulse-commands-18381c59264090dd.yaml deleted file mode 100644 index 6817f0f101be..000000000000 --- a/releasenotes/notes/remove-deprecated-pulse-commands-18381c59264090dd.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -upgrade: - - | - The `qiskit.pulse.commands` module containing `Commands` was deprecated in - Terra release 0.13.0 and have now been removed. You will have to upgrade - your Pulse code if you were still using commands. For example:: - - # old - Command(args)(channel) - - # new - Instruction(args, channel) - - :: - - Acquire(duration)(AcquireChannel(0)) -> Acquire(duration, AcquireChannel(0)) - Delay(duration)(channel) -> Delay(duration, channel) - - # FrameChange was also renamed - FrameChange(angle)(DriveChannel(0)) -> ShiftPhase(angle, DriveChannel(0)) - - # Pulses need to be `Play`d - Gaussian(...)(DriveChannel(0)) -> Play(Gaussian(...), DriveChannel(0)) diff --git a/releasenotes/notes/remove-multi-acquires-747701103ddd816c.yaml b/releasenotes/notes/remove-multi-acquires-747701103ddd816c.yaml deleted file mode 100644 index 477d5f4afcbc..000000000000 --- a/releasenotes/notes/remove-multi-acquires-747701103ddd816c.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -deprecations: - - | - The properties ``acquires``, ``mem_slots``, and ``reg_slots`` of the - :class:`qiskit.pulse.instructions.Acquire` pulse instruction have been - deprecated. -other: - - | - The option to Acquire multiple qubits at once was deprecated in Terra - release 0.12.0 and is now removed. Specifically, the init args - ``mem_slots`` and ``reg_slots`` have been removed from - :class:`qiskit.pulse.instructions.Acquire`, and ``channel``, ``mem_slot`` - and ``reg_slot`` will raise an error if a list is provided as input. diff --git a/releasenotes/notes/remove-use_networkx-e1c846a9f8f2ff6a.yaml b/releasenotes/notes/remove-use_networkx-e1c846a9f8f2ff6a.yaml deleted file mode 100644 index c7651342f714..000000000000 --- a/releasenotes/notes/remove-use_networkx-e1c846a9f8f2ff6a.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -upgrade: - - | - Support for the use of the ``USE_RETWORKX`` environment variable which was - introduced in the 0.13.0 release to provide an optional fallback to the - legacy networkx based :class:`qiskit.dagcircuit.DAGCircuit` implementation - has been removed. This flag was only intended as provide a relief valve for - any users that encountered a problem with the new implementation for one - release during the transition. diff --git a/releasenotes/notes/sabre-2a3bba505e48ee82.yaml b/releasenotes/notes/sabre-2a3bba505e48ee82.yaml deleted file mode 100644 index dee12e47a076..000000000000 --- a/releasenotes/notes/sabre-2a3bba505e48ee82.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -features: - - | - Two new methods for layout and routing have been added - to the transpiler. They can be selected by - passing the `layout_method='sabre'` and `routing_method='sabre'` - to the :meth:`~qiskit.transpile()` function. The methods are based on - Li et al. Tackling the Qubit Mapping Problem for NISQ-Era Quantum Devices, - ASPLOS 2019. diff --git a/releasenotes/notes/sqrt-x-gates-3aba219f0efd8900.yaml b/releasenotes/notes/sqrt-x-gates-3aba219f0efd8900.yaml deleted file mode 100644 index b831fc3e2933..000000000000 --- a/releasenotes/notes/sqrt-x-gates-3aba219f0efd8900.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -features: - - | - Added the sqrt(X), its adjoint and controlled-sqrt(X) gates as circuit methods. - They are available as ``QuantumCircuit.sx``, ``QuantumCircuit.sxdg`` - and ``QuantumCircuit.csx``, with the respective gate classes ``SXGate``, - ``SXdgGate`` and ``CSXGate``. diff --git a/releasenotes/notes/to_gate_label-d825a2997a504604.yaml b/releasenotes/notes/to_gate_label-d825a2997a504604.yaml deleted file mode 100644 index 1f8985d330ce..000000000000 --- a/releasenotes/notes/to_gate_label-d825a2997a504604.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -features: - - | - The method :meth:`~qiskit.circuit.QuantumCircuit.to_gate` was extended with a - parameter ``label`` to set a label to the resulting gate. diff --git a/releasenotes/notes/transformationpass_propertyset-3d1d9aedad9860be.yaml b/releasenotes/notes/transformationpass_propertyset-3d1d9aedad9860be.yaml deleted file mode 100644 index 898eda6db886..000000000000 --- a/releasenotes/notes/transformationpass_propertyset-3d1d9aedad9860be.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -other: - - | - The pass manager design did not allow transformation passes to modify the property set. However, - this design decision has some inefficiencies. We relaxed that restriction to allow transformation - passes to modify the property set. diff --git a/releasenotes/notes/transpiler_fails_with_condition-9b4b4d66406548f0.yaml b/releasenotes/notes/transpiler_fails_with_condition-9b4b4d66406548f0.yaml deleted file mode 100644 index 192bb910e34a..000000000000 --- a/releasenotes/notes/transpiler_fails_with_condition-9b4b4d66406548f0.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - Previously when a circuit contained a conditional statement, the transpiler - would sometimes fail with an UnboundLocalError if using optimization level 3. - Fixes issue `#4672 `_. diff --git a/releasenotes/notes/u-and-phase-gate-e308fb4bb009014f.yaml b/releasenotes/notes/u-and-phase-gate-e308fb4bb009014f.yaml deleted file mode 100644 index 757f0758d7eb..000000000000 --- a/releasenotes/notes/u-and-phase-gate-e308fb4bb009014f.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -features: - - | - Added the ``UGate``, ``CUGate``, ``PhaseGate`` and ``CPhaseGate`` with - the corresponding circuit methods, ``u()``, ``cu()``, ``p()`` and ``cp()``. - The U gate is the generic 3-qubit gate and the CU gate it's controlled - version. CU has 4 parameters to account for a possible global phase of - the U gate. The Phase and CPhase gates are the general Phase gate - at an arbitrary angle and it's controlled version. diff --git a/releasenotes/notes/updated_mpl_drawer-1498741fc64ac42a.yaml b/releasenotes/notes/updated_mpl_drawer-1498741fc64ac42a.yaml deleted file mode 100644 index 6b692ab3d44b..000000000000 --- a/releasenotes/notes/updated_mpl_drawer-1498741fc64ac42a.yaml +++ /dev/null @@ -1,114 +0,0 @@ ---- -features: - - | - A new kwarg, ``cregbundle`` has been added to the - :func:`qiskit.visualization.circuit_drawer` function and the - :class:`~qiskit.circuit.QuantumCircuit` method - :meth:`~qiskit.circuit.QuantumCircuit.draw`. When set to ``True`` the - cregs will be bundled into a single line in circuit visualizations for the - ``text`` and ``mpl`` drawers. The default value is ``True``. - Addresses issue `#4290 `_. - - For example: - - .. jupyter-execute:: - - from qiskit import QuantumCircuit - circuit = QuantumCircuit(2) - circuit.measure_all() - circuit.draw(output='mpl', cregbundle=True) - - | - A new kwarg, ``initial_state`` has been added to the - :func:`qiskit.visualization.circuit_drawer` function and the - :class:`~qiskit.circuit.QuantumCircuit` method - :meth:`~qiskit.circuit.QuantumCircuit.draw`. When set to ``True`` the - initial state will now be included in circuit visualizations for all drawers. - Addresses issue `#4293 `_. - - For example: - - .. jupyter-execute:: - - from qiskit import QuantumCircuit - circuit = QuantumCircuit(2) - circuit.measure_all() - circuit.draw(output='mpl', initial_state=True) - - | - Labels will now be displayed when using the 'mpl' drawer. There are 2 - types of labels - gate labels and control labels. Gate labels will - replace the gate name in the display. Control labels will display - above or below the controls for a gate. - Fixes issues #3766, #4580 - Addresses issues `#3766 `_ - and `#4580 `_. - - For example: - - .. jupyter-execute:: - - from qiskit import QuantumCircuit - from qiskit.circuit.library.standard_gates import YGate - circuit = QuantumCircuit(2) - circuit.append(YGate(label='A Y Gate').control(label='Y Control'), [0, 1]) - circuit.draw(output='mpl') -deprecations: - - | - The style dictionary key ``cregbundle`` has been deprecated and will be - removed in a future release. This has been replaced by the - kwarg ``cregbundle`` added to the - :func:`qiskit.visualization.circuit_drawer` function and the - :class:`~qiskit.circuit.QuantumCircuit` method - :meth:`~qiskit.circuit.QuantumCircuit.draw`. - The default value is ``True``. -fixes: - - | - On some occasions long gate and register names would overflow, or leave - excessive empty space around them. This has been fixed by using correct - text widths for a proportional font. Fixes issues - `#4611 `_, - `#4605 `_, - `#4545 `_, - `#4497 `_, - `#4449 `_, - and `#3641 `_. - - | - When using the style dictionary key 'showindex', the index numbers at - the top of the column did not line up properly. This has been fixed. - - | - The drawer now consistently captializes gate names. - - | - When using cregbunde=True and measuring onto a second fold, the measure - arrow would overwrite the creg count. The count was moved to the left - to prevent this. Fixes issue - `#4148 `_. - - | - The controlled swap and controlled rzz gates now display with their - appropriate symbols instead of in a box. - - | - Controlled gates created using the to_gate() method were not properly - spacing and could overflow onto other gates. This has been fixed. - - | - Controlled X gates with more than 2 controls now display the same - target-cross instead of an X in a box. - - | - Gates with arrays as parameters, such as Hamiltonian, no longer display - with excessive space around them. Fixes issue - `#4352 `_. - - | - Gates created using the Gate() method now display the proper background - color for the gate. Fixes issue - `#4496 `_. - - | - An 'Attribute Error' that occurred when using isometry or initialize - has been fixed. Fixes issue - `#4439 `_. - - | - Some open-controlled gates did not properly display the open conntrols. - They now do. Fixes issue - `#4248 `_. - - | - The style dictionary key 'backgroundcolor' now properly displays the color. - - | - Setting the fold parameter to the draw() method to -1 will now properly - display the circuit with no folding. Fixes issue - `#4506 `_. diff --git a/releasenotes/notes/zero-param-pulse-ends-c3ad82eae66f9252.yaml b/releasenotes/notes/zero-param-pulse-ends-c3ad82eae66f9252.yaml deleted file mode 100644 index f78c3b85fc70..000000000000 --- a/releasenotes/notes/zero-param-pulse-ends-c3ad82eae66f9252.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fixes: - - | - Zero ends of parametric pulses by default. The endpoints are defined such that for function - ``f(x)`` one has ``f(-1) = f(duration + 1) = 0``.