Calibration Objects

Overview

The main difficulty in calibrating a TOD is not the multiplication, but the actual retrieval and construction of the correct calibration numbers to use. The swiss-knife function for assembling calibration vectors is scripting.get_calibration(). The goal of this function is that all calibration can be specified in a calibration parameter block, suitable for MobyDict-style configuration files. Example:

# Import moby2 and get the local filebase
import moby2
fb = moby2.scripting.get_filebase()
# Load a particular planet TOD from season 2.
filename = fb.get_full_path('1412925756.1412925775.ar2')
tod = moby2.scripting.get_tod({'filename': filename})
# Get a calibration object, requesting the basic IV cal stored with the data.
cal = moby2.scripting.get_calibration({'type': 'iv', 'source': 'data'}, tod=tod)
# Apply the calibration.
cal_mask, cal_val = cal.get_property('cal', det_uid=tod.det_uid)
tod.data *= cal_val[:,None]

This example is quite generic aside from the call to get_calibration, where a particular calibration step has been requested:

{'type': 'iv',
 'source': 'data'}

To do other kinds of TOD calibration, see the recipes below.

Recipes

Here we provide examples of calibration parameter blocks that may be passed as the first argument to get_calibration.

The code currently accepts a few other weird type=… options. Note that most parameters that accept a filename=… argument will decode the filename relative to a depot if you specify a depot through the ‘depot’ key.

Multiple calibration steps: To apply several calibrations in sequence,

pass a list instead of a dict as the first argument of get_calibration. Each item of the list must also be a valid calibration parameter block.

[{'type': 'iv',
  'source': 'data'},
 {'type': 'constant',
  'value': 1e7}]
IV calibration: Usually you will want source=’data’, but if you have an

MCE IV analysis file (or other runfile) that you want to use you can put that filename into attribute filename and set source=’runfile’.

{'type': 'iv',
 'source': 'data'}

Constant value: For example, to scale from pW to approximate uK units.

{'type': 'constant',
 'value': '1e7'}
ArrayData parameter: This exists primarily for the purposes of

automatically applying the optical_sign that is recorded in the ArrayData. But in principle you can look up any value stored in ArrayData.

{'type': 'array_data_parameter',
 'parameter': 'optical_sign'}
ASCII data: Must be indexed by det_uid. Provide the column index for the

det_uid and calibration number columns.

{'type': 'columns_file',
 'columns': {'det_uid': 0, 'cal': 1},
 'filename': 'my_flatfield.txt'}
ABSCal ASCII data: For looking up the TOD basename in a list and applying

a single recalibration factor for all detectors.

{'type': 'abscal_columns_file',
 'columns': {'det_uid': 0, 'cal': 1},
 'filename': 'my_per_tod_calibration.txt'}
Referenced calibration: This is basically designed to load a bias_step

calibration, given a file that associates time ranges of acquisition to a particular calibration result. See scripting.get_referenced_calibration for more details, or seek advice.

{'type': 'referenced_cal',
 'assignments': {'depot': {'label': 'actpol_shared'},
                 'structure': './BiasStepTimes/intervals_{season}_{array}_{tag}.txt',
                 'tag': '150131',
                 'columns': [0,1,4]},
 'library': {'depot': {'label': 'actpol_egrace1'},
             'structure': 'calibration/bias_step/{tag}.cal',
             'type': 'cal_dict',
             }
 }
Removing the readout filter gain: Divide out the DC gain of the MCE’s

readout filter. Note that this is not necessary in combination with type=’iv’. But it will often appear in combination with bias_step-derived calibartion results.

{'type': 'remove_readout_filter_gain'}