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.
See the getting started guide for a brief introduction into the CLI.
General configuration conventions are outlines in this guide as well.
The Search
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.2
-
Detection threshold for semblance.
pick_confidence_threshold
:0.2
-
Confidence threshold for picking.
min_stations
:3
-
Minimum number of stations required for detection and localization.
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. Ifwithout_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
-
Number of threads for stacking and migration.
'auto'
will use the maximum number of cores and leaves resources for I/O and other work.0
uses all available cores. n_threads_argmax
-
Number of threads for argmax.
'auto'
will use the maximum number of cores and leaves resources for I/O and other work.0
uses all available cores.
{
"project_dir": ".",
"stations": {
"pyrocko_station_yamls": [],
"station_xmls": [],
"blacklist": [],
"stations": [],
"max_distance": null
},
"data_provider": {
"provider": "PyrockoSquirrel",
"environment": null,
"persistent": null,
"waveform_dirs": [
"./data"
],
"start_time": null,
"end_time": null,
"channel_selector": null,
"n_threads": 8,
"watch_waveforms": false
},
"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": "cake:P",
"S": "cake: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/runner/.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": "mean_interstation",
"waterlevel": 0.0,
"lut_cache_size": 209715200
},
"station_corrections": null,
"magnitudes": [],
"features": [],
"semblance_sampling_rate": 100,
"detection_threshold": 0.2,
"pick_confidence_threshold": 0.2,
"min_stations": 3,
"absorbing_boundary": false,
"absorbing_boundary_width": "root_node_size",
"node_peak_interpolation": true,
"detection_blinding": "PT1S",
"power_mean": 1.0,
"window_length": "PT5M",
"n_threads_parstack": "auto",
"n_threads_argmax": "auto",
"plot_octree_surface": false,
"created": "2024-12-04T16:53:10.318664Z"
}
Minimal Config
This is a minimal config which can used to start a Qseek search.
{
"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.