Version History

v3.2.0

  • Add PIDController as alternative control strategy.

  • Move current control strategy to OICController (optimal integral controller).

  • Add PID option to OICController output.

  • Add mypy type checking to ts_ofc.

  • Allow filter names to be passed as ‘r_01’, ‘r’ or ‘R’.

  • Change ofc.calculate_corrections() to expect sensor_ids instead of sensor_names.

  • Add comcam to policy/sensor_ids_to_names.yaml.

  • Add zn_selected as a configuration too policy files.

v3.1.3

  • Update to use ts_jenkins_shared_library.

v3.1.2

  • Move class diagrams to mermaid from plantUML.

v3.1.1

  • Update Jenkins to do daily and weekly builds.

v3.1.0

  • Update sensitivity matrix and intrinsic zernikes up to zk 28.

  • Add zn_selected to select the zernikes to be used.

  • Updated alpha values for image quality matrix.

v3.0.2

  • Update the version of ts-conda-build to 0.4 in the conda recipe.

v3.0.1

  • Removed Zemax Coordinate System, which is substituted by the Camera Coordinate System.

  • Updated the bending modes used to the new uncorrupted bending modes.

  • Updated sensitivity matrix and intrinsic zernikes for the new coordinate system and new bending modes.

  • Removed old unused test data.

v3.0.0

Major refactor of ofc code to allow camera rotation.

  • Added derotation of ts_wep zernike estimates to deal with rotation of the sensor.

  • Added ability to evaluate sensitivity matrix and intrinsic zernikes at the rotated field position.
    • Added double zernikes sensitivity matrix for lsst and comcam.

    • Added double zernikes intrinsic zernikes for lsst and comcam.

  • Policy folder was simplified since lsstfam and lsst share all double zernike files.

  • Added scripts to generate sensitivity matrix and intrinsic files from batoid package.

v2.1.1

  • Update pre-commit hooks with ruff.

v2.1.0

  • Update setup configuration files, remove flake8.

v2.0.9

  • Create additional default factories for BaseOFCData.

v2.0.8

  • Run black v23.1.0.

  • Update Jenkinsfile.

v2.0.7

  • Update Jenkinsfile, posting to aos-builds.

v2.0.6

  • Added documentation link to the README.

v2.0.5

  • Format with Black v22.3.0.

v2.0.4

  • Update LSSTCam sensor names.

v2.0.3

  • Fix setup.cfg to support conda versioning.

v2.0.2

  • OFC.get_correction() should give the aggregated degree of freedom (DOF).

  • Remove the out-of-date documents: content.rst, ctrlIntfClass.uml, and ofcClass.uml.

v2.0.1

  • Put the delta in BaseOFCData to be property.

v2.0.0

Major refactor of ofc code.

  • The code was reorganized so that the main user-interface class (previously OFCCalculation, now just OFC) is at the top level of the package.

  • The OFC class is no longer subclassed for the different instruments, since the behavior was the same in all cases.

  • Document the control algorithm for OFC in rst from Confluence

  • Document the camera rotation degree of freedom in rst from Confluence

  • General improvements in documentation.

Data handling

All data is now handled by a two container classes, BaseOFCData and OFCData, which is shared between all the other classes that require data access. Most of the data is defined in-line, instead of reading them from files. The data that is read from files are the ones for the instruments. This is handled in the background when the user sets the “name” attribute in an instance of OFCData. All data is read at once and stored in memory to avoid unnecessary IO during computation. In the future we may consider adding more data protection and data parsing capabilities, but I think this will work fine for this first iteration.

Corrections

Corrections is now handled by a single class.

Removed WEP dependency

OFC now does not depend on WEP anymore. The dependency was mostly on enumerations for filter names and other things that mapped to string/filenames. These where all replaced by true strings. The advantage is that OFC is no longer tied to that particular use cases, if the user can provide configuration files that matches the input they can use it with WEP without any code changes.

Controller and State Estimator

The core classes where previously called OptCtrl and OptStateEsti. They were renamed OFCController and StateEstimator.

v1.3.7

  • Build and upload documentation as part of the CI job.

  • Use develop-env image for the CI job, due to the need of java to build the documentation.

  • Disable concurrent builds.

  • Improve error message in OptStateEsti._getMatA

v1.3.6

  • Unify the line ending to LF.

v1.3.5

  • Use the latest ts_wep that removes the dependency of sims package.

v1.3.4

  • Use the sims_w_2020_38.

v1.3.3

  • Use the sims_w_2020_36.

  • Support the LSST full-array mode (FAM) by adding the OFCCalculationOfLsstFam class.

v1.3.2

  • Update the sensitivity matrix and M2 force file.

  • This unifies the corrdinate system of M1M3 and M2 in FEA model.

  • Test the sims_w_2020_28.

v1.3.1

  • Reformat the code by black.

  • Add the black check to .githooks.

  • Ignore flake8 check of E203 ans W503 for the black.

  • Use the sims_w_2020_21.

  • Fix the hexapod rotation matrix.

v1.3.0

  • Adds parameter to specify values of state 0 DoF (M2 & Camera hexapod positions, M1M3 & M2 bending modes).

v1.2.6

  • Use sims_w_2020_15.

  • Update the bending mode files.

  • Update optiPSSN.yaml for the new penality values.

  • Update OptCtrlDataDecorator class to use BendModeToForce to get the bending mode.

  • Update the rotation matrix of mirror in CamRot class.

  • Remove the bending mode transformation in SubSysAdap class.

v1.2.5

  • Use sims_w_2020_14.

v1.2.4

  • Use sims_w_2020_04.

v1.2.3

  • Use sims_w_2019_50.

v1.2.2

  • Use sims_w_2019_38.

v1.2.1

  • Use sims_w_2019_31 and the latest ts_wep version.

  • Remove the conda package installation in Jenkinsfile.

  • Update the permission of workspace after the unit test.

v1.2.0

  • Use sims_w_2019_29 and the latest ts_wep version.

  • Add the getZtaac() in OFCCalculation class.

v1.1.9

  • Use sims_w_2019_24.

  • Add the dependency of ts_wep in the table file.

  • Move the SensorWavefronError class to ts_wep.

v1.1.8

  • Use sims_w_2019_20.

v1.1.7

  • Depend on the ts_wep and support the documenteer.

  • Use sims_w_2019_18.

v1.1.6

  • Add the unit tests of control interface classes and fix the minor errors.

  • Add the Shack-Hartmann and CMOS cameras.

v1.1.5

  • Add the classes to translate the Zemax coordinate to subsystem’s coordinate and vice versa.

v1.1.4

  • Use the eups as the package manager and yaml configuration file format.

v1.1.3

  • Add the get functions of state in OFCCalculation class.

v1.1.2

  • Fix the interface class of M2HexapodCorrection.

  • Rename the HexapodCorrection class to CameraHexapodCorrection.

v1.1.1

  • Add the interface to MTAOS in ctrlIntf module.

v1.0.1

  • Reuse the FilterType Enum from ts_tcs_wep.

v1.0.0

  • Finish the OFC with the support of algorithm study in Python.