Skip to content

Qseek Configuration

At center is a JSON configuration file which is parsed by Pydantic. The following pages will detail how to setup this JSON file for the search.

Also see the getting started guide for a brief introduction into the CLI.

General configuration conventions are outlines in this guide as well.

Create a fresh config file.

Using the CLI
qseek config

The search configuration. This is the entrypoint for the EQ detection and localisation. More information on the submodules (e.g. Octree, Data Provider and other) can be found on subpages in the navigation.

Search Module

stations

Station inventory from StationXML or Pyrocko Station YAML.

data_provider

Data provider for waveform data.

pre_processing

Pre-processing steps for waveform data.

octree

Octree volume for the search.

image_functions

Image functions for waveform processing and phase on-set detection.

ray_tracers

List of ray tracers for travel time calculation.

distance_weights

Spatial weights for distance weighting.

station_corrections

Apply station corrections extracted from a previous run.

magnitudes

Magnitude calculators to use.

features

Event features to extract.

semblance_sampling_rate: 10 | 20 | 25 | 50 | 100 | 200 | 400

Sampling rate for the semblance image function. Choose from 10, 20, 25, 50, 100, 200 or 400 Hz.

detection_threshold: 0.05

Detection threshold for semblance.

absorbing_boundary: False | with_surface | without_surface

Ignore events that are inside the first root node layer of the octree. If with_surface, all events inside the boundaries of the volume are absorbed. If without_surface, events at the surface are not absorbed.

absorbing_boundary_width

Width of the absorbing boundary around the octree volume. If 'octree' the width is set to the root node size of the octree.

node_peak_interpolation: True

Interpolate intranode locations for detected events using radial basis functions. If False, the node center location is used for the event hypocentre.

detection_blinding

Blinding time in seconds before and after the detection peak. This is used to avoid detecting the same event multiple times. Default is 2 seconds.

power_mean: 1.0

Power mean exponent for stacking and combining the image functions for stacking. A value of 1.0 is the arithmetic mean, 2.0 is the quadratic mean. A higher value will result in sharper detections and low values smooth the stacking function.

window_length

Window length for processing. Smaller window size will be less RAM consuming. Default is 5 minutes.

n_threads_parstack: 0

Number of threads for stacking and migration. 0 uses all available cores.

n_threads_argmax: 16

Number of threads for argmax. Don't use all core for this operation. Default is 16.

JSON for Search
{
  "project_dir": ".",
  "stations": {
    "pyrocko_station_yamls": [],
    "station_xmls": [],
    "blacklist": [],
    "stations": []
  },
  "data_provider": {
    "provider": "PyrockoSquirrel",
    "environment": null,
    "persistent": null,
    "waveform_dirs": [],
    "start_time": null,
    "end_time": null,
    "channel_selector": null,
    "n_threads": 8
  },
  "pre_processing": [
    {
      "process": "downsample",
      "stations": [],
      "sampling_frequency": 100.0
    },
    {
      "process": "bandpass",
      "stations": [],
      "corners": 4,
      "bandpass": [
        0.5,
        30.0
      ],
      "demean": true
    }
  ],
  "octree": {
    "location": {
      "lat": 0.0,
      "lon": 0.0,
      "east_shift": 0.0,
      "north_shift": 0.0,
      "elevation": 0.0,
      "depth": 0.0
    },
    "root_node_size": 1000.0,
    "n_levels": 5,
    "east_bounds": [
      -10000.0,
      10000.0
    ],
    "north_bounds": [
      -10000.0,
      10000.0
    ],
    "depth_bounds": [
      0.0,
      20000.0
    ]
  },
  "image_functions": [
    {
      "image": "SeisBench",
      "model": "PhaseNet",
      "pretrained": "original",
      "window_overlap_samples": 1500,
      "torch_use_cuda": true,
      "torch_cpu_threads": 4,
      "batch_size": 128,
      "stack_method": "avg",
      "rescale_input": 1.0,
      "phase_map": {
        "P": "constant:P",
        "S": "constant:S"
      },
      "weights": {
        "P": 1.0,
        "S": 1.0
      }
    }
  ],
  "ray_tracers": [
    {
      "tracer": "CakeTracer",
      "phases": {
        "cake:P": {
          "definition": "P,p"
        },
        "cake:S": {
          "definition": "S,s"
        }
      },
      "earthmodel": {
        "filename": "/home/marius/.cache/qseek/velocity_models/default.nd",
        "format": "nd",
        "crust2_profile": "",
        "raw_file_data": "\n-1.00    5.50    3.59    2.7\n 0.00    5.50    3.59    2.7\n 1.00    5.50    3.59    2.7\n 1.00    6.00    3.92    2.7\n 4.00    6.00    3.92    2.7\n 4.00    6.20    4.05    2.7\n 8.00    6.20    4.05    2.7\n 8.00    6.30    4.12    2.7\n13.00    6.30    4.12    2.7\n13.00    6.40    4.18    2.7\n17.00    6.40    4.18    2.7\n17.00    6.50    4.25    2.7\n22.00    6.50    4.25    2.7\n22.00    6.60    4.31    2.7\n26.00    6.60    4.31    2.7\n26.00    6.80    4.44    2.7\n30.00    6.80    4.44    2.7\n30.00    8.10    5.29    2.7\n45.00    8.10    5.29    2.7\n"
      },
      "trim_earth_model_depth": true,
      "lut_cache_size": 2147483648
    },
    {
      "tracer": "ConstantVelocityTracer",
      "phase": "constant:P",
      "velocity": 5000.0
    }
  ],
  "distance_weights": {
    "exponent": 3.0,
    "radius_meters": 8000.0,
    "waterlevel": 0.0,
    "lut_cache_size": 209715200
  },
  "station_corrections": null,
  "magnitudes": [],
  "features": [],
  "semblance_sampling_rate": 100,
  "detection_threshold": 0.05,
  "absorbing_boundary": false,
  "absorbing_boundary_width": "root_node_size",
  "node_peak_interpolation": true,
  "detection_blinding": "PT2S",
  "power_mean": 1.0,
  "window_length": "PT300S",
  "n_threads_parstack": 0,
  "n_threads_argmax": 16,
  "plot_octree_surface": false,
  "created": "2024-07-17T15:57:45.888347Z"
}

Minimal Config

This is a minimal config which can used to start a Qseek search.

Minimal Qseek Config
{
  "project_dir": ".",
  "stations": {
    "station_xmls": [],
    "pyrocko_station_yamls": ["search/pyrocko-stations.yaml"],
  },
  "data_provider": {
    "provider": "PyrockoSquirrel",
    "environment": ".",
    "waveform_dirs": ["data/"],
  },
  "octree": {
    "location": {
      "lat": 0.0,
      "lon": 0.0,
      "east_shift": 0.0,
      "north_shift": 0.0,
      "elevation": 0.0,
      "depth": 0.0
    },
    "root_node_size": 2000.0,
    "n_levels": 3,
    "east_bounds": [
      -10000.0,
      10000.0
    ],
    "north_bounds": [
      -10000.0,
      10000.0
    ],
    "depth_bounds": [
      0.0,
      20000.0
    ],
    "absorbing_boundary": 1000.0
  },
  "image_functions": [
    {
      "image": "PhaseNet",
      "model": "ethz",
      "torch_use_cuda": false,
      "phase_map": {
        "P": "constant:P",
        "S": "constant:S"
      },
    }
  ],
  "ray_tracers": [
    {
    "tracer": "ConstantVelocityTracer",
    "phase": "constant:P",
    "velocity": 5000.0
    }
  ],
  "station_corrections": {},
  "event_features": [],
  "sampling_rate": 100,
  "detection_threshold": 0.05,
  "detection_blinding": "PT2S",
  "node_split_threshold": 0.9,
  "window_length": "PT300S",
  "n_threads_parstack": 0,
  "n_threads_argmax": 4,
}

Structure

Structure of the search and optimisation of the octree, which is focusing in on seismic energy.

%%{init: {'theme': 'neutral', 'themeVariables': { 'fontSize': '14pt'}}}%%
flowchart LR
    subgraph Seismic Data
        waveforms(["fa:fa-water Seismic\nWaveforms"])
        image{{"fa:fa-bolt Waveform Image Function\nPhaseNet / EQTransformer / ..."}}
        waveforms --> image
    end
    subgraph Travel Time Model
        travelTimes(["fa:fa-layer-group Seismic\nTravel Time Model"])
        stationCorrections{{"fab:fa-arrows-to-dot Station Corrections\nSST / SSST"}}
        travelTimes -->|add| stationCorrections
    end
    subgraph Stacking and Migration
        octree["fa:fa-cubes\nOctree Grid"]
        detection["fa:fa-bullseye Detection\nand Localisation"]
    end
    featureExtraction("fa:fa-info Extract Event Features\nMagnitudes, Ground Motion, ...")
    correctionExtraction("fa:fa-stopwatch Extract\nStation Corrections")

    image --> octree
    stationCorrections --> octree
    detection -.->|"fa:fa-cube\nRefine"| octree
    octree --> detection
    detection --> featureExtraction & correctionExtraction

Building blocks of the specific stacking and migration method for earthquake detection, localisation and characterisation.