Helper functions
Helper functions for generation rotation matrices and conversions for wavelengths and ellipsometric quantities.
- elli.utils.calc_pseudo_diel(rho, angle, output='eps')[source]
Calculates the pseudo dielectric function of a measurement from rho.
- Parameters:
rho (pandas.DataFrame) – Measurement DataFrame containing rho as complex number as column and wavelength as index
angle (float) – Angle of measurement in degree
output (str, optional) – Output format for dielectric function. ‘n’: refractive index, ‘eps’: Dielectric function as two-column pandas.DataFrame, ‘epsi’: Dielectric function as imaginary number. Defaults to ‘eps’.
- Returns:
Frame containing the pseudo dielectric function or refractive index.
- Return type:
- elli.utils.calc_rho(psi_delta)[source]
Calculate rho from a Psi-Delta DataFrame. The Psi-Delta DataFrame should be structured as follows:
- index:
Wavelength
- column ‘Ψ’:
Psi from measurement
- column ‘Δ’:
Delta from measurement
This format is as returned from SpectraRay.read_psi_delta_file(…).
- Parameters:
psi_delta (pandas.DataFrame) – DataFrame containing Psi+Delta Measurement data
- Returns:
Frame containing rho as an imaginary number.
- Return type:
- elli.utils.conversion_energy2frequency(E)[source]
Converts energy values to frequency values.
\[f = \boldsymbol{E} / \hbar\]- Parameters:
E (npt.ArrayLike) – Single value or array of energies in eV.
- Returns:
Frequency in Hz.
- Return type:
npt.ArrayLike
- elli.utils.conversion_frequency2energy(f)[source]
Converts frequency values to energy values.
\[E = \boldsymbol{f} \cdot \hbar\]- Parameters:
f (npt.ArrayLike) – Single value or array of frequencies in Hz.
- Returns:
Energy in eV.
- Return type:
npt.ArrayLike
- elli.utils.conversion_wavelength_energy(value)[source]
Converts wavelength values to energy values and vice versa.
\[value_{\text{target}} = c \cdot \hbar / \boldsymbol{value}\]- Parameters:
value (npt.ArrayLike) – Single value or array of wavelengths in nm or energy in eV.
- Returns:
Energy in eV or wavelength in nm.
- Return type:
npt.ArrayLike
- elli.utils.conversion_wavelength_frequency(value)[source]
Converts wavelength values to frequency values and vice versa.
\[value_{\text{target}} = c / \boldsymbol{value}\]- Parameters:
value (npt.ArrayLike) – Single value or array of wavelengths in nm or frequencies in Hz.
- Returns:
Frequencies in Hz or wavelengths in nm.
- Return type:
npt.ArrayLike
- elli.utils.conversion_wavelength_wavenumber(value)[source]
Converts wavelength values to wavenumber values and vice versa.
\[value_{\text{target}} = 1 / \boldsymbol{value}\]- Parameters:
value (npt.ArrayLike) – Single value or array of wavelengths in nm or wavenumbers in \(\text{cm}^{-1}\).
- Returns:
Wavenumbers in \(\text{cm}^{-1}\) or wavelengths in nm.
- Return type:
npt.ArrayLike
- elli.utils.convert_delta_range(delta_values, lower, upper)[source]
Shifts the delta values to a given range.
- elli.utils.convert_psi_delta_to_isotropic_mueller_matrix(psi_delta_df)[source]
Extract aois and wavelengths values from psi_delta pandas.DataFrame and convert it to a Muellermatrix; only works for isotropic media.
- Parameters:
psi_delta_df (pd.DataFrame) – dataFrame returned from data importers’
- Returns:
pyElli-compatible DataFrame of the Mueller matrix
- Return type:
pd.DataFrame
- elli.utils.get_qwp_thickness(material, lbda)[source]
Return the thickness of a material in nm for a quarter wave plate at wavelength ‘lbda’.
- elli.utils.rotation_euler(p, n, r)[source]
Returns rotation matrix defined by Euler angles p, n, r.
Successive rotations : z,x’,z’ Note : The inverse rotation is -r, -n, -p
- elli.utils.rotation_v(v)[source]
Returns rotation matrix defined by a rotation vector v.
The calculation is made with the matrix exponential \(M_R = \exp(W)\), with \(W_{ij} = - ε_{ijk} V_{k}\), where \(ε_{ijk}\) is the Levi-Civita antisymmetric tensor. If V is separated in a unit vector v and a magnitude θ, V = θ·v, with θ = ∥V∥, the calculation of the matrix exponential is avoided, and only sin(θ) and cos(θ) are needed instead.
Note : The inverse rotation is -v
- Parameters:
v (npt.ArrayLike) – rotation vector (list or array)
- Returns:
rotation matrix \(M_R\)
- Return type:
npt.NDArray
- elli.utils.rotation_v_theta(v, theta)[source]
Returns rotation matrix defined by a unit rotation vector and an angle.
Notes : The inverse rotation is (v,-theta)
- Parameters:
v (npt.ArrayLike) – unit vector orienting the rotation (list or array)
theta (float) – rotation angle around v in degrees
- Returns:
rotation matrix \(M_R\)
- Return type:
npt.NDArray