OFCData

class lsst.ts.ofc.OFCData(name: str | None = None, config_dir: str | None = None, log: logging.Logger | None = None, **kwargs: dict[str, Any])

Bases: BaseOFCData

Optical Feedback Control Data.

This container class provides a unified interface to all the data used by the OFC and its ancillary classes. It provides utiliy to load, inspect and update the different configuration files used by these classes.

Parameters

namestring or None, optional

Name of the instrument/configuration. This must map to a directory inside data_path.

config_dirstring or None, optional

Path to configuration directory. If None (default) use data provided with the module. If a string is provided it must map to a valid path.

loglogging.Logger or None, optional

Optional logging class to be used for logging operations. If None, creates a new logger.

kwargsdict

Additional keyword arguments. Value are passed over to the BaseOFCData parent class.

Attributes

bend_modedict

Dictionary to hold bending mode data. The data is read alongside the other files when the name is set.

config_dirpathlib.Path

Path to the directory storing configuration files.

controller_filenamestring

Controller configuration filename.

dof_idxdict of string

Index of Degree of Freedom (DOF).

field_idxdict of string

Mapping between sensor name and field index.

gq_points: np.ndarray of float

Gaussian Quadrature points for LSST field.

image_quality_weightnp.ndarray of float

Image quality weight for the Gaussian Quadrature points.

intrinsic_zkdict of string

Intrinsic zernike coefficients per band per detector for a specific instrument configuration.

loglogging.Logger

Logger class used for logging operations.

namestring

Name of the instrument configuration. This is used to define where intrinsic_zk and y2 will be read from.

sensitivity_matrixnp.ndarray of float

Sensitivity matrix M.

start_taskasyncio.Future

Asyncio future that tracks whether the class is setup and ready or not.

xref_listlist of string

Available reference point strategies.

y2_correctionnp.ndarray of float

Y2 correction.

zn_idxnp.ndarray of int

Zernike indices used.

zn_selectednp.ndarray of int

Zernike indices selected in Zernike Noll Index.

zn_idx_masknp.ndarray of bool

Mask to select Zernike indices.

Raises

RuntimeError

If input config_dir does not exists.

Attributes Summary

comp_dof_idx

Index of Degree of Freedom (DOF) per component.

controller_filename

Controller configuration filename.

delta

Delta coefficient for the normalized point-source sensitivity (PSSN).

dof_idx

Index of Degree of Freedom (DOF).

dof_idx_mask

Mask to select Degree of Freedom (DOF).

dof_state0_filename

intrinsic_zk_filename_root

m1m3_actuator_penalty

m2_actuator_penalty

motion_penalty

name

sen_m_filename_root

xref

Reference point strategy.

xref_list

Available reference point strategies.

y2_filename_root

zn_idx

Zernike indices used.

zn_idx_mask

Mask to select Zernike indices.

zn_selected

Zernike indices selected in Zernike Noll Index.

znmax

znmin

Methods Summary

configure_controller()

Refresh the controller configuration based on the current controller_filename.

configure_instrument(instrument)

Configure instrument concurrently.

load_yaml_file(file_path)

Load yaml file.

Attributes Documentation

comp_dof_idx

Index of Degree of Freedom (DOF) per component.

controller_filename

Controller configuration filename.

Returns

string

Controller configuration filename.

delta

Delta coefficient for the normalized point-source sensitivity (PSSN).

This delta defines the range where PSSN=1-alpha^2 sigma^2 is accurate to 0.001. What we are concerned with is that the system could be trying to achieve tiny PSSN gains at the price of large control motions. This only applies to converged states. In converged states, of course the Zernikes will be within the range defined by delta. For more details, please check the page 19-21 in: https://docushare.lsst.org/docushare/dsweb/Get/Document-18041/150513.pptx.pdf

Returns

np.array of float

Delta coefficient.

dof_idx

Index of Degree of Freedom (DOF).

dof_idx_mask

Mask to select Degree of Freedom (DOF).

dof_state0_filename: str = 'state0_in_dof.yaml'
intrinsic_zk_filename_root: str = 'intrinsic_zk'
m1m3_actuator_penalty: float = 13.2584
m2_actuator_penalty: float = 134.0
motion_penalty: float = 0.01
name
sen_m_filename_root: str = 'sensitivity'
xref

Reference point strategy.

Returns

string

Reference point strategy.

xref_list

Available reference point strategies.

y2_filename_root: str = '_y2.yaml'
zn_idx

Zernike indices used.

zn_idx_mask

Mask to select Zernike indices.

zn_selected

Zernike indices selected in Zernike Noll Index.

znmax: int = 28
znmin: int = 4

Methods Documentation

configure_controller() None

Refresh the controller configuration based on the current controller_filename.

async configure_instrument(instrument: str) None

Configure instrument concurrently.

Parameters

instrumentstring

Name of the instrument.

load_yaml_file(file_path: pathlib.Path | str) dict

Load yaml file.

Parameters

file_pathpathlib.Path or string

Path to the yaml file.

Returns

dict

Dictionary with the yaml file content.

Raises

RuntimeError

If file does not exist.