Frames

The basic unit of data processing is the frame. Each frame is a free-form mapping from strings to data of a type derived from G3FrameObject. In general, they behave as Python dictionaries. Wrappers are provided for Python plain-old-data types (numbers, strings, etc.) so that they can be used directly.

Frames have fast serialization to and from disk (see the G3Reader and G3Writer modules in File IO) with built-in data integrity protection. This serialization is accessible programmatically in Python through the Python pickle libraries, which are overridden to use the internal serialization.

Each frame has a type defined under the core.G3FrameType namespace. These are meant to indicate different types of data (calibration vs. scan data, for example) and, in general, many types of frames will be interleaved in the same data stream. A good general rule for whether data should be in a different frame type is to consider the rates at which the data change: data that change at the same speed (e.g. bolometer data and pointing) should share a frame, while data that change at different speeds (e.g. calibration constants and bolometer data) should be separated.

Each frame also has a ._filename attribute, which is set when frames are read in using the core.G3Reader pipeline module with the track_filename option set to True. This attribute is not serialized with the frame, so will be an empty string when used with pickling or multiprocessing. This attribute is fragile and should not be relied upon for production code.

A brief description of the intention of each frame type follows along with a table containing a representative minimal set of data likely to be contained by a frame of a given type. The list is neither exhaustive nor truly minimal: other data can and will be present and some of the data listed here may have been removed or renamed. Neither is this an exhaustive list of frame types: any single character code can be [ab]used as a frame type for special purpose tools.

Scan

Scan frames are the most common unit of data for analysis. They contain the data from a single left-to-right (or right-to-left) scan of the telescope. Where quantities are bolometer-indexed, the names match those in the Wiring map.

Key

Type

Description

ACUStatus

ACUStatusVector

Sequences of gcp.ACUStatus objects containing the ACU state readout during the scan

SourceName

G3String

Name of the source being observed

BoresightAz

G3Timestream

Telescope azimuth as a function of time

BoresightEl

G3Timestream

Telescope elevation as a function of time

RawTimestreams_I

G3TimestreamMap

Raw (counts) timestreams from detectors, indexed by bolometer, I modulation

RawTimestreams_Q

G3TimestreamMap

Raw (counts) timestreams from detectors, indexed by bolometer, Q modulation

CalTimestreams

G3TimestreamMap

Bolometer timestreams with some useful calibration applied (not present in raw data)

TimestreamWeights

G3MapDouble

Floating point weights for each timestream, indexed by bolometer (not present in raw data)

ScanNumber

G3Int

Sequence number of the current scan within an observation

Flags

G3MapVectorString

List of detectors with exceptional conditions. Indexed by bolometer ID. Each element is a list of strings that provides a description of the condition[s] that caused the detector to be flagged (not present in raw data).

Turnaround

G3Bool

Present and set to True if scan is a turnaround or otherwise is not a constant velocity scan. Absent otherwise.

TrakerStatus

TrackerStatus

Composite tracker status information at all points during the scan.

DfMuxHousekeeping

DfMuxHousekeepingMap

Tree containing housekeeping data and configuration from the boards connected to the readout system, indexed by board IP address

CalibratorOn

G3Timestream

Timestream of the calibrator sync signal. Set to 1 if the sync line is high and 0 otherwise. NaN if no readout.

GCPFeatureBits

G3VectorString

Strings describing the GCP flags field.

PipelineInfo

PipelineInfo frames contain information on the processing applied to make the remainder of the data. They typically occur at the beginning of the data stream and are automatically inserted by G3Pipeline, if not previously present. The frame will contain at least one element of type G3PipelineInfo that gives information on the version of the software that made the data and the configuration of all modules and/or segments added to the pipeline. Other data (G3PipelineInfo from previous scripts, configuration information added by other modules) may also be present.

Key

Type

Description

22-May-2019:18:42:15.335969000

G3PipelineInfo

Configuration information of the pipeline that produced an object. Added automatically. The key name is a timestamp indicating the time at which the software began running.

Timepoint

Timepoint frames include sample-by-sample data from the mux system. They are emitted directly by the DfMuxBuilder as part of primary data acquisition and are generally not seen outside the South Pole or the lab. These are transformed into Scan frames by DfMuxCollator.

Key

Type

Description

EventHeader

G3Time

Time of the sample

DfMux

DfMuxMetaSample

Tree containing data from the boards connected to the readout system, indexed by board IP address

Housekeeping

Contains housekeeping data. Issued periodically when housekeeping data is taken. Like Timepoint frames, these are rolled into Scan frames during processing and do not appear in general in stored data.

Key

Type

Description

DfMuxHousekeeping

DfMuxHousekeepingMap

Tree containing housekeeping data and configuration from the boards connected to the readout system, indexed by board IP address

Map

Contains either the result of the map maker or the input to simulation.

Key

Type

Description

Id

G3String

A string identifying the map for the various processing steps

T

G3SkyMap

A map storing the intensity information (could be sky intensity or sky intensity x weight). In the case of maps that store abstract information like apodization masks or point source masks, the data will also be stored under the T key. The motivation being it makes it easy to have G3Modules operating on maps also work on these.

Q

G3SkyMap

A map storing the Q polarization information (could be sky Q or sky Q x weight)

U

G3SkyMap

A map storing the u polarization information (could be sky U or sky U x weight)

Wpol

G3SkyMapWeights

If the frame contains polarized information, this stores the t/q/u covariances scaled by the individual detector weights

Wunpol

G3SkyMapWeights

This stores the unpolarized weight information

Calibration

This frame contains all measured calibration information (pointing, response, etc.) that may change when remeasured. It does not include static information describing how the instrument is set up (see Wiring below).

Key

Type

Description

BolometerProperties

BolometerPropertiesMap

Measured non-configuration-dependent calibration properties of the instrument (pointing, pol efficiency, etc.), indexed by bolometer

NominalBolometerProperties

BolometerPropertiesMap

As above, but what those properties were meant to be.

TimeConst

G3MapDouble

Time constants of the detectors. These can change with the bias point. Should perhaps be moved to the InstrumentStatus frame.

RCW38FluxCalibration

G3MapDouble

Observed flux of RCW38 per detector as a fraction of the calibrator response.

CalibratorResponse

G3MapDouble

Observed response to the most recent calibrator observation for each detector in Watts.

CalibratorResponseSN

G3MapDouble

Signal to noise (in sigma) of the most recent calibrator observation in sigma.

Observation

Indicates global observation parameters. Changes at the beginning of a new observation, though, as with all metadata, repeat observation frames may appear during processing.

Key

Type

Description

SourceName

G3String

Name of the source being observed

ObservationNumber

G3Int

Sequence number of the current observation since we started recording such things

Wiring

Gives the description of how the system is wired: notably, the connection between board serial number, module, channel and a bolometer ID.

Key

Type

Description

WiringMap

DfMuxWiringMap

Digest of the pydfmux channel mappings

ReadoutSystem

G3String

Description of the type of readout system employed. Set to “DfMux” for SPTpol-style readout and “ICE” for 3G-style readout.

GcpSlow

Holds all the GCP data sampled once per second. Like Timepoint and Housekeeping frames, these data are consolidated in the Scan frames and do not appear in final data products. The data stored here begins as a strict copy of the GCP register map (see the GCP documentation for details, a few notable entries are summarized below). A few other keys are added transiently in the course of generating Scan frames.

Key

Type

Description

array

G3MapFrameObject

Most of the data stored by GCP

antenna0

G3MapFrameObject

Telescope pointing information

EndProcessing

EndProcessing is a special-purpose frame emitted implicitly by G3Pipeline at the end of processing. No further frames will occur after this and reception of an EndProcessing frame is intended as a signal to modules that they should clear any internally buffered data and clean up.

EndProcessing frames should, in general, contain no data.