merlin.measurement.process module
Quantum measurement sampling utilities.
- class merlin.measurement.process.Callable
Bases:
object
- class merlin.measurement.process.PartialMeasurement(branches, measured_modes, unmeasured_modes, grouping=None)
Bases:
objectCollection of measurement branches along with measured/unmeasured mode metadata.
- Args:
branches: Tuple of branches, ordered lexicographically by outcome. measured_modes: Indices of measured modes in the full system. unmeasured_modes: Indices of unmeasured modes in the full system. grouping: Optional grouping callable to group probabilities.
- property amplitudes
- static from_detector_transform_output(detector_output, *, grouping=None)
Branch-based PartialMeasurement wrapper from DetectorTransform(partial_measurement=True) output.
- Return type:
- property n_measured_modes: int
- property n_unmeasured_modes: int
- property outcomes
- property probabilities: Tensor
Return the probabilities of all branches as a tensor of shape (batch, n_branches) unless a grouping was set in which case, the probabilities are grouped and the returned tensor has shape (batch, grouping_output_size).
Same property as self.tensor.
- property probability_tensor_shape: tuple[int, int]
Return the expected (batch, n_outcomes) shape for the probability tensor.
- reorder_branches()
Reorder branches lexicographically by their outcomes.
- Return type:
None
- set_grouping(grouping)
Set the grouping used to group probabilities.
Once the grouping is set, the properties probabilities and tensor return grouped probabilities.
- Return type:
None
- Args:
grouping: Grouping object used to group probabilities.
- property tensor: Tensor
Return the probabilities of all branches as a tensor of shape (batch, n_branches). unless a grouping was set in which case, the probabilities are grouped and the returned tensor has shape (batch, grouping_output_size).
This property assumes that all branches are ordered lexicographically by their outcomes so the stacking of probabilities follows the same order.
- verify_branches_order()
Verify that branches are ordered lexicographically by their outcomes.
- Return type:
None
- class merlin.measurement.process.SamplingProcess(method='multinomial')
Bases:
objectHandles quantum measurement sampling with different methods.
This class provides functionality to simulate quantum measurement noise by applying different sampling strategies to probability distributions.
- pcvl_sampler(distribution, shots, method=None)
Apply sampling noise to a probability distribution.
- Return type:
- Args:
distribution: Input probability distribution tensor method: Sampling method to use (‘multinomial’, ‘binomial’, or ‘gaussian’), defaults to the initialized method shots: Number of measurement shots to simulate
- Returns:
Noisy probability distribution after sampling
- Raises:
ValueError: If method is not one of the valid options
- merlin.measurement.process.partial_measurement(detector_output, *, grouping=None)
Build a PartialMeasurement from DetectorTransform(partial_measurement=True) output.
- Return type: