You're reading the documentation of the v0.11. For the latest released version, please have a look at v0.12.

Simulator

List of simulation methods in the Simulator

method name

parameters

output

prob_amplitude

input_state: BasicState or StateVector, output_state: BasicState

prob. amplitude (complex)

probability

input_state: BasicState or StateVector, output_state: BasicState

probability (float [0;1])

probs

input_state: BasicState or StateVector

prob. distribution (BSD)

probs_svd

input_dist: SVDistribution

Python dictionary

evolve

input_state: BasicState or StateVector

evolved StateVector

class perceval.simulators.Simulator(backend)

A simulator class relying on a probability amplitude capable backend to simulate the output of a unitary non-polarized circuit given an BasicState, StateVector or SVDistribution input. The simulator is able to evolve or simulate the sampling a states with annotated photons.

Parameters:

backend (AStrongSimulationBackend) – A probability amplitude capable backend object

clear_postselection()

Clear the post-selection function

evolve(input_state)

Evolve a state through the circuit

Parameters:

input_state (BasicState | StateVector) – The input fock state or state vector

Return type:

StateVector

Returns:

The output state vector

evolve_density_matrix(dm)

Compute the DensityMatrix evolved from “dm” through a Linear optical circuit

Parameters:

dm (DensityMatrix) – The density Matrix to evolve

Return type:

DensityMatrix

Returns:

The evolved DensityMatrix

evolve_svd(svd, progress_callback=None)

Compute the SVDistribution evolved through a Linear Optical circuit

Parameters:
  • svd (SVDistribution | StateVector | BasicState) – The input StateVector distribution

  • progress_callback (Callable) – A function with the signature func(progress: float, message: str)

Return type:

dict

Returns:

A dictionary of the form { “results”: SVDistribution, “physical_perf”: float, “logical_perf”: float }

  • results is the post-selected output SVDistribution

  • physical_perf is the performance computed from the detected photon filter

  • logical_perf is the performance computed from the post-selection

keep_heralds(value)

Tells the simulator to keep or discard ancillary modes in output states

Parameters:

value (bool) – True to keep ancillaries/heralded modes, False to discard them (default is keep).

log_resources(method, extra_parameters)

Log resources of the simulator

Parameters:
  • method (str) – name of the method used

  • extra_parameters (dict) –

    extra parameters to log

    Extra parameter can be:

    • n

probs_density_matrix(dm)

gives the output probability distribution, after evolving some density matrix through the simulator :type dm: DensityMatrix :param dm: the input DensityMatrix

Return type:

dict

probs_svd(input_dist, detectors=None, progress_callback=None)

Compute the probability distribution from a SVDistribution input and as well as performance scores

Parameters:
  • input_dist (SVDistribution) – A state vector distribution describing the input to simulate

  • detectors (Optional[list[IDetector]]) – An optional list of detectors

  • progress_callback (Optional[Callable]) – A function with the signature func(progress: float, message: str)

Return type:

dict[str, any]

Returns:

A dictionary of the form { “results”: BSDistribution, “physical_perf”: float, “logical_perf”: float }

  • results is the post-selected output state distribution

  • physical_perf is the performance computed from the detected photon filter

  • logical_perf is the performance computed from the post-selection

set_circuit(circuit, m=None)

Set a circuit for simulation.

Parameters:
  • circuit (ACircuit) – a unitary circuit without polarized components

  • m – The number of modes in the circuit. Only used in LC and TD simulators. If not provided, it is inferred from the modes of the components of the circuit list.

set_min_detected_photon_filter(value)

Set a minimum number of detected photons in the output distribution

Parameters:

value (int) – The minimum photon count

set_min_detected_photons_filter(value)

Set a minimum number of detected photons in the output distribution

Parameters:

value (int) – The minimum photon count

set_postselection(postselect)

Set a post-selection function

Parameters:

postselect (PostSelect) – a PostSelect object