For backward compatibility with the older MS-DOS based 3-S system, seismic trace file names should follow the normal MS-DOS conventions of a file name of up to 8 characters, followed by a period and a 3 character file extension. If you don't intend to use 3-S programs, you can use filenames longer than 8 characters.
The first two characters in the extension are TR, followed by a third alphabetic or numeric character to denote the trace file "version". The first trace file allocated for a given seismic line will normally have the character "0" as its version character. New trace files, if allocated automatically, will follow on with version characters of 1, 2 through to 9, then A to Z.
The sequence would normally go like this:
Raster file - MYLINE.RLC
3-S trace file
- MYLINE.TR0
Processed traces
- MYLINE.TR1
Re-processed traces - MYLINE.TR2
etc.
You can allocate trace file extensions anywhere in the sequence 0..9, A..Z. The next file to be allocated will be given the next free extension in the sequence. When the sequence reaches TRZ the system will start again from TR0. This allows 36 versions of any trace file name to co-exist - enough for most purposes.
The internal format of 3-S trace files follows the general structure of SEG-Y files on tape. Unlike a file on tape, a 3-S file contains no internal record separation marks and consists of a single continuous block of data.
You could copy a SEG-Y tape to disk, using the MSDOS TapeFile utility for example, but the resulting file would not, however, be compatible with a 3-S trace file because SEG-Y tapes are encoded in IBM's binary format. This format is hostile to all computers except IBM mainframes, so use the conversion facilities in SEGYLOAD and SEGYSAVE to transfer between 3-S and SEG-Y formats.
Component | Size (bytes) | SEG-Y tape | Trace file |
---|---|---|---|
Line header | 3200 | EBCDIC Inter-block gap |
ASCII No gap |
Binary header | 400 | 2/4 byte INT Inter block gap |
INT/IEEE FLOAT No gap |
Trace header | 240 | 2/4 byte INT | INT/IEEE FLOAT |
Trace samples as | 4 byte IBM FLOAT | 4 byte IEEE FLOAT | |
or | 4 byte INT | ||
or | 2 byte INT | 2 byte scaled INT | |
or | 4 byte with gain code | 1 byte excess 128 scaled |
Lynx sample formats allow a trade-off to be made between the precision of the stored data samples and the amount of disk space required to store them. Storage requirements for a trace file are given by:-
the file size in bytes = 3600 + (240+b*Nsamps)*Ntraces
where:
b is the bytes per sample (1,2 or 4),
Nsamps
is the number of samples per trace,
Ntraces is the number of
traces.
For a typical seismic line, having 1000 traces and 1500 samples per trace (ie 6 seconds of data at 4 msec sample interval), the corresponding file sizes are as below:-
Format | Size in bytes |
1 | 1,743,600 |
2 | 3,243,600 |
4 | 6,243,600 |
By using a smaller trace sample format the size of a trace file can be reduced considerably. Whether or not the loss of precision will be significant will depend on the quality and dynamic range of the data. Dynamic range is loosely defined as the ratio of the largest signal amplitude to the smallest useable amplitude variation. These variations can be due to signal, noise, or a mixture of both, but can never be smaller than the quantisation imposed by the binary representation of the sample values.
For 1 byte format the dynamic range is 256:1, or about 48 decibels.
For 2 byte format the dynamic range is 65536:1, or about 96 decibels.
For 4 byte format the true dynamic range depends on the signal level, and is about 120 decibels.
If file size is a consideration, "raw" scannned data, produced by the SSV program will rarely have sufficient dynamic range to justify the use of formats 2 or 4, except for very good quality originals scanned at a high resolution. The default format for output from SSV is therefore 1 byte per sample.
It is possible that filtering or deconvolution may produce data in which the effective dynamic range approaches the 48 dB limit available with 1-byte format.
4-byte format is probably unnecessary for data produced by scanning and vectorisation. The default output format for the trace processing and migration programs is therefore 2-bytes per sample.
The Lynx trace file binary header structure is shown below. Note particuarly that
Client | Client name |
Line | Profile name |
EBCDIC | Character format is EBCDIC |
SampInt | Trace sample interval |
NSamp | No.of samples per trace |
BytesPerSamp | No. of bytes per sample |
IntelOrder | Byte orde Intel |
FloatSamples | samples are floating point |
FloatFormat | Floating point format |
NTr | No. of traces in file |
TMin | Time of first sample |
TMax | Time of last sample |
TRange | Time length |
TracesPerCDP | Traces per CDP |
FirstCDP | First CDP |
LastCDP | Last CDP |
CDPincr | CDP increment |
FirstSP | First Shotpoint |
SPincr | Shotpoint increment |
TrSpace | Trace spacing |
Lynx trace header record, 240 bytes
The Pascal (Delphi) variable types used in this structure are
Identifier | Pascal type | Content |
iTrLine | longint | Trace Sequence no. in Line |
iTrReel | longint | Trace Sequence no. in Reel |
iFieldRec | longint | Original Field Record no. |
iTrChan | longint | Trace no. in original field record |
SPno | single | Energy source point no. |
iCDPno | longint | CDP ensemble no. |
iTrCDP | longint | Trace no. in CDP ensemble |
iTrccode | smallint | |
NLabels | smallint | Lynx no of trace labels |
NStack | smallint | Horizontal stack for this trace |
DataUse | smallint | Data use 1=production 2=test |
RSOffset | single | Source to receiver distance |
rElev | longint | Receiver group elevation |
sElev | longint | Surface elevation at source |
sDepth | longint | Source depth below surface |
rDatum | longint | Datum elevation at receiver group |
sDatum | longint | Datum elevation at source |
sWaterDep | longint | Water depth at source |
SPAux | single | Lynx auxiliary shotpoint no. |
ElevScale | smallint | Datum Scaler for values in bytes 41-68 |
CoordScale | smallint | Scaler for values in bytes 73-88 |
SX | longint | Source Coordinate - X |
SY | longint | Source Coordinate - Y |
RX | longint | Group Coordinate - X |
RY | longint | Group Coordinate - Y |
CoordUnits | smallint | Coord units 1=length 2=secs |
TrScale | realbytes | Lynx trace internal scale |
TrConst | realbytes | Lynx trace internal constant |
Static | smallint | Total static applied |
LagA | smallint | Lag time A |
LagB | smallint | Lag time B |
RecDelay | smallint | Delay recording time |
tMute1 | smallint | Mute time start |
tMute2 | smallint | Mute time end |
TrNSamp | smallint | Number of samples this trace |
TrSampInt | smallint | Sample interval microsec this trace |
TRefIntvl | smallint | Lynx time ref point interval |
NTRef | smallint | Lynx no. of time reference points |
TRef | 28 smallints | Lynx start of time reference array |
BaseYincr | smallint | Lynx Y baseline increment |
NBase | smallint | Lynx no. of baseline segments |
Base | 28 smallints | Lynx start of baseline array |
SEG-Y trace header fields and their corresponding Lynx fields are shown below. These Lynx fields occupy the same byte positions in the header structure as their SEG-Y equivalents, but have Intel byte order, i.e. the byte order within integers is reversed.
When converting from SEGY to Lynx, fields marked * none * have no Lynx equivalent and therefore will not normally be preserved. To preserve these fields, you can use Lynx "preserved" formay LYNXP, in which all the input SEG-Y trace header information is copied into an extra 240 byte buffer at the end of the Lynx trace header.
When converting from Lynx to SEG-Y format, fields with Lynx equivalents may be filled in on the output file. Fields marked * none * will only be filled in if LYNXP preserved format was used for processing and then only if the original data were SEG-Y and these fields contained data.
bytes | content | Lynx equivalent |
01-04 | Trace Sequence no. in Line | iTrLine |
05-08 | Trace Sequence no. in Reel | iTrReel |
09-12 | Original Field Record no. | iFieldRec |
13-16 | Trace no. in original field record | iTrChan |
17-20 | Energy source point no. | SPno (note 1) |
21-24 | CDP ensemble no. | iCDPno |
25-28 | Trace no. in CDP ensemble | iTrCDP |
29-30 | Trace identification code | iTrCode |
31-32 | Vertical sum for this trace | * none * |
33-34 | Horizontal stack for this trace | * none * |
35-36 | Data use 1=production 2=test | DataUse |
37-40 | Source to receiver distance | RSOffset |
41-44 | Receiver group elevation | rElev |
45-48 | Surface elevation at source | sElev |
49-52 | Source depth below surface | sDepth |
53-56 | Datum elvation at receiver group | rDatum |
57-60 | Datum elevaion at source | sDatum |
61-64 | Water depth at source | sWaterDep |
65-68 | Water depth at group | * none * |
69-70 | Scaler for values in bytes 41-68 | ElevScale |
71-72 | Scaler for values in bytes 73-88 | CoordScale |
73-76 | Source Coordinate - X | SX |
77-80 | Source Coordinate - Y | SY |
81-84 | Group Coordinate - X | RX |
85-88 | Group Coordinate - Y | RY |
89-90 | Coord units 1=length 2=secs | Coord Units |
91-92 | Weathering velocity | * none * |
93-94 | Sub weathering velocity | * none* |
95-96 | Uphole time at source | * none* |
97-98 | Uphole time at group | * none* |
99-100 | Source static correction | * none* |
101-102 | Group static correction | * none* |
103-104 | Total static applied | Static |
105-106 | Lag time A | LagA |
107-108 | Lag time B | LagB |
109-110 | Delay recording time | RecDelay |
111-112 | Mute time start | tMute1 |
113-114 | Mute time end | tMute2 |
115-116 | Number of samples in this trace | trNsamp |
117-118 | Sample interval microsec this trace | trSampint |
119-120 | Field gain 1=fixed 2=binary 3=fl.pt | * none* |
121-122 | Instrument gain constant | * none* |
123-124 | Instrument early gain db | * none* |
125-126 | Correlated 1=yes 2=no | * none* |
127-128 | Sweep frequency at start | * none* |
129-130 | Sweep frequency at end | * none* |
131-132 | Sweep length in msec | * none* |
133-134 | Sweep type 1=lin 2=parabolic 3=exp | * none* |
135-136 | Sweep start taper msec | * none* |
137-138 | Sweep end taper msec | * none* |
139-140 | Taper type 1=lin 2=cos**2 3=other | * none* |
141-142 | Alias filter freq if used | * none* |
143-144 | Alias filter slope | * none* |
145-146 | Notch filter freq if used | * none* |
147-148 | Notch filter slope | * none* |
149-150 | Low cut freq if used | * none* |
151-152 | Low cut slope | * none* |
153-154 | High cut freq if used | * none* |
155-156 | High cut slope | * none* |
157-158 | Year data recorded | * none* |
159-160 | Day of year | * none* |
161-162 | Hour of day | * none* |
163-164 | Minute of hour | * none* |
165-166 | Second of minute | * none* |
167-168 | Time basis 1=local 2=GMT | * none* |
169-170 | Trace weighting factor | * none* |
171-172 | Group no. at rollalong posn. 1 | * none* |
173-174 | Group no. of trace 1 in field rec. | * none* |
175-176 | Group no. of last trace in field rec. | * none* |
177-178 | Gap size total groups dropped | * none* |
179-180 | Taper overtravel 1=down 2=up | * none* |
Note 1. The shotpoint number field is written as a floating point number in a Lynx format header, to allow for fractional shotpoint increments, whereas it is an integer in SEGY format.