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.0.9.tar.gz (263.9 kB view details)

Uploaded Source

Built Distribution

qbism-0.0.9-py3-none-any.whl (294.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qbism-0.0.9.tar.gz
  • Upload date:
  • Size: 263.9 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.0.9.tar.gz
Algorithm Hash digest
SHA256 5cc8d1e7991c72aecb42ea44a6d728abeedaffbd02239a40ec9462114b3d2361
MD5 51d1d7056f9d68ff8ed67552192c6790
BLAKE2b-256 c705ddc58d4e040dd86e291ed6aa2e4e53e56a3cb462f114a17321e9044ce007

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qbism-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 294.4 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.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 55dc227b3d0b5d96e5b6ba630e0ce8c4d1d035890d89ffab83fd9bd958ef8a39
MD5 8edd0d0f7936caa9e51a287d767c1de1
BLAKE2b-256 446a48b0dac82067b6828671d645681bb1859c9e3db1add340c7360341056e14

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