QuasiDistribution
class QuasiDistribution(data, shots=None, stddev_upper_bound=None)
Bases: dict
A dict-like class for representing qasi-probabilities.
Builds a quasiprobability distribution object.
Parameters
-
data (dict) –
Input quasiprobability data. Where the keys represent a measured classical value and the value is a float for the quasiprobability of that result. The keys can be one of several formats:
- A hexadecimal string of the form
"0x4a"
- A bit string e.g.
'0b1011'
or"01011"
- An integer
- A hexadecimal string of the form
-
shots (int) – Number of shots the distribution was derived from.
-
stddev_upper_bound (float) – An upper bound for the standard deviation
Raises
- TypeError – If the input keys are not a string or int
- ValueError – If the string format of the keys is incorrect
Methods
binary_probabilities
QuasiDistribution.binary_probabilities(num_bits=None)
Build a quasi-probabilities dictionary with binary string keys
Parameters
num_bits (int) – number of bits in the binary bitstrings (leading zeros will be padded). If None, the length will be derived from the largest key present.
Returns
A dictionary where the keys are binary strings in the format
"0110"
Return type
dict
clear
QuasiDistribution.clear() → None. Remove all items from D.
copy
QuasiDistribution.copy() → a shallow copy of D
fromkeys
QuasiDistribution.fromkeys(value=None, /)
Create a new dictionary with keys from iterable and values set to value.
get
QuasiDistribution.get(key, default=None, /)
Return the value for key if key is in the dictionary, else default.
hex_probabilities
QuasiDistribution.hex_probabilities()
Build a quasi-probabilities dictionary with hexadecimal string keys
Returns
A dictionary where the keys are hexadecimal strings in the
format "0x1a"
Return type
dict
items
QuasiDistribution.items() → a set-like object providing a view on D’s items
keys
QuasiDistribution.keys() → a set-like object providing a view on D’s keys
nearest_probability_distribution
QuasiDistribution.nearest_probability_distribution(return_distance=False)
Takes a quasiprobability distribution and maps it to the closest probability distribution as defined by the L2-norm.
Parameters
return_distance (bool) – Return the L2 distance between distributions.
Returns
Nearest probability distribution. float: Euclidean (L2) distance of distributions.
Return type
Notes
Method from Smolin et al., Phys. Rev. Lett. 108, 070502 (2012).
pop
QuasiDistribution.pop(k[, d]) → v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised
popitem
QuasiDistribution.popitem()
Remove and return a (key, value) pair as a 2-tuple.
Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.
setdefault
QuasiDistribution.setdefault(key, default=None, /)
Insert key with a value of default if key is not in the dictionary.
Return the value for key if key is in the dictionary, else default.
update
QuasiDistribution.update([E, ]**F) → None. Update D from dict/iterable E and F.
If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
values
QuasiDistribution.values() → an object providing a view on D’s values
Attributes
stddev_upper_bound
Return an upper bound on standard deviation of expval estimator.