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

Raise an error when we return sample() or counts() with observables that are not diagonal! #3199

Closed
wants to merge 21 commits into from

Conversation

antalszava
Copy link
Contributor

Context:
sample and counts are measurement processes which admit a special syntax: sample(), counts(). We interpret this syntax to mean "return computational basis samples or counts". However, this measurement is not commutative with other measurements which are not diagonal in the computational basis. Thus they are not allowed to be performed simultaneously.

We now raise an error when the user tries to measure these simultaneously with other non-commuting measurements.

Description of the Change:
Add check in execute() to determine if there are any diagonalizing gates and if we are also asking for computational basis samples.

Related GitHub Issues:
#2863

antalszava and others added 21 commits August 8, 2022 10:00
* Update PennyLane Logo

* remove wordmark from readme

* update citation

* et al

* Update the logo

* replace with svg
* move rotation simplify into op method

* add additional example

Co-authored-by: Romain Moyard <rmoyard@gmail.com>
…le (#2913)

* First commit

* Added PR link

* More accurate description in changelog

* Test PS rule against backprop

* Fixed error with test

Co-authored-by: Josh Izaac <josh146@gmail.com>
* Update phase decomp test (#2697)

* Update interfaces.rst (#2698)

* Allow templates to be decomposed (#2704)

* Allow templates to be decomposed

* Add TODO to clean

* Update changelog

* Fix pylint error

Co-authored-by: Edward Jiang <edward.jiang@resident.xanadu.ai>

* Deprecate `qml.ExpvalCost` (#2571)

* Add UserWarning to ExpvalCost and catch said warning in all tests containing ExpvalCost

* added warning in doc string

* added to the changelog in 0.23.1

* Update pennylane/vqe/vqe.py

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

* Update pennylane/vqe/vqe.py

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

* Update pennylane/vqe/vqe.py

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

* Update pennylane/vqe/vqe.py

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

* Update tests/optimize/test_qng.py

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

* Update tests/qchem/of_tests/test_convert.py

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

* Update tests/test_qaoa.py

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

* Update tests/test_vqe.py

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

* Update tests/transforms/test_adjoint_metric_tensor.py

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

* Update tests/optimize/test_optimize_shot_adapative.py

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

* overlooked to catch the new warning in test_dipole_of

* switched to the right changelog

Co-authored-by: Qottmann <qottmann@LT0290.ad.icfo.net>
Co-authored-by: Josh Izaac <josh146@gmail.com>
Co-authored-by: Romain Moyard <rmoyard@gmail.com>

* Update JAX jit forward mode forward evaluation (#2700)

* update logic

* update logic

* test case

* test assertion

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

* Improve ising gates documentation (#2711)

* Update doc

* Update

* Update pennylane/ops/qubit/parametric_ops.py

Co-authored-by: antalszava <antalszava@gmail.com>

* Apply suggestions from code review

* CHange

* Typo

Co-authored-by: antalszava <antalszava@gmail.com>

* Support classical fisher gradients when using Autograd (#2688)

* Support classical fisher gradients when using Autograd

* Update doc/releases/changelog-dev.md

* added test for jax and autograd

* black

* added xfail tests

* added comment in doc string about torch and tf not diffable

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

* Support classical Fisher gradients when using TF and torch (#2710)

* Support classical fisher gradients when using Autograd

* Update doc/releases/changelog-dev.md

* added test for jax and autograd

* black

* added xfail tests

* added comment in doc string about torch and tf not diffable

* Fix differentiability for tensorflow and torch

* Remove warning

* Fix TF not iterable error

* Trigger CI

* added example in doc-string about diffability

* close-block becomes code-block lol

* Update pennylane/qinfo/transforms.py

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

* Change pytest mark

Co-authored-by: Josh Izaac <josh146@gmail.com>
Co-authored-by: Qottmann <korbinian.kottmann@gmail.com>
Co-authored-by: Romain Moyard <rmoyard@gmail.com>

* Remove `hardware` argument in `qml.qinfo.quantum_fisher` (#2695)

* removed hardware argument, adapted doc string

* updated tests

* black

* Update pennylane/qinfo/transforms.py

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

* Update pennylane/qinfo/transforms.py

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

* add default.qubit condition and change doc string

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

* Add `qinfo` measurements in supported configurations docs (#2712)

* Add documentation for new qinfo measurements

* Add docs for finite diff

* Fix JAX tests

* Change param shift to red

* Move entropy param shift tests

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

* Use access_state (#2719)

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

* Update docs v0.24 (#2724)

* private func has no indices arg

* update the circuit name in the example

* reduced_dm doc update

* correct Hamiltonian creation for classical Fisher

* Delete exactly one space from reduced_dm docstring to correct rendering

* Update outputting quantum_fisher example

* Move summary to start (#2727)

* add ops module section

* only include functions and op_math

* added weights initialization example (#2735)

* Wires not updated for a hamiltonian with in-place addition (#2738)

* fixed hamiltonian wire bug

* changelog

* try other way

* Cleanup docs (#2736)

* Documentation changes for `batch_partial` (#2737)

* Update docs

* Add double backticks

* Add other backtick :xd:

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

* Fix sphinx class/method links (#2729)

Co-authored-by: Jay Soni <jbsoni@uwaterloo.ca>

* trying something else

* Fix rendering of matrix rep of ECR (#2741)

* fix rendering of matrix rep of ECR

* lint

* trigger ci

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

* Fix doc quantum information and ising (#2732)

* Ising doc

* Move entropy test

* Math doc

* Measurement doc

* qinfo doc

* Update pennylane/qinfo/transforms.py

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

* Apply suggestions from code review

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

* Update pennylane/math/quantum.py

* Update

* Fix kwargs for fidelity (#2740)

* update

* Typo

* Update pennylane/qinfo/transforms.py

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

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

* Reduced dm

* Apply suggestions from code review

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

* remove reduce dm

Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>
Co-authored-by: Christina Lee <christina@xanadu.ai>

* hope

* Add quantum info measurements to introduction doc page (#2734)

* add quantum info measurements to introduction page

* minor doc fixes

* more minor fixes

* revert kwargs change

* Apply suggestions from code review

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

* maybe this time

* probably not going to work but worth a try

* Apply suggestions from code review

Co-authored-by: Jay Soni <jbsoni@uwaterloo.ca>

* update with master

* updates

* merge something

* update docstring

* line length problem

* fix controlled signature

* fix s_prod

* add control class notes

* update docs for Sprod and Sum

* typo

* small fix

* fixing docs

* added pragma no-cover to signature property

* Apply suggestions from code review

* clean up

* fix sprod demo

* add info to quick start operations guide

* typo

* added example

* re-link top level imports to prevent duplication of docstring pages generated by sphinx

* typo

* change constructor imports to toplevel

* Apply suggestions from code review

* add equal to ops.functions docstring

* Update doc/introduction/operations.rst

Co-authored-by: antalszava <antalszava@gmail.com>

* Update pennylane/ops/op_math/controlled_class.py

Co-authored-by: antalszava <antalszava@gmail.com>

* Update pennylane/ops/op_math/sum.py

Co-authored-by: antalszava <antalszava@gmail.com>

* lint

Co-authored-by: antalszava <antalszava@gmail.com>
Co-authored-by: Edward Jiang <34989448+eddddddy@users.noreply.github.com>
Co-authored-by: Edward Jiang <edward.jiang@resident.xanadu.ai>
Co-authored-by: Korbinian Kottmann <43949391+Qottmann@users.noreply.github.com>
Co-authored-by: Qottmann <qottmann@LT0290.ad.icfo.net>
Co-authored-by: Josh Izaac <josh146@gmail.com>
Co-authored-by: Romain Moyard <rmoyard@gmail.com>
Co-authored-by: Qottmann <korbinian.kottmann@gmail.com>
Co-authored-by: Jay Soni <jbsoni@uwaterloo.ca>
Co-authored-by: David Ittah <dime10@users.noreply.github.com>
* check batching only if batching supported

* Update doc/releases/changelog-0.25.0.md

* just change op arithmetic properties

* just raise errors

* Update pennylane/operation.py

* modify has_matrix and matrix

* remove test

* Update tests/ops/op_math/test_controlled_op.py

* Update tests/ops/op_math/test_sprod.py

Co-authored-by: David Wierichs <davidwierichs@gmail.com>

* prod tests, controlled name

* more interface tests

Co-authored-by: David Wierichs <davidwierichs@gmail.com>
Co-authored-by: antalszava <antalszava@gmail.com>
* update developer docs to reflect default qubit change

* typo

* Update doc/development/adding_operators.rst

* add code examples
* return types

* Update test

* Typo
* first draft to gauge test failures

* skip config tests when finite shots and state based return

* skip tape shape test cases

* device test

* updated device test

* new return types tests

* remove errors, catch the warnings

* changelog

* run tests

Co-authored-by: Albert Mitjans <a.mitjanscoma@gmail.com>
@antalszava antalszava changed the title Sample no obs bug Raise an error when we return sample() or counts() with observables that are not diagonal! Oct 21, 2022
@antalszava antalszava closed this Oct 24, 2022
@trbromley trbromley deleted the sample_no_obs_bug branch March 5, 2024 14:02
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.

8 participants