NAME
x_system - A Cross-Over Error Analysis Tool
INTRODUCTION
The x_system was developed to aid in the task of
gridding geophysical track data, e.g. gravity, magnetics,
or bathymetry. It has long been recognized that although
the data quality along track may be quite good, one usu
ally finds discrepancies at the points where two tracks
intersect. These cross-over errors (COE) can be large
enough to cause artificial features in the final gridded
dataset, which would render geological interpretations of
such a map questionable. Also, notoriously bad cruises
will generate high COEs along their tracks, and should
ideally be removed from the data base before gridding is
attempted. The reasons why COEs arise are many and will
not be dealt with here. Although originally intended to be
used for marine gravity data only, x_system has been
designed to handle magnetics and bathymetry as well. (For
an overview of gravity COEs, see Wessel and Watts [1988]).
In most cases, marine gravity COEs can be explained by a
simple model having only 2 parameters. These are a
d.c.-shift and a drift-rate that apply for the duration of
the cruise. The goal of the COE analysis is thus to deter
mine the dc-shifts and drift-rates for each leg that will
minimize the COEs in a least squares sense, and at the
same time flag cruises that exhibit unreasonably high COEs
(even after correction for d.c.-shift/drift). Furthermore,
we can also assign a 'quality index' for each cruise by
looking at the standard deviation of the COEs. The
d.c.-shift/drift rate model may not be as meaningful for
magnetics and bathymetry as it is for gravity. However,
looking for high COEs is still one of the best ways of
identifying systematic errors in the magnetic/bathymetric
data sets.
x_system PHILOSOPHY
Since the d.c.-shift/drift corrections for a given
cruise depend entirely on the values of the COEs generated
at intersections with other cruises, there is no such
thing as a 'final correction' as long as we keep on adding
data to the data base. This means that the system must be
able to incorporate new data and compute a new set of
d.c.-shifts/drift-rates that takes the new COEs into
account. x_system is made modular so that one program com
putes the actual COEs, one program archives the COE infor
mation, and the remaining programs do various tasks like
reporting statistics (to flag bad cruises), extracting a
subset of the COE database, and solving for the best fit
ting d.c.-shift/drift corrections. This way only the new
COEs generated need to be computed and added to the
database before a new correction solution is sought.
All the 8 programs that make up the x_system pack
age have been written in the C programming language and
are intended to be run on a UNIX machine. Thus, it is
assumed that the user has access to UNIX tools like awk,
grep, and sort, and that the operating system provides a
means for redirecting input/output. Likewise, it is
assumed that all the geophysical data are stored in the
GMT-format as outlined in the GMT MGG supplements man
pages, and that the 1 by 1 degree bin information files
(gmtindex.b and gmtlegs.b) have been created and are being
maintained by the database librarian.
HOW TO DO IT
To illustrate how one would set things up, we will
go through the necessary steps and point out usage, useful
tricks, and pitfalls. (A more complete description of what
exactly each program does can be found in the man pages
for each program). We will assume that we initially have
N cruises in our GMT data bank, and that we just have
received the x_system package. The first thing to do is to
run x_init which will create an empty data base system.
This will normally be done only once. With N cruises on
our hands we will in the worst case have to compare the
N*(N+1)/2 possible pairs. This is where x_setup comes in
handy. It will read the 1 by 1 degree bin information
files and print out a list of pairs that need to be
checked. The two cruises that make up a pair will at least
once occupy the same 1 by 1 degree bin, and may thus
intersect. Those combinations which do not have any bins
in common obviously don't have to be checked. Let's call
this list of pairs xpairs.lis.
x_over is the main program in the package as it is
responsible for locating and computing the COEs For
details on algorithm, see Wessel [1989]. It takes two
cruise names as arguments and writes out all the COEs gen
erated between them (if any). Since xpairs.lis may contain
quite a few pairs, the most efficient way of running
x_over is to create an executable command (batch) file
that starts x_over for each pair. Using awk to do this,
we would say:
pratt% awk '{ printf "x_over -<options> %s %s\n",
$1, $2}' xpairs.lis > xjob
pratt% chmod +x xjob (make it executable)
pratt% xjob > xjob.d &
and relax while xjob is crunching the numbers. This is the
time-consuming part of the COE analysis, and on a SUN-3
computer with Floating Point Accelerator installed we
average about 10,000 pairs of cruises/day. It may pay off
to split a huge xjob file into smaller parts, and call the
output files xjob.d1, xjob.d2 etc. Most of the run-time is
taken up by reading the GMT files; when in memory the
actual computations are remarkably fast. The output file
xjob.d will now have all the COE information in ASCII
form. For each pair of legs there will be a header record
stating the names of the cruises and their starting years.
The following records up to the next header record (or
End-Of-File) will contain lat, lon, time, value, etc. for
each COE found. This is a temporary file, but it is wise
to back it up to tape just in case.
When the x_over part is done, time has come to
archive the data more efficiently than ASCII files. This
is done by x_update which rearranges the data and updates
the binary data base system. After this step the xjob.d
files can be deleted (presuming they have been backed up
to tape). At this stage we have several options available.
We can list some of the COEs by running x_list, which will
extract COEs that match the options we pass, e.g. we might
ask for all the internal COEs for cruise c2104, and only
print out time and gravity COE. See the man pages for more
details. x_report can be run, and will output statistics
for separate cruises, i.e. mean and standard deviation of
the COEs for different data sets (gravity/magnet
ics/bathymetry). To solve for the best fitting corrections
we would run x_solve_dc_drift. This program will solve for
the d.c.-shift/drift-rates for all cruises, update that
information in the data base system, and create correction
tables (ASCII and/or binary). We have now completed the
COE analysis for our initial GMT data bank.
At some later time, however, we will get a new
batch of cruises. We will then follow the the same recipe
and go back and runx_setup, but this time we will use the
-L option so that only the pairs involving new cruises are
returned. Then we would run the remaining programs exactly
as described above.
SEE ALSO
gmt(l),
AUTHOR
Paul Wessel, Lamont-Doherty Geological Observatory, Pal
isades, NY 10964. Wessel, P. XOVER: A Cross-over Error
Detector for Track Data, Computers & Geosciences, 15,
333-346.
Wessel, P. and A. B. Watts, On the Accuracy of Marine
Gravity Measurements, J. Geophys. Res., 93, 393-413, 1988.
15 Oct 2001 x_system(l)
Man(1) output converted with
man2html