​Resources»​Reveal Newsletter»​October 2020

The Reveal Newsletter is our periodical which aims to reveal what's happening in relation to our software and what is taking place behind the scenes with Shearwater Reveal.

With COVID-19 and social isolation, we are updating our plans for the 2020 EAME User Group Meeting.  We expect to have an online format and will send you the details as soon as they have been finalized. Until then, we are successfully tending to our customers remotely without any issue and will continue to provide them with high quality service and products.

This issue highlights the newly released stable build, some new team members, and updates on some new and upcoming tools.

October 1st  Stable Build is Available!

We’ve released the latest stable build of Shearwater Reveal on October 1st, 2020 and it is now available on our customer zone.  Along with the regression testing and bug fixes, a number of new tools have been added which you can try out.  See the New Tools section for some highlights of these.

New Tools

SRStackStatics is a new tool that computes refraction statics by decomposing first break times picked on stacked shot gathers and receiver gathers into source and receiver terms. The output statics is the value of vertical travel time difference from the source or receiver point to the bedrock at two velocities. One velocity is the weathering layer velocity, the other is first reflection velocity, or a replacement velocity. SRStackStatics has the same function as RefractionStatics, however it requires less, or no, hand picking and solves a much smaller linear system.

The basic idea of this module is that in a source gather, after LMO correction, the arrival time of the stacked refractions is equal to the average of refraction statics at each receiver location plus the refraction statics at this source location. For a LMO corrected receiver gather, the arrival time of the stacked refractions is equal to the average of refraction statics at each source location plus the refraction statics at this receiver location. This assumption would be correct if (a) the waveform does not vary appreciably, (b) the receiver statics in a source gather vary around an average with small deviation. (c) the source statics in a receiver gather also vary around an average with small deviation.

The main computation inside this module is iterative auto-picking of refraction arrival time on stacked traces and solving for the source and receiver vertical travel times. The purpose of the iterations is to enhance the stack in order to improve the accuracy of the picked time.

Below is an example of estimated source and receiver statics from this module compared to that from RefractionStatics. A similar trend can be observed in the solution from both tools, but values are not exactly the same. 

Figure 1:  Panel1 and panel2 are receiver statics estimated from RefractionStatics and from SRStackStatics.
Panel 3 and panel 4 are source statics estimated from  RefractionStatics and SRStackStatics  respectively.

Radon Enhancements

High resolution radon domain noise vertical stripes are reduced with L1 and L2 type weight distribution options in the transformed domain.



Figure 2: Left image shows the old Radon and the right image shows the new Radon, both in parabolic transformed domain.  Notice the vertical stripes in the old Radon transform are reduced in the new Radon. 

In addition to the above improvement, the following are the list of enhancements added to the Radon tool:

Fixed stability issue related to moveout increment

Fixed stability issue related to interpolated traces/NMO

Added ability to pick a mute in the Slowness domain

Aligned Left/Top Mute and Right/Bottom Mute to work the same way and made them reliable

Corrected the taper on both mutes so they apply correctly in the right direction

Removed option to set the slowness value from the maximum offset of each gather


FKInterp is a new tool that provides a new alternative for interpolating spatially aliased data. This new tool is intended as a less computationally intensive alternative to FXInterp. Instead of solving a system of linear equations in the F-X domain, FKInterp creates and applies an interpolation operator in the F-K domain where the algorithm can be reduced from a system of linear equations to a complex division.

Figure 3:  Input data (left-hand side) and results from FKInterpolation (right-hand side).

Incoming data is first transformed into the F-K domain, where empty traces are inserted by laterally copying the traces along the wavenumber axis. Then an interpolation operator is designed at each frequency slice from the data at a frequency equal to the original frequency divided by the interpolation factor. After multiplying the padded data by the interpolation operator in the F-K domain, the data is transformed back to the X-T domain.

To design the interpolation operators, it is necessary to assume that the dip content of the lower frequencies is the same as the original frequencies and that events are linear in the input dataset. To satisfy these assumptions, the operators are estimated and applied in small time and space patches, which are tapered and joined together before being output.


VibrosiesCorrelation is a new tool designed to replace the legacy CPS tool VC, used to correlate vibroseis field data traces with a recorded or calculated sweep. This process collapses the sweeps in the uncorrelated field data into zero phase wavelets and reduces the length of the trace.

Figure 4: Comparison between GUI and layout between VibroseisCorrelation (left-hand side) and legacy VC tool (right-hand side).

This new tool includes all of the functionality of the original VC tool in a new, more user-friendly GUI, while also implementing a more robust error checking process. It also includes more functionality for several of the previously included options, such as using the full functionality of the Bandpass tool in applying a filter. VibroseisCorrelation also offers more options when creating a synthetic sweep to correlate with the incoming field data, as well as an option to output the synthetic sweep.

Figure 5: Input data (left-hand side) and results from VibroseisCorrelation (right-hand side).


A new tool, CurveletFilter3D, filters seismic data in the 3D curvelet domain. The tool is a generalization of CurveletFilter2D, in which the third dimension (e.g. ILINE for a 3D stack) is incorporated into the transform. 3D curvelet filtering may have advantages over 2D in situations where signal is coherent in the third dimension and noise is incoherent (or noise, e.g. multiples, has different dips). In such cases, the separation between signal and noise is larger than if only 2D panels of the survey are filtered individually. For many situations, however, 2D curvelet filtering of all the gathers individually will be satisfactory and may be the better solution due to its relatively low computational burden.

Another feature of CurveletFilter3D is that it requires Patch Processing. Either the small-scale patch processing tool PatchProcessingND or the large-scale patch processing workflow (PatchInput2 -> CurveletFilter3D -> PatchAccumulate2) may be used. The reason CurveletFilter3D requires patch processing is that it is very compute intensive. Breaking a 3D volume into small 3D patch volumes allows more flexibility to use MPI to distribute the work to many nodes on a cluster. An additional benefit of the patch processing framework is that filter design is more local to the data in each patch. CurveletFilter3D, if time patching is used, also allows the filter threshold parameter itself to change with time.

The figure below shows CurveletFilter3D results on a 2D dataset sorted as a 3D prestack volume (CHANNEL/FFID/TIME). Patch volume sizes are 100X100X500ms. Left panel is the input for one channel, middle panel is the filtered data, and the right panel is the noise removed. Note that the noise removed is incoherent with the data.

Figure 6: Input common offset panel (left), CurveletFilter3D (middle), noise removed (right)

Job Chaining Updates

Save/Restore state – When a user closes/re-opens a chain or restarts Reveal, the job chain will now come up in whatever state it was last left at when closed.

Sync state with latest from JobServer – There is now the ability to sync the state of the chain with the latest state of the flow(s) from the Job Server. So, regardless of who else has run that flow, selecting the button ("Sync chain state with job server") will replace the current state of the chain with the latest from the job server.

In the chain submission dialog, users can now submit a subset of replicas by entering the replica subranges they wish to run with syntax like "1, 3, 5-12".

Figure 7: Submitting a replica sub-set via job chaining

Various usability enhancements

Users can now replace a flow within a chain by selecting the flow and, on the right-hand side, selecting the button to the right of the "Path" field to select another flow.

Figure 8: Replacing a flow within job chain

Selecting a flow within the chain will now show expanded real-time status for total number of jobs, number of queued jobs, running jobs, failed jobs and completed jobs. This updates as the chain runs.

Figure 9: Expanded flow stats on selection within job chain

Long job chains will now auto-scroll when clicking and dragging flows or connections near the edge of the editor. (This was also added for FlowEditor's as well)

If a user attempts to submit a chain that is already 100% succeeded, then a popup will open to notify the user that nothing will happen unless they clear the state and resubmit again. Additionally, instead of forcing users to manually clear and resubmit, a button has been added to this dialog to perform the clear and submit automatically. If the chain is all non-replica jobs, then it will go ahead and submit. If there are replica jobs available, then the chain submission dialog for selecting number of workers and/or replica sub-ranges is shown.

Figure 10: New submission dialog for completed chain

The visual width, number of workers, whether to submit a replica subrange and what sub-range to use are now saved on a per-chain basis. It was being saved universally for all chains.

Chain-level variables - Users can now take advantage of chain-level variables that flows within the chain can access. If the chain shares a common variable with a flow, the chain's value will take precedence. The user interface is nearly the same as the variables widget within JobSetup except that the "Load" button allows you to load variables from other chain files in addition to flow files.

Figure 11: Chain-level variables example

Chain level JobSetup override - Users can override the chain submission parameters at the job chain level. To do this, they would select the "Override job submission parameters" checkbox and select their desired submission parameters. Selecting this option on individual flows within the chain will take precedence over the ChainSetup override.

Figure 12: Example job chain override

Multi-Grid support for 3D projects

Reveal now supports multiple grids for 3D projects. Along with this update comes a few enhancements to the project grid editor and crossplot views as well.

Project grid editor

In the project editor, the crossplot on the right will display the active grid and the other grids will appear as just outlines.

In the project editor you can drag and drop the grids to reorder them. There is also a new "Clone" button to the right of the list of grids to quickly create a copy of the selected grid.

In the project editor, the "Use a processing grid" has been moved up a level so that it will now apply across all the grids in the project. In order to support backward compatibility, if any of the grids have the option selected, then it will enable the option at the project level.

Naming of project grids are now alphanumeric and "_" only (no longer supporting whitespace characters or other special characters like $,%, etc.). The multi-grid updates should now be backward compatible for flows that still utilize the old grid naming convention.

Added an option to hide annotations for inactive grids to make crossplot easier to see.

Figure 13: Project grid editor showing multi-grid enhancements for 3D (left) and 2D (right) projects


If the project contains multiple grids, the option to “Show grids” will be available. Selecting this will present a combo box with the list of all available grids to see.

There is also an option to hide annotations for inactive grids to make viewing the crossplot easier to read.

Figure 13: Example crossplot multi-grid updates for 3D (left) and 2D (right) projects.

GUI and Infrastructure Updates

Save/Load Flow Macros

Users now have the ability to save and load collections of tools as flow macros. If there are certain orderings of tools that are commonly used across many flows, you can now save that ordering and load in all those tools in a single step instead of loading each tool one by one.

With the desired tools selected in the flow editor, right click in the flow editor and go to ‘Flow Macro Settings’ and select ‘Save Current Flow Selection as Macro. This will bring up the new ‘Save Flow Macro’ dialog. Users will then be able to create a name for which to save the collection of flows.

Once a flow macro is saved, they can be loaded into any flow. In the flow editor of the desired flow, right click and go to ‘Flow Macro Settings’. There should now be an option to load the previously saved flow macro. Selecting that option will load the saved collection of tools into the flow. Also note that the tools loaded in are in their default state, meaning that they will not carry over any parameters.

Saved flow macros can be edited in its preference page under Flows -> Flow Macro Settings. The names of saved macros will be shown in this preference page, where they can be renamed or removed.

Figure 15: Flow macro options in the flow editor

Advanced Filtering for Tools

Advanced filtering options have been added for filtering tools in the Tools tab. This allows for specific Reveal packages to be selected and see exactly what tools are in those packages. In the Tools tab, select the filter button from the toolbar. To the right of the filter text box is the new button for advanced filtering. Selecting this button will show a list of all the different packages in Reveal. From this list, users can select exactly which packages they would like to see. When a package is selected, the list of tools will automatically update to only show the tools that are included in that package. If multiple packages are selected, the tools from all those packages will be visible in the tool list. For example, if both advanced land and advanced marine packages are selected, tools from both advanced land and marine will appear in the list of tools. This new feature should help clarify exactly which tools are included in each of the different packages.

Figure 16: New advanced filtering options for the Tools tab

You may also notice that we have improved our tool categorization and the tool purpose statements to make it easier to find the tool(s) you are looking for.

Filtering in Example Flows

Users now have the ability to filter files in the example flows tab. However, the behavior of the filtering is slightly different from other filtering in Reveal. In addition to filtering by the names of each file, it will also filter by the names of Reveal tools that are in each flow file. In other words, users can now search for a specific tool (e.g. Stack) in the filter, and it will find all the flows that include that tool. For example, if the filter text is ‘AGC’ the resulting list will be a list of all the flows that either have ‘AGC’ in their name or that contain the tool ‘AGC’ in the flow.

Example Flows Updates

Significant updates have been made to the example flows. These include the following:

General_3D_Marine_Flows ** NEW ** – Replaces Deepwater_3D_Marine flows

Poland_2D_Land ** NEW **

Marmousi_2D_Depth (Fully updated) – This is essentially a new workflow based on the latest tools and functionality in our Depth package.

We have also made incremental updates to the existing Job_Chaining, General_3D_Land and Venezuela_2D_Marine example flows.

We believe these new additions and updates combined with the new example flows filtering functionality provides our end users a great knowledge base for Reveal processing.


Colorbar Histogram

A new histogram option has been added in the crossplot palette. Checking the histogram option in the palette will display the histogram next to the colorbar. This histogram is a reflection of the mini histogram that can also be found in the palette. As the minimum and maximum range of the dataset changes, the histogram will also update to reflect the updated range.

Figure 18: Histogram option in the crossplot palette