USGS

Isis 2 Documentation


pathtool Documentation

pathtool - Search and replace paths in ISIS keyword labels
pathtool is an application that will search for and replace file paths
in ISIS cube label keywords.  This application is mainly designed to
handle ISIS SPICE kernel file paths that have been traditionally  stored
as absolute paths, although they are initially referenced using
environment variables.

The need for this application arises mainly because the use of ISIS
files on other systems would fail if ISIS data areas are installed in
different directories.  This application will use the values of ISIS
shell environment variables that specify locations of ancillary data,
including SPICE kernel files, to locate files and replace existing paths
with new locations where they exist on the local system.  (See PATHS
help for details.)

It is important to note that this application does not alter or replace
file names.  pathtool will only alter the directory portion of file
paths in specified keywords.  If the names of, for example, SPICE
kernel files need to be altered, the proper procedure for this is to
rerun levinit.

Users may provide a single ISIS cube file in the FROM parameter and/or
provide a list of files in the FROMLIST parameter.  All files are
processed even if errors occur.

Some errors that may occur is that the file is not found or a keyword
specified may not have strictly string values.  pathtool will only
work on keywords that have strings as values since that is the standard
for file names in ISIS labels.  Errors will still be reported but will
not cause the application to terminate.  Note that keywords that do not
exist in the labels is not deemed an error and are silently ignored.

pathtool will report the number of paths that are found and not found.
These numbers are reported for each file processed and totals for all
files at the end of the run.  Note that these numbers are based upon
results after processing all paths with the input conditions.  If all
is well, then there will be zero for the total missing.

There is two key sources of information critical to the execution of
this application:  paths and keywords.

PATHS
Directory paths are provide in the PATHS and MYPATHS parameters.  PATHS
provides a default list of directories to standard ISIS ancillary data
(target definitions, etc) common to most missions.  MYPATHS provides a
convenient mechanism to add paths to the search list. Combining the
value of the PATHS and MYPATHS parameters creates an aggregate search
list of paths.

Note that path searches are carried out sequentially.  Thus, the first
path found to contain the ancillary data file is the one the existing
path is replaced with.  The MYLOC parameter is provided so the user may
choose to have their list of paths occur first (PREPEND) in the list of
paths or last (APPEND) after the contents of PATHS.  Users can
completely eliminate searches/replacements of paths by nulling the PATHS
keyword. Nulling both PATHS and MYPATHS parametrs essentially runs a
check of all existing keys in the label.

The default provided for PATHS specifies directories that are common
to all missions.  MYPATHS is intended to add the standard mission
specific paths for particular missions.  It can also be used to add
your own directories to search when appropriate.  (See the MYPATHS
parameter help for details.)

Note that no checks are made as to the binary compatability of either
the ISIS file being processed or the files that are found in on the
system used run the application.

A word of caution:  this application should be run on the system
intended to process the ISIS cube file.  Some installations have
unique directory paths to files based upon the binary architecture
although the distributed version of ISIS installations default paths
are the same for all architectures.

See the EXAMPLES section below on usage.  See also detailed help for
the PATHS parameter.

KEYWORDS
Keywords are specified in the KEYS and MYKEYS parameters.  KEYS
contain standard keywords in ISIS labels that are known to require
path scrutiny when moving between systems with different ISIS
installation locations.  MYKEYS is a convenient mechanism for the user
to add keywords to the standard keyword list.

Keywords are specified using a "keyspec".  A keyspec is a specification
that provides simple references to keywords in a ISIS label.  The
general form is /OBJECT/GROUP/KEYWORD.  Alternatives of this form are
/OBJECT/KEYWORD, /KEYWORD and just KEYWORD.  An example would be
/QUBE/ISIS_GEOMETRY/BASE_KERNELS.  This is a reference to the
BASE_KERNELS keyword in the ISIS_GEOMETRY group which is located within
the QUBE object in the ISIS label.  See the help for the KEYS parameter
for a detailed description.


CONTROLLING PROGRAM BEHAVIOR
The REPORT parameter is provided to allow the user to specify what
information is reported. The default (ALL) will generate verbose
reporting of file processing.  This reports missing paths, paths
that are found and keywords that are not found in the label.  Output
can be restricted to paths only (PATHS) and missing paths only
(MISSING).

Keywords are reported as "keyspecs"...the same format as provided in
KEYS and MYKEYS.  They are marked as "KeySpec".  If a keyword does
not exist in the label, they are marked as "(KEYDNE)".

The values of the keywords are listed after each keyspec.  Paths that
do not exist are marked as "Old::Missing" or "New::Missing".  Paths
that do exist are marked as "Old::Found" or "New::Found".  Virtually
all permutations of these two path conditions are possible (when not
preserving existing paths (Old::Found) you could see a situation where
the path search yields no file found (New::Missing)).

The PRESERVE parameter allows the user to check each path for existance
prior to running through the paths contained in the aggregate list
composed of PATHS and MYPATHS.  If PRESERVE=YES and the file exists in
each path retrieved from all keyspecs in the label, then the search is
not performed on that path.  If PRESERVE=NO, the search is ran on every
value regardless if it already exists or not.

UPDATE specifies if the result of the path search is written to the
labels of the input file(s).  All files are initially opened for read
only access when retrieving keywords.  The path values are internalized
and path processing is performed.  If UPDATE=YES, the results of the
search are written to the labels of the file if values have changed.
The default is to just run the processing and report the results.
Users must set UPDATE=YES to actually write the search results to input
files.

EXAMPLES
The following examples are intended to illustrate the usefullness of
this application.  Note all of the examples given are run from the
Unix command shell and not inside TAE.  The only difference would
be the use of single quotes around some of the parameters.  These
quotes should not be used in TAE.  Also, shell line continuation
character is the backslash (\).  In TAE it is the plus sign (+).

Unless otherwise specified, all examples will prepend paths specified
in MYPATHS (MYLOC=PREPEND), show all information (REPORT=ALL),
preserve existing paths that exist (PRESERVE=YES) and will not update
the labels with the results of the run (UPDATE=NO).  At the time
of this writing, these were the defaults.

1)  Check for all missing data files in a label but do not modify the
label.  This command is most useful determining if a file contains
valid paths.  If any paths are reported missing chances are subsequent
processing will fail.

pathtool FROM=isis.cub PATHS=-- REPORT=missing

2)  Process a Viking ISIS cube file and write the results back to the
input file:

pathtool FROM=viking.cub MYPATHS='$ISISVIKDATA' UPDATE=yes

3)  Process a list Mars Exploration Rover (MER) files in the
/work1/user and update each file:

ls -1 /work1/user/*.cub > merfiles.lis
pathtool FROMLIST=merfiles.lis MYPATHS='$ISISMERDATA' UPDATE=yes

4)  Process a list of THEMIS and MGS MOC images in the same run
of the application and show all paths.  Do not preserve existing
paths but replace all existing paths with new paths if they exist.
Write the results back to the input files.

ls -1 /work1/user/*themis*.cub > files.lis
ls -1 /work1/user/*moc*.cub >> files.lis
pathtool FROMLIST=files.lis MYPATHS='($ISISM01DATA,$ISISMGSDATA)' \
         PRESERVE=no REPORT=paths UPDATE=yes
	

Programmer: Kris Becker, USGS, Flagstaff, Az

ParmDescriptionDefault
FROM
Name of single ISIS file
to process
--
FROMLIST
Input list of ISIS files
to process
--
PATHS
Default of paths to use as
replacements for existing
paths
"$ISISDATA","$ISISDATA/targets"
MYPATHS
Additional paths that user
can add to search list
--
MYLOC
Preference for adding MYPATHS
to search list:
APPEND  - paths will be appended
          to PATHS
PREPEND - Paths will be
          prepended to PATHS	
"PREPEND"
KEYS
List of keywords to search
and process for path
replacement
"/QUBE/ISIS_INSTRUMENT/INSTPARS",		         "/QUBE/ISIS_TARGET/TARGDEF",                          "/QUBE/ISIS_INGESTION/PDS2ISIS_TRANSLATION_TABLE",                          "/QUBE/ISIS_GEOMETRY/BASE_KERNELS",                         "/QUBE/ISIS_GEOMETRY/SPACECRAFT_KERNELS",                         "/QUBE/ISIS_GEOMETRY/CAMERA_KERNELS",                         "/QUBE/ISIS_GEOMETRY/KERNLST",			 "/QUBE/IMAGE_MAP_PROJECTION/DEM_FILE"
MYKEYS
Additional keyspecs to process
--
REPORT
Specify what to report to the
user after processing
ALL
PATHS
MISSING
"ALL"
PRESERVE
Preserve existing paths that
exist without searching for
a new one in paths provided
in PATH
"YES"
UPDATE
Option to write (YES) the
path changes to the file or
not (NO)
"NO"

ADDITIONAL NOTES:

ParmDescription
FROM
Name of a single ISIS cube to process.  Use this option for
single files.  FROM files are always prepended to the list
so both FROM and FROMLIST are processed.
FROMLIST
Name of a file containing a list of ISIS files.

To create a list of all ISIS files in the current
directory, you could use the following command:

find $PWD -name '*.cub' -print > files.lis

PATHS
The default list of standard ISIS paths that are common to
all ISIS cube files.  This list will typically include the
files in the $ISISDATA directories.  These are generalized
data files used in the processing of ISIS data.

Paths to ISIS files, typically NAIF SPICE kernel files, are
stored in label keywords as absolute path references.  For
(NASA) missions, ISIS configuration files found in ISIS data
directories (referenced through the $ISISDATA environment
variable) use environment variables to refer to these files.
Once ingested into ISIS applications the environment
variables must be translated to absolute paths so they can
be opened properly.

During subsequent processing, these files may need to be
referred to for data that is required for some computations,
typically involving geometric coordinates.  ISIS stores
paths to these files in absolute form as opposed to their
original environment variables.  This is precisely the need
for this application...to search alternative ISIS
installations that have these files stored in different
directories and resolve these new paths.  Once they are
found, this application updates (i.e., writes) the labels
with the new absolute file path references.

The defaults are typically $ISISDATA and $ISISDATA/targets.

Note that paths can be specified using environment variables
or absolute paths.  Environment variables are translated
to absolute paths and used to search for files.  This
implies that it will use currently defined environment
variables and assumes those provided are paths that exist on
the system currently running this application.

On Unix file systems, paths are delineated by the forward
slash (/).  Characters following the last forward slash is
the actual name of the file.  All characters between slashes
are directory names.  In most cases, directory and file
names are case sensitive.  ISIS uses environment variables
to generically reference directories that contain data
required to process nearly any ISIS cube data file.  The
ISIS initialization startup file will typically set all ISIS
environment variables based upon the installation process.

To set an environment variable, use the "setenv" command:

setenv ISISDATA /usgs/isisd/data

Values provided in the PATHS and MYPATHS parameters can
include an environment variable or specify the absolute
path, the complete path that results from the translation of
the enviromnent variable.

A typical ISIS label keyword that refers to a file will
appear as:

  TARGDEF = "/usgs/isisd/data/targets/mars.def.4"

Here, the path specification of this keyword value would be
"$ISISDATA/targets/mars.def.4".

pathtool processes these values by stripping off all
directory names, appending the remaining file name to all
the paths specified in the aggregate list (MYPATHS & PATHS)
and checking to see if the file exists in the resulting
path.  All paths provided in the aggregate list are searched
in this manner until the first full path is found (i.e., the
files exists in the absolute path).  Once this occurs, the
search is terminated and the resulting path is what is
eventually written to the label if requested (see the UPDATE
parameter).

Using the above TARGDEF path, the "/usgs/isisd/data/targets"
portion of the value is removed leaving the filename
"mars.def.4".  If pathtool is run using the default values
as PATHS=($ISISDATA, $ISISDATA/targets), and the environment
variable ISISDATA is now set to "/usgs/isis2/lsb/data", then
the result of the search would be
"/usgs/isis2/lsb/data/targets/mars.def.4".
MYPATHS
This parameter provides users with a convenient mechanism
to add paths of their choice to the aggregrate search list.
MYPATHS will typically be one or more mission specific path
but may be any directory.

Below is a list of environment variables and a brief
description of their association to missions:

$ISISCLEMDATA  - Clementine Orbiter (Moon)
$ISISCSSDATA   - Cassini (Saturn) data including VIMS, ISS,
                 DISR, and UVIS instruments
$ISISGALDATA   - Galileo (Jupiter) including the SSI
                 instrument
$ISISIMPDATA   - Mars Pathfinder including the Imager for
                 Mars Pathfinder (IMP)
$ISISLODATA    - Lunar Orbiter (Moon) including IV and V
$ISISMAR9DATA  - Mariner 9 (Mars)
$ISISMAR10DATA - Mariner 10  (Mercury)
$ISISMERDATA   - Mars Exploration Rovers including both
                 MERA and MERB rovers
$ISISMEXDATA   - Mars Express
$ISISMGSDATA   - Mars Global Surveyor including the MOC and
                 MOLA instruments
$ISISM01DATA   - Mars Odessey data including the THEMIS
                 instrument
$ISISNEARDATA  - Near Earth Asteroid Reconnaisance mission
$ISISVIKDATA   - Viking including Viking Orbiter 1 and 2
$ISISVOYDATA   - Voyager 1 and 2

To process a specific mission, one or more of these
environment variables can be specified in the MYPATHS
parameter.

pathtool FROM=moc.cub MYPATHS='($ISISMGSDATA)' UPDATE=yes
MYLOC
This parameter specifies that the paths provided in the
MYPATHS parameter are prepended (PREPEND) or appended
(APPEND) to the PATHS parameter defaults.  This defines
the order of paths where files are searched for.
KEYS
To illustrate the use of the keyspec, below is a portion of
a typical ISIS label:

CCSD3ZF0000100000001NJPL3IF0PDS200000001 = SFDU_LABEL
/* File Structure */

LABEL_RECORDS = 30
 ...

^QUBE = 66
OBJECT = QUBE
/* Qube object description */
  AXES = 3
  AXIS_NAME = (SAMPLE,LINE,BAND)

 ...

  GROUP = ISIS_GEOMETRY
    BASE_KERNELS = ("/usgs/isisd/data/mk98264a.tls",
      "/usgs/isisd/galdata/mk00062b.tsc",
      "/usgs/isisd/data/pck00005.tpc")
    SPACECRAFT_KERNELS =("/usgs/isisd/galdata/s990114a.bsp",
      "/usgs/isisd/galdata/s000131a.bsp")
  END_GROUP = ISIS_GEOMETRY

 ...

END

In this example, /QUBE/ISIS_GEOMETRY/BASE_KERNELS refers to
the BASE_KERNELS keyword in the ISIS_GEOMETRY group which
is contained in the QUBE object.  The keyspec to the
LABEL_RECORDS keyword is /LABEL_RECORDS or just
LABEL_RECORDS.  And /QUBE/AXIS_NAME is the keyspec to the
AXIS_NAME keyword in the QUBE object.  This keyword has no
group name in the keyspec.
MYKEYS
MYKEYS is a provided as a convenient method to add keywords
to be retrieved from each file and its values to be searched
as paths.  Note that these keywords must have string values
in order for them to be processed at all.

The form of values provided in this parameter are keyspecs,
same as is for the KEYS parameter.  They follow the form
/OBJECT/GROUP/KEYWORD or /OBJECT/KEYWORD.  See the KEYS
parameter for details of this format and how they are
processed.

These keywords are processed in addition to the ones
specified in the KEYS parameter.  Users can add keywords to
be processed that are not included in the KEYS parameter
using this parameter.
REPORT
REPORT controls output content when reporting the results
of the search.  REPORT=ALL will all values as retrieved
from the keywords in the label, the results of directory
searchs for each value even if no changes were required
and any keywords that do not exist in the label.  Note that
some old and new paths will be the same value.

REPORT=PATHS will report missing and found paths, both
original values as retrieved from labels and those after
the directory search is performed.  It will not report
keywords that do not exist in the label.

REPORT=MISSING reports only files that are still missing
after the path search has been performed.  If all files
exist, you should only see keyspecs reported.  This mode is
helpful to quickly determine which files do not exist on
the system running the application.
UPDATE
UPDATE is used to write the results of the resulting search
to the ISIS file(s) where the original path values are
retrieved from.  If UPDATE=YES, then all new paths that are
found in the search are written back to the keywords they
were retrieved from.

Last updated: Apr 27 2005
File: pdfs2.html

Contact us online at the Isis Support Center: http://isisdist.wr.usgs.gov

ISIS Documentation Home Page