Skip to main content

quantum bettabilitarianism

Project description

QBism

PyPI version

python tools for the budding quantum bettabilitarian

Installation

pip install qbism

Note that qbism relies on qutip!

Usage

Let's start off with a random density matrix:

from qbism import *
import qutip as qt
import numpy as np

d = 2
rho = qt.rand_dm(d)

We construct a random Weyl-Heisenberg IC-POVM, and get the magical quantum coherence matrix. We find the probabilities with respect to this POVM.

povm = weyl_heisenberg_povm(qt.rand_ket(d))
phi = povm_phi(povm)
p = dm_probs(rho, povm)
print("probs: %s" % p)
probs: [0.20215649 0.20215649 0.29784351 0.29784351]

We can compare the classical probabilities (for a Von Neumann measurement after a POVM measurement whose outcome we are ignorant of) to the the quantum probabilities (in the case where we go directly to the Von Neumann measurement):

H = qt.rand_herm(d)
vn = [v*v.dag() for v in H.eigenstates()[1]]

classical_probs = conditional_probs(vn, povm) @ p
quantum_probs = conditional_probs(vn, povm) @ phi @ p

print("classsical probs: %s" % classical_probs)
print("quantum probs: %s" % quantum_probs)

post_povm_rho = sum([(e*rho).tr()*(e/e.tr()) for e in povm])
assert np.allclose(classical_probs, [(v*post_povm_rho).tr() for v in vn])
assert np.allclose(quantum_probs, [(v*rho).tr() for v in vn])
classsical probs: [0.55802905 0.44197095]
quantum probs: [0.65778315 0.34221685]

Now let's get a SIC-POVM and explore time evolution:

sic = sic_povm(d)
sic_phi = povm_phi(sic)
sic_p = dm_probs(rho, sic)

U = qt.rand_unitary(d)
evolved_sic = [U*e*U.dag() for e in sic]
R = conditional_probs(evolved_sic, sic).T

time_evolved_sic_p = R @ sic_phi @ sic_p
print("time evolved probs: %s" % time_evolved_sic_p)
assert np.allclose(dm_probs(U*rho*U.dag(), sic), time_evolved_sic_p)
time evolved probs: [0.20445193 0.20445193 0.29554807 0.29554807]

We could also use:

time_evolved_sic_p2 = povm_map([U], sic) @ sic_phi @ sic_p
assert np.allclose(time_evolved_sic_p, time_evolved_sic_p2)

Finally, let's check out partial traces:

entangled = qt.rand_dm(4)
entangled.dims = [[2,2],[2,2]]

povm2 = weyl_heisenberg_povm(qt.rand_ket(2))
povm4 = apply_dims(weyl_heisenberg_povm(qt.rand_ket(4)), [2,2])
phi = povm_phi(povm4)
p = dm_probs(entangled, povm4)

ptrA = povm_map(partial_trace_kraus(0, [2,2]), povm4, povm2)
ptrB = povm_map(partial_trace_kraus(1, [2,2]), povm4, povm2)

assert np.allclose(dm_probs(entangled.ptrace(0), povm2), ptrA @ phi @ p)
assert np.allclose(dm_probs(entangled.ptrace(1), povm2), ptrB @ phi @ p)

Check out the tutorial for the full story!

Thanks to nbdev!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qbism-0.1.0.3.tar.gz (265.0 kB view details)

Uploaded Source

Built Distribution

qbism-0.1.0.3-py3-none-any.whl (296.7 kB view details)

Uploaded Python 3

File details

Details for the file qbism-0.1.0.3.tar.gz.

File metadata

  • Download URL: qbism-0.1.0.3.tar.gz
  • Upload date:
  • Size: 265.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for qbism-0.1.0.3.tar.gz
Algorithm Hash digest
SHA256 f64000081e626ea92c87e42ceb0a9c2f515290e80909806435ef2cae5c4fd744
MD5 83b239a7ef85c04fa5ffeefd72b7cf0a
BLAKE2b-256 a33be749522c0358c23d77a15f4ce01033ead721f1722f94e1ceb13073136fd1

See more details on using hashes here.

File details

Details for the file qbism-0.1.0.3-py3-none-any.whl.

File metadata

  • Download URL: qbism-0.1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 296.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for qbism-0.1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2a4e54710a9f41b7111d84c05615292ddd7e64ccd070cbb3f487fabdb8f7059c
MD5 ba37d14d3ba8b9f3603f9ecc7b1661e4
BLAKE2b-256 8f3c21602a9c72e60e0e3d1f63ef3d1d9dba09504694af29e134534038003873

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page