Mars Pathfinder Project


Alpha Proton X-Ray Spectrometer (APXS)
Experiment Data Record (EDR) Specification

D-12849

September 1998

Version 1.5


























JPL
Jet Propulsion Laboratory
4800 Oak Grove Drive
Pasadena, California 91109-8099


TABLE OF CONTENTS

List of Figures
List of Tables
Acronyms and Abbreviations
Action Items for Closure

1.0 INTRODUCTION

1.1 Product and Transferal Mechanism

1.2 Instrument Data Processing

2.0 DETAILED SPECIFICATION

2.1 Structure and Organization Overview

2.1.1 MIPL Local Spectrum Data File
2.1.1.1 Data File Header
2.1.1.2 Spectrum Data
2.1.2 PDS Archived Label File
2.2 File Naming Conventions
2.2.1 VICAR Image Data File Names
2.2.2 PDS File Names

APPENDICES
A APXS PDS/VICAR EDR Label Items
A.1 APXS PDS/VICAR EDR Label Items

B APXS VICAR Property Labels
B.1 APXS VICAR Property Labels


LIST OF FIGURES

2.1 VICAR File Structure for an APXS Spectrum Data File
2.2 VICAR Label Listing for Mars Pathfinder APXS EDR
2.3 Template of Mars Pathfinder APXS EDR PDS Labelled File
2.4 Sample Spectrum Data File Name
2.5 Sample Spectrum PDS Data File Name

 

LIST OF TABLES

1.1 VICAR Software for Mars Pathfinder APXS Spectrum Data Files
2.1 Mars Pathfinder APXS Spectrum Data Files


ACRONYMS AND ABBREVIATIONS

APIDApplication Packet Identification
APXSAlpha Proton X-Ray Spectrometer
EDRExperiment Data Record
LSBLeast Significant Byte first architecture
MIPLMultimission Image Processing Laboratory
MIPSMultimission Image Processing Subsystem (old name of MIPL)
PDSPlanetary Data System
TBDTo Be Determined
URLUniversal Resource Locator
VICARVideo Image Communication and Retrieval system


ACTION ITEMS FOR CLOSURE


Item

Pages

Assignee

Closure Date
none      


1.0 INTRODUCTION

This specification describes the data products to be delivered to the Alpha Proton X-Ray Spectrometer (APXS) Team of the Mars Pathfinder Project by the Multimission Image Processing Laboratory (MIPL). The specifications of the software that produce the products described herein are beyond the scope of this document. Applicable documents include:

  1. Planetary Data System Standards Reference, JPL D-7669, Part 2, version 3.0, November 1992,
  2. Planetary Science Data Dictionary Document, JPL D-7116, Revision C, November 1992,
  3. Mars Pathfinder Rover Telemetry Dictionary, J. Morrison, A. Mishkin, Mars Rover DFM 94-033, Revision A, July 1994,
  4. Mars Pathfinder Rover APXS Electrical and Control ICD, A. Mishkin, RVDFM 94-042 , Revision A, June 14, 1994,
  5. VICAR File Format, JPL, R. Deen, Interoffice Memorandum 384-92-196, September 1992

1.1     Product and Transferal Mechanism

The APXS spectrum data files and labels generated by MIPL software for Mars Pathfinder will be transferred electronically to the APXS Team. Each file will be generated in VICAR header and file format. A separate Planetary Data System (PDS) data file will be associated with each VICAR data file, but not delivered to the APXS Team electronically. The data files may be generated on any one of the following platforms: Sun Sparcstations with Solaris, Sun Sparcstation with SunOS, Silicon Graphics with IRIX.

1.2     Instrument Data Processing

The data packaged in the files will be unprocessed APXS result experiment data. A VICAR header will be attached to the data file. Table 1.1 describes the applications used in the production of APXS EDR files.

Table 1.1 - VICAR Software for Mars Pathfinder APXS Spectrum Data Files
Application Description
MPFTELEMPROC Fetches the Standard Formatted Data Unit (SFDU) records from the Telemetry Delivery Subsystem (TDS), and reconstructs the spectrum data file from the telemetry data. This application produces a VICAR image file with a subset of descriptive label items. It also accesses the catalog (or SPICE kernels) to supplement the ancillary information from the telemetry data.
MPFPDSLBL Converts the VICAR EDR into a PDS complient labelled image file.


2.0     DETAILED SPECIFICATION

The following section describes in greater detail the files to be received by the APXS Team.

2.1     Structure and Organization Overview

For each set of APXS spectrum data, one file is created, a PDSspectrum data file, and 2) a detached PDS label. These files together constitute a set of data to be managed and archived within MIPL as one unit. The naming convention of these files must be retained as they are copied or moved in order to properly maintain the APXS spectrum and ancillary data (see section 2.2).

2.1.1     MIPL Local Spectrum Data File

A spectrum data file is organized as a VICAR file and consists of two major parts: the data file header or VICAR label, which describes what the file is, and nominally four spectrum counts (arrays) of 256 unsigned 16-bit numbers each stored in a VICAR file image area. Ancillary data for the PDS labels are described in section 2.1.2. The line and sample numbering of the image data starts with an origin of (1,1) at the upper left of the image with increasing values both to the right and down. See figure 2.1 for a graphical representation of a nominal APXS EDR.

Figure 2.1. - VICAR File Structure for an APXS Spectrum Data File

This figure identifies the basic structure of the VICAR APXS EDR data file. There is an ASCII label at the beginning of the file followed by the spectrum data and an optional ancillary VICAR label in cases where not enough space was allocated for the label at the beginning of the file.

2.1.1.1     Data File Header

Within every spectrum data file, there is a VICAR header or label. This label is organized in an ASCII, keyword-equals-value format and contains information regarding the observation which produced the spectrum data. This observation information includes general descriptors such as Rover X, Y position, Rover heading, error state flags, contact sensor state, and temperature sensor readings. The following text is a direct excerpt from the VICAR File Format memorandum [5], which is available on MIPL' homepage at URL http://www-mipl.jpl.nasa.gov/vicar/vic_file_fmt.html.

The labels (VICAR) are potentially split into two parts, one at the beginning of the file, and one at the end. Normally, only the labels at the front of the file will be present. However, if the EOL keyword in the system label (described below) is equal to 1, then the EOL labels (End Of file Labels) are present. This happens if the labels expand beyond the space allocated for them. The VICAR file is treated as a series of fixed-length records, of size RECSIZE (see below). The image area always starts at a record boundary, so there may be unused space at the end of the label, before the actual image data starts.

The label consists of a sequence of "keyword=value" pairs that describe the image (or data file), and is made up entirely of ASCII characters. Each keyword-value pair is separated by spaces. Keywords are strings, up to 32 characters in length, and consist of uppercase characters, underscores (_), and numbers (but should start with a letter). Values may be integer, real, or strings, and may be multiple (e.g. an array of 5 integers, but types cannot be mixed in a single value). Spaces may appear on either side of the equals character (=), but are not normally present. The first keyword is always LBLSIZE, which specifies the size of the label area in bytes. LBLSIZE is always a multiple of RECSIZE, even if the labels don't fill up the record. If the labels end before LBLSIZE is reached (the normal case), then a 0 byte terminates the label string. If the labels are exactly LBLSIZE bytes long, a null terminator is not necessarily present. The size of the label string is determined by the occurrence of the first 0 byte, or LBLSIZE bytes, whichever is smaller. If the system keyword EOL has the value 1, then End-Of-file Labels exist at the end of the image area (see above). The EOL labels, if present, start with another LBLSIZE keyword, which is treated exactly the same as the main LBLSIZE keyword. The length of the EOL labels is the smaller of the length to the first 0 byte or the EOL's LBLSIZE. Note that the main LBLSIZE does not include the size of the EOL labels. In order to read in the full label string, simply read in the EOL labels, strip off the LBLSIZE keyword, and append the rest to the end of the main label string.

Figure 2.2 shows a template that describes the displayed format of this VICAR label. All keywords are described in detail in the Appendix. Note that delivered spectrum data files may have keywords listed in a slightly different order than what is shown here.

Figure 2.2. - VICAR Label Listing for Mars Pathfinder APXS EDR

        ************  File annnnnnnnnnn.dat_nnnnnn ************
                3 dimensional IMAGE file
                File organization is BSQ
                Pixels are in HALF format from a SGI host
                1 bands
                4 lines per band
                256 samples per line
                0 lines of binary header
                0 bytes of binary prefix per line
---- Property: OBSERVATION ----
ACCUMULATION_COUNT=n
ALPHA_SAMPLING_DURATION='hh:mm:ss'
AMBIENT_TEMPERATURE=(<array of 10 pairs of floating point numbers>)
APPLICATION_PACKET_ID=nn
APXS_COMMUNICATION_ERROR_COUNT=nn
APXS_MECHANISM_ANGLE=xxx.x
BACKGROUND_SAMPLING_DURATION='hh:mm:ss'
COMMAND_SEQUENCE_NUMBER=nnnnnn
CONTACT_SENSOR_STATE=nnn
CONVERTER_CURRENT=nnn
CONVERTER_VOLTAGE=nnn
INSTRUMENT_HOST_TEMPERATURE=(<array of 13 8-bit unsigned integers>)
INSTRUMENT_TEMPERATURE=(<array of 10 pairs of floating point numbers>)
LINEAR_ACCELEROMETER=(xxx.xx, xxx.xx)
PACKET_CREATION_SCLK=nnnnnnnnnn
PLANET_DAY_NUMBER=nn
PROTON_SAMPLING_DURATION='hh:mm:ss'
ROVER_HEADING=nnnnn
ROVER_POSITION=(xx.xxx, xx.xxx)
SPACECRAFT_CLOCK_START_COUNT=nnnnnnnnnn
SPACECRAFT_CLOCK_STOP_COUNT=nnnnnnnnnn
START_ERROR_STATE=n
START_TIME='yyyy-mmm-ddThh:mm:ss.fffZ'
STOP_ERROR_STATE=0
STOP_TIME='yyyy-mmm-ddThh:mm:ss.fffZ'
TARGET_NAME='<Name of Object being observed>'
XRAY_SAMPLING_DURATION='hh:mm:ss'
---- Property: PDS ----
APPLICATION_PACKET_NAME='apx'
COMMAND_DESC='<Description of command generating data>'
DATA_SET_ID='MPFR-M-APXS-2-EDR-V1.0'
DATA_SET_NAME='MPF ROVER MARS ALPHA PROTON X-RAY SPECTROMETER 2 EDR V1.0'
INTERCHANGE_FORMAT='BINARY'
INSTRUMENT_HOST_NAME='MICROROVER FLIGHT EXPERIMENT'
PDS_VERSION_ID='PDS3'
PROCESSING_HISTORY_TEXT=
'CODMAC Level 1 to Level 2 conversion via JPL/MIPL MPFTELEMPROC'
PRODUCER_FULL_NAME='Allan J. Runkle'
PRODUCER_INSTITUTION_NAME=
'Multimission Image Processing Laboratory, Jet Propulsion Lab'
SAMPLE_BITS=16
SAMPLE_BIT_MASK='2#1111111111111111#'
SAMPLE_TYPE='LSB_UNSIGNED_INTEGER'
---- Property: TELEMPROC ----
EARTH_RECEIVED_START_TIME='yyyy-mmm-ddThh:mm:ss.fffZ'
EARTH_RECEIVED_STOP_TIME='yyyy-mmm-ddThh:mm:ss.fffZ'
EXPECTED_PACKETS=2
INSTRUMENT_ID='APXS'
INSTRUMENT_NAME='Alpha Proton X-Ray Spectrometer'
MISSION_NAME='MARS PATHFINDER'
PRODUCER_ID='MIPL of JPL'
PRODUCT_CREATION_TIME='yyyy-mmm-ddThh:mm:ss.fffZ'
PRODUCT_ID='APX_EDR-<sclk>-<accumulation cnt>-<cmd seq num>'
RECEIVED_PACKETS=n
SOFTWARE_NAME='MPFTELEMPROC_APXS'
SOFTWARE_VERSION_ID='<version of software that generated the EDR>'
SOURCE_PRODUCT_ID='NULL'
SPACECRAFT_NAME='PATHFINDER ROVER'
TLM_CMD_DISCREPANCY_FLAG='FALSE'
---- Task: TASK -- User: <username> -- <date and time for product creation> ----

************************************************************

2.1.1.2     Spectrum Data

Within the VICAR data file is the spectrum data, which is stored as image lines within a VICAR file. Each image line corresponds to one spectrum data array. Table 2.1 shows the correspondence between the VICAR lines and the spectra.

Table 2.1 - Mars Pathfinder APXS Spectrum Data Files
VICAR
Image
Line
Spectrum Data Format Description
1 Alpha unsigned 16-bit array of 256 elements {least significant byte first (LSB)} Element 1 of this data array contains the accumulation time (a.k.a. ALPHA_SAMPLING_DURATION) for this spectrum in units of 10 seconds. Element 2 contains the address and complement of the spectrum, which is an internal check.
2 Proton unsigned 16-bit array of 256 elements (LSB) Element 1 of this data array contains the value zero. Element 2 contains the address and complement of the spectrum, which is an internal check. Starting from byte offset 4 for 40 bytes are the start/stop sensor head and electronics box temperature counts for all of the data accumulations of the sequence
3 X-ray unsigned 16-bit array of 256 elements (LSB) Element 1 of this data array contains the accumulation time (a.k.a. XRAY_SAMPLING_DURATION) for this spectrum in units of 10 seconds. Element 2 contains the address and complement of the spectrum, which is an internal check.
4 Background unsigned 16-bit array of 256 elements (LSB) Element 1 of this data array contains the value zero. Element 2 contains the address and complement of the spectrum, which is an internal check.

In circumstances when telemetry packets are lost and not recovered for subsequent processing within the MIPL, spectrum data is also lost and therefore a subset of the spectrum arrays may be zero-filled. Thus, accumulation times, internal checks, and remaining data array elements for those lost spectrums will be zero.

2.1.2     PDS Archived Label File

This file adheres to the Planetary Data System standard for ancillary data management. The file contains information regarding the observation which produced the spectrum data. This observation information includes general descriptors such as Rover X, Y position, Rover heading, error state flags, contact sensor state, and temperature sensor readings.

The PDS labelled file is an object-oriented file; the object to which the label refers is denoted by a statement of the form:

^object = location

in which the carat character (^, also called a pointer in this context) indicates that the object starts at the given location. In a detached label, the location denotes the name of the file containing the object, along with the starting record or byte number, if there is more than one object. For example:

^ALPHA = 3

indicates that the alpha spectrum object begins at record 3 of the file.

All labels contain 80-byte fixed-length records, with a carriage return character (ASCII 13) in the 79th byte and a line feed character (ASCII 10) in the 80th byte. This allows the files to be read by the HFS, MacOS, DOS, OS2, Unix, and VMS operating systems.

Figure 2.3 shows the template of the APXS EDR PDS label. See the Appendix for detailed definitions and formatting information for the label items. Also note that label item values that are capitalized or that are enclosed in quotes and not italicized represent label item values to be written verbatim.

Text inside broken brackets, '<' and '>', identify the type of data that is valid for a label value.

Figure 2.3. - Template of Mars Pathfinder APXS EDR PDS Labelled File

PDS_VERSION_ID                 = PDS3

/* FILE CHARACTERISTICS */

RECORD_TYPE                    = FIXED_LENGTH
RECORD_BYTES                   = number of bytes per record in the file
FILE_RECORDS                   = total number of records in the file
LABEL_RECORDS                  = number of records in the file containing
                                 only label information

/* POINTERS TO DATA OBJECTS */

^ALPHA_TABLE                   = record in file containing alpha data
^PROTON_TABLE                  = record in file containing proton data
^XRAY_TABLE                    = record in file containing x-ray data
^BACKGROUND_TABLE              = record in file containing background data

/* IDENTIFICATION DATA ELEMENTS */

DATA_SET_ID                    = "MPFR-M-APXS-2-EDR-V1.0"
DATA_SET_NAME                  = "MPF ROVER MARS ALPHA PROTON X-RAY
                                  SPECTROMETER 2 EDR V1.0"
PRODUCER_ID                    = "MIPL OF JPL"
PRODUCER_FULL_NAME             = "ALLAN J. RUNKLE"
PRODUCER_INSTITUTION_NAME      = "MULTIMISSION IMAGE PROCESSING LABORATORY,
                                  JET PROPULSION LAB"
PRODUCT_ID                     = "APX_EDR-<packetsclk>-<accumulation_
                                  count>-<command_sequence_number>"
MISSION_NAME                   = "MARS PATHFINDER"
INSTRUMENT_HOST_NAME           = "MICROROVER FLIGHT EXPERIMENT"
INSTRUMENT_HOST_ALIAS_NAME     = {"MARS PATHFINDER ROVER", "SOJOURNER"}
INSTRUMENT_NAME                = "ALPHA PROTON X-RAY SPECTROMETER"
INSTRUMENT_ID                  = "APXS"
TARGET_NAME                    = target of an APXS measurement
PACKET_CREATION_SCLK           = nnnnnnnnnn
SPACECRAFT_CLOCK_START_COUNT   = nnnnnnnnnn
SPACECRAFT_CLOCK_STOP_COUNT    = nnnnnnnnnn
START_TIME                     = yyyy-mm-ddThh:mm:ss.fffZ
STOP_TIME                      = yyyy-mm-ddThh:mm:ss.fffZ
PLANET_DAY_NUMBER              = n
EARTH_RECEIVED_START_TIME      = yyyy-mm-ddThh:mm:ss.fffZ
EARTH_RECEIVED_STOP_TIME       = yyyy-mm-ddThh:mm:ss.fffZ
PRODUCT_CREATION_TIME          = yyyy-mm-ddThh:mm:ss.fffZ

/* DESCRIPTIVE DATA ELEMENTS */

EXPECTED_PACKETS               = n
RECEIVED_PACKETS               = n
APPLICATION_PACKET_ID          = n
APPLICATION_PACKET_NAME        = group name associated with APID
INSTRUMENT_HOST_TEMPERATURE    = (n, n, n, n, n, n, n, n, n, n, n, n, n)
INSTRUMENT_TEMPERATURE         = (f.ffff, f.ffff, f.ffff, f.ffff, f.ffff,
                                  f.ffff, f.ffff, f.ffff, f.ffff, f.ffff,
                                  f.ffff, f.ffff, f.ffff, f.ffff, f.ffff,
                                  f.ffff, f.ffff, f.ffff, f.ffff, f.ffff)
AMBIENT_TEMPERATURE            = (f.ffff, f.ffff, f.ffff, f.ffff, f.ffff,
                                  f.ffff, f.ffff, f.ffff, f.ffff, f.ffff,
                                  f.ffff, f.ffff, f.ffff, f.ffff, f.ffff,
                                  f.ffff, f.ffff, f.ffff, f.ffff, f.ffff)
ACCUMULATION_COUNT             = n
SAMPLING_DURATION              = "hh:mm:ss"
APXS_COMMUNICATION_ERROR_COUNT = n
START_ERROR_STATE              = n
STOP_ERROR_STATE               = n
CONVERTER_CURRENT              = n
CONVERTER_VOLTAGE              = n
SOFTWARE_NAME                  = name of MPF telemetry processing software
SOFTWARE_VERSION_ID            = version of MPF telemetry processing software
PROCESSING_HISTORY_TEXT        = "CODMAC LEVEL 1 TO LEVEL 2 CONVERSION VIA
                                  JPL/MIPL MPFTELEMPROC"

/* GEOMETRY DATA ELEMENTS */

ROVER_HEADING                  = n
ROVER_POSITION                 = (f.ffff, f.ffff)
LINEAR_ACCELEROMETER           = (f.ffff, f.ffff)
APXS_MECHANISM_ANGLE           = f.ffff
CONTACT_SENSOR_STATE           = n

/* ROVER FLIGHT SOFTWARE COMMAND DATA ELEMENTS */

COMMAND_SEQUENCE_NUMBER        = nnnnn
TLM_CMD_DISCREPANCY_FLAG       = <TRUE, FALSE>

/* TABLE OBJECT DATA ELEMENTS */

OBJECT                         = ALPHA_TABLE
  INTERCHANGE_FORMAT           = BINARY
  ROWS                         = 1
  COLUMNS                      = 3
  ROW_BYTES                    = 512
  OBJECT                       = COLUMN
    NAME                       = ALPHA_SAMPLING_DURATION
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 1
    BYTES                      = 2
    DESCRIPTION                = "Accumulation time for this spectrum in units
                                  of 10 seconds."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = INTERNAL_CHECK
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 3
    BYTES                      = 2
    DESCRIPTION                = "Address and complement of the spectrum, used
                                  as an internal check."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = ALPHA_COUNT
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 5
    BYTES                      = 506
    ITEMS                      = 253
    ITEM_BYTES                 = 2
    ITEM_OFFSET                = 2
    DESCRIPTION                = "Number of alpha particles detected per
                                  channel. Channels represent differing energy
                                  levels."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = INTERNAL_CHECK
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 511
    BYTES                      = 2
    DESCRIPTION                = "Repeat of internal check."
  END_OBJECT                   = COLUMN
END_OBJECT                     = ALPHA_TABLE

OBJECT                         = PROTON_TABLE
  INTERCHANGE_FORMAT           = BINARY
  ROWS                         = 1
  COLUMNS                      = 3
  ROW_BYTES                    = 512
  OBJECT                       = COLUMN
    NAME                       = PROTON_SAMPLING_DURATION
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 1
    BYTES                      = 2
    DESCRIPTION                = "Accumulation time for this spectrum in units
                                  of 10 seconds."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = INTERNAL_CHECK
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 3
    BYTES                      = 2
    DESCRIPTION                = "Address and complement of the spectrum, used
                                  as an internal check."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = TEMPERATURE
    DATA_TYPE                  = LSB_SIGNED_INTEGER
    START_BYTE                 = 5
    BYTES                      = 40
    ITEMS                      = 40
    ITEM_BYTES                 = 1
    ITEM_OFFSET                = 1
    DESCRIPTION                = "Ten sets of 4 temperatures: start instrument
                                  temperature, stop instrument temperature,
                                  start ambient temperature, stop ambient
                                  temperature."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = PROTON_COUNT
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 45
    BYTES                      = 466
    ITEMS                      = 233
    ITEM_BYTES                 = 2
    ITEM_OFFSET                = 2
    DESCRIPTION                = "Number of proton particles detected per
                                  channel. Channels represent differing energy
                                  levels."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = INTERNAL_CHECK
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 511
    BYTES                      = 2
    DESCRIPTION                = "Repeat of internal check."
  END_OBJECT                   = COLUMN
END_OBJECT                     = PROTON_TABLE

OBJECT                         = XRAY_TABLE
  INTERCHANGE_FORMAT           = BINARY
  ROWS                         = 1
  COLUMNS                      = 3
  ROW_BYTES                    = 512
  OBJECT                       = COLUMN
    NAME                       = XRAY_SAMPLING_DURATION
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 1
    BYTES                      = 2
    DESCRIPTION                = "Accumulation time for this spectrum in units
                                  of 10 seconds."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = INTERNAL_CHECK
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 3
    BYTES                      = 2
    DESCRIPTION                = "Address and complement of the spectrum, used
                                  as an internal check."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = XRAY_COUNT
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 5
    BYTES                      = 506
    ITEMS                      = 253
    ITEM_BYTES                 = 2
    ITEM_OFFSET                = 2
    DESCRIPTION                = "Number of xray particles detected per
                                  channel. Channels represent differing energy
                                  levels."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = INTERNAL_CHECK
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 511
    BYTES                      = 2
    DESCRIPTION                = "Repeat of internal check."
  END_OBJECT                   = COLUMN
END_OBJECT                     = XRAY_TABLE

OBJECT                         = BACKGROUND_TABLE
  INTERCHANGE_FORMAT           = BINARY
  ROWS                         = 1
  COLUMNS                      = 3
  ROW_BYTES                    = 512
  OBJECT                       = COLUMN
    NAME                       = BACKGROUND_SAMPLING_DURATION
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 1
    BYTES                      = 2
    DESCRIPTION                = "Accumulation time for this spectrum in units
                                  of 10 seconds."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = INTERNAL_CHECK
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 3
    BYTES                      = 2
    DESCRIPTION                = "Address and complement of the spectrum, used
                                  as an internal check."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = BACKGROUND_COUNT
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 5
    BYTES                      = 506
    ITEMS                      = 253
    ITEM_BYTES                 = 2
    ITEM_OFFSET                = 2
    DESCRIPTION                = "Number of background particles detected per
                                  channel. Channels represent differing energy
                                  levels."
  END_OBJECT                   = COLUMN
  OBJECT                       = COLUMN
    NAME                       = INTERNAL_CHECK
    DATA_TYPE                  = LSB_UNSIGNED_INTEGER
    START_BYTE                 = 511
    BYTES                      = 2
    DESCRIPTION                = "Repeat of internal check."
  END_OBJECT                   = COLUMN
END_OBJECT                     = BACKGROUND_TABLE
END

2.2     File Naming Conventions

The following naming convention standard for IMP image data files is to be maintained by MIPL as a means of files management. It is suggested for all end-users of the products.

2.2.1     VICAR Image Data File Names

For all data files stored in the MIPL Working Mission Storage (WMS), the filenames will be constructed with five parts as shown below in Figure 2.4.

Figure 2.4. - Sample Spectrum Data File Name

Instrument Identifier - The instrument identifier will always be the lowercase letter 'a', representing the APXS instrument.

Frame Identifier - The frame identifier will be a hexadecimal digit representing the number of accummulations associated with this data set.

Time Reference Number - The time reference number will be the 10-digit Spacecraft Clock Start Count, as described in the Appendix.

File Extension - The file extension is a three character mnemonic that will always be 'dat'.

Image Reference Number - Finally, the image reference number is the Command Sequence Number appended onto the file extension. The reference number is procedually broken into two parts, the solar day and command ID. The solar day part is syntheticall generated based on the telmetered value which is a modulo 50 of the true solar day. The command ID part identifies the command in that Sol's sequence that reads the APXS data.

2.2.2     PDS File Names

The PDS filenames will be constructed with four of the five VICAR image data filenames components as shown below in Figure 2.5.

Figure 2.5. - Sample Spectrum PDS Data File Name

Instrument Identifier - The instrument identifier will always be the uppercase letter 'A'.

Frame Identifier - The frame identifier will a hexadecimal digit, refering to accummulation count associated with the data.

Time Reference Number - The time reference number will be the least significant 6-digits of the Spacecraft Clock Start Count (the 4 significant digits will be used as part of the directory hierarchy storing the image files).

File Extension - Finally, the file extension will always be the three character mnemonic 'DAT'.


APPENDIX A
APXS PDS/VICAR Label Items

A.1 APXS PDS/VICAR EDR Label Items

The following pages list alphabetically the label items which are contained in the PDS and VICAR labels associated with each spectrum data file.


Table A.1 - Common APXS Label Items

Label Item Description Data Type
(organization)
Valid Values
ACCUMULATION_COUNT Identifies the number of start/stop temperature readings found in the data. integer 0 - 10
ALPHA_SAMPLING_DURATION Spectrum accumulation time as returned in the first two bytes of the Alpha spectrum data. string
HH:MM:SS
<any positive value less than or equal to 182:02:30>
AMBIENT_TEMPERATURE Temperature on APXS sensor head at the begining and end of each accumulation cycle. There will be at most 10 pairs. Mesured in degrees centigrade. This temperature is close to the ambient Mars temperature.

Degrees = (<raw counts> x 1.5541) - 273.6

floating point
(array of 20 elements)
Between -273.6 and 122.7
APPLICATION_PACKET_ID Classifies the telemetry packet from which the image data was obtained. This packet ID is handed to the Telemetry download. This value is based on a set of values specified in the Downlink Telemetry Documents (JPL). This acronym is APID. integer 5 or 12
(see Mars Pathfinder Rover Telemetry Dictionary [3])
APXS_COMMUNICATION_ERROR_COUNT APXS communication error count as returned in the APXS Results as part of the spectrum data packet. integer <any positive 16-bit value>
APXS_MECHANISM_ANGLE APXS mechanism angle, measured in degrees at STOP_TIME. This value is the raw data value returned in the APXS Results as part of the spectrum data mutliplied by 1.28 then subtracted by 112.64. floating point none
BACKGROUND_SAMPLING_DURATION Spectrum accumulation time as returned in the first two bytes of the Background spectrum data. string
HH:MM:SS
<any positive value less than or equal to 182:02:30>
COMMAND_SEQUENCE_NUMBER Number from corresponding uplink command (zero for autonomously generated messages) integer <any positive 16-bit value>
  The command_sequence_number in the uplink command did not have the range necessary to follow the convention of allocating the least significant 3 digits for the image ID and the upper digits for the Solar Day. To compensate, a synthetic command_sequence_ number was generated from the commanded value and the solar day of execution. The resulting command_sequence_number is calculated as follows:

50000 * (int)(planet_day_number / 50) + command_sequence_number

CONTACT_SENSOR_STATE APXS contact sensor state at STOP_TIME as returned in the APXS Results as part of the spectrum data packet. Contact sensors are located on various portions of the Rover and APXS instrument. Contact sensor bits are as follows:

  bit  0: right front solar panel
  bit  1: left front solar panel
  bit  2: left rear solar panel
  bit  3: right rear solar panel
  bit  4: right front bumper
  bit  6: left front bumper
  bit  8: lower APXS contact sensor
  bit  9: starboard APXS contact sensor
  bit 10: port APXS contact sensor
  bit 15: unknown, received an interrupt, no latch set

Bit 0 is the least significant bit, Bit 15 is the most significant bit.

integer <any 16-bit value>
CONVERTER_CURRENT Raw counts of the APXS 9 volt converter current at STOP_TIME as returned in the APXS Results as part of the spectrum data packet. integer <any positive 8-bit value>
CONVERTER_VOLTAGE Raw counts of the APXS 9 volt converter voltage at STOP_TIME as returned in the APXS Results as part of the spectrum data packet. integer <any positive 8-bit value>
EARTH_RECEIVED_START_TIME Identifies the ealiest time a packet was received that contained data for the image. character array yyyy-mm-ddThh:mm:ss.fffZ
EARTH_RECEIVED_STOP_TIME Identifies the latest time a packet was received that contained data for the image. character array yyyy-mm-ddThh:mm:ss.fffZ
EXPECTED_PACKETS Total number of telemetry packets which constitute a complete image, an image without missing data. integer <any positive value>
INSTRUMENT_HOST_TEMPERATURE 13 element array of raw counts of the Rover temp- erature sensor values at STOP_TIME as returned in the APXS Results as part of the spectrum data.

integer (array) <13 element array of 8-bit values>
 
Sensor Sensor Name Conversion algorithm
1 Left Front Motor Degrees = 0.7816 * (raw counts) - 16.44
2 Right Front Motor Degrees = 0.7853 * (raw counts) - 15.29
3 WEB Wall Degrees = 0.7732 * (raw counts) - 18.89
4 Modem Degrees = 0.7652 * (raw counts) - 18.85
5 Left front CCD Degrees = 0.7696 * (raw counts) - 19.99
6 Rigth Front CCD Degrees = 0.7875 * (raw counts) - 14.66
7 Read CCD Degrees = 0.7825 * (raw counts) - 16.27
8 Battery A Degrees = 0.7727 * (raw counts) - 18.97
9 Battery B Degrees = 0.7711 * (raw counts) - 19.27
10 Battery C Degrees = 0.7742 * (raw counts) - 18.48
11 CPU Electronics board Degrees = 0.7734 * (raw counts) - 18.98
12 Power electronics board Degrees = 0.7702 * (raw counts) - 19.90
13 Material adherence experiment Degrees = 0.7706 * (raw counts) - 19.85
INSTRUMENT_ID Acronym of instrument name character (array) "APXS"
INSTRUMENT_NAME Full name of an instrument. character (array) "Alpha Proton X-Ray Spectrometer"
INSTRUMENT_TEMPERATURE Temperature of the electronics box at the alpha pre- amplifier at the begining and end of each accumulation cycle. There will be at most 10 pairs. Mesured in degrees centigrade.

Degrees = (<raw counts> x 1.5541) - 273.6

floating point array (20 elements) Between -273.6 and 122.7
LINEAR_ACCELEROMETER X and Y readings for linear accelerometers on the Rover at STOP_TIME. X indicates pitch, where positive values indicate Rover front is lower; Y indicates roll, where positive values indicating right side is lower. Values are the raw counts from the telemetry. The conversion factor to have this value in units of 'g' is 0.0009765. integer (array of two elements) 0 and 255
MISSION_NAME A major planetary mission or project. character (array) MARS PATHFINDER
PACKET_CREATION_SCLK SCLK from the primary telemetry packet header of the 1st packet of the image. Used for requesting image packets from TDS. integer <any positive number>
PLANET_DAY_NUMER The martian day on which the data accumulation was started (corresponds to START_TIME). This is a counter that starts with '1' as the first day of surface operations. '0' refers to a presurface operations image. integer <any positve number>
PRODUCER_ID Short name or acronym for the producer or producing team/group of a dataset. character (array) "MIPL of JPL"
PRODUCT_CREATION_TIME Defines the UTC time when a product was created. time yyyy-mm-ddThh:mm:ss.fffZ
PRODUCT_ID A permanent, unique identifier assigned to a data product by its producer. character (array) "APX_EDR-<sclk_start_count>-
<accummulation_count>-<command_seq_number>"
PROTON_SAMPLING_DURATION Spectrum accumulation time as returned in the first two bytes of the Proton spectrum data. string
HH:MM:SS
<any positive value less than or equal to 182::02:30>
RECEIVED_PACKETS Total number of telemetry packets which constitute the reconstructed image. integer <any positive value>
ROVER_HEADING Angular measure of the rover heading, at STOP_TIME, clockwise from Lander north in BAMS (Binary Angle Measurement, where 2^16 BAMS equals one revolution). This is the raw count as returned in the telemetry. This is an esitimate of the true heading based on the turn rate sensor and turning times. integer [0, 65535]
ROVER_POSITION X and Y offsets of the rover at STOP_TIME in meters north and east, respectively, of the Lander reference. This is an estimate of the position based on the wheel odometry, turn rate sensor and turning times. floating point (array of two elements) N.A.
SOFTWARE_NAME Identifies the name of the telemetry processing software used to generate the image data. character (array) N.A.
SOFTWARE_VERSION_ID Identifies the version of the telemetry processing software used to generate the image data. character (array) N.A.
SPACECRAFT_CLOCK_START_COUNT Best estimate of the CCSDS coarse time in seconds past January 1, 1958 at which the APXS started acquiring the data contained in this data set. integer <any positive value>
SPACECRAFT_CLOCK_STOP_COUNT Best estimate of the CCSDS coarse time in seconds past January 1, 1958 at which the APXS stopped acquiring the data contained in this data set. integer <any positive value>
SPACECRAFT_NAME Full, unabbreviated name of a spacecraft. character (array) PATHFINDER ROVER
START_ERROR_STATE APXS error state flags for the beginning of an APXS sampling as returned in the APXS Results as part of the spectrum data. integer <any positive 16-bit value>
START_TIME Best estimate of the UTC time the APXS started acquiring the data contained in this data set. character (array) yyyy-mm-ddThh:mm:ss.fffZ
STOP_ERROR_STATE APXS error state flags at the end of an APXS sampling as returned in the APXS Results as part of the spectrum data. integer <any positive 16-bit value>
STOP_TIME Best estimate of the UTC time the APXS stopped acquiring the data contained in this data set. character (array) yyyy-mm-ddThh:mm:ss.fffZ
TARGET_NAME Identifies a target, be it a planetary body, region or feature. character (array) <Mars or some Martian feature>
TLM_CMD_DISCREPANCY_FLAG Indicator of mismatch(es) found between Rover commands uplinked and Rover telemetry. character (array) TRUE, FALSE
XRAY_SAMPLING_DURATION Spectrum accumulation time as returned in the first two bytes of the X-Ray spectrum data. string <any positive value less than or equal to 182:02:30>

Table A.2 - PDS APXS Label Items

Label Item Description Data Type
(organization)
Valid Values
^ALPHA_TABLE* Pointer to first record containing the Alpha spectrum in the file. integer <any positive number>
^BACKGROUND_TABLE* Pointer to first record containing the Background spectrum in the file. integer <any positive number>
^PROTON_TABLE* Pointer to first record containing the Proton spectrum in the file. integer <any positive number>
^XRAY_TABLE* Pointer to first record containing the X-ray spectrum in the file. integer <any positive number>
APPLICATION_PACKET_NAME Group name associated with APID. An example is "APXS Results" for APID 5. character (array) <any descriptive text>
BYTES* The number of bytes alloacted for a data representation.

This field exists for every spectrum table

integer <any positive value>
CHECKSUM* An unsigned 32-bit sum of all data in the image data object.

This field exists for every spectrum table

integer <any positive value>
COLUMNS* Number of columns in each row of a data object.

This field exists for every spectrum table

integer 3
COMMAND_DESC Text which describes the uplinked command as found in COMMAND_NAME element. varchar (200) <text taken directly from the Mars Pathfinder Command Dictionary, appendix A, D-12500>
DATA_SET_ID A unique alphanumeric identifier for a data set or a data product. This identifier consists of the identifiers for spacecraft, target, instrument, processing level, product acronym, and version number. character (array) "MPFR-M-APXS-2-EDR-V1.0"
DATA_SET_NAME Full name given to a data set or product. This is an unabbreviated version of the DATA_SET_ID. character (array) MPF ROVER MARS ALPHA PROTON X-RAY SPECTROMETER 2 EDR VERSION 1.0
DATA_TYPE* Identifies the internal representation of the spectrum tables. character (array) LSB_UNSIGNED_INTEGER
FILE_RECORDS* Number of physical file records. integer 4
INSTRUMENT_HOST_ALIAS*   character (array) "SOJOURNER"
INSTRUMENT_HOST_ID*   character (array) "MPFR"
INSTRUMENT_HOST_NAME Identifies the host spacecraft component the instrument resides. character (array) "MICROROVER FLIGHT EXPERIMENT"
INTERCHANGE_FORMAT Manner in which data items are stored. character (array) BINARY
ITEMS* The number of multiple, identical occurances of a single object.

This field exists for every spectrum table

integer <any positive value>
ITEM_BYTES* The size in bytes of an item within a data object.

This field exists for every spectrum table

integer <any positive value>
ITEM_OFFSET* The number of bytes from the start of one item to the start of the next item in any ASCII column or array. integer <any positive value>
LABEL_RECORDS* Number of Physical file records that contain only label information. integer <any positive value>
PDS_VERSION_ID The version number of the PDS standards documents that is valid when a data product is created. character (array) PDS3
PROCESSING_HISTORY_TEXT Textual summation that provides an entry for each processing step and program used in generating a particular data file in the context of the Ground Data System. character (array) N.A.
PRODUCER_FULL_NAME Full, unabbreviated name of the individual mainly responsible for the production of the data set. string (array) "Allan J. Runkle"
PRODUCER_INSTITUTION_NAME Identifies the institution associated with the production of the data set. character (array) "Multimission Image processing Subsystem, Jet Propulsion Lab"
RECORD_BYTES* Number of bytes in a physical file record, including record terminators and separators. integer 512
RECORD_TYPE* Record format of a file. character (array) FIXED_LENGTH
ROWS* Number of rows in a data object.

This field exists for every spectrum table

integer 1
ROW_BYTES* Number of bytes in each data object row.

This field exists for every spectrum table

integer 512
SAMPLE_BITS Indicates the stored number of bits, or units of binary information, contained in a line_sample value. integer 16
SAMPLE_BIT_MASK Identifies the active bits in a sample. character 2#1111111111111111#
SAMPLE_TYPE Data storage representation of sample value. character (array) MSB_UNSIGNED_INTEGER
START_BYTE* The location of the first bye of the object, counting from one.

This field exists for every spectrum table

   

* for PDS labels only


APPENDIX B
APXS VICAR Property and Task Labels

B.1 APXS VICAR Property and Task Labels

The following pages contain alphabetical listings of the VICAR label items which are placed in the header of each image file. The listings are arranged by VICAR property or task name.


MPFTELEMPROC Property

EARTH_RECEIVED_START_TIME
EARTH_RECEIVED_STOP_TIME
EXPECTED_PACKETS
INSTRUMENT_ID
INSTRUMENT_NAME
MISSION_NAME
PRODUCER_ID
PRODUCT_CREATION_TIME
PRODUCT_ID
RECEIVED_PACKETS
SOFTWARE_NAME
SOFTWARE_VERSION_ID
SOURCE_PRODUCT_ID
TLM_CMD_DISCREPANCY_FLAG
SPACECRAFT_NAME

OBSERVATION Property

ALPHA_SAMPLING_DURATION
AMBIENT_TEMPERATURE
APPLICATION_PACKET_ID
APXS_COMMUNICATION_ERROR_COUNT
APXS_MECHANISM_ANGLE
BACKGROUND_SAMPLING_DURATION
COMMAND_SEQUENCE_NUMBER
CONTACT_SENSOR_STATE
CONVERTER_CURRENT
CONVERTER_VOLTAGE
INSTRUMENT_HOST_TEMPERATURE
INSTRUMENT_TEMPERATURE
LINEAR_ACCELEROMETER
PACKET_CREATION_SCLK
PLANET_DAY_NUMBER
PROTON_SAMPLING_DURATION
ROVER_HEADING
ROVER_POSITION
SPACECRAFT_CLOCK_START_COUNT
SPACECRAFT_CLOCK_STOP_COUNT
START_ERROR_STATE
START_TIME
STOP_ERROR_STATE
STOP_TIME
TARGET_NAME
XRAY_SAMPLING_DURATION

PDS Label items

APPLICATION_PACKET_NAME
DATA_SET_ID
DATA_SET_NAME
INTERCHANGE_FORMAT
INSTRUMENT_HOST_ALIAS
INSTRUMENT_HOST_ID
INSTRUMENT_HOST_NAME
PDS_VERSION_ID
PROCESSING_HISTORY_TEXT
PRODUCER_FULL_NAME
PRODUCER_INSTITUTION_NAME
SAMPLE_BITS
SAMPLE_BIT_MASK
SAMPLE_TYPE