First break picking is a fundamental step in seismic data processing, involving the identification of the first arrival times of seismic waves. Accurate first break picking is crucial for velocity analysis, static corrections, and overall data quality. This page lists open-source tools specifically designed for automated and semi-automated first break analysis.

Available Tools


HardPicks

Actively Maintained
Language: Python
License: Apache 2.0
Institution: Mila (Quebec AI Institute)
Last Updated: 2024

HardPicks is a machine learning-based tool for automatic first break picking in seismic data. Developed at Mila (Quebec AI Institute), it leverages deep learning techniques to provide accurate and robust first break detection across various seismic data types and acquisition geometries.

Key Features:

  • Deep learning-based automatic picking algorithm
  • Support for multiple seismic data formats
  • Robust performance across different acquisition types
  • Quality control and uncertainty estimation
  • Batch processing capabilities
  • Interactive visualization tools
  • Comprehensive documentation and examples

Requirements:

  • Python 3.7+
  • PyTorch
  • NumPy, SciPy, Matplotlib
  • GPU recommended for large datasets

FirstBreaksPicking

Actively Maintained
Language: Python
License: Apache 2.0
Institution: DaloroAT
Last Updated: 2024

FirstBreaksPicking is a robust neural network-based tool for automated first break picking on 2D seismic gathers. Unlike traditional methods that process individual traces, this tool leverages spatial relationships between adjacent traces by processing entire seismic gathers as images, making it more robust to noise and varying data quality conditions.

Key Features:

  • UNet3+ neural network architecture for improved accuracy
  • 2D gather-based processing (not individual traces)
  • Desktop GUI application with interactive visualization
  • GPU acceleration support (CUDA compatible)
  • Robust performance on noisy data
  • Real-time parameter adjustment and visualization
  • SGY file format support
  • Spectrum analysis tools
  • Manual picks editing and management
  • Compiled executable versions available

Requirements:

  • Python 3.7+
  • ONNX runtime
  • Pre-trained model (downloadable)
  • Optional: NVIDIA GPU with CUDA 11.6+ for acceleration
  • SGY format seismic data

geo-stack First Break Picking

Actively Maintained
Language: Python
License: MIT
Institution: geo-stack (Amir Mardan)
Last Updated: 2024

A comprehensive deep learning framework for first break picking using U-Net segmentation. This tool treats first break picking as a segmentation problem, dividing seismic data into "before FB" and "after FB" segments. The approach includes extensive data preprocessing, augmentation, and training capabilities, making it suitable for both research and production environments.

Key Features:

  • U-Net based segmentation approach with ResNet encoder
  • Comprehensive data preprocessing pipeline
  • Data augmentation with overlapping subimages
  • Custom training workflow with validation
  • Fine-tuning capabilities for domain adaptation
  • Batch processing and single shot prediction modes
  • Multiple model architectures (U-Net variants)
  • Learning rate scheduling and checkpointing
  • Smoothing algorithms for artifact reduction
  • Published academic methodology

Requirements:

  • Python 3.7+
  • PyTorch
  • NumPy, Pandas
  • Data in .npy and .txt formats
  • GPU recommended for training
  • Proper dataset preparation with FB annotations

Contributing New Tools

To add a new first break analysis tool to this page:

  1. Fork this repository
  2. Edit this file (first-break-analysis.md)
  3. Add your tool using the template below
  4. Submit a pull request

Tool Template

<details class="tool-card collapsible">
  <summary class="tool-header">
    <div style="display: flex; align-items: center; flex: 1;">
      <h3 class="tool-title">Tool Name</h3>
      <span class="tool-status [maintained|unmaintained|unknown]" style="margin-left: auto;">Status</span>
    </div>
    <span class="collapse-indicator"></span>
  </summary>
  
  <div class="tool-content">
    <div class="tool-meta">
      <div class="tool-meta-item">
        <strong>Language:</strong> Programming Language
      </div>
      <div class="tool-meta-item">
        <strong>License:</strong> License Type
      </div>
      <div class="tool-meta-item">
        <strong>Institution:</strong> Institution/Author
      </div>
      <div class="tool-meta-item">
        <strong>Last Updated:</strong> Year
      </div>
    </div>
    
    <div class="tool-description">
      <p>Brief description of the tool...</p>
    </div>
    
    <div class="tool-features">
      <h4>Key Features:</h4>
      <ul>
        <li>Feature 1</li>
        <li>Feature 2</li>
      </ul>
    </div>
    
    <div class="tool-links">
      <a href="GITHUB_URL" class="btn btn-primary" target="_blank">View on GitHub</a>
      <a href="DOCS_URL" class="btn btn-secondary" target="_blank">Documentation</a>
    </div>
  </div>
</details>

Want to suggest a tool? Create an issue or submit a pull request.