To provide a seamless interface between all data formats is a formidable request. Randy Selzler has taken some fairly large steps in that direction with his DDS [Data Dictionary System] concept. A discussion of DDS here is beyond the scope of this note. Instead I will demonstrate how a single DDS application program, bridge, can be used to provide if not a seamless interface, certainly an effective path between the most common seismic data formats in use today.
Over the years, various contractors have added their own flavoring to the SEG-Y standard resulting in such formats as Sattlegger's SEGY-Like format. In a typical SEG-Y dataset the parameters listed in the reel header may in fact bear no relationship to the following data. It is not uncommon to have invalid entries regarding trace length in the trace header as well. These lapses in format usually come about in contractor generated datasets where the conversion job was built from a previously existing job and where the operator did not ensure that the appropriate information was entered in the line and trace headers for the data being transcribed.
Once set the bridge can be used for most basic format conversions.
bridge data=/dev/rst0 format=segy out=tmp: \ out_data=junk dump=diff |& xcat &
The resulting display will list the entire trace header structure for the first trace followed by only those trace header entries that have changed from the last trace for every successive trace. In a glance you can see how your data is indexed and which SEG-Y header mnemonics to use in your header map [assuming the default doesn't work for you].
The header mapping information may be supplied on the command line or in an attached mapping file. Consider an input SEG-Y dataset that has 200 records with a variable number of traces/record [no dead traces on tape]. Let's further assume that the only indexing on tape is FieldRecNum, FieldTrcNum, CdpNum and CdpTrcNum and that the first CDP number is 205. The challenge here is to get the data into USP format with a fixed number of traces/record and have CDP numbers in both the RecNum and DphInd trace header entries.
Here is a mapping file to accomplish the above
The first line results in the USP line header entry NumRec being set to 200. The next three lines put the CDP information into the RecNum, TrcNum and DphInd entries. Notice that the first output RecNum will be set to the value 1. This is not strictly necessary but in this case will make the RecNum entry be equal to sequential record assuming no missing CDP's in the input dataset. It also serves to demonstrate that you may embed mathematical operations in the mapping information. The last line tells the bridge routine not to handle the input as sequential record and trace but to actually interpret the RecNum and TrcNum entries and pad any missing traces in the record as determined from those entries. To actually run the bridge while accessing this file use:
where the tape labels are simply used to prompt the user for the next tape load. No actual check is made to assure the routine that the correct label is on the tape. In this case when the first tape is finished it will be rewound and ejected from the drive and the user prompted to load the next tape. The routine will remain in this wait state until the next tape is loaded to the named drive. If you are using a stacker you can use:
xcram10 -r -segy | bridge data-stdin: ......
without the label definition as the stacker will keep the data streaming from tape to tape for the bridge which will be reading from stdin. The advantage here is that you may pre-load the entire multi-volume dataset and leave the routine unattended.
data=MySegyDataset
Should you wish to output the USP formatted data to a file instead of a tape simply change the data_out specification to:
data_out=MyUspDataset
format=disco_tape
In this instance you may not [yet] use the stacker for, at this writting we cannot yet pass the EOF information down the pipe to the bridge. The bridge routine has to have control of the drive. The mapping file syntax would be:
The above command would look for three input tapes to be loaded one after the other to the rst0 device.
to differentiate between DISCO tape and disk format. In addition the input data specifier will become:
bridge will prompt for more media if required in the case of multi-volume output. There is no need to use a label on the out_data delimiter.
Any of xcram, xcram10 or cram may be used to write multi-volume USP output datasets. Single volumes may also make use of dd. The advantage of the xcram like interfaces is the ability to do I/O on more than one device.
Frame Doc to html conversion by Tony
Garossino
disco_tape_NumRec=200
DISCO Multi-Volume Tape Input
A multi-volume input dataset would be handled in the same fashion as previously. The data specification would point at the drive while the drive label would indicate the number of tapes to read. That is:bridge data= /dev/rst0 /dev/rst0= label " 1 2 3" ...
DISCO Disk Input
To access DISCO disk data, the format specifier becomes:format=vds
data=MyDiscoDataFile
Writing Foreign Formats
The only wrinkle here is that the bridge must be in control of the output device for the data to be written correctly. If you pipe out of the bridge and use one of the UNIX / USP device drivers to create the tape, the data blocking and EOF placement will not be correct and you will have trouble reading the data back in the other processing environment.
Return to the USP Home Page.