State and StateVector
- class perceval.utils.statevector.AnnotatedBasicState(*args, **kwargs)
Deprecated in version 0.7.0. Use BasicState instead.
- class perceval.utils.statevector.BSCount(d=None)
- class perceval.utils.statevector.BSDistribution(d=None)
- class perceval.utils.statevector.BSSamples(iterable=(), /)
- class perceval.utils.statevector.BasicState(*args, **kwargs)
Basic states
- partition(distribution_photons)
Given a distribution of photon, find all possible partition of the BasicState - disregard possible annotation
- Parameters:
distribution_photons (
List
[int
]) –- Returns:
- separate_state(self: exqalibur.FockState) List[exqalibur.FockState]
separate a state into a list of states with indistinguishable photons
- set_slice(self: exqalibur.FockState, arg0: slice, arg1: exqalibur.FockState) exqalibur.FockState
- class perceval.utils.statevector.ProbabilityDistribution
Time-Independent abstract probabilistic distribution of states
- class perceval.utils.statevector.SVDistribution(sv=None)
Time-Independent Probabilistic distribution of StateVectors
- sample(count, non_null=True)
Generate a sample StateVector from the SVDistribution
- Parameters:
non_null (
bool
) – excludes null states from the sample generationcount (
int
) – number of samples to draw
- Return type:
List
[StateVector
]- Returns:
a list of \(count\) samples
- class perceval.utils.statevector.StateVector(bs=None, photon_annotations=None)
A StateVector is a (complex) linear combination of Basic States
- measure(modes)
perform a measure on one or multiple modes and collapse the remaining statevector
- Parameters:
modes (
Union
[int
,List
[int
]]) – the mode to measure- Return type:
Dict
[BasicState
,Tuple
[float
,StateVector
]]- Returns:
a dictionary - key is the possible measures, values are pairs (probability, BasicState vector)
- property n
list the possible values of n in the different states
- normalize()
Normalize a non-normalized BasicState
- sample()
Sample a single BasicState from the statevector. It does not perform a measure - so do not change the value of the statevector
- Return type:
- Returns:
a BasicState
- samples(shots)
Generate a list of samples. It does not perform a measure - so do not change the value of statevector. This function is more efficient than run :math:$shots$ times :method:sample
- Parameters:
shots (
int
) – the number of samples- Return type:
List
[BasicState
]- Returns:
a list of BasicState
- perceval.utils.statevector.allstate_iterator(input_state, mask=None)
Iterator on all possible output states compatible with mask generating StateVector
- Parameters:
input_state (
Union
[BasicState
,StateVector
]) – a given input state vectormask – an optional mask
- Return type:
- Returns:
list of output_state
- perceval.utils.statevector.convert_polarized_state(state, use_symbolic=False, inverse=False)
Convert a polarized BasicState into an expanded BasicState vector
- Parameters:
inverse (
bool
) –use_symbolic (
bool
) –state (
BasicState
) –
- Return type:
Tuple
[BasicState
,Matrix
]- Returns:
- perceval.utils.statevector.tensorproduct(states)
Computes states[0] * states[1] * …