Boson Sampling Simulator¶
- class SamplingSimulator(d: int | None = None, config: Config | None = None, connector: BaseConnector | None = None)¶
A simulator dedicated for Boson Sampling (or related) simulations.
Generally, this simulator can be used to simulate passive linear optical circuits with Fock state inputs, photon number measurements, and photon losses.
The simulation (when executed) results in an instance of
SamplingStateor with the samples generated from it (seeResult).Example usage:
import numpy as np import piquasso as pq from scipy.stats import unitary_group d = 5 U = unitary_group.rvs(d) with pq.Program() as program: pq.Q() | pq.StateVector([1, 1, 1, 0, 0]) pq.Q() | pq.Interferometer(U) pq.Q(all) | pq.ParticleNumberMeasurement() simulator = pq.SamplingSimulator(d=5) result = simulator.execute(program, shots=100)
- Supported preparations:
- Supported gates:
Interferometer,Beamsplitter,Phaseshifter,MachZehnder,Fourier,Interferometer.- Supported measurements:
- Supported channels:
Loss.
- create_initial_state(d=None)¶
Creates an initial state with no instructions executed.
Note
This is not necessarily a vacuum state.
- Returns:
The initial state of the simulation.
- Return type:
- execute(program: Program, shots: int | None = 1, initial_state: State | None = None) Result¶
Executes the specified program.
- Parameters:
program (Program) – The program to execute.
initial_state (State, optional) – A state to execute the instructions on. Defaults to the state created by
create_initial_state().shots (int, optional) – The number of times the program should execute. If it is None, the simulator will execute the program once, returning the exact probability distribution instead of samples. Defaults to 1.
- Raises:
InvalidParameter – When shots is not a positive integer or not None.
- Returns:
The result of the simulation containing the resulting state and samples if any measurement is specified in program.
- Return type:
- execute_instructions(instructions: List[Instruction], initial_state: State | None = None, shots: int | None = 1) Result¶
Executes the specified instruction list.
- Parameters:
instructions (List[Instruction]) – The instructions to execute.
initial_state (State, optional) – A state to execute the instructions on. Defaults to the state created by
create_initial_state().shots (int, optional) – The number of times the program should be execute. If it is None, the simulator will execute the program once, returning the exact probability distribution instead of samples. Defaults to 1.
- Raises:
InvalidParameter – When shots is not a positive integer or not None.
InvalidSimulation – When the number of modes cannot be inferred and d was not provided during simulator initialization.
- Returns:
The result of the simulation containing the resulting state and samples if any measurement is specified in instructions.
- Return type:
- validate(program: Program) None¶
Validates the specified program.
- Raises:
InvalidInstruction – When invalid instructions are defined in the program.
InvalidSimulation – When the instructions are valid, but the simulator couldn’t execute the specified program.
- Parameters:
program (Program) – The program to validate.