Skip to content

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.

SDSArchive
{
  "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:

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.

PyrockoSquirrel
{
  "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:

Validators:

environment pydantic-field

environment: DirectoryPath | None = None

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

waveform_dirs: list[Path] = [Path('./data')]

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_waveforms: bool | timedelta = False

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'].

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.

SeedLink
{
  "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
}

Bases: WaveformProvider

Connect to real-time SeedLink streams.

Fields:

timeout pydantic-field

timeout: timedelta = timedelta(seconds=20.0)

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

sds_archive: Path = Path('./sds')

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'].

get_stream_start_time

get_stream_start_time() -> datetime

Get the start time of the client.

get_seedlink_streams() -> list[SeedLinkStream]

Get the SeedLink streams.

get_squirrel

get_squirrel() -> Squirrel

Get the Squirrel instance.