Version History

v0.27.4 (2024-02-12)

Performance Enhancement

  • In /auxtel/, change how the source selection is checked when running wep. Instead of relying on the intra-focal image as the basis, compute the distance to the boresight and either use the source detected (if it is close enough to the bore sight) or use the source detected for the other image. It will also raise an exception if both sources are too far from the boresight.

    In auxtel/, add gains when converting from wavefront error to hexapod correction. (DM-42690)

v0.27.3 (2024-02-02)

New Features

  • In auxtel/ added self.next_supplemented_group_id() call so that intra and extra focal images have the same group id. (DM-41684) (DM-41684)

v0.27.2 (2023-12-14)

New Features

  • In auxtel/, add config to reset the AOS offsets. (DM-41870)

Bug Fixes

  • Fixed a bug in module when trying to flush the ataos.evt_detailedState event before resetting resetting the hexapod to its initial position. That flush was not needed, redundant and it was causing an error. (DM-41718)

  • In auxtel/, add floor to y-value of final blind offset position to prevent target landing off of detector. (DM-41870)

v0.27.1 (2023-11-29)

Bug Fixes

    • Fix make_love_uptime_tests to use proper dict keys format (DM-41266)

Other Changes and Additions

    • In love_manager_client, make_love_stress_tests and make_love_uptime_tests change location attribute to be an URL instead of a domain

    • In love_manager_client remove command_url

    • In make_love_stress_tests and make_love_uptime_tests make both USER_USERNAME and USER_USER_PASS environment variables required (DM-41536)

v0.27.0 (2023-10-30)

New Features

  • Update maintel/tma/ to have timer outside the generator get_azel_random_walk

  • Create maintel/tma/ based on BaseTrackTargetAndTakeImage and RandomWalk (DM-38437)

v0.26.1 (2023-10-06)

New Features

  • In auxtel/, add functionality to return hexapod to its initial position in case of failures during the alignment process.. (DM-37831)

  • In auxtel/correct_pointing, reset offsets after slewing to avoid elevation out of range issue. In auxtel/, relax default focus threshold. (DM-40852)


  • Integrate towncrier for release notes and change log management (DM-40534)

Other Changes and Additions

  • In news_creation.yaml remove the --dir parameter from towncrier check action. (DM-40534)


  • Add new script This script is used to test the uptime of the LOVE system.

  • Add new module This module is used to create a LOVE Manager client.

  • In auxtel/, fix bug where magnitude_range and radius were not being passed to find_target.


  • In auxtel/, update default search parameters to increase chance of finding target in local catalog.

  • Remove setup.cfg file and update flake8 options in pyproject.toml. Update conda recipe.

  • In auxtel/, reduce default focus correction threshold.


  • In maintel/, fix typo in pipeline instrument name.


  • In auxtel/, fixed bug where _center could send Nan offsets to atcs.


  • In, update to check for instrument cp_verify config file first.


  • In auxtel/, update sensitiviy matrix and add hexapod_offset_scale from constants.

  • In auxtel/, update default search radius to 5.0 deg.


  • In auxtel/ and auxtel/ replace calls of look_up_table_offset with new atcs method offset_aos_lut.

  • Add new .github/workflows/changelog.yaml file.


  • In auxtel/, fix call to get_next_image_data_id.


  • In
    • The random_walk_azel_by_time function now returns a dataclass

    • Replace .get calls with .aget calls

    • Fix/improve docstring in RandomWalkData

    • Remove unused variable `data`

    • Remove/improve log messages in random_walk_by_time

    • Improve random_walk_azel_by_time docstring to explain the name origin

  • Add new script for AuxTel. This script is used to slew to a target and center it at a specific position.

  • In auxtel/correct_pointing and auxtel/latiss_base_align, add config to search local catalog and set to HD_cwfs_stars by default.

  • In auxtel/, remove inline method get_image and import/use new method ``get_image_sync` from ts_observing_utilities.

  • Update latiss_wep_align to work with version 5 of ts_wep

  • In auxtel/latiss_intra_extra_focal_data, take detection image after applying offset.

  • In auxtel/, implement telescope offset correction when applying tip-tilt hexapod offsets.

  • Run isort.

  • Update Jenkinsfile to use shared library.

  • Configure package to use ts_pre_commit to manage pre_commit hooks.


  • Add new Script LatissIntraExtraFocalData for AuxTel. This script is used to take intra and extra focal data with given look up table offsets. It uses the module.

  • In
    • Expand functionality of offset_hexapod() and rename to look_up_table_hexapod

    • Add slew_to_target function


  • In

    • Update number and exposure times for darks.


  • Update pre-commit hook versions.

  • Run black 23.1.0.


  • In

    • Add delay to Manager clients creation.

    • Stop changing CSCs states. Now only checks if CSCs are enabled, otherwise raises an exception.

  • In auxtel/, update get_donut_catalog to include blend_centroid_x / blend_centroid_y to the donut catalog.


  • In auxtel/, update log messages with positions of sources found.

  • Add new Script StressLOVE. This scripts generates LOVE-manager clients in order to stress the system. It calculates a mean latency after a certain amount of messages is received.


  • Add new Script RandomWalk for MainTel. This script slew and track objects on sky while performing offsets with pre-defined size in random directions. It also has a probability of performing larger offsets.

  • Add new Script SerpentWalk for MainTel. This script slew and track targets on sky following an Az/El. For the first Az, it goes up in elevation. For the following Az, it goes down in elevation. This up/down pattern resembles a serpent walking on sky. The script also allows using a cut-off elevation angle. The number of targets above the cut-off elevation angle is cut in half.


  • Add new Script TrackTargetSched for MainTel. This script implements a simple visit consisting of slewing to a target and start tracking.


  • Add new Script CorrectPointing for AuxTel. This Script is to be used at the start of the night to correct any zero point offset in the pointing.

  • In maintel/, fix id of the configuration schema.

  • In auxtel/make_latiss_calibrations, fix id of the configuration schema.

  • In

    • Fix id of the configuration schema.

    • Catch any exception when processing calibrations, log it and continue.

    • Catch any exception in do_verify, log it and continue.


  • In base_make_calibrations:

    • Set do_gain_from_flat_pair to True by default.

    • Log errors instead of raising.

    • Delete RuntimeErrors related to OCPS and certification.


  • Update unit tests for compatibility with ts_salobj 7.2.


  • In python/lsst/ts/externalscripts/auxtel/

    • Add new feature that allow users to select different types of grids; healpy (original) or radec (new).

    • Add rotator sequence feature.

    • Allow users to skip a number of points at the beginning of the sequence.

  • Run isort.


  • In python/lsst/ts/externalscripts/auxtel/

    • Fix bug in configure method.

    • Fix small bug so the hexapod goes back to the proper position after the intra/extra movement.

  • Update to test configuration.

  • Modernize Jenkinsfile for CI job.


  • Add new script python/lsst/ts/externalscripts/maintel/ This new script is used to move one of the two hexapods to its maximum position in incremental steps.


  • In python/lsst/ts/externalscripts/auxtel/, add option to change the grating.

  • In python/lsst/ts/externalscripts/auxtel/, python/lsst/ts/externalscripts/maintel/, and python/lsst/ts/externalscripts/, replace master calibrations for combined calibrations.


  • In python/lsst/ts/externalscripts/auxtel/, add feasibility check before executing script. This will check that all TCS and LATISS controlled CSCs are enabled and that the required ATAOS corrections are enabled.

  • In python/lsst/ts/externalscripts/auxtel/`:

    • Add feasibility check before executing script. This will check that all CSCs are enabled and that the required ATAOS corrections are enabled.

    • Move the target configuration step from the configure step into the run step, to prevent the script from failing and remaining in “UNCONFIGURED” state.

  • In python/lsst/ts/externalscripts/auxtel/ replace use of BestEffortIsr in type annotation with typing.All to support summit_utils as a optional package.


  • In auxtel/, add support for loading a playlist. This is useful for running integration-type tests.

  • In LatissBaseAlign:

    • Fix issue in configure method accessing self.config instead of config.

    • Change default rotator strategy from SkyAuto to PhysicalSky.


  • Add new metaclass, LatissBaseAlign, which contains the generic actions required to execute a curvature wavefront error measurement, abstracting the computation part. The meta script performs the following actions:

    • slew to a selected target,

    • acquire intra/extra focal data by offsetting the hexapod in z,

    • run a meta function that computes the wavefront errors,

    • de-rotate the wavefront errors,

    • apply a sensitivity matrix to compute hexapod and telescope offsets,

    • apply comma and focus correction to the hexapod and pointing offsets.

    Therefore child implementations are only left to implement the function that computes the wavefront errors.

  • In LatissCWFSAlign, use new meta script LatissBaseAlign. This basically removes all the code that was moved from LatissCWFSAlign into LatissBaseAlign.

  • Add unit tests for new LatissWEPAlign script.

  • Add new LatissWEPAlign script that implements LatissBaseAlign script by using the wavefront estimation pipeline task. This is the same code we will use for the main telescope and is designed as a DM pipeline task, rather than a standalone python code as CWFS. Note that the code is developed to use most of the processing done by the cwfs version using, for instance, BestEfforIsr to rapidly process the raw frames and QuickFrameMeasurementTask to find the donuts. The data is then passed along to the pipeline task for processing. Also, note that the processing is done in parallel in a separate python process. This guarantees that the main processing (driving the Script) is kept free of load. The amount of data passed from one process to another is rather small in this case, only the pipeline task result and the quick frame measurements are returned.

  • In LatissCWFSAlign unit test:

    • rename run_cwfs -> run_align

    • rename sensitivity_matrix -> matrix_sensitivity

    • rename total_coma_x_offset -> offset_total_coma_x

    • rename total_coma_y_offset -> offset_total_coma_y

    • rename total_focus_offset -> offset_total_focus

    • update access to results for dict to new LatissAlignResults dataclass

    • remove __all__

    • add missing line on license header.


  • In LatissAcquireAndTakeSequence.configure, replace usage of deprecated collections.Iterable with

  • In LatissCWFSAlign fix missing space in error message.


  • First version with documentation.

  • Updated latiss_cwfs_align to handle case where the applied offsets to the ATAOS are too small for a correction to be applied.