DensityMatrix
- class perceval.utils.density_matrix.DensityMatrix(mixed_state, index=None, m=None, n_max=None, check_hermitian=True, precision=1e-06)
Density operator representing a mixed state. Does not support annotations yet.
- Parameters:
mixed_state (
Union
[array
,sparray
]) – 2d-array, SVDistribution, StateVector or Basic State representing a mixed stateindex (
Optional
[FockBasis
]) – index of all BasicStates accessible from this mixed states through a unitary evolutionm (
Optional
[int
]) – optional number of modes if index is not givenn_max (
Optional
[int
]) – optional maximum number of photon if index is not given
- apply_loss(modes, prob)
Apply a loss on some mode according to some probability of losing a photon Everything works like if the mode was connected to some virtual mode with a beam splitter of reflectivity prob
- Parameters:
modes (
Union
[int
,list
]) – the mode were you want to simulate a lossprob (
float
) – the probability to lose a photon
- static from_svd(svd, index=None)
Construct a Density matrix from a SVDistribution.
- Parameters:
svd (
Union
[SVDistribution
,StateVector
,FockState
]) – an SVDistribution object representing the mixed state :param index: the basis in which the density matrix is expressed. Self generated if incorrect :return: the DensityMatrix object corresponding to the SVDistribution given
- measure(modes)
Makes a measure on a list of modes. :type modes:
Union
[List
[int
],int
] :param modes: a list of integer for the modes you want to measure
- normalize()
Normalize the density matrix so that Trace(rho) = 1
- remove_low_amplitude(threshold=None)
Remove the lines and column where the amplitude is below a certain threshold
- to_svd(threshold=None, batch_size=1)
Gives back an SVDistribution from the density_matrix
- Parameters:
threshold (
Optional
[float
]) – the threshold when the search for eigen values is stopped.batch_size (
int
) – the number of eigen values at each Arnoldi’s algorithm iteration. Only used if matrix is large enough.
- Returns:
The SVD object corresponding to the DensityMatrix. The StateVector with probability < threshold are removed.