Waveforms¶
The data_provider delivers the waveforms to the search. Qseek loads them in windows while the search runs, so data sets of any size work. Choose the provider by how your data is stored:
| Provider | Use for |
|---|---|
SDSArchive |
MiniSEED files in an SDS archive. The fastest provider and the default. |
PyrockoSquirrel |
Waveform files in any structure and any format that Pyrocko reads. |
SeedLink |
Real-time streams from SeedLink servers. |
Download data from FDSN data centers
FDSN Rush downloads data from FDSN data centers into an SDS archive, together with the StationXML metadata. The quick start uses it.
SDS archive¶
Reads MiniSEED files from a SeisComP Data Structure (SDS) archive, organized by year, network, station and channel. Set the archive directory and limit the search to a time span with start_time and end_time.
{
"provider": "SDSArchive",
"channel_selector": null,
"archive": "./sds-archive",
"start_time": null,
"end_time": null,
"channel_orientations": "ENZ0123",
"n_threads": 4,
"queue_size": 16
}
SDSArchive
pydantic-model
¶
Bases: WaveformProvider
Load MiniSEED waveform data from a local SDS archive (fastest).
Fields:
-
channel_selector(list[Annotated[str, StringConstraints(to_upper=True, max_length=2, min_length=2)]] | None) -
provider(Literal['SDSArchive']) -
archive(DirectoryPath) -
start_time(DateTime | None) -
end_time(DateTime | None) -
channel_orientations(str) -
n_threads(PositiveInt) -
queue_size(PositiveInt)
Validators:
-
_validate_model
archive
pydantic-field
¶
archive: DirectoryPath = Path.cwd() / 'sds-archive'
Path to the root of the SDS archive.
start_time
pydantic-field
¶
start_time: DateTime | None = None
Start time for the search in ISO8601 including timezone. E.g. 2024-12-30T00:00:00Z.
end_time
pydantic-field
¶
end_time: DateTime | None = None
End time for the search in ISO8601 including timezone. E.g. 2024-12-31T00:00:00Z.
channel_orientations
pydantic-field
¶
channel_orientations: str = 'ENZ0123'
Channel orientations to load from the SDS archive. "ENZ0123" includes all standard orientations.
n_threads
pydantic-field
¶
n_threads: PositiveInt = 4
Number of threads to use for reading data from the SDS archive.
queue_size
pydantic-field
¶
queue_size: PositiveInt = QUEUE_SIZE
Maximum number of waveform batches to keep in the internal queue.
channel_selector
pydantic-field
¶
channel_selector: (
list[
Annotated[
str,
StringConstraints(
to_upper=True, max_length=2, min_length=2
),
]
]
| None
) = None
Channel selector for waveforms, e.g. ['HH', 'EN'].
Pyrocko Squirrel¶
Reads waveform files in any directory structure and any format supported by Pyrocko, through the Squirrel data access framework. List the directories in waveform_dirs. For large data sets, a persistent collection keeps the file index between runs and speeds up the start.
{
"provider": "PyrockoSquirrel",
"channel_selector": null,
"environment": null,
"persistent": "docs",
"waveform_dirs": [
"data"
],
"start_time": null,
"end_time": null,
"n_threads": 8,
"watch_waveforms": false,
"queue_size": 16
}
PyrockoSquirrel
pydantic-model
¶
Bases: WaveformProvider
Load unstructured waveform data through Pyrocko's Squirrel.
Fields:
-
channel_selector(list[Annotated[str, StringConstraints(to_upper=True, max_length=2, min_length=2)]] | None) -
provider(Literal['PyrockoSquirrel']) -
environment(DirectoryPath | None) -
persistent(str | None) -
waveform_dirs(list[Path]) -
start_time(DateTime | None) -
end_time(DateTime | None) -
n_threads(PositiveInt) -
watch_waveforms(bool | timedelta) -
queue_size(int)
Validators:
-
_validate_model -
_validate_watch→watch_waveforms
environment
pydantic-field
¶
environment: DirectoryPath | None = None
Path to a Pyrocko Squirrel environment.
persistent
pydantic-field
¶
persistent: str | None = None
Name of the Squirrel's persistent collection for faster loading of large data sets.
waveform_dirs
pydantic-field
¶
List of directories holding the waveform files.
start_time
pydantic-field
¶
start_time: DateTime | None = None
Start time for the search as in ISO8601 as a date or datetime including timezone. E.g. today, yesterday, 2025-12-24 or 2024-12-30T00:00:00Z.
end_time
pydantic-field
¶
end_time: DateTime | None = None
End time for the search in ISO 8601, as a date or a datetime with time zone, e.g. today, yesterday, 2025-12-24 or 2024-12-30T00:00:00Z.
n_threads
pydantic-field
¶
n_threads: PositiveInt = 8
Number of threads for loading waveforms, important for large data sets.
watch_waveforms
pydantic-field
¶
Watch the waveform directories for new data. true checks every ten minutes, a duration sets the interval.
queue_size
pydantic-field
¶
queue_size: int = QUEUE_SIZE
Size of the internal queue for prefetching waveform batches.
channel_selector
pydantic-field
¶
channel_selector: (
list[
Annotated[
str,
StringConstraints(
to_upper=True, max_length=2, min_length=2
),
]
]
| None
) = None
Channel selector for waveforms, e.g. ['HH', 'EN'].
SeedLink¶
Streams waveforms from SeedLink servers for real-time detection and localization. The real-time monitoring guide shows a complete setup with alerts for new detections. With sds_archive, Qseek also writes the received data into an SDS archive.
Note
The SeedLink provider needs slinktool from libslink.
{
"provider": "SeedLink",
"channel_selector": null,
"timeout": "PT20S",
"clients": [
{
"host": "geofon.gfz.de",
"port": 18000,
"station_selection": [
{
"nsl": "1D.SYRAU.",
"channel": "HH?"
},
{
"nsl": "1D.WBERG.",
"channel": "HH?"
},
{
"nsl": "WB.KOC.",
"channel": "HH?"
},
{
"nsl": "WB.KRC.",
"channel": "HH?"
},
{
"nsl": "WB.LBC.",
"channel": "HH?"
},
{
"nsl": "WB.SKC.",
"channel": "HH?"
},
{
"nsl": "WB.STC.",
"channel": "HH?"
},
{
"nsl": "WB.VAC.",
"channel": "HH?"
}
],
"buffer_length": "PT30M",
"reconnect_timeout": 60.0
}
],
"sds_archive": "sds",
"sds_steim_compression": 2
}
SeedLink
pydantic-model
¶
Bases: WaveformProvider
Connect to real-time SeedLink streams.
Fields:
-
channel_selector(list[Annotated[str, StringConstraints(to_upper=True, max_length=2, min_length=2)]] | None) -
provider(Literal['SeedLink']) -
timeout(timedelta) -
clients(list[SeedLinkClient]) -
sds_archive(Path) -
sds_steim_compression(Literal[1, 2])
timeout
pydantic-field
¶
Maximum wait time for new traces.
clients
pydantic-field
¶
clients: list[SeedLinkClient]
List of SeedLink clients to connect to. If multiple clients are given, they will be used in parallel.
sds_archive
pydantic-field
¶
Path to save MiniSeed in an SDS structure. Give a path to save the archive, or True to use the default path. If False, no saving is done.
sds_steim_compression
pydantic-field
¶
sds_steim_compression: Literal[1, 2] = 2
Steim compression level for SDS saving. 1 or 2.
channel_selector
pydantic-field
¶
channel_selector: (
list[
Annotated[
str,
StringConstraints(
to_upper=True, max_length=2, min_length=2
),
]
]
| None
) = None
Channel selector for waveforms, e.g. ['HH', 'EN'].