coaxtract package

Submodules

coaxtract.calibration module

class coaxtract.calibration.Calibration(probe, epsilon_load=4 - 0.04j, thickness_load=0.0013, epsilon_open=1 + 0j, air_gap=0, bessel='jax')[source]

Bases: object

apply(Rmeas, freqspan=None)[source]
get_theoretical_reflection(freqs, **kwargs)[source]
reflection(freqs, case, **kwargs)[source]
run(freqs, Rmeasured, **kwargs)[source]

coaxtract.constants module

coaxtract.helpers module

class coaxtract.helpers.Timer[source]

Bases: object

start()[source]

Start a new timer

stop()[source]

Stop the timer, and report the elapsed time

coaxtract.helpers.complex2aphi(z)[source]
coaxtract.helpers.effective_impedance(Z, epsilon, thickness, freq)[source]
coaxtract.helpers.meas2complex(A, phi)[source]
coaxtract.helpers.smooth(data, cutoff=0.05, order=3)[source]

Data smoothing.

Parameters
  • data (array) – The data to smooth.

  • cutoff (float) – Filter cutoff frequency (the default is 0.05).

  • order (int) – Filter order (the default is 3).

Returns

smooth_data – Smoothed data.

Return type

array

coaxtract.helpers.truncate(freqs, min_freq, max_freq, dspl=0)[source]

coaxtract.integ module

From [Zhou2017].

coaxtract.integ.path_integral(integrand, eps, path='complex', alpha=0.5, int_method='trapz', n_int=100, divmax=5)[source]
coaxtract.integ.romberg(f, a, b, divmax=5, err=False)[source]

Romberg integration

INPUTS: f: the function to integrate a: lower bound of integration b: upper bound jnp: number of rows in the Romberg table

coaxtract.integ.romberg_numpy(f, a, b, eps=1.48e-08, divmax=5)[source]

Romberg integration

INPUTS: f: the function to integrate a: lower bound of integration b: upper bound jnp: number of rows in the Romberg table

coaxtract.integ.romberg_vect(N, f, *args, **kwargs)[source]
coaxtract.integ.trapezcomp(f, a, b, n)[source]

Composite trapezoidal function integration

INPUTS: f: the function to integrate a: lower bound of integration b: upper bound n: number of panels to create between a and b

coaxtract.io module

coaxtract.io.load(filename, Nfreq=801, skiprows=8)[source]

Load measurement data.

Parameters

filename (str) – Name of the file to load.

Returns

  • freqs (array) – Frequencies (in Hz)

  • amplitude (array) – S11 amplitude (in dB)

  • phase (array) – S11 phase (in degrees)

coaxtract.opt module

class coaxtract.opt.Extractor(setup, frequencies, Rmeas, scale=True, guess='random', options=None, eps_min=- 1000000000 - 1000000000j, eps_max=1000000000 + 1000000000j, single_layer=False, compile=False, verbose=False, n_int=700, alpha=0.5, model='constant', bounds=None, constraints=False, backend='scipy')[source]

Bases: object

fun(x)[source]
init_bounds()[source]
init_guess()[source]
jacobian(x)[source]
opt2eps(x)[source]
reflection(eps_film)[source]
run()[source]
thin_film_approx()[source]

coaxtract.probe module

class coaxtract.probe.CoaxProbe(rin=0.000497, rout=0.0029545, epsilon=2.25 - 0.0022500000000000003j)[source]

Bases: object

coaxtract.special module

coaxtract.special.j0(x)[source]
coaxtract.special.j0_approx(z, N=100)[source]
coaxtract.special.j0_int(z, N=100)[source]
coaxtract.special.j0_scipy(z)[source]
coaxtract.special.j0large(x)[source]
coaxtract.special.j0small(x)[source]

coaxtract.stack module

Calculation of integrand for a multilayer [Bakhtiari1994].

class coaxtract.stack.Layer(epsilon, thickness=None, name='layer')[source]

Bases: object

class coaxtract.stack.Setup(stack, probe, bessel='jax')[source]

Bases: object

admittance(freq, path='complex', alpha=0.5, int_method='trapz', n_int=700, divmax=10, iopt=0)[source]
integrand(s, k0)[source]
reflection(*args, **kwargs)[source]
class coaxtract.stack.Stack(layers, termination='PEC')[source]

Bases: object

F(s, k0)[source]
beta(s, k0, z, rho, eps)[source]
kappa(s, eps1, eps2)[source]
recurrence(s, k0)[source]
rho(s, k0, z, kappa, beta, eps)[source]
rho1(s, k0)[source]
rhoN(s, k0)[source]
thickness(n)[source]

Module contents