MuellerMatrix class

class pySCATMECH.mueller.MuellerMatrix(*x)

Bases: ndarray

A class for handling Mueller matrices

Parameters:

x (4x4 list or array of float or int, optional) – Default is a zero Mueller matrix

Closest_NonDepolarizing()

Return the largest matrix in the Cloude decomposition, which may be interpreted as the closest non-depolarizing Mueller matrix.

Returns:

M – The largest matrix in the Cloude decomposition.

Return type:

MuellerMatrix

Cloude_Decomposition()

Return a list of four non-depolarizing Mueller matrices that sum to the Mueller matrix.

Parameters:

M (MuellerMatrix) – Mueller matrix to be decomposed

Returns:

M1, M2, M3, M4 – The decomposed Jones-Mueller matrices sorted so that M1[0,0] >= M2[0,0] >= M3[0,0] >= M4[0,0]

Return type:

MuellerMatrix

MuellerExp()

Return matrix exponential.

Returns:

L – The matrix exponent of M

Return type:

4x4 np.array

MuellerLog()

Return matrix logarithm (logarithmic decomposition).

Returns:

The matrix logarithm of M

Return type:

4x4 numpy.array

Reverse_Lu_Chipman_Decomposition()

Return a diattenuator, retarder, and depolarizer whose ordered product is the Mueller matrix.

See: S.-Y. Lu and R.A. Chipman, “Interpretation of Mueller matrices based on polar decomposition,” J. Opt. Soc. Am. A 13, 1106-1113 (1996) and J. Morio and G. Goudail, “Influence of the order of diattenuator, retarder, and polarizer in polar decomposition of Mueller matrices,” Opt. Lett. 29, 2234-2236 (2004).

Parameters:

M (MuellerMatrix) – The matrix to be decomposed

Returns:

  • diattenuator (MuellerMatrix)

  • retarder (MuellerMatrix)

  • depolarizer (MuellerMatrix) – M = diattenuator @ retarder @ depolarizer

Symmetric_Decomposition()

Perform the symmetric decomposition described by Ossikovski.

See: R. Ossikovski, J. Opt. Soc. Am. A 26, 1109-1118 (2009).

Parameters:

M (MuellerMatrix) –

Returns:

  • diatten2 (MuellerMatrix)

  • ret2 (MuellerMatrix)

  • depol (MuellerMatrix)

  • ret1 (MuellerMatrix)

  • diatten1 (MuellerMatrix) – M = diatten2 @ ret2 @ depol @ ret1 @ diatten1

Tmax()

Return the maximum transmittance.

Returns:

Tmax – The maximum transmittance of the MuellerMatrix

Return type:

float

Tmin()

Return the minimum transmittance.

Returns:

Tmax – The minimum transmittance of the MuellerMatrix

Return type:

float

depolarization_index()

Return the depolarization index.

Returns:

PI – The depolarization index

Return type:

float

diattenuation()

Return the diattenuation.

Returns:

diattenuation – The diattenuation

Return type:

float

entropy()

The polarization entropy.

Returns:

entropy – Returns the polarization entropy defined in S.R. Cloude and E. Pottier, “Concept of polarization entropy in optical scattering,” Opt. Eng. 34(6) 1599-1610 (1995).

Return type:

float

extinction_ratio()

Return the extinction ratio.

Returns:

ER – The extinction ratio

Return type:

float

inverse()

Mueller matrix inverse.

Returns:

M – The inverted Mueller matrix

Return type:

MuellerMatrix

linear_diattenuation()

Return the linear diattenuation.

Returns:

diattenuation – The linear diattenuation

Return type:

float

normalized()

The normalized Mueller matrix.

Returns:

M – The Mueller matrix normalized so that its [0,0] element is 1.

Return type:

MuellerMatrix

parity()

Mueller matrix with a parity conversion.

Returns:

M – Mueller matrix for a parity conversion

Return type:

MuellerMatrix

physically_valid()

Test if a matrix is physically valid.

The function physically_valid() calculates the Mueller matrix coherency matrix, which is the coherency matrix for the four Jones-Mueller matrices generated by the Pauli matrices. This coherency matrix must be a valid coherency matrix (positive semi-definite) if the matrix is the convex sum of Jones-Mueller matrices. This test is a more stringent test than valid() for the validity of the Mueller matrix.

See B.N. Simon, et al, “A complete characterization of pre-Mueller and Mueller matrices in polarization optics,” J. Opt. Soc. Am. A 27(2), 188-199 (2010).

Returns:

  • bool

  • True if the matrix is physically valid, that is, if it is a convex

  • sum of Jones-Mueller matrices.

polarizance()

Return the polarizance.

Returns:

polarizance – The polarizance

Return type:

float

polarization_dependent_loss()

Return the polarization dependent loss.

Returns:

pdl – The polarization dependent loss

Return type:

float

rotate(angle)

Return a Mueller matrix rotated by an angle.

The angle is measured clockwise looking into the beam.

Parameters:

angle (float) – The angle in radians

Returns:

M – Mueller matrix rotated by angle

Return type:

MuellerMatrix

transpose()

Mueller matrix transpose.

Returns:

M – The transposed Mueller matrix

Return type:

MuellerMatrix

valid()

Test if a matrix is a Stokes-Stokes mapping matrix.

Uses the condition described in C.R. Givens and A.B. Kostinski, ‘A simple necessary and sufficient condition on physically realizable Mueller matrices,’ Journal of Modern Optics 40, 471-481 (1993).

Returns:

  • bool

  • True if the matrix will always map a valid Stokes vector to a

  • valid Stokes vector; otherwise, False.