kontrol.frequency_series package¶
Primary modules¶
kontrol.frequency_series.frequency_series module¶
Frequency series class.
-
class
kontrol.frequency_series.frequency_series.
FrequencySeries
(f, x)¶ Bases:
object
Frequency series class
-
f
¶ Frequency axis
Type: array
-
x
¶ Frequency series data.
Type: array
-
x_empirical
¶ Frequency series of the empirical model.
Type: array or None
-
model_empirical
¶ The model function whose first argument is the frequency axis and the rest being an arbitrary number of model parameters to be fit.
Type: func(f, a, b, c, ..) -> array or None
-
args_empirical_model
¶ The optimized arguments passed to the model_empirical.
Type: array or None
-
f_zpk
¶ The frequency axis used during ZPK fitting.
Type: array or None
-
x_zpk
¶ The frequency series data used during ZPK fitting. Note: this is a complex array.
Type: array or None
-
tf_zpk
¶ The transfer function the best fit the data using ZPK model.
Type: control.xferfcn.TransferFunction or None
-
args_zpk_model
¶ A 1-D list of zeros, poles, and gain. Zeros and poles are in unit of Hz.
Type: array or None
-
f_tf
¶ The frequency series data used during transfer function fitting.
Type: array or None
-
x_tf
¶ The frequency series data used during transfer function fitting. Note: this is a complex array.
Type: array or None
-
tf
¶ The modeled transfer function.
Type: control.xferfcn.TransferFunction or None
-
args_tf_model
¶ A 1-D list of numerator and denominator coefficients, from higher order to lower order.
Type: array or None
-
fit_empirical
(model, x0=None, error_func=<function log_mse>, error_func_kwargs={}, optimizer=<function minimize>, optimizer_kwargs={})¶ Fit frequency series data with an empirical model. (Local optimize)
Parameters: - model (func(f, a, b, c, ..) -> array) – The model function whose first argument is the frequency axis and the rest being an arbitrary number of model parameters to be fit.
- x0 (array, optional) – The initial parameters for fitting. Defaults None. If None, defaults to np.ones()
- error_func (func(x1: array, x2: array) -> float) – The function that evaluate the error between arrays x1 and x2. Defaults to kontrol.core.math.log_mse, which evaluates the logarithmic mean square error.
- error_func_kwargs (dict, optional) – Keyword arguments passed to the error function. Use this to specify weighting function {“weight”: weight_func}. Defaults to {}.
- optimizer (func, optional) – The optimization function which has the signature func(func, args, bounds, **kw) -> scipy.optimize.OptimizeResult. Defaults to scipy.optimize.minimize.
- optimizer_kwargs (dict, optional) – Keyword arguments passed to the optimization function. Defaults {} but will set to {“method”: “Powell”, “x0”=x0} if optimizer is default.
Returns: res – The result of the fitting (optimization)
Return type: scipy.optimize.OptimizeResult
-
fit_tf
(x0=None, log_var=True, error_func=<function log_mse>, error_func_kwargs={}, optimizer=<function minimize>, optimizer_kwargs={})¶ Fit frequency series with a transfer function model
Parameters: - x0 (array or None, optional) – The initial parameters defining the initial transfer function. A 1-D list of numerator and denominator coefficients, from higher order to lower order. Defaults None. If None, will use the result from the ZPK fitting.
- log_var (boolean, optional) – Optimize the log of variables instead. Useful for variables that have very large dynamic range Defaults True.
- error_func (func(x1: array, x2: array) -> float, optional) – The function that evaluate the error between arrays x1 and x2. Defaults to kontrol.core.math.log_mse, which evaluates the logarithmic mean square error.
- error_func_kwargs (dict, optional) – Keyword arguments passed to the error function. Use this to specify weighting function {“weight”: weight_func}. Defaults to {}.
- optimizer (func, optional) – The optimization function which has the signature func(func, args, bounds, **kw) -> scipy.optimize.OptimizeResult. Defaults to scipy.optimize.minimize.
- optimizer_kwargs (dict, optional) – Keyword arguments passed to the optimization function. Defaults {} but will set to {“method”: “Powell”, “x0”: x0} if optimizer is default.
Returns: res – The result of the optimization.
Return type: scipy.optimize.OptimizerResult
Note
Only use this after using fit_zpk().
-
fit_zpk
(order, fit='x_empirical', padding=False, padding_order=1.0, error_func=<function log_mse>, error_func_kwargs={}, optimizer=<function differential_evolution>, optimizer_kwargs={})¶ Fit frequency series with a zpk model.
Parameters: - order (int) – The order of the ZPK model to be used.
- fit (str, optional) – Choose the data to be fit, choose from [“x”, “x_empirical”].
- padding (boolean, optional) – Pad the data by continuous white noise. Defaults False.
- padding_order (float, optional) – The number of decades to be padded on both sides of the series. Defaults to 1.
- error_func (func(x1: array, x2: array) -> float) – The function that evaluate the error between arrays x1 and x2. Defaults to kontrol.core.math.log_mse, which evaluates the logarithmic mean square error.
- error_func_kwargs (dict, optional) – Keyword arguments passed to the error function. Use this to specify weighting function {“weight”: weight_func}. Defaults to {}.
- optimizer (func, optional) – The optimization function which has the signature func(func, args, bounds, **kw) -> scipy.optimize.OptimizeResult. Defaults to scipy.optimize.differential_evolution.
- optimizer_kwargs (dict, optional) – Keyword arguments passed to the optimization function. Defaults {} but will set to {“workers”: -1, “updating”:”deferred”} if optimizer is default.
Returns: res – The result of the optimization.
Return type: scipy.optimize.OptimizerResult
Note
For now, we support models with equal number of zeros and poles only.
Best use with log-space frequency series or after using fit_empirical().
-
Secondary modules¶
kontrol.frequency_series.conversion module¶
Conversion functions for frequency series fitting.
This is a lower level module which users are not expect to use.
-
kontrol.frequency_series.conversion.
args2controltf
(zpk_args)¶ Convert a list of zeros, poles, and gain to control.tf
Parameters: zpk_args (array) – A 1-D list of zeros, poles, and gain. Zeros and poles are in unit of Hz.
-
kontrol.frequency_series.conversion.
args2tf
(f, tf_args)¶ Returns an array of transfer function evaluted at frequency f.
Parameters: - f (array) – The frequency axis.
- tf_args (array) – A 1-D list of numerator and denominator coefficients, from higher order to lower order.
Returns: A complex array.
Return type: array
-
kontrol.frequency_series.conversion.
args2zpk
(f, zpk_args)¶ Returns an array of ZPK defined transfer function evaluted at frequency f.
Parameters: - f (array) – The frequency axis.
- zpk_args (array) – A 1-D list of zeros, poles, and gain. Zeros and poles are in unit of Hz.
Returns: zpk – A complex array.
Return type: array
-
kontrol.frequency_series.conversion.
tf2tf_args
(tf)¶ Returns an array of tf_args used for fitting.
Parameters: tf (control.xferfcn.TransferFunction) – The transfer function. Returns: tf_args – A 1-D list of numerator and denominator coefficients, from higher order to lower order. Return type: array
-
kontrol.frequency_series.conversion.
tf_args2tf
(tf_args)¶ Returns a transfer function from tf_args.
Parameters: tf_args (array) – A 1-D list of numerator and denominator coefficients, from higher order to lower order. Returns: tf – The transfer function. Return type: control.xferfcn.TransferFunction
kontrol.frequency_series.costs module¶
Cost functions for fitting
-
kontrol.frequency_series.costs.
cost_empirical_fit
(args, f, x, model, error_func=<function log_mse>, error_func_kwargs={})¶ Cost function for frequency series empirical fitting.
Parameters: - args (array) – Empirical model parameters.
- f (array) – Frequency axis.
- x (array) – Frequency series data.
- model (func(f, a, b, c, ..) -> array) – The model function whose first argument is the frequency axis and the rest being an arbitrary number of model parameters to be fit.
- error_func (func(x1: array, x2: array) -> float) – The function that evaluate the error between arrays x1 and x2. Defaults to kontrol.core.math.log_mse, which evaluates the logarithmic mean square error.
- error_func_kwargs (dict) – Keyword arguments passed to the error function.
Returns: cost – The cost.
Return type: float
-
kontrol.frequency_series.costs.
cost_tf_fit
(tf_args, f, x, error_func=<function log_mse>, error_func_kwargs={}, log_var=True)¶ The cost funcion for gitting a frequency series with transfer function.
Parameters: - tf_args (array) – A 1-D list of numerator and denominator coefficients, from higher order to lower order.
- f (array) – The frequency axis.
- x (array) – The frequecy series data.
- error_func (func(x1: array, x2: array) -> float, optional) – The function that evaluate the error between arrays x1 and x2. Defaults to kontrol.core.math.log_mse, which evaluates the logarithmic mean square error.
- error_func_kwargs (dict, optional) – Keyword arguments passed to the error function. Defaults {}.
- log_var (boolean, optional) – Optimize the log of variables instead. Useful for variables that have very large dynamic range Defaults True.
Returns: cost – The cost.
Return type: float
-
kontrol.frequency_series.costs.
cost_zpk_fit
(zpk_args, f, x, error_func=<function log_mse>, error_func_kwargs={})¶ The cost function for fitting a frequency series with zero-pole-gain.
Parameters: - zpk_args (array) – A 1-D list of zeros, poles, and gain. Zeros and poles are in unit of Hz.
- f (array) – The frequency axis.
- x (array) – The frequecy series data.
- error_func (func(x1: array, x2: array) -> float) – The function that evaluate the error between arrays x1 and x2. Defaults to kontrol.core.math.log_mse, which evaluates the logarithmic mean square error.
- error_func_kwargs (dict, optional) – Keyword arguments passed to the error function. Defaults {}.
Returns: cost – The cost.
Return type: float
kontrol.frequency_series.noise_models module¶
Noise models for empirical fitting.
-
kontrol.frequency_series.noise_models.
geophone_noise
(f, n0=2e-06, fc=0.9, exp1=-3.5, exp2=-1.0)¶ Geophone noise model.
Parameters: - f (array) – Frequency axis
- n0 (float, optional) – The noise level at 1 Hz with the first exponent. In um/rtHz. Defaults to the typical value 2e-6.
- fc (float, optional) – The corner frequency at which the exponent changes. Defaults to the typical value 0.9.
- exp1 (float, optional) – The exponent of the frequency dependency before the corner frequency. Defaults -3.5.
- exp2 (float, optional) – The exponent of the frequency dependency after the corner frequency. Defaults -1.
Returns: noise – The geophone noise frequency series.
Return type: numpy.ndarray
Notes
The geophone noise noise typically has a \(f^{-3.5}\) dependency before the corner frequency and has a \(f^{-1}\) dependency after that.
-
kontrol.frequency_series.noise_models.
lvdt_noise
(f, n0=0.008, fc=4.5, exp1=-0.5, exp2=0.0)¶ LVDT noise model.
Parameters: - f (array) – Frequency axis.
- n0 (float, optional.) – The noise level at 1 Hz with the first exponent. In um/rtHz. Defaults to the typical value 8e-3.
- fc (float, optional.) – Defaults to the typical value 4.5 Hz. The corner frequency at which the exponent changes.
- exp1 (float, optional) – The exponent of the frequency dependency before the corner frequency. Defaults -0.5.
- exp2 (float, optional) – The exponent of the frequency dependency after the corner frequency. Defaults 0.
Returns: noise – The LVDT noise frequency series.
Return type: numpy.ndarray
Notes
The LVDT noise noise typically has a \(f^{-0.5}\) dependency before the corner frequency and is flat after that.
-
kontrol.frequency_series.noise_models.
piecewise_noise
(f, n0, exp=[0], fc=[0])¶ Piecewise noise specified corner frequencies and exponents
Parameters: - f (list of int/float or numpy.ndarray) – The frequency axis of the noise.
- n0 (int/float) – The noise level at 1 Hz with the first exponent.
- exp (list of int/float) – The list of exponents of each section of noise separated by the corner frequencies.
- fc (list of int/float) – The list of corner frequencies in increaing order. The length of fc must be 1 less then the length of exp
Returns: noise – The piecewise noise array.
Return type: numpy.ndarray