1DPAMZT Thermal Model (dpa_check)

Overview

This code generates backstop load review outputs for checking the ACIS temperature 1DPAMZT. It also generates model validation plots for 1DPAMZT, comparing predicted values to telemetry for the previous three weeks. dpa_check depends on the acis_thermal_check Python package for nearly all of its functionality.

Installation and Development

This assumes that you have a cloned copy of dpa_check from http://github.com/acisops/dpa_check. If you have your own Python/Ska environment available (on a laptop or some other machine), and you have write permissions on it, to install the package simply run:

python setup.py install

from the top-level directory of the package. This will install dpa_check as a Python package, including installing the dpa_check command-line script into the same bin directory that the Python executable is in.

If you are running and testing this package using the flight-approved Ska environment on the HEAD LAN, you will not be able to directly install into this environment but can install dpa_check as a local package. In this case, the command is slightly modified:

python setup.py install --user

which will install the package under a path given by the site.USER_BASE variable in Python, which on Linux is ~/.local. This path can be modified by setting the environment variable PYTHONUSERBASE to the desired path before running the above command. You will need to add ${PYTHONUSERBASE}/bin to your PATH environment variable in order to run the dpa_check script from there.

If you are doing frequent development and would like to be able to change the code on the fly and re-run without having to reinstall the code every time, you can use the develop option of setup.py, which lets you run the code from the source directory itself:

python setup.py develop [--user]

where the --user flag is again only necessary if you do not have write permissions for the Python environment you are installing into. If you use develop, all imports of the dpa_check package will refer back to the code in the source directory that you are working from.

Command line options

Typical use case

In the typical use case for doing load review the dpa_check tool will propagate forward from a 5-minute average of the last available telemetry using the cmd_states table. The following options control the runtime behavior of the dpa_check script:

Option

Description

Default

–outdir=OUTDIR

Output directory

out

–oflsdir=OFLSDIR

Load products OFLS directory

None

–model-spec=MODEL_SPEC

Model specification file

dpa_model_spec.json

–days=DAYS

Days of validation data (days)

21

–run-start=RUN_START

Start time for regression testing

None

–traceback=TRACEBACK

Enable tracebacks

True

–verbose=VERBOSE

Verbosity 0=quiet 1=normal 2=debug

1 (normal)

–version

Print version

Custom initial conditions

In the event that the Ska database is unavailable or specific initial conditions are desired, the following options are provided. The only required option is that of the initial temperature:

Note

Specifying custom conditions still requires the Ska database in the current release.

All the rest of the options have default values that will produce a conservative (hot) prediction:

Option

Description

Default

–T-dpa=T_DPA

Initial 1DPAMZT temperature (degC)

None

–ccd-count=CCD_COUNT

Initial number of CCDs

6

–fep-count=FEP_COUNT

Initial number of FEPs

6

–vid-board=VID_BOARD

Initial state of ACIS vid_board

1

–clocking=CLOCKING

Initial state of ACIS clocking

1

–simpos=SIMPOS

Initial SIM-Z position (steps)

75616

–pitch=PITCH

Initial pitch (degrees)

150

Example Invocations

dpa_check --oflsdir=/data/acis/LoadReviews/2009/MAY1809/oflsb --outdir=out

dpa_check --oflsdir=/data/acis/LoadReviews/2009/MAY1809/oflsb --simpos=-99616 \
          --pitch=130.0 --T-dpa=22.2 --ccd-count=1 --fep-count=1

dpa_check --outdir=regress2010 --run-start=2010:365 --days=360

Regression Tests

Running Tests

dpa_check comes with a regression test suite which uses py.test to run the tests by comparing the answers given by the code to a “gold standard” set of answers. To determine if code changes pass these tests, within a cloned copy of dpa_check in the dpa_check/dpa_check/tests subdirectory run:

py.test -s

The -s flag outputs the stdout and stderr to screen so you can see what’s going on. If you’d rather not see that, just remove the flag.

If you have changed the model specification file or made another change that will change the answers, to generate new answers run:

py.test -s --generate_answers=answer_dir

where answer_dir is a directory to output the new answers to. The new answers should be reviewed with the ACIS operations team before copying to the default location for the “gold standard” answers.

Answers should be generated using the py.test that is part of the flight Ska environment.

Adding New Tests

If you want to add a new test for 1DPAMZT which runs the model for a particular load, it is very easy. This test should be added to dpa_check/dpa_check/tests/test_dpa.py, and have the following form:

def test_dpa_may3016(generate_answers):
    run_start = "2016:122:12:00:00.000"
    load_week = "MAY3016"
    dpa_test_template(generate_answers, run_start, load_week)

This test runs the model for the "MAY3016" load_week, at a particular value of run_start. These arguments are fed into the dpa_test_template fucntion, which runs the actual test. The function should have a name in the format test_dpa_{load_week}, and it must take the generate_answers argument.