Source code for microcalorimetry.math.vna

"""A collection of analysis functions commonly used with VNA measurements."""

import numpy as np
import xarray as xr
import microcalorimetry._gwex as dfm
import warnings

DataArray = xr.DataArray

__all__ = ['dbmag', 'phase', 'linmag']


[docs] def dbmag(s_params: DataArray, const: float = 20) -> DataArray: """ Convert complex s parameters to magnitude in dB. Calculates by const*log10(linmag(s_params)). By default const = 20. Parameters ---------- s_params : array like any complex format s parameters. array like. const : float, optional Multiplication constant for converting to magnitude (i.e. const*log10(magnitude). Default is 20 Returns ------- DataArray Magnitude of s parameters in dB. """ return const * np.log10(np.abs(s_params))
[docs] def phase(s_params: DataArray): """ Calculate the phase of complex s parameters. Parameters ---------- s_params : DataArray any complex format s parameters. array like. Returns ------- DataArray Phase of s_params. """ new = s_params.copy() new.values = np.angle(new.values) return new
[docs] def linmag(s_params: DataArray): """ Calculate linear magnitude of complex s-parameters. Parameters ---------- s_params : DataArray any complex format s parameters. Returns ------- DataArray Converted sparams. """ return np.abs(s_params)