API Reference

class frequency_response.bodeTool.app.BodeApp(*, level='INFO')[source]
render(cfg: BodeConfig, result: AnalysisResult, L=None, w=None)[source]
run(cfg: BodeConfig) AnalysisResult[source]
class frequency_response.bodeTool.apis.AnalysisResult(pretty_tf: 'str', margins: 'Margins', closedloop: 'ClosedLoopFR', P: 'int', hints: 'List[str]' = <factory>)[source]
P: int
closedloop: ClosedLoopFR
hints: List[str]
margins: Margins
pretty_tf: str
class frequency_response.bodeTool.apis.BodeConfig(num: 'str | None' = None, den: 'str | None' = None, gain: 'float | None' = None, zeros: 'str | None' = None, poles: 'str | None' = None, fnum: 'str | None' = None, fden: 'str | None' = None, K: 'float' = 1.0, hnum: 'str | None' = None, hden: 'str | None' = None, hgain: 'float | None' = None, hzeros: 'str | None' = None, hpoles: 'str | None' = None, hfnum: 'str | None' = None, hfden: 'str | None' = None, hK: 'float' = 1.0, wmin: 'float | None' = None, wmax: 'float | None' = None, npts: 'int' = 2000, bode: 'bool' = False, nyquist: 'bool' = False, nichols: 'bool' = False, step: 'bool' = False, plotly: 'bool' = False, save_png: 'str | None' = None, save_html: 'str | None' = None, save_json: 'str | None' = None, title: 'str' = 'Bode of L(s)', verbose: 'int' = 0)[source]
K: float = 1.0
bode: bool = False
den: str | None = None
fden: str | None = None
fnum: str | None = None
gain: float | None = None
hK: float = 1.0
hden: str | None = None
hfden: str | None = None
hfnum: str | None = None
hgain: float | None = None
hnum: str | None = None
hpoles: str | None = None
hzeros: str | None = None
nichols: bool = False
npts: int = 2000
num: str | None = None
nyquist: bool = False
plotly: bool = False
poles: str | None = None
save_html: str | None = None
save_json: str | None = None
save_png: str | None = None
step: bool = False
title: str = 'Bode of L(s)'
verbose: int = 0
wmax: float | None = None
wmin: float | None = None
zeros: str | None = None
class frequency_response.bodeTool.apis.ClosedLoopFR(wb: 'float', Mr_db: 'float', wr: 'float')[source]
Mr_db: float
wb: float
wr: float
class frequency_response.bodeTool.apis.Margins(gm: 'float', pm: 'float', wgc: 'float', wpc: 'float', gm_db: 'float')[source]
gm: float
gm_db: float
pm: float
wgc: float
wpc: float
class frequency_response.bodeTool.core.Analyzer[source]
bode_data(sys: TransferFunction, w: ndarray) Tuple[ndarray, ndarray, ndarray][source]
closedloop_metrics(L: TransferFunction, w: ndarray) ClosedLoopFR[source]
compute_margins(L: TransferFunction, w: ndarray) Margins[source]
nyq_encirclements(L: TransferFunction, w: ndarray, center=(-1.0, 0.0)) int[source]
class frequency_response.bodeTool.core.FrequencyGrid[source]
break_freqs(G: TransferFunction) ndarray[source]
make(G: TransferFunction, wmin: float | None, wmax: float | None, npts: int) ndarray[source]
class frequency_response.bodeTool.core.TFBuilder[source]
build_from_modes(num: str | None, den: str | None, gain: float | None, zeros: str | None, poles: str | None, fnum: str | None, fden: str | None, K: float) TransferFunction[source]
frequency_response.bodeTool.io.parse_factors(spec: str | None, Kval: float = 1.0) ndarray[source]
frequency_response.bodeTool.io.parse_list(s: str) ndarray[source]
frequency_response.bodeTool.io.parse_roots(s: str | None) List[complex][source]
frequency_response.bodeTool.io.poly_from_s_expr(expr: str) ndarray[source]
frequency_response.bodeTool.utils.build_logger(level=20) Logger[source]
frequency_response.bodeTool.utils.pretty_poly(c: ndarray) str[source]
frequency_response.bodeTool.utils.pretty_tf(G) str[source]
frequency_response.bodeTool.utils.tf_arrays(G)[source]