kontrol.transfer_function package¶

Primary modules¶

kontrol.transfer_function.transfer_function module¶

Transfer function class. Wrapper around control.TransferFunction to provide custom functionality related to KAGRA.

class kontrol.transfer_function.transfer_function.TransferFunction(*args)

Bases: control.xferfcn.TransferFunction

Transfer function class

Parameters: *args – Arguments passed to control.TransferFunction class.
foton(expression='zpk', root_location='s', significant_figures=6, itol=1e-25, epsilon=1e-25)

Foton expression of this transfer function

Calls kontrol.core.foton.tf2foton and returns a foton expression of this transfer function

Parameters: expression (str, optional) – Format of the foton expression. Choose from [“zpk”, “rpoly”]. Defaults to “zpk”. root_location (str, optional) – Root location of the zeros and poles for expression==”zpk”. Choose from [“s”, “f”, “n”]. “s”: roots in s-plane, i.e. zpk([…], […], …, “s”). “f”: roots in frequency plane, i.e. zpk([…], [,,,], …, “f”). “n”: roots in frequency plane but negated and gains are normalized, i.e. real parts are positive zpk([…], […], …, “n”). Defaults to “s”. significant_figures (int, optional) – Number of significant figures to print out. Defaults to 6. itol (float, optional) – Treating complex roots as real roots if the ratio of the imaginary part and the real part is smaller than this tolerance Defaults to 1e-25. epsilon (float, optional) – Small number to add to denominator to prevent division error. Defaults to 1e-25. foton_expression – The foton expression in selected format. str
lstrip(element, fc=None)

Remove zero or pole from the left.

Parameters: element (str) – Element to be removed. Choose from [“any”, “zero”, “pole”, “pair”, “all”]. fc (float or None, optional) – Cutoff frequency. If element is in [“any”, “all”], remove any or all elements on the left of the cutoff. Defaults None.
rstrip(element, fc=None)

Remove zero or pole from the right.

Parameters: element (str) – Element to be removed. Choose from [“any”, “zero”, “pole”, “pair”, “all”]. fc (float or None, optional) – Cutoff frequency. If element is in [“any”, “all”], remove any or all elements on the left of the cutoff. Defaults None.
save(path, overwrite=True)

Save the transfer function to a specified path.

This functions extracts the numerator and denominator coefficients and puts it into a pandas DataFrame with keys {“num” and “den”}. Then it outputs to the specified path with a pickle format.

Parameters: path (str) – The string of the path. overwrite (boolean, optional) – Overwrite if the file exists.
stabilize()

Convert unstable zeros and poles to stable ones.

kontrol.transfer_function.transfer_function.load_transfer_function(path)

Load a kontrol TransferFunction object from path.

Parameters: path (str) – The path of the saved transfer function The loaded TransferFunction object. TransferFunction

kontrol.transfer_function.notch module¶

Foton defined Notch filter.

class kontrol.transfer_function.notch.Notch(frequency, q, depth=None, depth_db=None)

Notch Filter Object

Parameters: frequency (float) – The notch frequency (Hz). q (float) – The quality factor. depth (float) – The depth of the notch filter (magnitude). If not specified, depth_db will be used. Defaults None. depth_db (float, optional) – The depth of the notch filter (decibel). If not specified, depth will be used instead. Defaults None. Attritubes – ---------- – frequency – The notch frequency (Hz). q – The quality factor. depth – The depth of the notch filter (magnitude).

Notes

The notch filter is defined by Foton, as

$N(s) = \frac{s^2 + (2\pi f_n)/(dQ/2)s + (2\pi f_n)^2} {s^2 + (2\pi f_n)/(Q/2)s + (2\pi f_n)^2}\,,$

where $$f_n$$ is the notch frequency, $$q$$ is the quality factor , and $$d$$ is the depth.

depth

The depth of the notch filter (magnitude).

foton()

Foton expression of this notch filter.

frequency

The notch frequency (Hz).

q

The quality factor