API Reference

Application Layer

class frequency_response.plotTool.app.PlotToolApp(io: 'IOConfig' = <factory>, log_name: 'str' = 'plotTool')[source]

Bases: object

Parameters:
io: IOConfig
log_name: str
logger(level=None)[source]

Service/API Layer

class frequency_response.plotTool.apis.PlotRequest(bode: 'bool' = False, nyquist: 'bool' = False, nichols: 'bool' = False, nichols_grid: 'bool' = False, nichols_closedloop: 'bool' = False, plotly: 'bool' = False, nyq_markers: 'bool' = False, nyq_samples: 'int' = 0, wmin: 'float | None' = None, wmax: 'float | None' = None, npts: 'int' = 400, wmarks: 'Optional[List[float]]' = None, nichols_range: 'Optional[Tuple[float, float, float, float]]' = None, nichols_Mdb: 'Optional[Sequence[float]]' = None, nichols_Ndeg: 'Optional[Sequence[float]]' = None, nichols_no_grid_labels: 'bool' = False, save_png_dir: 'Optional[str]' = None, save_html_base: 'Optional[str]' = None, save_json_path: 'Optional[str]' = None, title: 'str' = 'Frequency Response')[source]

Bases: object

Parameters:
  • bode (bool)

  • nyquist (bool)

  • nichols (bool)

  • nichols_grid (bool)

  • nichols_closedloop (bool)

  • plotly (bool)

  • nyq_markers (bool)

  • nyq_samples (int)

  • wmin (float | None)

  • wmax (float | None)

  • npts (int)

  • wmarks (List[float] | None)

  • nichols_range (Tuple[float, float, float, float] | None)

  • nichols_Mdb (Sequence[float] | None)

  • nichols_Ndeg (Sequence[float] | None)

  • nichols_no_grid_labels (bool)

  • save_png_dir (str | None)

  • save_html_base (str | None)

  • save_json_path (str | None)

  • title (str)

bode: bool
nichols: bool
nichols_Mdb: Sequence[float] | None
nichols_Ndeg: Sequence[float] | None
nichols_closedloop: bool
nichols_grid: bool
nichols_no_grid_labels: bool
nichols_range: Tuple[float, float, float, float] | None
npts: int
nyq_markers: bool
nyq_samples: int
nyquist: bool
plotly: bool
save_html_base: str | None
save_json_path: str | None
save_png_dir: str | None
title: str
wmarks: List[float] | None
wmax: float | None
wmin: float | None
class frequency_response.plotTool.apis.PlotService(app)[source]

Bases: object

Parameters:

app (PlotToolApp)

run(args, req_like)[source]

Build plants, run channels, and (optionally) write JSON.

Parameters:

req_like (Any)

Return type:

Dict[str, Any]

run_channel(idx, total, args_any, L, w, name, req)[source]
Parameters:
  • idx (int)

  • total (int)

  • args_any (Any)

  • L (TransferFunction)

  • w (ndarray)

  • name (str)

  • req (PlotRequest)

Core Logic

class frequency_response.plotTool.core.CLMetrics(Mr_db: 'float', wr: 'float', wb: 'float', L_wr_phi: 'float', L_wr_db: 'float', L_wb_phi: 'float', L_wb_db: 'float')[source]

Bases: object

Parameters:
  • Mr_db (float)

  • wr (float)

  • wb (float)

  • L_wr_phi (float)

  • L_wr_db (float)

  • L_wb_phi (float)

  • L_wb_db (float)

L_wb_db: float
L_wb_phi: float
L_wr_db: float
L_wr_phi: float
Mr_db: float
wb: float
wr: float
class frequency_response.plotTool.core.Margins(gm: 'float', gm_db: 'float', pm: 'float', wgc: 'float', wpc: 'float')[source]

Bases: object

Parameters:
  • gm (float)

  • gm_db (float)

  • pm (float)

  • wgc (float)

  • wpc (float)

gm: float
gm_db: float
pm: float
wgc: float
wpc: float
frequency_response.plotTool.core.bode_data(G, w)[source]
Parameters:
  • G (TransferFunction)

  • w (ndarray)

frequency_response.plotTool.core.closedloop_metrics(L, w)[source]
Parameters:
  • L (TransferFunction)

  • w (ndarray)

Return type:

CLMetrics

frequency_response.plotTool.core.compute_margins(L, w)[source]
Parameters:
  • L (TransferFunction)

  • w (ndarray)

Return type:

Margins

frequency_response.plotTool.core.make_grid(G, wmin, wmax, npts)[source]
Parameters:
  • G (TransferFunction)

  • wmin (float | None)

  • wmax (float | None)

  • npts (int)

Return type:

ndarray

frequency_response.plotTool.core.nichols_M_grid(xphase_deg, levels_db, y_limits)[source]
Parameters:
  • xphase_deg (ndarray)

  • levels_db (Sequence[float])

  • y_limits (Tuple[float, float])

frequency_response.plotTool.core.nichols_N_grid(xphase_deg, alphas_deg, y_limits)[source]
Parameters:
  • xphase_deg (ndarray)

  • alphas_deg (Sequence[float])

  • y_limits (Tuple[float, float])

frequency_response.plotTool.core.nichols_defaults()[source]
frequency_response.plotTool.core.nyq_encirclements(L, w, center=(-1.0, 0.0))[source]
Parameters:
  • L (TransferFunction)

  • w (ndarray)

Return type:

int

frequency_response.plotTool.core.static_constants(G)[source]

(Kp, Kv, Ka) using analytic limits around s=0 for unity feedback.

Parameters:

G (TransferFunction)

Input/Output

class frequency_response.plotTool.io.IOConfig(in_dir: 'str' = <factory>, out_dir: 'str' = <factory>)[source]

Bases: object

Parameters:
  • in_dir (str)

  • out_dir (str)

in_dir: str
out_dir: str
frequency_response.plotTool.io.ensure_dir(p)[source]
Parameters:

p (str)

frequency_response.plotTool.io.save_json(path, payload)[source]
Parameters:
  • path (str)

  • payload (dict)

Utilities

frequency_response.plotTool.utils.build_logger(name='plotTool', level=20)[source]

Create/get a logger. If PLOTTOOL_DEBUG is truthy, force DEBUG.

Parameters:
  • name (str)

  • level (int | None)

Return type:

Logger

frequency_response.plotTool.utils.db(x, eps=1e-16)[source]
Parameters:
  • x (ndarray)

  • eps (float)

Return type:

ndarray

frequency_response.plotTool.utils.parse_csv_vals(s)[source]

Robust CSV -> floats; accepts None, quoted strings, semicolons/commas.

Parameters:

s (str | None)

Return type:

List[float] | None

frequency_response.plotTool.utils.parse_factors(spec, Kval=1.0)[source]
Parameters:
  • spec (str | None)

  • Kval (float)

Return type:

ndarray

frequency_response.plotTool.utils.parse_list(s)[source]
Parameters:

s (str)

Return type:

ndarray

frequency_response.plotTool.utils.parse_matrix(s)[source]
Parameters:

s (str)

Return type:

ndarray

frequency_response.plotTool.utils.parse_range4(arg)[source]

Parse a 4-value range. Returns tuple or None.

Parameters:

arg (str | Sequence[float] | None)

frequency_response.plotTool.utils.parse_roots(s)[source]
Parameters:

s (str | None)

Return type:

List[complex]