PDS_VERSION_ID = PDS3 RECORD_TYPE = STREAM LABEL_REVISION_NOTE = " 2016-06-15 SwRI:BTCarcich New file " OBJECT = TEXT PUBLICATION_DATE = 2016-06-15 NOTE = "The NH ALICE Pluto encounter Raw VERSION 2.0 Data Archive Generic overview of NH PDS labels " END_OBJECT = TEXT END PDS label overview ================== Under the DATA/ subdirectory of this data set, each PDS label file is a multi-record flat ASCII file describing the Data Units in a corresponding FITS data file that represent a single observation or group of observations. A FITS file is made up of one or more contiguous 2880-byte records. Each Data Unit (DU) in a FITS data file comprises one or more records. The data in each DU starts at the first byte of the DU and is arranged as described in the PDS label. If the data in a DU do not end at a 2880-byte boundary, then that DU is padded out to the boundary. Each record in a PDS label is 80 bytes long comprising 78 printable 7-bit ASCII characters and/or spaces and ending with a carriage return and a line feed. Most records are of the form KEYWORD = VALUE where KEYWORD is the name of a quantity, and VALUE represents the value of that quantity. Spaces before, after, and between the keyword, the equals sign, and the value(s) are not significant. String values may span multiple records, and are usually delimited by (i.e. enclosed in) double quotes. Strings contain no double quotes. Some string values, such as UTC times, are not enclosed in quotes. Most integer & floating point numeric values are displayed without quotes. Multiple values for a single keyword are indicated by enclosing the values in parentheses or curly braces and separating the values with commas. Comments are initiated by a contiguous forward-slash & asterisk pair (i.e. /*) on the left and continue to the end of a single record where they are usually terminated by a matching asterisk & forward-slash pair (*/). Whether or not the terminating pair is present, the comment ends at the end of the record, and another initiating pair must be present on the next record if that record is intended to continue the comment. Blank lines may be inserted between other lines to enhance readability. 1) PDS pointers Pointers are special cases of keyword/value pairs in the PDS label, and define where each DU starts in the FITS file; pointers look like this: ^HEADER = "XYZ.FIT" /* Primary Header DU (HDU) */ ^IMAGE = ("XYZ.FIT",11) /* Primary DU */ ^ERROR_HEADER = ("XYZ.FIT",22) /* Extension #1 HDU */ ^ERROR_IMAGE = ("XYZ.FIT",31) /* Extension #1 DU */ ^HOUSEKEEPING_HEADER = ("XYZ.FIT",43) /* Extension #2 HDU */ ^HOUSEKEEPING_TABLE = ("XYZ.FIT",44) /* Extension #2 DU */ ^THRUSTERS_HEADER = ("XYZ.FIT",45) /* Extension #3 HDU */ ^THRUSTERS_TABLE = ("XYZ.FIT",51) /* Extension #3 DU */ Pointer keywords HEADER and IMAGE refer to the Primary Header Data Unit (HDU) and Primary Data Unit, respectively. Pointer keywords that end in _HEADER refer to Extension HDUs. Pointer keywords that end in _IMAGE or _TABLE or _ARRAY or _HISTOGRAM refer to Extension DUs. The text after the equals sign in each pointer is usually enclosed by parentheses and comprises the filename of the file where the DU resides and the DU's location in that file. The filename and the location are delimited by a comma. The filename is a string enclosed in double quotes, and the DU location is a decimal integer value indicating the cardinal location in the file of the first 2880-byte record of the DU. For example, the ^IMAGE DU above, with a location value of 11, starts at an offset of 28800 bytes (= [11-1]*2880) from the first byte of the file. If only the filename is given, with neither the parentheses nor the comma nor the location, then the DU starts at the beginning of the file i.e. the location is implicitly set to one. 2) OBJECT stanzas Each pointer in a PDS label will have a corresponding OBJECT stanza. OBJECT stanzas comprise the lines between corresponding 'OBJECT=' & 'END_OBJECT=' keyword lines. OBJECT stanzas referring to TABLEs will contain one or more 'OBJECT=COLUMN'/'END_OBJECT=COLUMN' stanzas. See the comments (/* ... */) to the right of the keywords in the example below to understand the OBJECTs and keywords that describe binary tables. ************************************************************************ ********** N.B. This example does not describe every keyword ********** ********** that will be present in each table, but only ********** ********** those necessary to read and understand the ********** ********** arrangement of the data in the DU to which ********** ********** OBJECTs refer. Refer to the PDS standards ********** ********** for more details. ********** ********** Example starts after the next line ********** ************************************************************************ ^S_TABLE = ("XYZ.FIT",51) /* EDU #3; Data table */ OBJECT = S_TABLE /* Start of object describing data of pointer ^S_TABLE */ INTERCHANGE_FORMAT = BINARY ROWS = 463 /* Table comprises 463 rows */ COLUMNS = 97 /* Table comprises 97 columns */ ROW_BYTES = 1080 /* Each row comprises 1080 bytes */ DESCRIPTION = "..." OBJECT = COLUMN /* OBJECT describing column 1 */ NAME = STATUSES /* Column name */ COLUMN_NUMBER = 1 /* Column location within row */ DATA TYPE = MSB_INTEGER /* Column data element type */ ITEMS = 3 /* Number of data elements in column */ ITEM_BYTES = 2 /* Size of each data element in column */ START_BYTE = 1 /* Byte location in row of 1st byte of column */ BYTES = 6 /* Column width (bytes); <= ITEMS*ITEM_BYTES */ DESCRIPTION = "..." END_OBJECT = COLUMN OBJECT = COLUMN /* OBJECT describing column 2 */ NAME = TEMPERATURE /* Column name */ COLUMN_NUMBER = 2 /* Column location within row */ DATA TYPE = IEEE_REAL /* Column data type */ ITEM_BYTES = 4 /* Size of each data element in column */ START_BYTE = 7 /* Byte location in row of 1st byte of column */ BYTES = 4 /* Column width (bytes); <= ITEMS * ITEM_BYTES */ DESCRIPTION = "..." END_OBJECT = COLUMN ... END_OBJECT = S_TABLE /* End of object S_TABLE */ ************************************************************************ ********** Example ends before the previous line ***************** ************************************************************************ In the example above: - the table S_TABLE starts at byte 144001 ((51-1)*2880 + 1) of the file, and comprises 97 rows each of width 1080 bytes. - the first column, named STATUSES, in each row starts at the 1st byte of that row and comprises three MSB-first 16-bit integers using 6 bytes total on each row. - the second column, named TEMPERATURE, in each row starts at the seventh byte of that row and comprises one IEEE 32-bit floating point value using four bytes total on each row. The ITEMS value defaults to 1 if the keyword is not present. - Subsequent rows are offset 1080 bytes from the previous row. Generic PDS label details ========================= The PDS label has meta-data which describe the circumstances surrounding the data in the FITS file. These meta-data are in keyword and value pairs (e.g. the pointers above) and each of these keywords is described in the PDS Data Dictionary plus the New Horizons mission-specific local data dictionary supplemental items, both of which are available in this archive. All FITS Header Data Units (HDUs) and Data Units are described in the PDS labels. In some cases, no Data Unit will be described in the PDS label because there is nothing to describe i.e. it is not present in the FITS file. PDS LABELS: Column Descriptions in binary tables ------------------------------------------------- FITS extensions may contain data that are a subset of instrument and/or spacecraft housekeeping telemetry packets formatted as binary tables. Where possible, each column included in such extensions has a DESCRIPTION field something like this: DESCRIPTION = " Full Mnemonic: SWAP_RT.SEC64_ST General Description: A bit indicating the beginning of a 64-second cycle Conversion: STATES - [lo:hi]=state description: [0:0]=CONT [1:1]=START Subsystem: SWAP Packet ApID: 0X584 Byte Offset within ApID packet: 10 Bit Offset within Byte of ApID packet: 0 Bit Length within ApID packet: 1 Type of value: UNSIGNED Units: N/A " The sub-fields used in these DESCRIPTION fields are as follows: Full Mnemonic: The complete mnemonic used in the definition of the packet. The COLUMN name will typically be a subset of this mnemonic. General Description: A description of the column Extended Description: More information - this field is not always present Conversion: This item describes the conversion of the value found in the column to a meaningful quantity. It takes one of two forms: STATES and polynomial. If the conversion form is STATES, then the bits of the column are combined into an integer and compared against the ranges list. In the example above, if the value of the bit is zero, then the SWAP_RT.SEC64T column represents a continuing state. If the value of the bit is 1, then the SWAP_RT_SEC64T column indicates that a new 64-second cycle has just begun. If the conversion form is polynomial, then the bits of the column are combined into an integer and used as the independent value of the polynomial with the coefficients given. For example, if the integer value of a column is 100, and its conversion looks like this: Conversion: polynomial coefficients: Order 0: 0.925 Order 1: 0.979 Then the derived value of this instrument is 0.925 + (0.979 * 100) = 98.825 Subsystem: Which subsystem generated the packet Packet ApID: The Application ID of the packet Byte & Bit Offsets & Bit Length: the location of the column's value in the packet, including the 10-byte CCDS header. Type of value: For integer values, whether the value is signed or unsigned Units: Nominal units of the derived column values