API Reference

rst_controllers.rstTool.cli

Command-line interface for rst_controllers.rstTool.

The CLI supports two usage styles:

  1. Modern subcommand form:

    python -m rst_controllers.rstTool.cli run --in_json case.json --pretty
    
  2. Historical no-subcommand form:

    python -m rst_controllers.rstTool.cli --in_json case.json --pretty
    

It also includes a sphinx-skel helper for generating a conservative, GitHub Pages friendly Sphinx documentation skeleton.

rst_controllers.rstTool.cli.build_parser()[source]

Build the command-line parser.

Return type:

ArgumentParser

rst_controllers.rstTool.cli.main(argv=None)[source]

Run the rstTool command-line interface.

Parameters:

argv (list[str] | None)

Return type:

int

rst_controllers.rstTool.apis

class rst_controllers.rstTool.apis.RunRequest(A: 'List[float]', B: 'List[float]', d: 'int' = 0, Ts: 'float' = 1.0, Acl: 'Optional[List[float]]' = None, poles: 'Optional[List[complex]]' = None, spoles: 'Optional[List[complex]]' = None, Ac: 'Optional[List[float]]' = None, Ao: 'Optional[List[float]]' = None, degS: 'Optional[int]' = None, degR: 'Optional[int]' = None, alloc: 'str' = 'S', integrator: 'bool' = False, Tmode: 'str' = 'unity_dc', T: 'Optional[List[float]]' = None, N: 'int' = 200, r_step: 'float' = 1.0, v_step: 'float' = 0.0, v_k0: 'int' = 0, noise_sigma: 'float' = 0.0, in_json: 'Optional[str]' = None, export_json: 'Optional[str]' = None, save_csv: 'Optional[str]' = None, pretty: 'bool' = False)[source]

Bases: object

Parameters:
  • A (List[float])

  • B (List[float])

  • d (int)

  • Ts (float)

  • Acl (List[float] | None)

  • poles (List[complex] | None)

  • spoles (List[complex] | None)

  • Ac (List[float] | None)

  • Ao (List[float] | None)

  • degS (int | None)

  • degR (int | None)

  • alloc (str)

  • integrator (bool)

  • Tmode (str)

  • T (List[float] | None)

  • N (int)

  • r_step (float)

  • v_step (float)

  • v_k0 (int)

  • noise_sigma (float)

  • in_json (str | None)

  • export_json (str | None)

  • save_csv (str | None)

  • pretty (bool)

A: List[float]
Ac: List[float] | None = None
Acl: List[float] | None = None
Ao: List[float] | None = None
B: List[float]
N: int = 200
T: List[float] | None = None
Tmode: str = 'unity_dc'
Ts: float = 1.0
alloc: str = 'S'
d: int = 0
degR: int | None = None
degS: int | None = None
export_json: str | None = None
in_json: str | None = None
integrator: bool = False
noise_sigma: float = 0.0
poles: List[complex] | None = None
pretty: bool = False
r_step: float = 1.0
save_csv: str | None = None
spoles: List[complex] | None = None
v_k0: int = 0
v_step: float = 0.0
class rst_controllers.rstTool.apis.RunResult(R: 'List[float]', S: 'List[float]', Tq: 'List[float]', Acl: 'List[float]', y_final: 'float', u_final: 'float', sse: 'float', csv_path: 'Optional[str]', json_path: 'Optional[str]')[source]

Bases: object

Parameters:
  • R (List[float])

  • S (List[float])

  • Tq (List[float])

  • Acl (List[float])

  • y_final (float)

  • u_final (float)

  • sse (float)

  • csv_path (str | None)

  • json_path (str | None)

Acl: List[float]
R: List[float]
S: List[float]
Tq: List[float]
csv_path: str | None
json_path: str | None
sse: float
u_final: float
y_final: float

rst_controllers.rstTool.app

class rst_controllers.rstTool.app.RSTApp[source]

Bases: object

run(req)[source]
Parameters:

req (RunRequest)

Return type:

RunResult

rst_controllers.rstTool.core

class rst_controllers.rstTool.core.DiophantineSolver[source]

Bases: object

static recommended_degrees(A, B, d, Acl, integrator, alloc)[source]
classmethod solve(A, B, d, Acl, degS, degR, integrator, alloc)[source]
rst_controllers.rstTool.core.as_float_array(x)[source]
Parameters:

x (Sequence[float])

Return type:

numpy.ndarray

rst_controllers.rstTool.core.deconv_poly_asc(num, den)[source]
rst_controllers.rstTool.core.eval_poly_at_one(p)[source]
rst_controllers.rstTool.core.poly_add(a, b)[source]
rst_controllers.rstTool.core.poly_conv(a, b)[source]
rst_controllers.rstTool.core.poly_from_q_factors(ac, ao)[source]
rst_controllers.rstTool.core.poly_from_z_poles(poles)[source]
rst_controllers.rstTool.core.poly_shift(p, d)[source]
rst_controllers.rstTool.core.stable_all(roots, tol=0.9999999999)[source]

rst_controllers.rstTool.io

rst_controllers.rstTool.io.as_array(x)[source]
Parameters:

x (Sequence[float] | None)

rst_controllers.rstTool.io.load_json(in_json)[source]
Parameters:

in_json (str | None)

Return type:

dict

rst_controllers.rstTool.io.parse_coeffs(s)[source]
Parameters:

s (str | None)

rst_controllers.rstTool.io.parse_complex_list(s)[source]
Parameters:

s (str)

rst_controllers.rstTool.io.save_csv(path, rows)[source]
Parameters:

path (str | None)

rst_controllers.rstTool.io.save_json_design(path, payload)[source]
Parameters:
  • path (str | None)

  • payload (dict)

rst_controllers.rstTool.utils

rst_controllers.rstTool.utils.ensure_dir(path)[source]
Parameters:

path (str)

Return type:

None

rst_controllers.rstTool.utils.pkg_in_path(name)[source]

Resolve input under rst_controllers/rstTool/in, handling a few common spellings: - “foo.json” -> <pkg>/in/foo.json - “in/foo.json” -> <pkg>/in/foo.json - “rst_controllers/rstTool/in/foo.json” -> <pkg>/in/foo.json Absolute paths are returned untouched.

Parameters:

name (str | None)

Return type:

str | None

rst_controllers.rstTool.utils.pkg_out_path(name, default_basename)[source]

Always write under rst_controllers/rstTool/out regardless of where the process is launched.

Parameters:
  • name (str | None)

  • default_basename (str)

Return type:

str | None

rst_controllers.rstTool.utils.timeit(label)[source]
Parameters:

label (str)

Return type:

Callable[[Callable[[…], Any]], Callable[[…], Any]]

rst_controllers.rstTool.design

class rst_controllers.rstTool.design.SimResult(t: 'np.ndarray', r: 'np.ndarray', y: 'np.ndarray', u: 'np.ndarray', v: 'np.ndarray')[source]

Bases: object

Parameters:
  • t (numpy.ndarray)

  • r (numpy.ndarray)

  • y (numpy.ndarray)

  • u (numpy.ndarray)

  • v (numpy.ndarray)

r: numpy.ndarray
t: numpy.ndarray
u: numpy.ndarray
v: numpy.ndarray
y: numpy.ndarray
class rst_controllers.rstTool.design.Simulator[source]

Bases: object

static simulate(A, B, d, R, S, Tq, N, r_step, v_step, v_k0, noise_sigma, seed=0)[source]
class rst_controllers.rstTool.design.TSelector[source]

Bases: object

static choose(mode, B, Acl, Ac, Ao, T_manual, integrator, R)[source]
rst_controllers.rstTool.design.diff_eq_strings(R, S, Tq)[source]
rst_controllers.rstTool.design.poly_to_str(p, var='q')[source]
Parameters:

p (Sequence[float])

Return type:

str