Enhanced Butterfly

<< Click to Display Table of Contents >>

Navigation:  Noise attenuation >

Enhanced Butterfly

 

Description

Enhanced Butterfly is a semblance-based dip-filtering module for coherent noise attenuation. It suppresses energy that does not align with the dominant wavefield by testing a dense grid of linear and parabolic moveout slopes across neighboring traces, computing a semblance weight for each slope, and retaining only the amplitude consistent with the best-fitting slopes. The result is a gather in which coherent signal is preserved while incoherent noise and dipping energy inconsistent with the tested slope range are strongly attenuated.

The module belongs to the Noise attenuation processing group and supports multi-threaded execution. It is well suited for pre-stack gathers where ground roll, air wave, or other coherent dipping noise must be separated from reflection signal. Because the filter tests both linear and parabolic moveout simultaneously, it can handle curved reflection events while still suppressing flat or steeply dipping noise.

For each trace, the algorithm sweeps over all combinations of linear and parabolic time shifts within the specified maximum ranges using the given step size. For each shift combination, neighboring traces within the trace window are aligned (using linear interpolation for sub-sample accuracy) and stacked. The local semblance of the resulting slant stack is computed by smoothing over the correlation window. The output sample value is the semblance-squared weighted mean across all tested slope combinations, which acts as an adaptive dip filter — energy with high semblance at a given slope is preserved, while energy with low semblance is suppressed. Enabling the Calculate difference option in the Settings section produces a separate output gather containing the removed noise component, which is useful for quality control.

Input data

Input DataItem

The primary data connection container. Connect this to the upstream module whose output you want to filter. The module reads seismic data trace by trace from this connection and passes the result to the corresponding output container.

Input SEG-Y data handle

A handle to the SEG-Y file on disk from which trace data is read. This is propagated through from the upstream module and used for random-access reading when the processing chain requires it.

Input trace headers

The trace header index associated with the input dataset. Header information such as CDP number, offset, and coordinates is passed through the chain and used for gather sorting and addressing.

Input gather

The seismic gather on which the Enhanced Butterfly filter is applied. This is the main amplitude data input — a 2D array of traces by time samples representing one CMP gather, shot gather, or any other gather type. The filter processes each trace against its neighbors within the trace window.

Input stack line

An optional 2D stacked line geometry descriptor passed through from the upstream module. This item is propagated unchanged and is used by downstream modules that require 2D line geometry information.

Input crooked line

An optional crooked-line geometry descriptor for 2D surveys with non-straight acquisition geometry. This item is passed through the chain without modification.

Input bin grid

The 3D bin grid definition associated with the survey, passed through from upstream. It defines the relationship between CMP inline/crossline indices and surface coordinates.

Input sorted headers

The sorted trace header index that defines the gather ordering (e.g., CMP-sorted). This index controls how the module splits the input data into individual gathers for processing and is passed to downstream modules.

Parameters

Trace window

The half-width of the local trace window used for semblance computation, measured in number of traces. The filter considers traces from index (current − Trace window) to (current + Trace window) on each side, giving a total window of (2 × Trace window + 1) traces. Default: 5 traces.

Larger values include more neighboring traces in the semblance calculation, which improves the ability to distinguish coherent dipping events from random noise but increases computation time proportionally. Smaller values are more spatially selective and preserve lateral amplitude variations more faithfully. Use a value that reflects the lateral scale of coherent events in your data — typically 5 to 15 for CMP gathers, depending on fold and trace spacing.

Max Linear time shift

The maximum linear time shift (moveout) tested across the trace window, in seconds. The filter sweeps linear dips from −Max Linear time shift to +Max Linear time shift, in increments of Step time shift. A linear shift of t applied over the full trace window corresponds to a dip of t / (Trace window × trace spacing). Default: 0.020 s (20 ms). Minimum: 0 s.

Set this value to be at least as large as the maximum expected one-way dip moveout of noise events across your trace window. For ground roll or other steeply dipping noise on shot gathers, you may need values of 50–100 ms. Increasing this value covers steeper dips but increases computation time because more slopes are tested. If set to 0, no linear dip sweep is performed.

Max parabolic time shift

The maximum parabolic time shift (curvature) tested across the trace window, in seconds. The parabolic component shifts each trace by an amount proportional to the square of its distance from the center trace, divided by the square of the trace window half-width. This allows the filter to handle curved reflection events such as NMO residuals or curved noise trains. Default: 0.020 s (20 ms). Minimum: 0 s.

Increase this value when the data contains events with significant residual curvature that must be preserved (for example, pre-NMO or partially corrected gathers). Set it to 0 if you only need to handle purely linear dipping events. Both the linear and parabolic shifts are applied simultaneously for each tested combination, so the total number of slope tests is proportional to (2 × Max Linear / Step + 1) × (2 × Max Parabolic / Step + 1). Keep this in mind when setting the step size.

Step time shift

The increment used when sweeping both the linear and parabolic time shifts, in seconds. This controls the density of the slope grid tested by the filter. Default: 0.004 s (4 ms). Minimum: 0.00001 s.

A finer step provides better dip resolution and more accurate noise separation, at the cost of significantly higher computation time (the total number of tested slope combinations grows as 1/Step²). The default of 4 ms is a practical balance for most datasets. A value equal to the sample interval (e.g., 2 ms) gives the finest useful resolution. Coarser steps (8–16 ms) can be used for quick QC runs or when data quality is low.

Correlation window

The length of the time window over which the semblance numerator and denominator are smoothed before computing the semblance weight, in seconds. The raw per-sample semblance is averaged over a centered window of this length to stabilize the estimate and avoid single-sample semblance spikes. Default: 0.028 s (28 ms). Minimum: 0.001 s.

A larger correlation window produces smoother semblance weights and more stable filtering, but may blur the transition between noise and signal in time. A shorter window provides sharper temporal resolution but can be noisier. A good starting value is two to three times the dominant period of the signal (e.g., 20–40 ms for 40–80 Hz signal). If the filter produces artifacts or amplitude striping, try increasing the correlation window slightly.

Settings

Auto-connection

When enabled, the module automatically connects its input and output data items to adjacent modules in the processing chain. Disable this option if you need to wire connections manually in a non-standard configuration.

Bad data values option { Fix, Notify, Continue }

Controls how the module responds to NaN or infinite amplitude values in the input data. Fix replaces bad values with zero before processing. Notify reports bad values in the log but continues. Continue ignores bad values silently. Use Fix when input data may contain dead traces or corrupted samples that could affect the semblance computation.

Calculate difference

When enabled, the module produces an additional output gather (Gather of difference) containing the noise component that was removed — that is, the input gather minus the filtered output gather. This is highly recommended for quality control: display the difference gather to verify that the filter is removing noise rather than signal. If reflection events appear strongly in the difference, the filter parameters need adjustment.

Execute on { CPU, GPU }

Selects whether processing runs on the CPU or a GPU. CPU execution uses multiple threads as configured by the Number of threads setting. GPU execution can accelerate the innermost sample loops significantly for large trace windows and fine step sizes, where the number of slope tests is large.

Distributed execution

Enables distribution of the workload across multiple processing nodes in a cluster environment. When active, the gather stream is partitioned and dispatched to remote worker nodes, which is beneficial for very large 3D datasets.

Bulk size

The number of gathers dispatched to each worker node per batch in distributed execution mode. Larger values reduce communication overhead but increase memory use per node. Adjust based on available node memory and gather size.

Limit number of threads on nodes

When distributed execution is active, this option caps the number of CPU threads used per remote worker node, preventing the Enhanced Butterfly process from monopolizing a shared compute node.

Job suffix

An optional text suffix appended to the distributed job name. Use this to distinguish parallel runs of the same module with different parameters when monitoring jobs in the cluster queue.

Set custom affinity

Enables manual specification of CPU core affinity for this module's threads. When enabled, the Affinity field becomes active and allows you to pin the processing threads to specific CPU cores, which can improve cache utilization on NUMA systems.

Affinity

Specifies the CPU core mask or list to which this module's processing threads are pinned. Only active when Set custom affinity is enabled. Consult your system administrator for the appropriate affinity mask for your hardware topology.

Number of threads

The number of CPU threads used for parallel processing. The Enhanced Butterfly algorithm parallelizes the inner sample loop (per time sample) using OpenMP. Setting this to the number of physical cores on your workstation typically gives the best performance. Higher thread counts help most when the trace window and slope sweep are large, as the per-gather workload is then substantial.

Skip

When enabled, the module passes input data through to the output unchanged, bypassing all filtering. Use this to quickly compare filtered and unfiltered results within the same processing chain without re-wiring connections.

Output data

Output DataItem

The primary output data connection container. Connect this to the next module in the processing chain to pass the noise-attenuated gather downstream.

Output SEG-Y data handle

The SEG-Y file handle passed through to the output. Connect this when the downstream module requires direct access to the SEG-Y file on disk (for example, for writing results back to SEG-Y format).

Output trace headers

The trace header index, passed through from the input unchanged. Trace header values (CDP, offset, coordinates, etc.) are not modified by the filter — only amplitude values are changed.

Output gather

The noise-attenuated output gather. This is the main result of the Enhanced Butterfly filter: a gather of the same dimensions as the input in which incoherent noise has been suppressed and coherent signal at the tested dip slopes has been preserved. Connect this to the next processing or display module.

Output stack line

The 2D stack line geometry descriptor, passed through from the input unchanged.

Output crooked line

The crooked-line geometry descriptor, passed through from the input unchanged.

Output bin grid

The 3D bin grid definition, passed through from the input unchanged.

Output sorted headers

The sorted trace header index, passed through from the input unchanged. Downstream modules that require the gather sort order will read the gather ordering from this item.

Gather of difference

The noise gather — the difference between the original input and the filtered output (Input − Output). This item is only populated when Calculate difference is enabled in the Settings section. Inspect this gather to confirm that the removed component contains noise rather than reflection energy. Strong, laterally coherent reflections in the difference gather indicate that the filter parameters need to be adjusted — typically by reducing the maximum time shifts or increasing the trace window.

Information

Graphics

Custom actions