ArrayData objects

Overview

For basic TOD loading and manipulation, moby2 requires basic information about an experiment’s detector arrays. These are provided through a simple FITS table, stored in the shared repository, for each instrument, season, and array.

The ArrayData database is intended to store idealized information rather than final analysis products. For example, ArrayData contains detector focal plane positions, but these are appropriate for plotting and not for map-making.

When a TOD is loaded, the ArrayData object is stored in member TOD.info.array_data:

>>> tod.info.array_data['det_uid']
array([   0,    1,    2, ..., 1053, 1054, 1055])

But if you wanted, you could instead load ArrayData for a particular season/array like this:

>>> array_data = moby2.scripting.get_array_data(
... {'season': 2014, 'array_name': 'ar2'})

The ArrayData object currently inherits from dict and so you can grab whatever vector you want by name:

>>> print array_data['det_uid']
[   0    1    2 ..., 1053 1054 1055]
>>> print array_data['sky_x']
[ 0.42267853  0.44379987  0.39369126 ...,  0.          0.          0.        ]

To grab multiple vectors and extract only a preferred set of det_uid, use the get_property() call:

>>> array_data.get_property(['sky_x','sky_y'], det_uid=[0,1])
[array([ 0.42267853,  0.44379987]), array([-1.30226105, -1.17007225])]

ArrayData also supports some database-like functionality. This allows one to select detectors matching some criteria. For example, the det_uid of the row=3 detectors:

>>> array_data.select_outer({'row': [3]})
array([ 96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
       109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
       122, 123, 124, 125, 126, 127])

In order to find the FITS source files, the .moby2 file must contain a pointer to the actpol_shared depot.

Data

Here we list some of the data contained in the ArrayData files.

det_uid- The detector UID.

col, row - The multiplexing column and row.

wafer - The wafer name.

det_type - The detector type (e.g., ‘tes’, ‘dark_tes’, ‘dark_squid’, ‘johnson’, ‘no_conn’).

nom_freq - The nominal detector frequency band. (This a low-precision

number that serves as a label for separating the bands in a multi-chroic array. I.e., we don’t want more than 1 or 2 sigfigs here. We currently use 150. and 90. to describe the ACTPol bands.)

sky_x, sky_y, sky_angle - Position of the detector in the focal

plane (degrees), and polarization angle (degrees CCW from east as projected onto the sky). These are idealized. Do not use for mapping. Co-located detector pairs should have identical sky_x and sky_y values. Positions are only valid for det_type=’tes’.

optical_sign - Either +1 or -1 depending on how the optical signal is

coupled into the readout.

pol_family - An arbitrary division of detectors into categories ‘A’ and

‘B’ (or ‘X’ for undefined). The two detectors in a co-located pair will have different values for this parameter.

bias_name, bias_line - The MCE bias line assigned to the detector.