Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow reusing and reseting wires after a mid-circuit measurement #4402

Merged
merged 126 commits into from
Aug 15, 2023

Conversation

mudit2812
Copy link
Contributor

@mudit2812 mudit2812 commented Jul 27, 2023

Context:
Making mid-circuit measurements more feature rich.

Description of the Change:

  • qml.defer_measurements no longer raises an error if a qubit is reused after measurement, and includes functionality to reset qubits.
  • Updated qml.measure to include a reset keyword argument for reseting qubits to the $|0\rangle$ computational basis state after measurement.

Qubit reuse is enabled by by applying a CNOT gate controlled on the measured wire to an auxiliary target wire to store the measurement state on the auxiliary wire. Using CNOT will cause entanglement between the measured wire and the rest of the wires to be "copied" to the auxiliary wire. Hence, the measured wire can be reused while still preserving the measurement state in the auxiliary wire, which, defer_measurements uses as the control wires for controlled operations created by qml.cond.

For qubit reset, qml.defer_measurements applies a CNOT gate controlled on the auxiliary wire to the target measured wire. A CNOT between two wires in the same state reduces the target wire to the $|0\rangle$ state.

Benefits:

  • Qubit reuse and reset is possible on PennyLane

Possible Drawbacks:

  • Until defer_measurements is ported over to the new transforms API, custom wire labels will not be allowed.
  • Users need to remember to initialize old-gen devices with n extra wires for n mid-circuit measurements, and make sure that the last n wires are reserved for mid-circuit measurement states.
  • Space complexity for circuits with mid-circuit measurements will scale as $O(2^n)$ for n mid-circuit measurements, as a new wire will be added for each mid-circuit measurement.
  • Since new wires will be added, old-gen devices will need to be initialized with as many extra wires as the number of mid-circuit measurements.

Related GitHub Issues:

@mudit2812
Copy link
Contributor Author

[sc-36565] [sc-38882]

mudit2812 and others added 24 commits July 27, 2023 17:03
* Add vjp/jvp capabilities

* pylint

* some tests for simulate

* Fix syntax error

* Split simulate

* Add some tests

* pylint

* more device tests

* pylint and fix tests

* change tracker keys

* Update pennylane/devices/qubit/adjoint_jacobian.py

Co-authored-by: Christina Lee <christina@xanadu.ai>

* other places

* Add docs for simulate funcs

* revert suggestion

* Remove validation

* Add validation for use_device_gradient

* remove None case

* use device gradient in validation

* changelog

---------

Co-authored-by: Christina Lee <christina@xanadu.ai>
…ded (#4394)

* initialize dev rng from global state

* change default value to global str

* Apply suggestions from code review

Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>

* Update tests/devices/experimental/test_default_qubit_2.py

* fix indentation

---------

Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>
* Testing changes to operator __eq__

* Updated until `nodes_between`

* Updated metric tensor, circuit graph

* Updating `qml.equal`

* Linters

* Updated tape tests

* Added coverage

* Updates changelog

* Removed changes to __eq__ and __hash__

* Update pennylane/operation.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Update pennylane/ops/functions/equal.py

Co-authored-by: Christina Lee <christina@xanadu.ai>

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: Christina Lee <christina@xanadu.ai>
* Fixes for new autoray version

* unused import

* Use if instead of try-except

* Fix case of two torch tensors

* pin autoray

* dispatch

* test with new version
…aviour (#4144)

* Updated Operator

* Added tests

* Updated warning

* black

* Updated warning text

* black

* Update doc/development/deprecations.rst

* Updated docs, tests

* Updated deprecations.rst

* Fixing tests

* Updated tests and warnings

* Pylint

* Testing warnings

* Testing changes

* Updated tests

* testing what breaks

* Checking tests

* Testing changes

* Testing changes to operator __eq__

* Updated until `nodes_between`

* Updated metric tensor, circuit graph

* Updating `qml.equal`

* Linters

* Updated tape tests

* Added coverage

* Updates changelog

* Removed changes to __eq__ and __hash__

* Update pennylane/operation.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Testing changes to operator __eq__

* Updated until `nodes_between`

* Updated metric tensor, circuit graph

* Updating `qml.equal`

* Linters

* Fixes for new autoray version (#4396)

* Fixes for new autoray version

* unused import

* Use if instead of try-except

* Fix case of two torch tensors

* Updated tape tests

* Add ability to apply `TransformProgram` to batch of tapes (#4364)

* Draft structure

* draf exec

* Simple execute

* Update

* More tests

* Update

* Update exec

* Pylint and black

* Update tests

* Update more tests

* More tests

* changelog

* Coverage

* Cover fix

* pylint

* Pylint

* Pylint tests

* proposed changes to transform program integration

* oops

* add to legacy, remove cotransform support

* just transform program call component

* just transform program call component

* no longer support cotransforms, fix _batch_postprocessing

* some more testing

* test null postprocessing function

* docstring, rename batch_slices to slices, black

* Apply suggestions from code review

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

---------

Co-authored-by: rmoyard <rmoyard@gmail.com>
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* torch qnode integration with DefaultQubit2 (#4392)

* copy-paste torch file; replace device in most places

* make tests work; little changes in pennylane

* pylint fix

* changelog

* update test name and docstring for hamiltonian_expand

* minimal test for single-shot bugfix

* Added coverage

* Updates changelog

* Removed changes to __eq__ and __hash__

* Update pennylane/operation.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Updated deprecations to 0.32

* Added warnings

* Trigger CI

* Removed docstrings

* Added correctness test

* Trigger CI

---------

Co-authored-by: Tom Bromley <49409390+trbromley@users.noreply.github.com>
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>
Co-authored-by: Christina Lee <christina@xanadu.ai>
Co-authored-by: rmoyard <rmoyard@gmail.com>
* copy-paste tf files

* make tests work; little changes in pennylane

* changes coming from torch PR first

* update remaining test files

* support tf.function by adding empty kwargs

* update copyright year in test files

* changelog

* put all qnode integrations together
* Fix jax.ad deprecation.

* Update changelog.

* Print name of requested device in DeviceError.

* Force push.

* Fix pytest.raises in test_device.py
* fix has_decomposition for ControlledQubitUnitary

* changelog

* add comment; add test when super returns False
* `wire_order` kwarg for `Tensor.sparse_matrix()`

* update changelog

* swap kwarg order

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* adapt docstring to the kwarg order swap

* add comment about using  over

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
@mudit2812 mudit2812 changed the base branch from master to mv-merge August 2, 2023 17:33
@mudit2812 mudit2812 requested a review from a team August 11, 2023 16:35
@mudit2812 mudit2812 added this to the v0.32 milestone Aug 14, 2023
@mudit2812 mudit2812 requested a review from albi3ro August 14, 2023 15:16
Copy link
Contributor

@lillian542 lillian542 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! 🚀 I left a few very minor suggestions/questions wrt tests, but that's all from me.

tests/devices/qubit/test_preprocess.py Show resolved Hide resolved
tests/test_qnode.py Show resolved Hide resolved
tests/transforms/test_defer_measurements.py Show resolved Hide resolved
pennylane/transforms/defer_measurements.py Outdated Show resolved Hide resolved
pennylane/transforms/defer_measurements.py Outdated Show resolved Hide resolved
pennylane/transforms/defer_measurements.py Outdated Show resolved Hide resolved
mudit2812 and others added 2 commits August 15, 2023 17:21
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
@mudit2812 mudit2812 requested a review from timmysilv August 15, 2023 21:24
@mudit2812 mudit2812 enabled auto-merge (squash) August 15, 2023 21:49
@mudit2812 mudit2812 merged commit 081ee5c into master Aug 15, 2023
@mudit2812 mudit2812 deleted the qubit-reuse branch August 15, 2023 23:54
Copy link
Contributor

@trbromley trbromley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @mudit2812! Will we have a follow up PR to update the docs here?

Comment on lines +117 to +118
While such statements may not result in errors, they may result in
incorrect behaviour.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does this mean?

mlxd pushed a commit that referenced this pull request Aug 23, 2023
* Added qubit reuse and reset

* Fixed `defer_measurements`

* Removed `MeasurementValue`

* Update type hint

* Removed `MeasurementValue`

* Add VJP/JVP capabilities to `DefaultQubit2` (#4374)

* Add vjp/jvp capabilities

* pylint

* some tests for simulate

* Fix syntax error

* Split simulate

* Add some tests

* pylint

* more device tests

* pylint and fix tests

* change tracker keys

* Update pennylane/devices/qubit/adjoint_jacobian.py

Co-authored-by: Christina Lee <christina@xanadu.ai>

* other places

* Add docs for simulate funcs

* revert suggestion

* Remove validation

* Add validation for use_device_gradient

* remove None case

* use device gradient in validation

* changelog

---------

Co-authored-by: Christina Lee <christina@xanadu.ai>

* Initialize `DefaultQubit2` local rng from global rng if no seed provided (#4394)

* initialize dev rng from global state

* change default value to global str

* Apply suggestions from code review

Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>

* Update tests/devices/experimental/test_default_qubit_2.py

* fix indentation

---------

Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>

* Changes to remove use of `Operator.__eq__` (#4398)

* Testing changes to operator __eq__

* Updated until `nodes_between`

* Updated metric tensor, circuit graph

* Updating `qml.equal`

* Linters

* Updated tape tests

* Added coverage

* Updates changelog

* Removed changes to __eq__ and __hash__

* Update pennylane/operation.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Update pennylane/ops/functions/equal.py

Co-authored-by: Christina Lee <christina@xanadu.ai>

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: Christina Lee <christina@xanadu.ai>

* Make autoray changes backwards compatible (#4397)

* Fixes for new autoray version

* unused import

* Use if instead of try-except

* Fix case of two torch tensors

* pin autoray

* dispatch

* test with new version

* Raise warning in Operator `__eq__` and `__hash__` about change in behaviour (#4144)

* Updated Operator

* Added tests

* Updated warning

* black

* Updated warning text

* black

* Update doc/development/deprecations.rst

* Updated docs, tests

* Updated deprecations.rst

* Fixing tests

* Updated tests and warnings

* Pylint

* Testing warnings

* Testing changes

* Updated tests

* testing what breaks

* Checking tests

* Testing changes

* Testing changes to operator __eq__

* Updated until `nodes_between`

* Updated metric tensor, circuit graph

* Updating `qml.equal`

* Linters

* Updated tape tests

* Added coverage

* Updates changelog

* Removed changes to __eq__ and __hash__

* Update pennylane/operation.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Testing changes to operator __eq__

* Updated until `nodes_between`

* Updated metric tensor, circuit graph

* Updating `qml.equal`

* Linters

* Fixes for new autoray version (#4396)

* Fixes for new autoray version

* unused import

* Use if instead of try-except

* Fix case of two torch tensors

* Updated tape tests

* Add ability to apply `TransformProgram` to batch of tapes (#4364)

* Draft structure

* draf exec

* Simple execute

* Update

* More tests

* Update

* Update exec

* Pylint and black

* Update tests

* Update more tests

* More tests

* changelog

* Coverage

* Cover fix

* pylint

* Pylint

* Pylint tests

* proposed changes to transform program integration

* oops

* add to legacy, remove cotransform support

* just transform program call component

* just transform program call component

* no longer support cotransforms, fix _batch_postprocessing

* some more testing

* test null postprocessing function

* docstring, rename batch_slices to slices, black

* Apply suggestions from code review

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

---------

Co-authored-by: rmoyard <rmoyard@gmail.com>
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* torch qnode integration with DefaultQubit2 (#4392)

* copy-paste torch file; replace device in most places

* make tests work; little changes in pennylane

* pylint fix

* changelog

* update test name and docstring for hamiltonian_expand

* minimal test for single-shot bugfix

* Added coverage

* Updates changelog

* Removed changes to __eq__ and __hash__

* Update pennylane/operation.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Updated deprecations to 0.32

* Added warnings

* Trigger CI

* Removed docstrings

* Added correctness test

* Trigger CI

---------

Co-authored-by: Tom Bromley <49409390+trbromley@users.noreply.github.com>
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>
Co-authored-by: Christina Lee <christina@xanadu.ai>
Co-authored-by: rmoyard <rmoyard@gmail.com>

* Tensorflow qnode integration with DefaultQubit2 (#4393)

* copy-paste tf files

* make tests work; little changes in pennylane

* changes coming from torch PR first

* update remaining test files

* support tf.function by adding empty kwargs

* update copyright year in test files

* changelog

* put all qnode integrations together

* remove turning warning into error (#4409)

* Fix jax.ad deprecation. (#4403)

* Fix jax.ad deprecation.

* Update changelog.

* Print name of requested device in DeviceError.

* Force push.

* Fix pytest.raises in test_device.py

* fix `has_decomposition` for ControlledQubitUnitary (#4407)

* fix has_decomposition for ControlledQubitUnitary

* changelog

* add comment; add test when super returns False

* [sc-36527]: Add new robots.txt to doc build to hide latest build from search engine (#4423)

* Adding a `wire_order` kwarg to `Tensor.sparse_matrix()` (#4424)

* `wire_order` kwarg for `Tensor.sparse_matrix()`

* update changelog

* swap kwarg order

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* adapt docstring to the kwarg order swap

* add comment about using  over

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Updated defer_measurements post-merge

* Fixed defer_measurements

* Updated test

* Updated class signature

* Updating keys

* Updated id process

* Updated changelog

* Updated changelog

* Adds shots to experimental device interface and integrate with QNode (#4388)

* default shots on new device interface

* make fewer changes and clean stuff up later

* fix tests, lint, and sphinx

* Update doc/releases/changelog-dev.md

* Update tests/interfaces/test_set_shots.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Update tests/devices/experimental/test_default_qubit_2.py

* make set_shots error with new device, shots type hinting

* Update doc/releases/changelog-dev.md

Co-authored-by: Tom Bromley <49409390+trbromley@users.noreply.github.com>

* Update pennylane/interfaces/set_shots.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Apply suggestions from code review

* Update tests/devices/experimental/test_default_qubit_2.py

* merge problem

* black

* Update doc/releases/changelog-dev.md

* Update pennylane/qnode.py

Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: Tom Bromley <49409390+trbromley@users.noreply.github.com>
Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>

* QNSPSA bugfix (#4421)

* qnspsa bugfix

* Update doc/releases/changelog-dev.md

* Update tests/optimize/test_qnspsa.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Update changelog

* Updated defer_measurements for device wires

* Removed error from drawable layers

* Update changelog

* Updated drawable layers test

* Updated signatures

* Updated signatures

* Merge `v0.31.1-rc0` branch into master (#4428)

* Support `HardwareHamiltonian` pulses in `stoch_pulse_grad` (#4215)

* single out gradient transform checks

* rename stochastic pulse gradient file

* unify gradient_analysis and grad_method_validation

* continue restructure of analysis+validation

* CV

* black

* modularize more

* more modularizing

* black

* tiny [skip ci]

* [skip ci] lint

* remove dummy test

* test fix

* add test file to linting test file

* test fixes, docstrings

* code review

* docstring gradient_analysis_and_grad_method_validation

* move first fun

* code review:move functions

* test regex

* regexs

* move and promote reorder_grads

* tmp

* more tmp

* test cases, contractions

* lint

* docstring

* even more tmp

* cleanup

* black

* tmp

* lint

* move stoch_pulse_gradient.. files back to pulse_gradient...

* move stoch_pulse_gradient.. files back to pulse_gradient...

* lint

* rename

* extend functions and tests

* lint and black

* changelog

* improve

* update example to include non-Pauli word generator

* add jit test with pauli sentence

* tmp

* debugging, docstring, extend test

* review

* optimize for Pauli words

* Apply suggestions from code review

Co-authored-by: Romain Moyard <rmoyard@gmail.com>

* test cases code review

* fix parametrization

* drafting

* working prototype

* finish merge; cleanup

* changelog

* comments

* [skip ci]

* raising an error; cleanup [skip ci]

* Apply suggestions from code review

Co-authored-by: Korbinian Kottmann <43949391+Qottmann@users.noreply.github.com>

* change contraction idea

* typo in docs

* tests

* remove prints

* fix test

* test descriptions

* fix merge

* format

* code review; test coverage

* coverage reordering

* fix

* trigger CI

* trigger

* clear caches

* trigger

* trigger

---------

Co-authored-by: Romain Moyard <rmoyard@gmail.com>
Co-authored-by: Korbinian Kottmann <43949391+Qottmann@users.noreply.github.com>
Co-authored-by: Korbinian Kottmann <Korbinian.Kottmann@gmail.com>

* Fix batching of derivative tapes in autograd (#4245)

* Fix `expval` of `Sum` with broadcasting (#4275)

* fix bug and add test

* changelog addition

* Various doc fixes (#4268)

* Various things while validating changes for 0.31 (#4279)

* change link in setup.py

* fix qchem docs

* fix qcut docs

* rename string function (#4278)

* Update docs (#4269)

* Incrementing the version number to `v0.32.0-dev` (#4266)

* pre-release for v0.31.0

* Update doc/releases/changelog-0.31.0.md

* Incrementing the version number to v0.32.0-dev

* Update installation.rst (#4247)

Update Python version to 3.8

Co-authored-by: Romain Moyard <rmoyard@gmail.com>

* docs typos

* don't include updating versioning from master

* don't include python requirements from master

* update example output for shot_vector

* Update pennylane/operation.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* fix entirely unrelated rendering issue

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: Catalina Albornoz <albornoz.catalina@hotmail.com>
Co-authored-by: Romain Moyard <rmoyard@gmail.com>

* Minor fixes for v0.31 (#4280)

* Added fixes

* Update pennylane/ops/qubit/matrix_ops.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Update pennylane/ops/qubit/matrix_ops.py

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* add graphviz to RTD apt packages (#4284)

* Pulse gradient methods docs polish (#4282)

* stoch pulse docs update

* generator method docs update

* small fixes / typos

* Update pennylane/gradients/pulse_generator_gradient.py

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>

* Update pennylane/gradients/pulse_generator_gradient.py

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>

* Update pennylane/gradients/pulse_generator_gradient.py

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>

* code review

* Update pennylane/gradients/pulse_gradient.py

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>

* code review

* Update pennylane/gradients/pulse_generator_gradient.py

Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>

* large |

* add equal to

---------

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>
Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>

* 0.31 release notes (#4218)

* Add categories

* First pass at categorization

* More categorization

* More categorization

* Typo

* Add first half of resource estimation text

* Improvements

* Add custom ops resource estimation

* Update wording

* Improve entry

* Move

* Move

* Move

* Update

* Add details about Torch and Keras

* Add entry

* Add contributor

* Add to Keras and Torch layer section

* Add saving and loading details

* Add entry

* Add contributor

* Add contributor

* Add qutrit basis state example

* first round of edits

* Remove

* Add entry for one_qubit_decompostition

* more changes

* Reorder sections

* fermi blurb

* minor

* Update

* Add

* Update doc/releases/changelog-dev.md

Co-authored-by: Isaac De Vlugt <34751083+isaacdevlugt@users.noreply.github.com>

* Update doc/releases/changelog-dev.md

Co-authored-by: Isaac De Vlugt <34751083+isaacdevlugt@users.noreply.github.com>

* update fermionic code examples

* additions

* minor

* restructure sections

* minor

* minor

* reorder fermi section

* fixed fermi section

* various small changes

* Tweaks to fermionic

* Tweaks to resource and UH sections

* Improvements

* Move

* Update doc/releases/changelog-0.31.0.md

* minior

* minor

* minor

* minor

* minor

* Update

* minor

* use from_string for fermi ops

* Add link

* Update doc/releases/changelog-0.31.0.md

* added links and other minor things

* Update doc/releases/changelog-0.31.0.md

* Update doc/releases/changelog-0.31.0.md

* minor

* minor

* deleted extraneous notebook

* Apply suggestions from code review

Co-authored-by: Tom Bromley <49409390+trbromley@users.noreply.github.com>

---------

Co-authored-by: Isaac De Vlugt <isaacdevlugt@gmail.com>
Co-authored-by: Isaac De Vlugt <34751083+isaacdevlugt@users.noreply.github.com>
Co-authored-by: soranjh <soranjh@yahoo.com>

* Allow updating dense kwarg in call of ParametrizedEvolution (#4285)

* add dense kwarg to call

* update changelog

* update changelog better

* changelog formatting

---------

Co-authored-by: Korbinian Kottmann <43949391+Qottmann@users.noreply.github.com>

* Remove line in code example to make docs render properly. (#4290)

* Pin autograd to <= 1.5 (#4289)

* pin autograd to 1.5 or less

* allow autograd 1.4 as well

* pin for doc build as well

* Add dm_from_state_vector function to qml.math docs page. (#4291)

* Fix `ShotAdaptiveOptimizer` to prevent removing shot vector axes (#4240)

* Updated `ShotAdaptiveOpt` per suggestion in issue

* Reformatting

* Testing changes

* Fixed bug

* Updated min to max

* Allow classical shadow measurements in new device (#4162)

* Support classical shadow measurements

* Add shot vector tests

* Address comments

* Add comment for diag_list

* Apply suggestions from code review

Co-authored-by: Christina Lee <christina@xanadu.ai>

* Fix

* Add unit tests for process_state_with_shots

* Update preprocessing

* Apply suggestions from code review

Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>

* Address PR comments

* set rng for test

---------

Co-authored-by: Christina Lee <christina@xanadu.ai>
Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>

* Add the `fermi` module docs (#4250)

* support trainable Sum observables (#4251)

* support trainable Sum observables (analytic only)

* just use pre-rotated state; use super with finite shots

* fix tests; add test for trainable Sum coeffs

* changelog

* use overlapping wires to prove they work

* add hacky gradient support

* Revert "add hacky gradient support"

This reverts commit 09009c8.

* set interface=None to keep test behaviour

* Integrate experimental device with the `QNode` (#4196)

* integrate qnode with new device

* some diff method improvements

* repr methods

* add tests, always pass config to device

* add tests, always pass config to device

* final test

* pylint

* autograd integration tests

* pylint

* Update pennylane/interfaces/execution.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* pass shots through methods

* changelog

* revert set shots change

* Apply suggestions from code review

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* revert executionc hange, pylint:

* pylint again

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: Romain Moyard <rmoyard@gmail.com>

* pre-release for v0.31.0 (#4265)

* pre-release for v0.31.0

* Update doc/releases/changelog-0.31.0.md

* Support `HardwareHamiltonian` pulses in `stoch_pulse_grad` (#4215)

* single out gradient transform checks

* rename stochastic pulse gradient file

* unify gradient_analysis and grad_method_validation

* continue restructure of analysis+validation

* CV

* black

* modularize more

* more modularizing

* black

* tiny [skip ci]

* [skip ci] lint

* remove dummy test

* test fix

* add test file to linting test file

* test fixes, docstrings

* code review

* docstring gradient_analysis_and_grad_method_validation

* move first fun

* code review:move functions

* test regex

* regexs

* move and promote reorder_grads

* tmp

* more tmp

* test cases, contractions

* lint

* docstring

* even more tmp

* cleanup

* black

* tmp

* lint

* move stoch_pulse_gradient.. files back to pulse_gradient...

* move stoch_pulse_gradient.. files back to pulse_gradient...

* lint

* rename

* extend functions and tests

* lint and black

* changelog

* improve

* update example to include non-Pauli word generator

* add jit test with pauli sentence

* tmp

* debugging, docstring, extend test

* review

* optimize for Pauli words

* Apply suggestions from code review

Co-authored-by: Romain Moyard <rmoyard@gmail.com>

* test cases code review

* fix parametrization

* drafting

* working prototype

* finish merge; cleanup

* changelog

* comments

* [skip ci]

* raising an error; cleanup [skip ci]

* Apply suggestions from code review

Co-authored-by: Korbinian Kottmann <43949391+Qottmann@users.noreply.github.com>

* change contraction idea

* typo in docs

* tests

* remove prints

* fix test

* test descriptions

* fix merge

* format

* code review; test coverage

* coverage reordering

* fix

* trigger CI

* trigger

* clear caches

* trigger

* trigger

---------

Co-authored-by: Romain Moyard <rmoyard@gmail.com>
Co-authored-by: Korbinian Kottmann <43949391+Qottmann@users.noreply.github.com>
Co-authored-by: Korbinian Kottmann <Korbinian.Kottmann@gmail.com>

* Fix batching of derivative tapes in autograd (#4245)

* Fix `expval` of `Sum` with broadcasting (#4275)

* fix bug and add test

* changelog addition

* Various doc fixes (#4268)

* Various things while validating changes for 0.31 (#4279)

* change link in setup.py

* fix qchem docs

* fix qcut docs

* rename string function (#4278)

* Update docs (#4269)

* Incrementing the version number to `v0.32.0-dev` (#4266)

* pre-release for v0.31.0

* Update doc/releases/changelog-0.31.0.md

* Incrementing the version number to v0.32.0-dev

* Update installation.rst (#4247)

Update Python version to 3.8

Co-authored-by: Romain Moyard <rmoyard@gmail.com>

* docs typos

* don't include updating versioning from master

* don't include python requirements from master

* update example output for shot_vector

* Update pennylane/operation.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* fix entirely unrelated rendering issue

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: Catalina Albornoz <albornoz.catalina@hotmail.com>
Co-authored-by: Romain Moyard <rmoyard@gmail.com>

* Minor fixes for v0.31 (#4280)

* Added fixes

* Update pennylane/ops/qubit/matrix_ops.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Update pennylane/ops/qubit/matrix_ops.py

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* add graphviz to RTD apt packages (#4284)

* Updated test

---------

Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>
Co-authored-by: Christina Lee <christina@xanadu.ai>
Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>
Co-authored-by: soranjh <40344468+soranjh@users.noreply.github.com>
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: Romain Moyard <rmoyard@gmail.com>
Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>
Co-authored-by: Korbinian Kottmann <43949391+Qottmann@users.noreply.github.com>
Co-authored-by: Korbinian Kottmann <Korbinian.Kottmann@gmail.com>
Co-authored-by: lillian542 <38584660+lillian542@users.noreply.github.com>
Co-authored-by: Catalina Albornoz <albornoz.catalina@hotmail.com>

* Make links to qml.eigvals and the eigvals method appear distinctly. (#4292)

* Make links to qml.eigvals and the eigvals method appear distinctly in the docstring of compute_method.

* Make links more informative.

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Device API review (#4283)

* fix  example

* minor docstring change in `_zyz_decomposition`

* update decomposition examples

* update counts & samples docstrings

* Shots class link

* Fix code block

* Change note

Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>

---------

Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>

* remove duplicate controlled operation entries (#4298)

* Refer to class QNode in ml layers (#4299)

* Specs dict fix (#4286)

* Add copy function to SpecsDict.

* black

* Adjust docs to not throw warnings from deprecated specs keys.

* Formatting fix.

* update doc string

* update doc string

---------

Co-authored-by: Jay Soni <jbsoni@uwaterloo.ca>
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Fermionic ops in changelog (#4302)

* bump lightning to 0.31 in setup.py, pin scipy to [1.8,1.10] (#4304)

* bump lightning to 0.31 in setup.py

* trigger ci

* pin scipy

* Revert "pin scipy"

This reverts commit 492ad40.

* take Soran's forward fix for scipy fac2

* revert the scipy un-pinning and forward fix - just pin scipy

* remove lower bound in files that didn't have them

* remove autograd lower bound

* Implement new Dataset class using HDF5 (#4369)

* rename changelog

* test

* rename changelog back

* changes from 9f5939e

* changes from b6dc487

* changes until 01d9141

* changes until 935832e

* changes until 76c4ae8

* trigger ci

* newline

* revert

* changes until 3b59d71

* trigger ci

* Make qchem compatible with scipy factorial2 (#4387)

* pull diff from #4321

* unpin scipy

* Release notes and version bump (#4385)

* changelog and version bump

* Add qchem changes

* Apply suggestions from code review

Co-authored-by: Tom Bromley <49409390+trbromley@users.noreply.github.com>

---------

Co-authored-by: Tom Bromley <49409390+trbromley@users.noreply.github.com>

* pin autoray (#4399)

* raise error with actual identifier name (#4405)

* Escape special characters in Dataset URL (#4412)

* url escape

* remove debug

* update changelog

* pylint

* Update doc/releases/changelog-0.31.1.md

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* BUGFIX: ensure that operators are not queued upon deserialization (#4414)

* ensure that operators are not queued upon deserialization

* Update tests/data/attributes/operator/test_operator.py

* Updated the datasets docs (#4400)

* Updated the datasets docs

* Update doc/Makefile

* a few more

* Apply suggestions from code review

Co-authored-by: Utkarsh <utkarshazad98@gmail.com>

* Apply suggestions from code review

Co-authored-by: Diego <67476785+DSGuala@users.noreply.github.com>

* Update pennylane/data/data_manager/__init__.py

Co-authored-by: Josh Izaac <josh146@gmail.com>

* fix typo

* fix typo

---------

Co-authored-by: Utkarsh <utkarshazad98@gmail.com>
Co-authored-by: Diego <67476785+DSGuala@users.noreply.github.com>
Co-authored-by: Diego <diego_guala@hotmail.com>

* Fix error message when successively loading the same dataset (#4422)

* Fix Attribute Error when accessing identifiers on partial dataset (#4413)

* no exception if identifiers are not downloaded

* always download identifiers

* Update tests/data/test_dataset.py

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* add error message

---------

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Update tests/tape/test_qscript.py

* Update setup.py

* Update requirements.txt

Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>

---------

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>
Co-authored-by: Romain Moyard <rmoyard@gmail.com>
Co-authored-by: Korbinian Kottmann <43949391+Qottmann@users.noreply.github.com>
Co-authored-by: Korbinian Kottmann <Korbinian.Kottmann@gmail.com>
Co-authored-by: Christina Lee <christina@xanadu.ai>
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: soranjh <40344468+soranjh@users.noreply.github.com>
Co-authored-by: lillian542 <38584660+lillian542@users.noreply.github.com>
Co-authored-by: Catalina Albornoz <albornoz.catalina@hotmail.com>
Co-authored-by: Mudit Pandey <mudit.pandey@xanadu.ai>
Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>
Co-authored-by: Tom Bromley <49409390+trbromley@users.noreply.github.com>
Co-authored-by: Isaac De Vlugt <isaacdevlugt@gmail.com>
Co-authored-by: Isaac De Vlugt <34751083+isaacdevlugt@users.noreply.github.com>
Co-authored-by: soranjh <soranjh@yahoo.com>
Co-authored-by: BorjaRequena <59647767+BorjaRequena@users.noreply.github.com>
Co-authored-by: Jay Soni <jbsoni@uwaterloo.ca>
Co-authored-by: Jack Brown <jack@xanadu.ai>
Co-authored-by: Josh Izaac <josh146@gmail.com>
Co-authored-by: Utkarsh <utkarshazad98@gmail.com>
Co-authored-by: Diego <67476785+DSGuala@users.noreply.github.com>
Co-authored-by: Diego <diego_guala@hotmail.com>
Co-authored-by: albi3ro <chrissie.c.l@gmail.com>

* Integrate `TransformProgram` with `QNode` (#4404)

* Draft structure

* draf exec

* Simple execute

* Update

* More tests

* Update

* Update exec

* Pylint and black

* Update tests

* Update more tests

* More tests

* changelog

* Coverage

* Cover fix

* pylint

* Pylint

* Pylint tests

* proposed changes to transform program integration

* oops

* add to legacy, remove cotransform support

* just transform program call component

* just transform program call component

* no longer support cotransforms, fix _batch_postprocessing

* some more testing

* test null postprocessing function

* docstring, rename batch_slices to slices, black

* Apply suggestions from code review

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* integrate transform program with qnode

* adding integration tests

* test modifications

* [skip ci] fiddling

* more testing

* changelog entry

* add to execute, start on testing

* add qml.execute tests

* Update doc/releases/changelog-dev.md

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* fix test

---------

Co-authored-by: rmoyard <rmoyard@gmail.com>
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* move multiprocessing pre-processing to preprocess (#4425)

* move multiprocessing pre-processing to preprocess

* add test for None case

* you knew it was a bad idea... 🙃

* changelog

* Remove `parametric_ops.py` (#4434)

* Removed `parametric_ops.py`

* Fixed test

---------

Co-authored-by: Christina Lee <christina@xanadu.ai>

* Updated signature

* Removed `dev_wires` arg

* Fixed defer_measurements

* Fixed tests

* Fixed tests

* Update mid_measure tests

* Updated how queuing for `MidMeasureMP` works

* Updated tests

* Added tests

* Add converter function for PySCF's CISD to PennyLane statevector (#4427)

* Updated init

* Reverted queuing change

* Trigger CI

* Added documentation

* Trigger CI

* Trigger CI

* Update docs

* Updated measurement value

* Updated changelog

* Update doc/releases/changelog-dev.md

* Updated tests

* Fix transmon Hamiltonians (#4418)

* Fix transmon Hamiltonians

* black

* docs update

* docs

* update changelog

* small updates

* Update pennylane/pulse/transmon.py

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>

* Update pennylane/pulse/transmon.py

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>

* black

* code review

* formatting

* Update pennylane/pulse/transmon.py

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>

* Update tests/pulse/test_transmon.py

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>

---------

Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>

* Updated measurement value

* Updated changelog

* Update doc/releases/changelog-dev.md

* Updated tests

* Added qubit reuse and reset

* Removed `MeasurementValue`

* Integrate `TransformProgram` with `QNode` (#4404)

* Draft structure

* draf exec

* Simple execute

* Update

* More tests

* Update

* Update exec

* Pylint and black

* Update tests

* Update more tests

* More tests

* changelog

* Coverage

* Cover fix

* pylint

* Pylint

* Pylint tests

* proposed changes to transform program integration

* oops

* add to legacy, remove cotransform support

* just transform program call component

* just transform program call component

* no longer support cotransforms, fix _batch_postprocessing

* some more testing

* test null postprocessing function

* docstring, rename batch_slices to slices, black

* Apply suggestions from code review

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* integrate transform program with qnode

* adding integration tests

* test modifications

* [skip ci] fiddling

* more testing

* changelog entry

* add to execute, start on testing

* add qml.execute tests

* Update doc/releases/changelog-dev.md

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* fix test

---------

Co-authored-by: rmoyard <rmoyard@gmail.com>
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Removed `dev_wires` arg

* Fixed tests

* Update mid_measure tests

* Trigger CI

* Trigger CI

* Trigger CI

* Updated tests

* Updated tests

* Remove references to measurement_ids

* Removed weird code

* Add converter function for PySCF's RCISD and CCSD/UCCSD to PennyLane statevector (#4433)

* Remove references to measurement_ids

* Updated init

* linting

* Removed merge artifacts

* Fixing tests

* Fixed tests

* Linting

* Testing to see if doc build fails

* Check doc build

* Progressing docs

* Updated doc

* doc test

* Testing doc

* Updated docstring

* Changed docstring (hopefully the last time)

* Apply suggestions from code review

Co-authored-by: Christina Lee <christina@xanadu.ai>

* Updating docs

* linting

* Removed old comment

* Added optimization

* Fixed preprocess test

* linting

* Cleaning up

* Adding tests

* Finish adding tests

* Apply suggestions from code review

Co-authored-by: Matthew Silverman <matthews@xanadu.ai>

* Updated docstring per review

---------

Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>
Co-authored-by: Christina Lee <christina@xanadu.ai>
Co-authored-by: Frederik Wilde <42576579+frederikwilde@users.noreply.github.com>
Co-authored-by: Matthew Silverman <matthews@xanadu.ai>
Co-authored-by: Tom Bromley <49409390+trbromley@users.noreply.github.com>
Co-authored-by: rmoyard <rmoyard@gmail.com>
Co-authored-by: Vincent Michaud-Rioux <vincentm@nanoacademic.com>
Co-authored-by: Rashid N H M <95639609+rashidnhm@users.noreply.github.com>
Co-authored-by: BorjaRequena <59647767+BorjaRequena@users.noreply.github.com>
Co-authored-by: David Wierichs <david.wierichs@xanadu.ai>
Co-authored-by: Korbinian Kottmann <43949391+Qottmann@users.noreply.github.com>
Co-authored-by: Korbinian Kottmann <Korbinian.Kottmann@gmail.com>
Co-authored-by: soranjh <40344468+soranjh@users.noreply.github.com>
Co-authored-by: lillian542 <38584660+lillian542@users.noreply.github.com>
Co-authored-by: Catalina Albornoz <albornoz.catalina@hotmail.com>
Co-authored-by: Isaac De Vlugt <isaacdevlugt@gmail.com>
Co-authored-by: Isaac De Vlugt <34751083+isaacdevlugt@users.noreply.github.com>
Co-authored-by: soranjh <soranjh@yahoo.com>
Co-authored-by: Jay Soni <jbsoni@uwaterloo.ca>
Co-authored-by: Jack Brown <jack@xanadu.ai>
Co-authored-by: Josh Izaac <josh146@gmail.com>
Co-authored-by: Utkarsh <utkarshazad98@gmail.com>
Co-authored-by: Diego <67476785+DSGuala@users.noreply.github.com>
Co-authored-by: Diego <diego_guala@hotmail.com>
Co-authored-by: albi3ro <chrissie.c.l@gmail.com>
Co-authored-by: Stepan Fomichev <stepan.fomichev95@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.