API Reference

Application Layer

class root_locus_analysis.rootLocusTool.app.RootLocusApp(out_dir: 'str' = 'out', log: 'logging.Logger' = None)[source]
Parameters:
  • out_dir (str)

  • log (Logger)

log: Logger
out_dir: str
run(req, outs)[source]
Parameters:
Return type:

Dict[str, Any]

run_batch(batch)[source]

Run a batch of cases and build a simple HTML index.

Parameters:

batch (RootLocusBatchSpec)

Return type:

str

API Schemas

class root_locus_analysis.rootLocusTool.apis.RootLocusBatchSpec(cases: 'List[Dict[str, Any]]', defaults: 'Dict[str, Any]' = <factory>, outdir: 'str' = '.', report: 'str' = 'root_locus_report.html')[source]
Parameters:
  • cases (List[Dict[str, Any]])

  • defaults (Dict[str, Any])

  • outdir (str)

  • report (str)

cases: List[Dict[str, Any]]
defaults: Dict[str, Any]
outdir: str
report: str
class root_locus_analysis.rootLocusTool.apis.RootLocusRequest(poles: 'Optional[str]' = None, zeros: 'Optional[str]' = None, kgain: 'float' = 1.0, num: 'Optional[str]' = None, den: 'Optional[str]' = None, Gnum: 'Optional[str]' = None, Gden: 'Optional[str]' = None, Hnum: 'Optional[str]' = None, Hden: 'Optional[str]' = None, ssA: 'Optional[str]' = None, ssB: 'Optional[str]' = None, ssC: 'Optional[str]' = None, ssD: 'Optional[str]' = None, io: 'Optional[Tuple[int, int]]' = None, kpos: 'Optional[str]' = None, kneg: 'Optional[str]' = None, auto: 'bool' = True, sgrid: 'bool' = False, zeta: 'Optional[str]' = None, wn: 'Optional[str]' = None, label_zeta: 'bool' = True, label_wn: 'bool' = True, cg: 'bool' = False, kgains: 'str' = '', cg_absL: 'str' = '', cg_res: 'int' = 181, arrows: 'bool' = False, arrow_every: 'int' = 80, arrow_scale: 'float' = 0.04, xlim: 'Optional[Tuple[float, float]]' = None, ylim: 'Optional[Tuple[float, float]]' = None, klabels: 'str' = '', title: 'str' = 'Root–Locus Pro')[source]
Parameters:
  • poles (str | None)

  • zeros (str | None)

  • kgain (float)

  • num (str | None)

  • den (str | None)

  • Gnum (str | None)

  • Gden (str | None)

  • Hnum (str | None)

  • Hden (str | None)

  • ssA (str | None)

  • ssB (str | None)

  • ssC (str | None)

  • ssD (str | None)

  • io (Tuple[int, int] | None)

  • kpos (str | None)

  • kneg (str | None)

  • auto (bool)

  • sgrid (bool)

  • zeta (str | None)

  • wn (str | None)

  • label_zeta (bool)

  • label_wn (bool)

  • cg (bool)

  • kgains (str)

  • cg_absL (str)

  • cg_res (int)

  • arrows (bool)

  • arrow_every (int)

  • arrow_scale (float)

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

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

  • klabels (str)

  • title (str)

Gden: str | None
Gnum: str | None
Hden: str | None
Hnum: str | None
arrow_every: int
arrow_scale: float
arrows: bool
auto: bool
cg: bool
cg_absL: str
cg_res: int
den: str | None
io: Tuple[int, int] | None
kgain: float
kgains: str
klabels: str
kneg: str | None
kpos: str | None
label_wn: bool
label_zeta: bool
num: str | None
poles: str | None
sgrid: bool
ssA: str | None
ssB: str | None
ssC: str | None
ssD: str | None
title: str
wn: str | None
xlim: Tuple[float, float] | None
ylim: Tuple[float, float] | None
zeros: str | None
zeta: str | None

Input and Output

class root_locus_analysis.rootLocusTool.io.OutputSpec(out_dir: 'str' = '.', html: 'Optional[str]' = 'root_locus.html', png: 'Optional[str]' = None, csv: 'Optional[str]' = None)[source]
Parameters:
  • out_dir (str)

  • html (str | None)

  • png (str | None)

  • csv (str | None)

csv: str | None
html: str | None
out_dir: str
png: str | None
resolve(title)[source]
Parameters:

title (str)

Return type:

Tuple[str, str | None, str | None]

root_locus_analysis.rootLocusTool.io.ensure_outdir(path)[source]
Parameters:

path (str)

Return type:

None

Utilities

root_locus_analysis.rootLocusTool.utils.make_logger(verbose)[source]

Returns a configured logger. - Non-verbose: ‘rootLocusTool’ (INFO) - Verbose: ‘rootLocusTool.verbose’ (DEBUG)

We use two distinct loggers to ensure a second call with verbose=True always returns a DEBUG-level logger, regardless of prior config, while also preserving the single-handler invariant on the base logger.

Parameters:

verbose (bool)

Return type:

Logger

root_locus_analysis.rootLocusTool.utils.parse_list(s)[source]
Parameters:

s (str | None)

Return type:

List[float]

root_locus_analysis.rootLocusTool.utils.parse_matrix(s)[source]
Accepts:

“0 1 0; 0 0 1; -160 -56 -14” “0,1,0 | 0,0,1 | -160,-56,-14”

Parameters:

s (str)

Return type:

ndarray

root_locus_analysis.rootLocusTool.utils.safe_title_to_filename(title)[source]
Parameters:

title (str)

Return type:

str