 |
 |
|
|
|
|





|
|
Documentation
|
|
|
Release notes
Introduction and background
Technical reference
How to add a new module
Help - Modules and standard headers
SeaView Tutorial
Updates in v1.92 compared to v1.80
SeaSeis:
- Build scripts: Fix build problems occurring on different Linux distributions
- SEG-D reader: Several bug fixes, added support for version 0.1 and 2.1
- Module STACK: Bug fix related to unsorted input
SeaView:
- Snapshot viewer: Display correct titles when shuffling around snapshots
- Trace header graph: Avoid losing graph when refreshing file, or when reading in different file
- Display scalar field in main window: Make +/- buttons work for full trace scaling
XSeaseis/flow builder:
- New 'project setup' functionality
- Fix indirect library dependencies for module help
- Various updates and fixes for opening/closing/saving flows and logs
- Real-time syntax highlighting
- ...still only most basic functionality for job submission = Single flow submission
Updates in v1.80 compared to v1.10
SeaSeis:
- SEG-D reader: Minor updates, better support for trace header extensions
- Now includes FFTW library: FFTW source code (v3.3) is part of the SeaSeis distribution
- Modules fft and fft_2d (FK) now use FFTW library. Fixed fft_2d.
- Seismic Unix (SU) wrapper module. Limited scope: Only one SU module can be specified per flow (I'm not an expert in UNIX pipes!). Requires externally installed version of SU
- 2D ray tracing module prototype RAY2D: Wrapped old Fortran code (requires gfortran or other Fortran compiler)
- New module DESIGNATURE: Apply matching filter between two supplied response wavelets
- Minor bug fixes
SeaView:
- Re-arranged mouse mode buttons: Pan, kill, compute spectrum. Added two new mouse 'modes': Rubberband zoom & picking
- Fixed bug for SEG-D reader
Windows specific:
- Included GNU C and C++ libraries in executable, as well as other updates to build scripts and make files
- Implemented new idea for how to launch Java applications from .bat file. Hopefully this will work on any Windows machine
- The above updates should enable easy installation of SeaSeis on any Windows computer
- Module IMAGE: Fixed some bugs related to Windows
Example flows:
- The source tar ball now includes a couple of example flows and a run script to submit these flows.
Main new features in v1.10 compared to v1.08
SeaSeis:
- SEGY I/O: Cleaned up SEGY trace headers, simplified I/O
- Minor bug fixes
- Make file for Java code
- Remove dependency to csh shell
SeaView:
- Snapshot viewer: Make snapshots of current seismic view, then browse through all snapshots
- Spectrum: Select time window to compute frequency spectrum
- Trace header graph: Plot graph of selected trace headers above seismic view
- Trace header overlay: Plot selected trace headers on top of seismic data
- Support for SEG-D file format (experimental)
- Fixed text field focus problem
SeaSeis is a sequential trace flow system, following the same basic concept of most other existing seismic processing systems.
By one measure, processing systems can be categorised into 2 camps:
- Processing systems that are using standard I/O for passing traces from module to module, and
- Processing systems that have a base system for managing the trace flow.
(see sketches below)
Open-source systems
Seaseis is an open-source program, following the above design (2).
Other open-source systems I am aware of follow design (1), i.e. using UNIX standard I/O for their trace flow. These are Seplib, SU, FreeUSP and RSF/Madagascar, which are all derived from the same code base and conceptual idea, and are historically linked. An exception is SIA/IGeoS, which is an open-source (or semi-commercial?) system that follows the design (2).
Commercial/proprietary systems
All commercial systems I am aware of have a base system which manages the trace flow, i.e. following design (2). SeaSeis resembles more the design of a commercial systems, providing a base system which manages the trace flow.
Processing systems using standard I/O
Processing systems with base system
- Flow
- A processing flow is an ASCII text file where the user defines the modules and parameters to perform a certain processing task. The processing flow is translated by the processing system into an executable process.
- Job
- A processing job is the process of running a processing task. The same processing flow may be submitted more than once. Each submission is running a new processing job.~/www/seaseis_v1.80/doc/
- Log
- A log file documents what happened in each processing job. The log contains all information related to the processing flow that was submitted, and to the actual job that was run. The log file is the means by which the processing system communicates with the user, for example by giving error messages and other job related information.
- Trace
- SeaSeis is a sequential trace flow system. All data is passed through the processing flow as single traces. A trace consists of a trace header, and trace data.
- Trace header
- The trace header is dynamic and can hold an arbitrary number of trace header fields. The term trace header is often used in SeaSeis as a synonym for trace header field.
- Trace data
- The trace data is the seismic data itself. SeaSeis only has one data type option, i.e. 32bit floating point.
- Super header
- The super header is a mostly pre-defined block of header fields that contains information about all traces passing through one processing module. The super header contains:
- Number of trace data samples
- Sample interval
- Ensemble header names(s)
- Survey information
- Number of trace header fields in each trace header
- Type, name and description of each trace header field
Super header fields cannot be directly modified by the user, so the super header concept is in most cases not relevant to know for the user. The trace header and super header concept is very common in seismic processing systems, as can be seen for example in the SEG-Y standard data format.
Command line submission
Typing 'seaseis -h' on the command line produces the following help listing
SeaSeis job flow submission tool.
Usage: seaseis -f <jobflow> [-o <joblog> | -d <joblog_dir>] [-h] [-m <name>] [-v] [-c] [-std] [-p {speed|memory} ] [-g <const_file>] [-s <spreadsheet>]
-f <flow1> <flow2> ... : File name(s) of job flow(s) to run
-o [<log>|stdout] : File name of job log (defaulted to flowname.log if not specified)
: Use 'stdout' to redirect all log file output to standard output
-d <log_dir> : Name of directory where job log shall be saved
-s <spreadsheet file> : Name of file containing spread sheet for building of master flow
-g <global const. file>: Name of file containing global constants (&define statements)
-D <name1>[=,:]<val1> <name2>[=,:]<val2> ... : Define user constant <name>, value <val>. No spaces allowed around equal sign.
NOTE: The first user constant will be used to create the log file name.
-ff <flow_out> : Name of file where job flow shall be saved (only works when -D option is specified).
-m <name> : Print help for module <name>.
: If no module is found, print help of all modules starting with <name>.
: If <name> = empty: Print full help for all available modules.
: If <name> = .: Print short help for all available modules.
-run_master : Immediately run all flows created from master flow(s)
: If not specified, the program will exit after the master flows have been created.
-h : Print this page
-html : Print full help for all modules & standard trace headers in HTML.
-v : Print out version info
-std : Dump all standard trace headers
-c : Check for link problems and consistency of all modules' params(=help) methods.
-p [speed | memory] : Set memory policy: Optimised for speed or memory.
-no_run : Do not run flow. This option is useful if an individual flow file is generated using option -ff
-init_only : Run init phase only.
-no_verbose : Do not output information messages.
-debug : Output extensive DEBUG information for trace flow preparation and execution.
Flow syntax
SeaSeis processing flows are written in a simple ASCII format that follows a handful of syntactic rules.
Special characters
- $MODULE_NAME
- ...followed by capital letter word: Name of module
- # User comment
- All text to the right of a hash sign are user comments
Parameter and values
The first word in each line is a pre-defined parameter name, while the remaining part consists of free-form text or numbers, depending on what type of input parameter is required. All words in the flow file can be space- or tab-separated. Single parameter values that contain spaces must be enclosed by double quotation marks "".
Examples:
param_name val1 val2 val3 ...
equation "sqrt(val1) + pow(val2,2) - val3*(val2 - val1)"
Key words
- &define constant_name constant_value
- Defines user constant name and value available throughout the flow script. Each occurrence of &constant_name& anywhere in the processing flow is replaced by constant_value before running the flow
- &table table_name filename_path
- Defines ASCII table available to all modules in flow, and can be referenced by table_name
Flow branching
SeaSeis provides two ways of flow branching
- IF-ELSEIF-ELSE-ENDIF block
Each trace flows through either the IF branch, one of the ELSEIF branches or the ELSE branch. All traces merge together into the main flow at the ENDIF.
- SPLIT-ENDSPLIT block
Each trace selected in the SPLIT module is copied into an independent branch where the trace is processed separately from the main flow. Traces copied into the SPLIT branch are not merged back into the main flow, and are discarded at the ENDSPLIT.
Example flow
Selection syntax
Many modules provide trace selection based on trace header values.
The parameters used for trace selection are usually:
| header |
List of trace header names, separated by spaces |
| select |
List of selection expressions, separated by colons (:) |
The selection syntax is the same as in Promax, plus a few additions. The examples below illustrate each syntactic item:
| select 1000 |
Select single value |
| select 1000,2000 |
Select several values separated by commas |
| select 1000-2000 |
Select range of values |
| select 1000-2000(10) |
Select every 10'th value in range 1000 and 2000 |
| select <1000 |
Select values below 1000 |
| select >1000 |
Select values above 1000 |
| select !1000 |
Omit single value |
| select 10-20/100-200/>500 |
Use slashes to list several selections. In this example, all traces with values 10-20, 100-200, and above 500 will be selected. This means a forward slash (/) performs an OR operation. |
| ---------------------------------------------- |
| header hdr1 hdr2 |
| select 10-20:1/100-200:4/>500:5 |
In this example, two trace headers were specified for selection (hdr1 and hdr2). All traces with hdr1=10-20 AND header2=1, OR hdr1=100-200 AND hdr2=4, OR hdr1>500 AND hdr2=5 will be selected. |
| select 1000:345 |
If several trace headers were specified under parameter 'header', the selection expressions of both have to be separated by colons. This example selects all traces for which hdr1 = 1000 and hdr2 = 345 |
| select 1000:345/445/545 |
This example selects all traces which have hdr1 = 1000, and hdr2 = 345, 445 or 545 |
| select 1000:* |
Use the star (*) to select all values for a particular trace header |
|
- Create a new sub-directory under src/cs/modules called by the module name.
For example, for a new module called NEW_TOOL create a sub-directory called src/cs/modules/new_tool.
- Create a make file called Makefile and a C++ file called by the module name with a prefix mod_.
For example, the source file for module NEW_TOOL should be called mod_new_tool.cc. However, any file name(s) can be used if properly specified in the make file.
Both the make file and the module C++ source file are best copied from an existing module, for example from module TEST under src/cs/modules/test. In the copied make file, change the module name. In the copied source file, change all occurences of mod_test to mod_new_tool.
- After following the above steps, the module will automatically compile when running ./make_seaseis.sh in the seaseis root directory. To access the module help, type seaseis -m new_tool 1.0 from the command line.
- In order to add the new module to the list of standard modules, add a line in the file src/include/cseis_modules.txt, giving the name of the module, and the module type (single/multi trace or input module). This ensures that the new module's online documentation is added to the HTML documentation, and the module help can simply be accessed by typing seaseis -m new_tool on the command line.
Again, I recommend to copy the module directory of an existing module, rename the module name in the Makefile and the C++ source file, and then update the file src/cs/cseis_modules.txt. There are examples for a single-trace module (module TEST), multi-trace module with a fixed number of input traces (module TEST_MULTI_FIXED) and multi-trace module with ensemble input (module TEST_MULTI_ENSEMBLE).
|Home
|Download
|About
|Documentation|
This page was last updated 1 July 2012.
|
|
|