MatchCake

matchcake.devices.sampling_strategies package

Submodules

matchcake.devices.sampling_strategies.k_qubits_by_k_qubits_sampling module

class matchcake.devices.sampling_strategies.k_qubits_by_k_qubits_sampling.KQubitsByKQubitsSampling

Bases: SamplingStrategy

K: int = None
NAME: str = 'kQubitBykQubitSampling'
batch_generate_samples(device: QubitDevice, states_prob_func: Callable[[TensorLike, Wires], TensorLike], **kwargs) TensorLike

Generate qubit-by-qubit samples.

  1. Sample x_0 from the probability distribution pi_0(x_0)

  2. for j = 1 to n-1 do

  3. Sample x_j from the probability distribution pi_j(x_0, …, x_{j-1}, x_j) / pi_{j-1}(x_0, …, x_{j-1})

  4. end for

  5. return x_0 … x_{n-1}

Returns:

Samples with shape (shots, num_wires) of probabilities |<x|psi>|^2

batch_generate_samples_by_subsets_of_k(device: QubitDevice, states_prob_func: Callable[[TensorLike, Wires], TensorLike], k: int = 1, **kwargs) TensorLike

Generate qubit-by-qubit samples.

  1. Sample x_0 from the probability distribution pi_0(x_0)

  2. for j = 1 to n-1 do

  3. Sample x_j from the probability distribution pi_j(x_0, …, x_{j-1}, x_j) / pi_{j-1}(x_0, …, x_{j-1})

  4. end for

  5. return x_0 … x_{n-1}

Returns:

Samples with shape (shots, num_wires) of probabilities |<x|psi>|^2

classmethod compute_extend_probs_to_all(all_states: TensorLike, extended_states: TensorLike, extended_states_probs: TensorLike)
classmethod extend_states(states: TensorLike, added_states: TensorLike, unique: bool = True) TensorLike
generate_samples(device: QubitDevice, state_prob_func: Callable[[TensorLike, Wires], TensorLike], **kwargs) TensorLike

Generate qubit-by-qubit samples.

  1. Sample x_0 from the probability distribution pi_0(x_0)

  2. for j = 1 to n-1 do

  3. Sample x_j from the probability distribution pi_j(x_0, …, x_{j-1}, x_j) / pi_{j-1}(x_0, …, x_{j-1})

  4. end for

  5. return x_0 … x_{n-1}

Returns:

Samples with shape (shots, num_wires) of probabilities |<x|psi>|^2

matchcake.devices.sampling_strategies.qubit_by_qubit_sampling module

class matchcake.devices.sampling_strategies.qubit_by_qubit_sampling.QubitByQubitSampling

Bases: KQubitsByKQubitsSampling

K: int = 1
NAME: str = 'QubitByQubitSampling'
generate_samples(device: QubitDevice, state_prob_func: Callable[[TensorLike, Wires], TensorLike], **kwargs) TensorLike

Generate qubit-by-qubit samples.

  1. Sample x_0 from the probability distribution pi_0(x_0)

  2. for j = 1 to n-1 do

  3. Sample x_j from the probability distribution pi_j(x_0, …, x_{j-1}, x_j) / pi_{j-1}(x_0, …, x_{j-1})

  4. end for

  5. return x_0 … x_{n-1}

Returns:

Samples with shape (shots, num_wires) of probabilities |<x|psi>|^2

matchcake.devices.sampling_strategies.sampling_strategy module

class matchcake.devices.sampling_strategies.sampling_strategy.SamplingStrategy

Bases: ABC

NAME: str = 'SamplingStrategy'
batch_generate_samples(device: QubitDevice, states_prob_func: Callable[[TensorLike, Wires], TensorLike], **kwargs) TensorLike
abstract generate_samples(device: QubitDevice, state_prob_func: Callable[[TensorLike, Wires], TensorLike], **kwargs) TensorLike

matchcake.devices.sampling_strategies.two_qubits_by_two_qubits_sampling module

class matchcake.devices.sampling_strategies.two_qubits_by_two_qubits_sampling.TwoQubitsByTwoQubitsSampling

Bases: KQubitsByKQubitsSampling

K: int = 2
NAME: str = '2QubitBy2QubitSampling'

Module contents

matchcake.devices.sampling_strategies.get_sampling_strategy(name: str) SamplingStrategy