|
HOPS
HOPS class reference
|
::main More...
Namespaces | |
| __main__ | |
| config | |
| pass_info | |
::main
hops_control - Python-based fringe-fitter control for fourfit4.
Usage in a Python control file (.py)::
from hops_control import PassInfo, Config
def configure(p: PassInfo, cfg: Config):
cfg.ref_freq(215000.0)
cfg.pc_mode("manual")
with cfg.IF().station("E"):
cfg.pc_phases("abcdefgh", [1.0, -2.0, 3.0, -4.0, 5.0, -6.0, 7.0, -8.0])
The ``configure`` function is the single required entry-point. It receives a
read-only :class:`PassInfo` describing the current fringe pass and a writable
:class:`Config` accumulator. Every call on *cfg* appends one statement to the
list that fourfit4 will consume. Nested conditional statements are not allowed.
hops_control subprocess entry point.
This is the Python half of the no-embed (subprocess) control-file backend. The
C++ side (MHO_SubprocessPyControlEvaluator + MHO_PythonSubprocessRunner) invokes
it as::
python -m hops_control <request.json>
and reads the JSON response off stdout. It mirrors what the embedded
MHO_PyControlEvaluator does in-process: build a PassInfo + Config, exec the
user's control script to obtain configure(), call configure(pass_info, config),
and return config.to_json(). The condition filtering + command-line set-string
overrides are applied on the C++ side (shared MHO_ControlEvaluatorSupport), so
this entry point returns just the RAW statement list.
JSON contract (keep in sync with MHO_PythonSubprocessContract.hh):
request : { schema_version, pass_info, config, script_path }
response : { schema_version, ok, statements, error }