USGS
Isis Home

[Table of Contents] [Introduction to ISIS (UNIX)] [ISIS Program Summary (UNIX)] [ISIS PICS Program Summary (UNIX)] [Display Summary (UNIX)] [Program Summary (VMS)] [App. A-Cube Label] [App. B-Cube History] [App. C-Table Label] [App. D-Subcube Specifier]

INTRODUCTION TO ISIS (VMS Version)

August 6, 1992

Written by Jim Torson


Table of Contents


1.0 - PURPOSE OF ISIS

ISIS (Integrated Software for Imaging Spectrometers) is a software system for processing and analyzing the data sets produced by imaging spectrometers. Conceptually, these data sets (often referred to as image cubes) consist of stacks of tens or hundreds of images of the same scene, each image recording the reflected and emitted radiation from the scene in a single, narrow wavelength range. A profile through such a data cube from front to back at a given spatial pixel location contains the spectral signature of the corresponding spatial location. This spectral signature, when properly calibrated, can yield information about the chemical composition and physical nature of surface materials and the overlying atmosphere.

ISIS combines elements of both classical image processing and spectral analysis, as well as new techniques developed specifically for the analysis of image cubes. Standard image processing techniques can be applied to the individual spatial-spatial planes of image cubes. Spectral analysis techniques can be applied to the individual spectra of the cubes. In addition, a new set of analysis programs, designed to take advantage of the combination of image and spectral information, can be used to analyze image cubes.

Table of Contents

2.0 - ISIS DOCUMENTATION

This document (the ISIS User's Manual) describes the information that is needed for using the ISIS system. This includes several main sections. The first contains an overall description of the system design features and general capabilities. Next is a summary list of currently available application programs, which consists of the program name and a one-line description. The next section contains the complete documentation for each of the application programs. Finally, there are three appendices that illustrate examples of the label and history information that is maintained in the ISIS cube and table data files.

There are two main documents that provide detailed information for ISIS application programmers. The ISIS System Design document (ISD) describes the system design and the programming environment that is provided for developing application programs. The ISIS Programmer's Reference Manual contains complete descriptions of the various I/O and utility subroutines that are contained in the ISIS programming environment.

Table of Contents

3.0 - OPERATING ENVIRONMENT

ISIS can be installed and run on any Digital Equipment Corporation (DEC) VAX computer that is running the VMS operating system. Many of the ISIS programs do not involve interactive display and can thus be run in any VAX/VMS system. However, the various interactive display programs require the use of the VAXstation GPX color bit-map display, or the International Imaging Systems IVAS image display device, or both. In addition, some of the programs produce graphics plots using the NCAR graphics software and/or the VAX GKS graphics package. Resulting plots can either be drawn directly on the VAXstation bit-map display or recorded in a graphics metacode file. The metacode file can then be drawn later, outside of ISIS, on other graphics display devices using a metacode translator program.

Table of Contents

4.0 - RUNNING ISIS PROGRAMS

4.1 - TAE

ISIS is implemented as a collection of separate application programs that operate within the Transportable Applications Environment (TAE), developed by the NASA Goddard Space Flight Center. The "Classic" version of TAE that is used by ISIS provides a text terminal interface that allows the user to specify a set of parameter values that are to be used on a given run of an application program. The following is a very brief summary of some of the main features of TAE. However, note that this is a small subset of the available features. Consult the TAE User's Manual for a complete description of the capabilities provided by TAE.

Table of Contents

4.1.1 - STARTING A TAE SESSION

To start a TAE session the user should type the following when presented with the operating system prompt. (The "$" is the operating system prompt and should not be typed by the user.)

$TAE

This will give you the "TAE>" prompt, indicating that TAE is ready to accept a command. In most cases, you can use either upper case or lower case when using TAE. Also, TAE commands can be abbreviated using only enough characters needed to uniquely specify the command.

Table of Contents

4.1.2 - USING TUTOR MODE TO INVOKE A PROGRAM

The TUTOR command (which can be abreviated as simply "T") allows you to interactively specify parameter values for a given run of an application program. For example, to begin specification of parameter values for the CUBEDIV program, type:

TAE>T CUBEDIV

TAE will then display a list of the parameters for the program, along with a brief description of each parameter and its initial default value (if any). The "?" prompt at the bottom of the screen indicates that TAE is ready for a tutor mode command. Since most programs have more parameters than can be displayed on one "page", typing the RETURN key will display the next page of parameters. You can set the value for a particular parameter by typing the name of the parameter (which may be abreviated) and the desired value, which must be separated by an "=". For example, to specify a file called TEST.CUB as the input file for the CUBEDIV program, type the following:

?FROM = TEST.CUB

Alternatively, typing the down-arrow or up-arrow keys will select the "next" or "previous" parameter for interactive editing of the current parameter value.

When you have specified all the parameter values, typing "RUN" (or simply "R") will run the program with the current parameter values. If you decide you don't want to run the program, typing "EXIT" will return to the "TAE>" prompt.

Table of Contents

4.1.3 - SAVING AND RESTORING PARAMETER VALUES

The tutor-mode command SAVE will save the current set of parameter values in a disk file. This would normally be done immediately before typing the RUN command, but it can be used at any time. If no file name is specified, then the file prog.PAR will be used, where "prog" is the name of the program. If desired, you can specify an explicit file name, e.g., typing

?SAVE TEST

will save the parameters in a file called TEST.PAR. The RESTORE command (with an optional file name) will restore a set of previously-saved parameter values.

When you RUN a program in tutor mode, the current parameter values are automatically saved in a file called LAST.PAR. If an error is detected, you can then tutor the program and use the "REST LAST" command to restore the complete set of parameter values. You can then correct a parameter value without having to re-specify all the other parameter values.

Table of Contents

4.1.4 - INVOKING A PROGRAM WITHOUT USING TUTOR MODE

Typing the name of a program at the TAE prompt will directly run the program without entering the tutor mode. For example, to run the QL3 program to display the cube file TEST.CUB, type:

TAE>QL3 FROM=TEST.CUB PLOTMODE=BANDNUMBER

This command will run the program with the specified values for the FROM and PLOTMODE parameters. The default values will be used for any parameters that are not specified. If parameters are specified in the same order as the parameter definitions for the program, then the parameter names may be omitted. Thus, the following would be equivalent to the above command:

TAE>QL3 TEST.CUB PLOTMODE=BANDNUMBER

Table of Contents

4.1.5 - OBTAINING HELP INFORMATION

Typing "HELP" at the "TAE>" prompt will display general help information on using TAE. When in tutor mode, typing "HELP" will display general help information on using tutor mode. Typing "HELP *" will display the overall description of the current program that is being tutored. (This is the same as the program description that is contained in this User's Manual.) Typing "HELP parm" will display help information on the specified parameter. Typing "EXIT" will exit from the display of the help information.

Table of Contents

4.1.6 - ENDING A TAE SESSION

To end a TAE session and return to the operating system prompt, type "EXIT" at the "TAE>" prompt.

Table of Contents

4.2 - BATCH PROCESSING

ISIS programs (except the interactive display programs) may be run as batch jobs. See the TAE User's Manual for details.

Table of Contents

4.3 - ISIS SESSION LOG

ISIS automatically maintains a session log file that contains a record of each program that a user runs. This log file is a text file that can be printed or examined with a text editor. When a program is run, a new entry is added to the log file. (If the file does not exist, then it will be created.) The log file entry contains the name of the program and additional information such as the current date and time. The entry also records the values of the TAE parameters that were used for invoking the program. The format and content of the entry is similar to the history entry that is recorded in each cube file. (See below for discussion of cube file history.) In addition, the log file may contain additional information such as error messages or information produced by an application program.

Most ISIS programs include the USERNOTE TAE parameter, which does nothing other than allow the user to specify an arbitrary comment that will be recorded in the session log file and the cube file history entry.

The default file name for the session log file is the file PRINT.PRT located in the current default directory. If desired, the user can select a different file by defining the VMS logical name ISIS$LOG_FILE to be the desired file. This can be done by typing a command such as:

DEFINE ISIS$LOG_FILE SESSION.LOG

Note that this is an operating system command that is typed before starting the TAE session. If no file extension is specified, then ".DAT" will be used. The specified file name may optionally include a disk directory specification. Multiple concurrent sessions are not permitted to use the same session log file. Thus, one of the main reasons for specifying a different session log file is to allow multiple concurrent sessions, e.g., two interactive sessions or an interactive session along with a batch run.

The session logging can be turned off by setting the log file name to be the null device, i.e., "NLA0:". Note that the colon must be specified, otherwise "NLA0" will be interpreted as a file name and a file named "NLA0.DAT" will be used.

Table of Contents

4.4 - SPECIFYING DATA FILE NAMES AND LOCATIONS

In many cases, a default file extension will be used if the user omits the file extension when specifying a data file name. The most common example of this is the use of the default extension ".CUB" for cube data files. The default extension ".ISL" will be used for Instrument Spectral Library files, and the default extension ".TBL" will be used for ISIS binary Table files. (See below for more information on Cube files, Instrument Spectral Library files, and Table files.)

In most cases, the normal operating system conventions are applicable for determining the location of a data file, i.e., an explicit directory and/or disk device can be specified, but the file is assumed to be located in the current default directory if the user does not specify a directory and disk device.

Table of Contents

4.4.1 - USING LOGICAL NAMES FOR DATA FILES

There are several ways in which the operating system DEFINE command can be used for defining VMS logical names that can be used in specifying data file names and/or locations. The simplest case is the use of a logical name for the disk directory in which a file is to be found. For example, to define a logical name before entering TAE, type:

$DEFINE DATA DUA2:[NIMSUSER.DATA] TAE>QL3 FROM=DATA:TEST.CUB

The logical name can also be defined after entering TAE by using the DCL command, e.g.:

$TAE
TAE>DCL DEFINE DATA DUA2:[NIMSUSER.DATA]
TAE>QL3 FROM=DATA:TEST.CUB

Note that when the logical name is defined within TAE the definition will be deleted when you exit from TAE. Thus, the definition will not be remembered from one TAE session to another. Defining a logical name before entering TAE will maintain the definition across multiple TAE sessions.

Another way to use logical names is to define a VMS logical name in which the definition is an actual cube file name. The logical name can then be entered for the TAE parameter value that specifies a cube file name in an ISIS program. For example:

$DEFINE MYCUBE BASHFL$DUA0:[MOON]BIGLONGCUBEFILENAME.CUB
$TAE
TAE>QL3 FROM=MYCUBE

The DEFINE command can use another logical name in the definition. For example, if MOON$DATA were defined to be BASHFL$DUA0:[MOON], then the following DEFINE command could be used:

$DEFINE MYCUBE MOON$DATA:BIGLONGCUBEFILENAME.CUB

The ISIS I/O routines will use a two-step process when trying to determine the actual disk filename to use. First, an intermediate string will be formed by assuming that the supplied string is a logical name and by translating it into its defined value. If the user-supplied string is not a defined logical name, then the intermediate string will be just the original user-supplied string. In the second step, the I/O routines will check the intermediate string to see if it has an extension, i.e., a "." on the end. If there is no extension, then the default extension (".CUB", ".ISL", or ".TBL") will be added. This will allow the user to omit the file extension on the DEFINE command, i.e., the following DEFINEs will have equivalent results:

$DEFINE MYCUBE BASHFL$DUA0:[MOON]BIGLONGCUBEFILENAME.CUB
$DEFINE MYCUBE BASHFL$DUA0:[MOON]BIGLONGCUBEFILENAME

Note that the disk device and directory can be omitted from the definition of the logical name, e.g.:

$DEFINE MYCUBE BIGLONGCUBEFILENAME.CUB

When this logical name is used, the current default directory will be used as the location of the file.

However, note that a device and/or directory CANNOT be combined with the reference to a logical name. I.e., the following will NOT work:

$DEFINE MYCUBE BIGLONGCUBEFILENAME.CUB
$TAE
TAE>QL3 FROM=BASHFL$DUA0:[MOON]MYCUBE

When ISIS records the TAE parameters in the HISTORY entry and the Session Log file, the exact string specified by the user will be recorded. In addition, most programs will also record the translated string that gives the actual disk file name that is to be used. This will be recorded as a comment line delimited by "/*" and "*/". (The translated string that is recorded will not include an assumed default file extension. Also, the translated string will not be recorded when a logical name is used only for specifying a disk directory.)

Table of Contents

5.0 - CUBE FILES

The following describes the overall format and characteristics of the standard three-dimensional cube files that are processed by the standard ISIS programs. This includes a description of the pixel data types that are supported in cube files. The format and access to data in cube files are described in more detail in the ISIS System Design document (ISD).

Table of Contents

5.1 - BASIC CUBE FILE STRUCTURE

ISIS cube files are stored as standard PDS labelled files. A PDS labelled file consists of two basic parts. The first part is the label, which is located at the beginning of the file. The remainder of the file is the data area, which contains one or more data objects. The label describes the structure and content of the file. Information in the label is stored in a "keyword=value" text format. Appendix A contains an example label for an ISIS cube file.

The QUBE files that are supported by the ISIS I/O routines are used for storing multi-dimensional data arrays. The maximum number of supported dimensions is six. A CUBE file is a special case of a qube file in which the number of dimensions in the data array is three. (See the ISD for more information on the generalized qube files.) Cube files are normally used for storing data produced by imaging spectrometers. Thus, two of the dimensions correspond to spatial coordinates and the other dimension corresponds to the spectral (wavelength) coordinate. The contents of the data values in a standard cube file can of course consist of things other than observations measured by an imaging spectrometer.

Each cube file contains at least two data objects, a HISTORY object and a QUBE object. A cube file may optionally contain "extra" data objects in addition to the HISTORY object and QUBE object. The standard ISIS cube-processing programs will propagate these "extra" data objects unchanged from an input file to an output file.

Table of Contents

5.2 - CUBE FILE HISTORY OBJECT

The HISTORY object contains text information that records the sequence of processing operations that created the file. This consists of a sequence of history entries, each of which describes an application program that was run and the TAE parameters that were used. The format of history entries is the same as entries in the ISIS session log file. Appendix B contains an example cube file history. This listing was produced by running the LHLIST program, which extracts the label and/or history from a cube file and displays it on the terminal and/or puts it into a text file.

All ISIS programs automatically maintain the history information. When an application program reads data from an input file and writes processed data to an output file, it will copy the input file history information to the output file and then append a new history entry for the current program.

Table of Contents

5.3 - CUBE OBJECT DESCRIPTION KEYWORDS

The label of a cube file contains various keywords that describe the cube data object. These include keywords that specify the number of axes (AXES, which is always 3 for cube files), the name of each axis (AXIS_NAME), the physical storage order (i.e., order of the axis names), the length of each axis (CORE_ITEMS), the number of suffix planes (if any) on each axis (SUFFIX_ITEMS), various keywords that describe the pixel data type for the file (CORE_ITEM_TYPE, CORE_ITEM_BYTES, etc.), and name and units for the values stored in the main cube data array (CORE_NAME and CORE_UNIT).

Some of the label keywords are contained within GROUPs. The most important of these is the BAND_BIN group, which describes the spectral (wavelength band) axis of the cube. These include a list of wavelengths (BAND_BIN_CENTER) and a list of the original instrument band numbers that correspond to the file band numbers (BAND_BIN_ORIGINAL_BAND). This keyword group might optionally include a list of instrument grating positions and detector numbers (BAND_BIN_GRATING_POSITION and BAND_BIN_DETECTOR).

Table of Contents

5.4 - CUBE DATA OBJECT FORMAT

The following diagram illustrates the general structure of a cube data object. Note that this is a conceptual or "logical" view of the cube. Most application programs provide this logical view of a cube to the user. For example, the user usually can refer to logical band numbers rather than referring to indices along the first, second, or third axis of the cube. (This logical view is separate from the issue of the physical storage of the cube data object in a file, which is discussed later in this chapter.)

             ______________________               .
            /                 /   /|              .           ^
           /   backplane     /   / |   } suffix   .          /
          /_ _ _ _ _ _ _ _ _/_ _/  |  } region    .         /
         /                 /   /|  |              .        / d
        /                 /   / |c |              .       / n
       /                 /   /  |o |              .      / a
      /       core      /   /   |r |              .     / B
     /                 /   /    |n |              .    /
    /_________________/___/   e |e |              .   /---------------->
    |                 |   |  d e|r |              .   |     Sample
    |                 |   | i n | /|  l           .   |
s   |                 |   |s a  |/ / a            .   | L
p   |                 |   | l   / / r             .   | i
a   |       core      |   |p   /|/ t              .   | n
t   |                 |   |   / / c               .   | e
i   |                 |   |  / / e                .   |
a   |                 |   | / / p                 .   |
l   |_________________|___|/ / s                  .   v
    |   bottomplane   |   | /       } suffix      .
    |_________________|___|/        } region      .
          spatial      ^^^                        .
                    suffix region                 .

Table of Contents

5.4.1 - CORE REGION

The core region of the cube data object contains the main data array that is being stored in the cube file. For a standard ISIS cube file, this is normally the imaging spectrometer data cube, which consists of a number of spatial-spatial image planes corresponding to different wavelength bands.

The AXES keyword specifies the number of dimensions (axes) in the core. For standard cube files, this value is always three. The CORE_ITEMS keyword has an array of integer values that specify the length of each axis of the core. These values are expressed as the number of pixels. The AXIS_NAME keyword has an array of literal values that specify the names of the axes. The order of the values in CORE_ITEMS and AXIS_NAME corresponds to the physical storage order of the data. (See below for details on physical storage orders.) The core data values are further described by the required application-owned keywords CORE_NAME and CORE_UNIT. (These are called "application-owned" because they are maintained by the applications code of the programs rather than by the ISIS system routines. The applications programs can set these keywords to any desired values.) The label also includes a number of keywords that describe the format of individual core pixel values. These are described in detail later in this chapter.

Table of Contents

5.4.2 - SUFFIX REGIONS

Each of the three axes in a cube data object may optionally include suffix data that extend the length of the axis. Conceptually, this can be viewed as forming one or more suffix planes that are attached to the core cube as shown in the diagram above. Suffix planes that extend the (logical) band dimension are called BACKPLANES. Suffix planes that extend the (logical) sample dimension are called SIDEPLANES. Suffix planes that extend the (logical) line dimension are called BOTTOMPLANES. Note that these terms refer to the logical axes and are not necessarily related to the physical storage of the cube data object. The suffix planes are used for storing auxillary data that are associated with the core data. For example, a backplane might be used for storing the latitude values for each spatial-spatial pixel. Another backplane might be used for storing the wavelength of the deepest absorption feature that was found in the spectrum at each spatial-spatial pixel. One or more sideplanes might be used for storing engineering data that are associated with each spatial line.

The SUFFIX_ITEMS keyword has an array of integer values that specify the number of suffix planes that exist along each of the three axes. The order of the values in SUFFIX_ITEMS corresponds to the physical storage order of the data file, i.e., the values in the array correspond to the values in the AXIS_NAME keyword. (See below for details on physical storage orders.)

In a manner similar to the core description keywords, the name of each suffix plane and the units of the data values are described in suffix description keywords of the form axis_SUFFIX_NAME and axis_SUFFIX_UNIT, where "axis" is the name of the axis that is extended by the suffix data, e.g., BAND_SUFFIX_NAME and BAND_SUFFIX_UNIT for suffixes that are backplanes. The "axis" value must correspond to one of the axis names listed in the AXIS_NAME keyword. The suffix description keywords all have array values, where the number of values corresponds to the number of suffix planes on the axis. This allows each suffix plane to have a description that is independent of all the other suffix planes. Note that the name of each suffix plane is required to be unique within each suffix region in a cube file. Additional suffix description keywords are described later in this chapter.

Table of Contents

5.4.3 - CORNER REGIONS

If a cube file includes suffixes on more than one axis, then the region that is the intersection between two (or all three) of the suffix regions is called a CORNER region. Corner region data are currently not used.

Table of Contents

5.4.4 - PIXEL STORAGE SIZES

In a standard three-dimensional cube file, core pixels can be stored in one of three different formats, which occupy one, two, or four bytes. All the core pixels within a single file must be of the same storage size. All suffix pixels always occupy four bytes of storage in the file. However, several different formats are supported for the contents of a four-byte suffix pixel. Handling of different pixel data types is described in detail below.

Table of Contents

5.4.5 - PIXEL COORDINATES

The pixel indexing that is used by the I/O routines allows use of the "logical" coordinate system shown in the diagram above. SAMPLE=1 is the left edge of the spatial-spatial core image. LINE=1 is the top edge of the spatial-spatial core image. BAND=1 corresponds to the spatial-spatial image at the "front" of the diagram. Coordinates within the suffix regions are independent of the core coordinates and are not an extension of the core coordinates. Thus, the first suffix on an axis has a coordinate of 1. However, suffixes are usually identified by name rather than by index number.

Table of Contents

5.4.6 - STORAGE ORDERS

The disk file in which a cube data object is stored is physically accessed as if it were a one-dimensional data structure. Storing the cube pictured above thus requires that the "logical" three-dimensional structure be mapped into the one-dimensional physical file structure. This involves moving through the three-dimensional structure in certain patterns to determine the linear sequence of core and suffix pixel values that occur in the file. In ISIS cube files this pattern is defined by specifying which axis index varies fastest in the linear sequence of pixel values in the file, which axis varies second fastest, and which axis varies slowest.

In a standard three-dimensional cube file, the names of the three axes are always SAMPLE, LINE, and BAND. The AXIS_NAME keyword has an array of values that list the names of the axes in the cube. The order of the names specifies the cube storage order in the file. The first axis is the fastest varying, and the third axis is the slowest varying. The standard ISIS cube-processing programs support the following three storage orders:

(SAMPLE, LINE, BAND) - Band Sequential (BSQ)
(SAMPLE, BAND, LINE) - Band Interleaved by Line (BIL)
(BAND, SAMPLE, LINE) - Band Interleaved by Pixel (BIP)

The CORE_ITEMS and SUFFIX_ITEMS keywords have array values. The order of these values corresponds to the order of the axes listed in the AXIS_NAME value.

In the physical file storage, suffix pixel data (if present) is "scrambled" in with the associated core pixel data. For example, in a BSQ storage order file, the physical cube storage in the file begins with the pixels in the first (top) line of the spatial-spatial image plane at the first wavelength band. This is followed by the sideplane pixel values that extend this line of core pixels. Next are the core pixels for the second line, followed by the sideplane pixels for the second line. After the last line of this first core image plane (and its associated sideplane pixels) come the bottomplane pixels associated with the first band. This is then repeated for the second through last bands. Finally, all the backplane data are stored after all the core data and associated sideplane and bottomplane pixels. Thus, in a BSQ file, all of the backplane pixels are stored together in a single contiguous block at the end of the cube data object. This means that backplanes can be added to a BSQ file without creating a new file because it only requires adding new data at the end of the file. (This is true only if the qube object is the last object in the file, which is usually the case since any "extra" data objects usually are located between the history object and the qube object.) However, adding backplanes to a BIL or BIP file requires creating a new file.

In general, most application programs are capable of processing BSQ storage order files. In most cases, one additional storage order can be handled by each program. The storage orders that can be processed and the efficiency of processing usually depend upon whether the program does its processing in terms of spatial planes or in terms of spectra. For example, the CUBEDIV program divides each spatial plane by a given spatial plane. This program is most efficient when processing a BSQ file, but BIL files can also be processed. Like most spatial processing programs, CUBEDIV cannot process a BIP file because there is no way to make spatial processing acceptably efficient for BIP files. The RATIOCS program divides each spectrum in a cube by a given spectrum and is thus an example of a spectral processing program. RATIOCS is most efficient when processing a BIP file, but it can also process either a BIL file or a BSQ file.

Note that the TRANSPOSE program will convert a standard cube file from one physical storage order to any other physical storage order.

Table of Contents

5.5 - PIXEL DATA TYPES

The following sections describe the standard supported data types for core pixels and suffix pixels.

Table of Contents

5.5.1 - TYPE CODES AND LABEL KEYWORDS

The data type for core pixels is described by two label keywords. CORE_ITEM_BYTES has an integer value that specifies the number of storage bytes occupied by a pixel value. CORE_ITEM_TYPE has a string value that specifies the internal binary representation of the stored value. The CORE_ITEM_TYPE values stored in the label of a cube file include a system-specific prefix, e.g. "VAX_INTEGER" or "VAX_REAL".

It is important to note that the standard ISIS cube-processing programs assume that values stored in a file are stored in formats that are native to the host computer on which the software is currently running. Thus, for example, there is no capability for "on the fly" conversion of "foreign" floating point formats to the native floating point format. This conversion would need to be performed by a translator program that converts a file from a "foreign" format to the standard ISIS cube file format for the current host computer.

A single integer type code value is used to identify the various supported data types, i.e., combinations of CORE_ITEM_TYPE and CORE_ITEM_BYTES keyword values. This is described in more detail below.

Table of Contents

5.5.2 - CORE PIXEL DATA TYPES

Conceptually, a core pixel is always considered to have a "real" number value ("real" as opposed to "integer"). It is very easy to misunderstand the following discussion if this critical concept is not recognized. Thus, we will emphasize it:

   ---------------------------------------------------------------
   |   CONCEPTUALLY, A CORE PIXEL IS ALWAYS CONSIDERED TO HAVE   |
   |   A "REAL" NUMBER VALUE.                                    |
   ---------------------------------------------------------------
In a standard ISIS cube file, these core pixel values can be represented in three different ways, corresponding to different numbers of bytes used to store the values in the file. When 4-byte format is used, the stored number is in the format of a native (for the current host computer) floating-point number that directly represents the "real" value of the pixel. The other two formats store a pixel value using 1-byte or 2-byte storage items in the file. For these, the stored value is considered to be an integer value and type conversion parameters (given by the CORE_BASE and CORE_MULTIPLIER label keywords) are used to convert the stored integer values into the "real" pixel values that are being represented. The "real" value being represented is determined as follows:

        "real_value" = CORE_BASE +
                     (CORE_MULTIPLIER * FLOAT(stored_value))
From the point of view of the user, core pixels always appear to have these "real" values, i.e., the user can never directly see the 1-byte or 2-byte file values before the application of the type conversion parameters. (Exceptions to this rule are the histograming programs HISTGEN, RTGEN and IRT, which have options that allow the histogram binning to be based on the stored 1-byte or 2-byte core values.) In most cases, an application program will automatically convert 1-byte or 2-byte input pixel values to floating point and then perform its computations using these floating point values. It will then automatically convert the computed values to 1-byte or 2-byte format for writing to an output file. Thus, most application programs are capable of processing files that use any of the three different formats.

However, there are several aspects of the different storage formats that are important to the user. First, different data types result in different disk file sizes. Second, different data types allow different precision (number of significant digits) in the stored pixel values. 4-byte format uses the most disk space and allows the greatest precision. 1-byte format uses the least disk space and allows the least precision. The third important aspect of the different data formats is the range of values that can be represented. With 4-byte format, the representable range is the range of floating point values and is thus nearly unlimited for all practical purposes. For 2-byte or 1-byte format, the representable range varies depending upon the current values of the type conversion parameters. This is discussed in more detail below.

The following is a summary of the three standard pixel representation formats for core pixels:

       Type     CORE_ITEM_BYTES   CORE_ITEM_TYPE    Type Conversion
       Code                                           Parameters
        1           1           UNSIGNED_INTEGER        Yes
        2           2           INTEGER                 Yes
        3           4           REAL                    No
For 4-byte format the stored values are floating point values that directly represent the pixel values. In this case, the CORE_BASE and CORE_MULTIPLIER values are not used. However, they are still required to be present in the label and should have values of 0.0 and 1.0.

Table of Contents

5.5.3 - SUFFIX PIXEL DATA TYPES

In a manner similar to core pixel values, several different data formats can be used for storing suffix pixels. However, unlike core pixel formats (which can usually be chosen by the user), suffix pixel formats are usually automatically chosen by the application programs according to their needs. Also, unlike core pixel values, suffix pixel values are always stored in 4-byte items in a standard ISIS cube file. This is indicated by the SUFFIX_BYTES label keyword, which always has a value of four and is always required to be present (even if there are no suffixes stored in the file).

In a manner similar to the core description keywords, the data type for suffix pixels is described in suffix description keywords of the form axis_SUFFIX_ITEM_BYTES and axis_SUFFIX_ITEM_TYPE, where "axis" is the name of the axis that is extended by the suffix data, e.g., BAND_SUFFIX_ITEM_BYTES and BAND_SUFFIX_ITEM_TYPE for the suffixes that are backplanes. The "axis" name corresponds to one of the axis names listed in the AXIS_NAME keyword. Each suffix plane within a single file can have a different data format. Thus, the values of these keywords are arrays. Each element of the array refers to a separate suffix plane. Type conversion parameters can also be used for some of the standard suffix data types. These are contained in keywords of the form axis_SUFFIX_BASE and axis_SUFFIX_MULTIPLIER, e.g., BAND_SUFFIX_BASE and BAND_SUFFIX_MULTIPLIER for the backplane suffixes. Each suffix can have different type conversion parameters, so these keywords have array values.

When a suffix pixel contains a numerical value, it is expected that in most cases it will be stored in one of three standard formats:

       Type      axis_SUFFIX_      axis_SUFFIX_      Type Conversion
       Code       ITEM_BYTES        ITEM_TYPE          Parameters
        4               1         UNSIGNED_INTEGER      Yes
        5               2         INTEGER               Yes
        3               4         REAL                  No
Table of Contents

5.5.4 - BIT-MASKS IN SUFFIX PIXELS

Suffix pixels can be used to store data other than numerical values, e.g., bit-masks or engineering data that are packed into non-standard formats. This is indicated by an axis_SUFFIX_ITEM_TYPE value of "BIT_STRING" or "BYTE_STRING". The ISIS system design does not put any constraints on the interpretation of such suffix pixel values. The application programs can use these data values in any desired manner.

Table of Contents

5.5.5 - SPECIAL PIXEL VALUES

For each standard core pixel type, a set of stored values is defined for representing the "special" pixel values. These include the "null" pixel value and four different "saturated" values. Two of the saturation values are generated when valid pixel values are being converted to 1-byte format or 2-byte format and the value being converted is outside (high or low) the range of values that can be represented in the output representation with the given type conversion parameters. The other two saturation values are used for pixel values that were saturated (high or low) by the instrument that generated the data. These will normally be identified by the logging program or the translator program that converts a "foreign" file into standard ISIS cube file format.

The ISIS application programs will preserve the identity of special pixel values when converting pixels from one representation to another. For example, when converting from 2-byte format to 4-byte format, a 2-byte null pixel will be converted to a 4-byte null pixel.

Table of Contents

5.5.6 - SPECIFYING OUTPUT CORE PIXEL DATA TYPES

In most cases, application programs perform their computations using 4-byte floating point format. If the core pixel values in an input file are not stored in 4-byte format, then they are first internally converted to 4-byte format using the type conversion parameters. Most application programs include the OTYPE TAE parameter, which allows the user to specify the pixel data type (i.e., type code) for the output file. The permitted OTYPE values include 1, 2, and 3, which select 1-byte, 2-byte, and 4-byte format. In addition, OTYPE=0 may be specified. This value (which is usually the default) specifies that the data type for the output file should be the same as the data type of the input file.

When the output pixel data type is 1-byte or 2-byte (OTYPE=1 or OTYPE=2), then the application program converts the internal 4-byte floating point values to the selected output type using the output file's type conversion parameters. In most cases, the user has control over the type conversion parameters that are used. However, rather than directly specifying these parameters, the ORANGE TAE parameter allows the user to specify the range of pixel values that can be represented in the output file. The application program will then compute the type conversion parameters that will allow representing the desired range of values. In most cases, the default value of ORANGE is (0.0, 0.0), which indicates that the desired range for the output file is the same as the range of values that can be represented in the input file. (If the input file is 4-byte floating point format and the output file is 1-byte or 2-byte format, then the user must specify an explicit range for the output file.)

During the conversion of internal 4-byte floating point values to output 1-byte or 2-byte format, some values may be outside the range of values that can be represented in the output format using the current type conversion parameters. These will be converted to either the high or low "representation saturation" special values. These are thus valid output data values that are "lost" because they are outside the specified ORANGE. The application program will report a count of such "lost" output data values. If desired, the user could then re-run the application program with a larger ORANGE in order to reduce or eliminate these lost values. Note that most application programs will propagate a saturated input pixel value into a corresponding saturated output pixel value. These pixels are NOT included in the count of saturated pixels that are created during the output type conversion process.

Table of Contents

5.5.7 - DETERMINING RANGE OF VALUES IN A FILE

The pixel data type and the associated type conversion parameters determine the range of pixel values that can be represented. However, the range of values actually contained in a file might be much smaller. The RANGECORE program allows the user to determine the range of pixel values that are actually contained in the core of a cube file. This can be done without creating a new output file. RANGECORE also allows creating a new output file that stores the same pixel values using a different data type and/or different set of type conversion parameters. And, the input subcube specifier (see below) allows RANGECORE to create an output file that is a subarea of the input file.

Table of Contents

6.0 - INPUT SUBCUBE SPECIFIER

6.1 - PURPOSE OF THE INPUT SUBCUBE SPECIFIER

The purpose of the input subcube specifier is to allow the user to specify what parts of an input cube file are to be passed to the actual applications code of an application program. This consists of specifying a list of index values for each region (core and suffix) for each dimension in the cube. The input subcube specifier allows the user to specify these index value lists by specifying individual index values and/or ranges of values. Ranges can optionally be modified by specifying either an increment value or values within the range that are to be excluded.

For most application programs, the user specifies the input subcube specifier with the SFROM TAE parameter, which has a string value. In many cases, the user can specify the subcube specifier string without enclosing it in double quotes. However, if it contains commas or parenthesis, the TAE syntax requires that it be enclosed in double quotes. The following subsections describe the detailed format and selection capability that is provided by the subcube specifier. The default value of the SFROM parameter is the null string (all blanks), which selects the entire input cube file (both core and suffix) and is thus the most commonly used value. Several examples of the subcube specifier are given in the last subsection of this section. On the first reading of this document, it might be useful to skip to the next major section (Instrument Spectral Library Files) and then return to the detailed description of the input subcube specifier at a later time.

The application program may or may not actually process or use all the data selected by the input subcube specifier. The part of the selected data that is used will depend upon the definition and intended purpose of the application program. For example, one application program might be defined to process all selected core data and never process selected suffix data. Another program might make use of a suffix plane. In this case, the input subcube specifier would select the set of suffix planes that are passed to the application code, but there would be a separate TAE parameter that selects which suffix plane is to be actually used by the program.

Some programs may be capable of processing a selected subarea of the input core data. Most of these programs use the input subcube specifier to select the input data that are passed to the program and then use other TAE parameters to specify the part that will actually be processed. The exact method of specifying this process selection will vary according to the needs of the individual programs.

For most programs that process an input file and put the results into an output file, the size of the output file will correspond to the size of the part of the input file selected by the input subcube specifier. (In some cases, the output file might be larger than the input subcube specifier due to the addition of new suffix planes. Also, a program that performs a geometric transformation might produce an output file that has a spatial size that is different from the input file.) Selected input data that are not processed will normally be propagated unchanged to the output file. For example, if the definition of a program consists of processing only core data, then any selected input suffix data will be propagated unchanged to the output file.

Table of Contents

6.2 - FORMAT OF INPUT SUBCUBE SPECIFIER

6.2.1 - SUBCUBE SPECIFIER

The input subcube specifier is a string that can contain either the null string (all blanks) or a list of one or more axis specifiers separated by colons.

Table of Contents

6.2.2 - AXIS SPECIFIER

An axis specifier can contain two parts: a core specifier and a suffix specifier. Both of these are optional, i.e., a null (blank) string is permitted as an axis specifier. If both the core specifier and the suffix specifier are present, then they are separated by a comma and either one can occur first.

Table of Contents

6.2.3 - ORDER OF AXIS SPECIFIERS

If the subcube specifier begins with the letter "P" (upper or lower case), this indicates that the order of the axis specifiers corresponds to the "physical" storage order of the qube, i.e., fastest varying axis first. This physical axis mode can be used with any qube file, including standard ISIS 3D cube files, 3D files with non-standard axis names or orders, or files with number of dimensions not equal to 3.

If the "physical" order flag is omitted, then the three axis specifiers are assumed to be in the "logical" storage order: SAMPLE, LINE, BAND. This "logical" order can only be used with standard 3D ISIS cube files.

Table of Contents

6.2.4 - CORE SPECIFIER

A core specifier is a list containing any combination of single element numbers or range specifiers. The elements in the list are separated by commas.

Table of Contents

6.2.5 - RANGE SPECIFIER

There are two different forms of range specifier:

  1. Start/count form - contains a starting element number and a count of elements separated by a number sign (#), e.g., 6#4 indicates elements 6, 7, 8 and 9.

  2. Start/end form - contains a starting element number and an ending element number separated by a dash (minus sign). An asterisk (*) can be used as the ending element number and is equivalent to the highest index number that occurs in the file for the corresponding axis.

Table of Contents

6.2.6 - RANGE MODIFIERS

A range specifier in either of the two possible formats can be optionally followed by a range modifier. There are two different forms of range modifiers:

  1. Increment - indicated by specifying the increment value enclosed in parentheses.

  2. Exclude values - indicated by enclosing the list of values to be excluded from the range within parentheses. The left parenthesis must be preceeded by a "~" character. The values being excluded can be specified as a list containing any combination of single elements or ranges (either start/count form or start/end form). However, these ranges cannot be further modified by increments or values to be excluded.

Only one range modifier can be used on a given range.

Table of Contents

6.2.7 - SPECIAL FORM OF CORE SPECIFIER

A special short-hand form of a core specifier consists of a single range modifier (an increment or an exclude list) without an explicit range to be modified. In this case, a range of "1-*" will be assumed.

Table of Contents

6.2.8 - SUFFIX SPECIFIER

A suffix specifier has exactly the same format as the core specifier except that it is enclosed in parentheses and the left parenthesis is preceeded by an upper case or lower case "S" character.

Table of Contents

6.3 - FORMAL SYNTAX SPECIFICATION

The following is the formal syntax of the subcube specifier. This uses the syntax notation used in "Standards for the Preparation and Interchange of Data Sets" (SPIDS), which includes a specification for the PDS label standards.

    [ ]     - zero or one occurrence of enclosed item
    [ ]*    - zero, one, or more occurrences of enclosed item
    [ ]+    - one or more occurrence of enclosed item
    |       - "or"

subcube_spec            := [physical_flag] [axis_spec] [: axis_spec]*
physical_flag           := P | p
axis_spec               := null_string | core_spec | suffix_spec |
                                core_spec , suffix_spec |
                                suffix_spec , core_spec

core_spec               := core_spec_component [, core_spec_component]* |
                                range_modifier
core_spec_component     := list_element | complex_range

complex_range           := range [range_modifier]
range                   := start_element # count | start_element - end_element
range_modifier          := ( increment ) | ~( list )

list                    := list_component [, list_component]*
list_component          := list_element | range

list_element            := integer
start_element           := integer
end_element             := * | integer
count                   := integer
increment               := real

suffix_spec             := suffix_flag ( core_spec )
suffix_flag             := S | s

Table of Contents

6.4 - SEMANTICS AND ADDITIONAL COMMENTS

6.4.1 - USER SPECIFICATION OF INPUT SUBCUBE SPECIFIERS

Input files are selected by TAE parameters that have string values of length 128. If a program has a single input file, then the file name will be specified by a TAE parameter named FROM. If there are multiple input files, the TAE parameter names will be FROM1, FROM2, etc.

In most cases, each input file will have a corresponding input subcube specifier that can be used for selecting parts of the input file. Each input subcube specifier will be supplied by a separate TAE parameter that has a length of 128. When the user enters the value for one of these TAE parameters, it may be necessary to enclose the string in double quotes as required by the usual TAE rules for entering string values. The names of the TAE parameters that specify input subcube specifiers will be SFROM or SFROM1, SFROM2, etc.

The application program PARSE will accept a parse equation string in which subcubes are indicated as expressions enclosed by square brackets immediately following the name of a cube file. The contents and meaning of this expression will be the same as the input subcube specifier string describe above.

Table of Contents

6.4.2 - MEANING OF PARTS THAT ARE NOT EXPLICITLY SPECIFIED

If the entire input subcube specifier is the null (blank) string, then this means that the entire input qube is being selected, including all of the core and all of any suffix planes that are present. This is normally the default value of the TAE parameters that contain the input subcube specifiers.

If an entire axis specifier is the null (blank) string, then all indices on the axis are being selected. This includes all core indices and all suffix indices (if applicable).

If only one component (core or suffix) of an axis specifier is given, then all indices are being selected for the component not given.

If a core specifier contains only a range modifier without an explicit range, then a range of "1-*" is assumed. The same applies to a suffix specifier inside the parentheses that delimit the suffix specifier.

Table of Contents

6.4.3 - INCREMENT

The increment value in a range modifier can be any real number greater than zero. If an increment value is an exact integer, then the decimal point is optional. For example, all the following increments have exactly the same meaning: "(2)", "(2.)", and "(2.0)". Values less than 1.0 result in pixel replication. This might be useful for expanding an image in a display program. Increment values greater than 1.0 result in sub-sampling of the data. If an increment that is not equal to 1.0 is specified, then the following algorithm is used for computing the resulting list of indices:

        INTEGER LB, UB          ! Lower and upper bounds
        REAL INC                ! Increment
        INTEGER L(*)            ! List of indices being generated
        REAL R                  ! Temporary real variable
        R = FLOAT(LB)
        INDEX = 1
100     L(INDEX) = NINT(R)      ! Rounding to nearest integer
            R = R + INC
            IF (NINT(R) .GT. UB) GOTO 200
            INDEX = INDEX + 1
            GOTO 100
200     CONTINUE

Table of Contents

6.4.4 - COUNT AND INCREMENT TOGETHER

If an increment range modifier is used with a range specifier that uses the start/count format, then the count is used for determining the upper bound to be used in the above algorithm, i.e., UB = start+count-1. Note that the count value does not specify the number of index values in the generated list. For example, "1#10(2)" specifies the five-element index list "1,3,5,7,9".

Table of Contents

6.4.5 - DUPLICATING CORE AND SUFFIX INDEX VALUES

There are two ways that duplicate index values can be specified. First, duplicate values can be specified in an explicit list. Second, an increment value that is less than 1.0 can be specified. Both of these are permitted for core index values. However, neither of these are permitted for suffix index values. The main reason for this is that it would result in duplicate suffix planes being passed to the application program (and propagated to an output file). However, suffix planes are usually identified by the suffix name, which must be unique within each suffix region.

Table of Contents

6.4.6 - SUFFIX SPECIFIERS USED WITH MORE THAN THREE DIMENSIONS

The ISIS I/O routines do not support suffixes on qube files that have more than three dimensions. Thus, suffix specifiers can be used only when the number of dimensions in the qube file is three or less.

Table of Contents

6.4.7 - INDEX VALUES

The index values for the core region begin with index value "1" on each axis.

The suffix index values are separate from the core index values. The suffix index values also start with "1" to indicate the first suffix along an axis.

Table of Contents

6.4.8 - ORDER OF ITEMS IN A LIST

The index values given in a list must be in strictly increasing order.

Table of Contents

6.4.9 - WHITE SPACE

Blank characters and tab characters can be included within the subcube specifier string to improve readability. These "white space" characters do not effect the meaning of the subcube specifier and they can be included at any location except between characters that are forming numbers or file names (see next section).

Table of Contents

6.4.10 - STORING SUBCUBE SPECIFIER IN A FILE

All or part of a subcube specifier string can be contained in a disk file that is an ordinary text file created by a text editor. The use of such a file is indicated by enclosing the file name within corner bracket characters (<>) and putting it into the user-specified subcube string at the location at which the file contents are to be used. The file contents can contain multiple lines of text. However, the break between different lines does not effect the meaning of the subcube specifier. This feature is useful when the length of the subcube specifier string would exceed the 128 character length of the TAE parameter or when the same subcube specifier is to be used for several different application programs. The text within the file cannot contain a reference to another file.

Table of Contents

6.5 - INPUT SUBCUBE SPECIFIER EXAMPLES

The following examples of the input subcube specifier are assumed to be used with an input file that is a standard ISIS 3D cube containing 100 samples, 200 lines, 83 bands, and 12 backplanes (suffixes in the band direction). Also, the input cube file is assumed to be stored in band interleaved by pixel (BIP) storage order, i.e., the storage order is (band, sample, line).

1.  " "                                 Entire cube file: all of the core
                                            plus all backplanes
2.  ":"                                 Same as above
3.  "::"                                Same as above
4.  "1-100"                             Same as above
5.  ":1-200"                            Same as above
6.  "::1-83"                            Same as above
7.  "::S(1-12)"                         Same as above
8.  "1-100 : 1-200 : 1-83,S(1-12)"      Same as above
9.  "1-100 : 1-200 : S(1-12),1-83"      Same as above
10. "P1-83,S(1-12) : 1-100 : 1-200"     Same as above
11. "1-* : 1-* : 1-*,S(1-*)"            Same as above
12. "25-74 : 25#50"                     50x50 spatial area, all bands, plus
                                            all backplanes
13. "1-*(2) : (2)"                      Every other spatial pixel in sample
                                            and line directions; all bands;
                                            all backplanes
14. ":: 3-6, 10-20~(12,16-18)"          Core bands 3,4,5,6,10,11,13,14,15,
                                            19, and 20; all backplanes
15. ":: ~(4, 10-12, 25#3)"              All bands except 4,10,11,12,25,26,27
16. "::S(3,5,7-12~(9,11))"              All of the core; backplanes 3,5,7,8,
                                            10,12
17. "::S(~(1-*))"                       All of the core; none of the backplanes
18. "<SUBSPEC.TXT>"                     Entire subcube specifier is contained
                                            in the file
19. ":: 1-*~( <BADBANDS.TXT> )"         All bands except the "bad" bands listed
                                            in the file; all backplanes

Table of Contents

7.0 - INSTRUMENT SPECTRAL LIBRARY FILES

Instrument spectral library (ISL) files are used for storing collections of spectra and associated header information that identifies each spectrum. All the spectra in a given ISL file have the same set of wavelengths, which corresponds to one of the observing modes of a given instrument. Different ISL files can contain different sets of wavelengths. ISL files can be used for storing data obtained from laboratory spectral measurements. ISL files can also be used for storing spectra (or average spectra) that are extracted from cubes of data produced by flight instruments.

An ISL file is a special type of cube file that is stored in BIP (band interleaved by pixel) storage order. The actual spectral data are stored in the core of the cube, and the spectral header data are packed into a set of backplanes on the cube. This storage organization allows rapid searching through the list of spectra in a file since each spectrum and its associated header data are stored as a contiguous piece of the physical disk file.

Note that the QL3 cube display program is not able to display a standard ISL file since it is stored in BIP storage order. The TRANSPOSE program can be used to convert a BIP Instrument Spectral Library file to either BSQ or BIL storage order, either of which QL3 is able to display. (The conversion from BIP to BIL will run faster than the conversion from BIP to BSQ. However, the initial start-up time for QL3 will be slower for BIL than for BSQ. Rather than running TRANSPOSE once to convert BIP storage order directly to BSQ, it may be faster to run TRANSPOSE to convert BIP to BIL and then run it a second time to convert BIL to BSQ.)

Table of Contents

8.0 - TABLE FILES

One of the major types of data files handled by ISIS is the Table file. A typical example of a Table file is an average spectrum file containing data for a given spatial area. Such a data file can be produced by the CUBESPEC program. Each row of the table corresponds to one wavelength band of the spectrum and contains several different data values, e.g., band number, wavelength, average spectrum value, standard deviation, etc. Different table files can have different numbers of rows or columns in order to serve various instrumental and analysis objectives.

Table of Contents

8.1 - BASIC TABLE FILE STRUCTURE

ISIS Table files are stored as standard PDS labelled files. In a manner similar to cube files, the beginning of the file contains a descriptive label area. Appendix C contains an example label for an ISIS Table file. A Table file is required to contain a History data object, which is the same as the cube file History object. The actual table data are stored in a binary format in a Table data object within the Table file.

In a cube file, the name of the data object that contains the cube data is always "QUBE". However, in a Table file, the name of the data object that contains the table data is arbitrary and can vary from one Table file to another. One reason for this is to allow a single Table file to contain more than one table data object. (Duplicate object names are not permitted within one file.) In some cases, the name of the Table data object is determined by the application program. In other cases, the name of the Table data object can be specified by the user.

Note that a cube file can contain one or more Table objects in addition to the QUBE and HISTORY objects.

Table of Contents

8.2 - TABLE DATA OBJECT FORMAT AND LABEL KEYWORDS

A Table data object contains rows of data stored in a binary format. The number of rows contained in a Table object is recorded in the ROWS keyword in the Table data object description in the label.

The number of columns of data contained in each row of the table is recorded in the COLUMNS label keyword. Each different column is identified by a unique name, which is recorded in the array of values in the COLUMN_NAME keyword.

Each column can contain either a scalar value or an array of values. (Most Table objects contain only scalar values.) The number of elements in each column is recorded in the COLUMN_ITEMS keyword. The data type of each element of each column is recorded in the COLUMN_ITEM_TYPE and COLUMN_ITEM_BYTES keywords. Most tables use only INTEGER*4 and REAL*4 data types, but a variety of other data types are supported, e.g., INTEGER*2 and CHARACTER*n (character strings of arbitrary length).

The table object description can optionally include the AUX_ROW_DEFINITION group of keywords. This group contains keyword names of the form name_NOTE, where "name" is the column name that is recorded in the COLUMN_NAME keyword. The values of these keywords are text strings that describe the meanings of the columns.

Table of Contents

8.3 - PROTOTYPE TABLE FILE FORMAT

Some of the older ISIS programs make use of tables that are stored in a prototype ASCII text format. These are ordinary text files that can be printed or examined with a text editor. The beginning of the table file is a section that contains various header and identifying information. This is terminated by a line that contains "C_END". The remainder of the file contains the actual table data in the format of one table row per line.

Table of Contents

8.4 - TRANSLATING TABLE DATA BETWEEN BINARY FORMAT AND ASCII FORMAT

The TBL2ASC program translates table data from a standard ISIS binary table file into an ASCII text format so that it can be printed or examined with a text editor. The default operation of this program will translate all columns of table data using the default formats that are recorded in the COLUMN_ITEM_FORMAT label keyword. The user can also specify other desired formats for the binary to text conversion and/or select a subset of the columns to be converted. Multiple text lines will be used for each row of table data if the ASCII format of the converted columns is too long to fit within the user-specified line length.

The ASC2TBL program translates table data from an ASCII text format into a standard ISIS binary table file. This can be used for converting the output of the TBL2ASC program back into the standard ISIS binary table format. This allows the use of a text editor for editing values in a table file. The ASC2TBL program can also be used for translating other types of text table data, e.g., the prototype format text table files and "foreign" text table data that contains no header information.

Table of Contents

9.0 - PROCESSING MODES

9.1 - SINGLE INPUT FILE

Some ISIS application programs have a single input cube file but no output cube file. In this case the input file is specified by the FROM TAE parameter, and the TO parameter is not used. An example of this is the LHLIST program, which produces a listing of the label and/or history of an input cube file.

Table of Contents

9.2 - SINGLE OUTPUT FILE

Some ISIS application programs create a new output cube file without reading an input cube file. Such programs use the TO parameter but do not use the FROM or SFROM parameters.

Table of Contents

9.3 - SINGLE INPUT FILE PLUS SINGLE OUTPUT FILE

Many of the cube processing application programs read cube data from an input file and produce a processed version of these data. There are three basic processing modes in which such programs might operate:

  1. Create new output file - processed data are put into a file being created

  2. Update input file - processed data are put back into the input file

  3. Mosaic - processed data are inserted into a sub-area of an existing file

All three of these processing modes can be found among the various ISIS applications programs. However, not all programs include all the modes.

Mosaic operations are implemented only by a few special mosaic programs.

A few programs are only capable of operating in the update mode. These programs include the FROM TAE parameter, which specifies the name of the input file that is to be updated. (These programs do not use the TO parameter since the output file is the same as the input file.)

Some of the programs are only capable of operating in the mode in which a new output file is created. These programs include the FROM and TO TAE parameters to specify the input file and new output file being created.

Many of the programs are capable of either updating the input file or creating a new output file. These programs include both the FROM and TO parameters. If the TO parameter is specified as the null string (all blanks), then the input FROM file will be updated. If a non-blank TO is specified, then it will be the name of the new file that is created. Note that if TO specifies the same filename and extension as FROM, then the input file will NOT be updated. Instead, a new version of the file will be created. Also, note that in most cases an input file cannot be updated if the input subcube specifier is used to select a sub-area of the input file.

Table of Contents

9.4 - MULTIPLE INPUT/OUTPUT FILES

Some application programs may have multiple input and/or multiple output cube files. These make use of parameters such as FROM1 and FROM2 to specify the input files and parameters such as TO1 and TO2 to specify the output files. In most cases, these programs are only capable of reading from the input files and writing to the new output files that are being created.

Table of Contents

10.0 - SELECTING DIFFERENT ISIS RELEASE VERSIONS

ISIS is undergoing continual development, and periodically a new release of ISIS is made available. When the user initially enters TAE, he will be using the set of programs that form the latest ISIS release. The previous ISIS release is called the "old" release and can be selected by running the SETOLDISIS program, which has no TAE parameters. The latest ISIS release is called the "new" release, and is selected by running the SETNEWISIS program.

At any given time there might be "development" versions of some ISIS programs installed on your system. These are programs that are being made available on an experimental basis. These might include revised versions of programs contained in the "new" system. These might also include the latest experimental versions of new programs that are under development and have not yet been included in the "new" ISIS system. The SETDEVISIS program will select these "development" programs for use. If a requested program is not found in the "development" area, then ISIS will look for it in the "new" area.

The program descriptions that are contained in this User's Manual describe the set of programs that form the "new" ISIS release. The date at the top of each page of the descriptions gives the date of the last modification to the file that contains the program description. The date of the last modification to the source code for each program is reported in the VERSION_DATE recorded in the history entry and session log entry when the program is run. Note that updates to a program description are independent of updates to the source code. For example, an update might include a source code bug fix that does not require a change to the program description. Or, a program description might be updated without a change to the source code of the program.

Table of Contents

11.0 - UPDATING THIS USER'S MANUAL

Each new release of ISIS includes a file that contains the entire current version of this User's Manual, thus incorporating any new and/or changed program descriptions plus any new versions of the appendices or this Introduction to ISIS.

In addition, each section of the entire User's Manual is available as a separate file. This includes the title page, intro chapter, program summary, program descriptions, and appendices. Also, a new release of ISIS includes a file that contains only the program descriptions that are new or changed since the previous update. This allows updating a copy of the User's Manual without re-printing the entire manual. Typically, this would consist of replacing the title page and program summary and then inserting any new or changed program descriptions. If a large number of program descriptions are new or changed, then the entire program description section can be printed.