Change Log

All notable changes to DLPick will be documented in this file.

2026.285

Fixed

  • The ring buffer size is now calculated dynamically. Initially, it is set to 2 * input.minPrefDataRatio * model’s input length. During acquisition the record sizes are surveyed and the ring buffer is resized if necessary. This fixes problems of memory consumption especially in live system with many stations over a long period of time. The reason was the fixed, yet too large buffer size per stream based on number of records.

2026.275

Important

The module and binding parameters changed. They are no longer all on the same level but distributed within a logical hierarchy of parameter groups. This also led to name changes in some cases. Starting from this version, you need to migrate your configuration files. DLPick has a new flag to start a migration assistant:

dlpick --migrate-config

You will be asked (1) if you want to migrate files with a fuzzy name, e.g. backup files like “dlpick.cfg.bak”; (2) if you want to save backups before the files are changed; (3) if you just want a dry-run to see what change without any file being written. I would recommend to do a dry-run first and then restart the command when you think that everything looks alright. In case binding profiles are migrated, you want to write to the database as well:

seiscomp update-config dlpick

You can also migrate single files, for example, as used in offline playbacks. These can be binding files in SCML format (.xml), config files (.cfg). The migration script can be found in the SeisComP’s share directory. Ensure to pass the correct definition file, in this case “migmap.0-2026_275”:

python3 $SEISCOMP_ROOT/share/dlpick/migrate.py <CFG-FILE-TO-MIGRATE> \
   -d $SEISCOMP_ROOT/share/dlpick/migmap.0-2026_275 -p

The option ‘-p’ starts a dry-run. For more details, run the script with flag ‘–help’.

Fixed

  • Picks written to the terminal (parameter stdout) skipped the location code section when the value was empty

  • Ring buffer size was not set correctly in all places

  • The version was not shown when run with --version flag.

Changed

  • Default batch size is no longer 32, but 1.

  • Change of parameter names: before streams.before referenceTime streams.referenceTime relaxReferenceTime streams.relaxReferenceTime missingLocationStrategy streams.missingLocationStrategy cloneHorizontalsFromVertical streams.cloneHorizontalsFromVertical streamChannels streams.streamChannels traceWindowOlRatio input.traceWindowOlRatio batchSize input.batchSize minPrefDataRatio input.minPrefDataRatio maxGap input.maxGap snrThreshold input.snrThreshold filter input.filter blindingSamples input.blindingSamples phasePrefix picks.phaseHint.prefix phasePostfix picks.phaseHint.postfix phaseMap picks.phaseHint.phaseMap phaseToComp picks.phaseHint.phaseToComp picksReductionAlgorithm picks.reduction.algorithm minGatherPicksBeforeReduce picks.reduction.minGatherPicksBeforeReduce minTimeBeforeReduce picks.reduction.minTimeBeforeReduce PThreshold picks.thresholds.P SThreshold picks.thresholds.S uncertainPThresh picks.thresholds.PUncertain uncertainSThresh picks.thresholds.SUncertain snrThreshold picks.thresholds.snr picksReductionSimpleInterval picks.reduction.simpleAlgo.interval safeReduceMinPickCount picks.reduction.clusterAlgo.safeMinPickCount picksReductionClusterSize picks.reduction.clusterAlgo.clusterSize minGatherPicksBeforeFlush picks.minGatherPicksBeforeFlush minTimeBeforeFlush picks.minTimeBeforeFlush ep output.ep xml output.xml csv output.csv formatted output.formatted stdout output.stdout offline output.offline outDir output.outDir

2026.268

Changed

  • Logging output was overhauled

  • Default parameter of modelWeights in module config is no longer set but empty. This restricts dlpick to work only on stations with dlpick bindings by default. Still, the old behavior, where each station with global bindings was picked, can be re-established by setting a valid modelWeights value in the module config.

  • Per default, dlpick will no longer fall back to use any sensor location if none was found, nor will it create a dummy sensor location. Use the new parameter missingLocationStrategy to handle missing locations.

Added

  • Infos about how many picker configs and streams had been added.

  • Binding parameter streams.detecEnabled allows switching off stations attached to this profile.

Fixed

  • Writing picks to the terminal omitted empty location IDs

  • Ring buffer size was not restricted in some cases

2026.264

Fixed

  • Too many pickers were created during configuration

Added

  • Parameter cloneHorizontalsFromVertical (currently module configuration only) allows to treat 1-component stations as if they provided 3 components as long the provided component is the vertical one. This is implemented by copying each vertical record and feed it to the model as 3 channel input. Resulting S picks are mapped to the vertical component.

2026.258

Fixed

  • Parsing of confidence threshold syntax was not entirely correct

2026.230

Added

  • Parameter referenceTime (command line: --ref-time)

  • Parameter relaxReferenceTime (command line: --relax-reft)

2026.216

Fixed

  • Closed a memory leak related to ever-growing ring buffers accumulating records

2026.211

Fixed

  • Command line option print-models failed with the new config format

Changed

  • Command line option print-models shows now much more information and looks better

2026.209

Fixed

  • MethodID in picks was not complete, it still lacks information about the used model

  • Minor bug when reading dataset names using the model setup

Added

  • Dependencies via install scripts

Changed

  • Updated documentation

2026.205

Important

From this version onwards, deep learning models must be accompanied by a configuration file that complies with the new schema “gdljson” version 0.3. To get the new model configurations alongside with re-converted checkpoints, update your dlmodels-pick packages to at least 2026.205. Back up any custom models in one of the model directories first.

Install the package dltools to make custom models available in your dlmodels directory. After installation, execute the command dltools-sync-models <DATADIR> in case you have custom models on your system. The new default location of custom models is outside the standard dlmodels-subdirectory.

E. g.: /home/data/dlmodels/dlmodels-pick <- only packaged models from gempa /home/data/dlmodels/custom <- custom models

dltools-sync-models creates links and merges dlmodels_maps.json.

Some models have been renamed. See the changelog of the dlmodels-pick package for detailed and adjust your configuration accordingly.

Changed

  • Expecting dlmodels with config version 0.3 (gdljson), which requires migrating older configs

Fixed

  • The app crashed when not all components were found for a stream

  • Configuration logic was wrong. Absent commandline flag deactivated message connection and gpu usage (and potentially more) although this was configured in the module config.

  • Parameter streamChannels was incorrectly parsed in some cases

  • The timeout for pick reduction was incorrectly calculated, leading to too early reductions

  • The model was searched in the wrong subdirectory when dlmodels_maps.json was found there

2026.112

Fixed

  • Huge memory leak that was connected to the cluster picks reduction algorithm

  • ModelSetup was not generated when “–model-weights” command line parameter was given,

  • Some issues reading in dlmodels_maps.json

Added

  • Module config parameter picksReductionAlgorithm (has already been a binding parameter)

2026.111

Fixed

  • Fixed performance issues due to PyTorch caching

Improved

  • Improved performance by reducing RAM consumption

Changed

  • Default of parameter picksReductionAlgorithm from “Cluster” to “Simple”, since the cluster algorithm has a memory leak which is being debugged

2026.040

Important

  • Config parameters have been refactored. Now,

    • ep disconnects from messaging, writes picks in SCML to stdout

    • xml writes picks-merged.xml as ep did before at the end of a run

    • formatted needs to be enabled to get SCML output in formatted fashion

Changes

  • All logging output is now printed on stderr

  • The loggers now respect the debug level

Fixed

  • Fixed a problem where dlpick was killed by the system because of too much RAM consumption

2026.012

Important

  • Config parameters have been refactored. The module config no longer has parameter groups model architectures. Instead, all parameters from there have been “leveled up”:

    • No longer bound to model architecture:

      • traceWindowOlRatio

      • reducePicksOrder (deprecated)

      • reducePicksInterval (deprecated)

      • PThreshold

      • SThreshold

      • minPrefDataRatio

      • maxGap (still not implemented)

    • Parameter filter has additionally become a binding parameter

    • Parameter blindingSamples can now be used to mask the edges of a prediction (module + bindings)

    • Parameter snrThreshold is now available als module and as bindings parameter

2026.006

Fixed

  • Pick reduction cluster algorithm didn’t correctly account for parameter safeReduceMinPickCount being switched off, it published each pick instantly, instead.

  • Further, a bug in the cluster algorithm prevented the black list for intervals of already published picks to shrink, which led to huge RAM consumption, especially for smaller batch sizes.

2025.342

Important

  • This version requires removing the old dlbase 2024.285 package and installing the new version tailored to your system configuration.

Added

  • Implemented support for CUDA. Use the command line flag --gpu and adjust the batch size.

2025.311

Changed

  • Commandline parameter force-channels no longer restricts the handled record to those that match the provided list, but only applies to those where a match is possible.

  • When the global binding parameter detecStream is missing or empty, the according stream is no longer skipped, but force-channels and streamChannels parameters will be parsed for a string that can be used for detecStream.

Improved

  • Reduced the RAM consumption by reducing redundant picker objects for streams and delaying memory allocation for stream traces until a data record belonging to this stream is received.

Fixed

  • Resampler and Filter functions processes didn’t work on single stream components which led, e.g., to resampler warnings about gaps that didn’t exist in the data.

  • Crashes related to the cluster reduction algorithm.

  • Sometimes uncertain thresholds were used without explicit configuration.

2025.301

Important

  • A new installation of gsm package dlmodels (minimum version 2025.297) is required to work with this version of dlpick.

  • Parameters model and weights were removed. Commands and configurations need to be adjusted. Use new parameter modelWeights instead.

  • New naming convention for models is active from now on. While the simple names like pn-in stay as they are, more advanced names like pnv-et-il-150-2 get a more consistent and easier-to-parse form: pnv_15s-et_il-2: There 2–3 groups separated by dashes. The first group is the model name as abbreviation with optional model specifics attached with an underscore ‘_’, the second group defines the datasets the model was trained on as abbreviations, separated by underscores. The third group is optional and defines the weights version. Custom models can be named freely but need to start with gn-.

Added

  • Parameter modelWeights (commandline: model-weights) to specify the model to use. Works exactly like model and weights before, you just need to concatenate them. E.g., --model phasenet --weights instance becomes --model-weights phasenet-instance.

  • Support for custom models (“Generic”). Model configs contain new parameters to determine what needs to be done:

    • dims => dimension order of output (e.g., BCN => batches, channels, samples)

    • post_proc_chain => post-processing steps, currently still undocumented

    • description => free text string to define

  • Binding parameters picksReductionClusterSize and picksReductionSimpleInterval to control the interval where only pick is allowed to exist.

2025.290

Added

  • Bindings parameter picksReductionAlgorithm to select “Simple” or “Cluster” reduction algorithm. safeReduceMinPickCount can now be set to 0 if one only wants to use the cluster algorithm without the early publishing of picks (for example, in offline mode).

2025.289

Added

  • New picks cluster reduce-algorithm that can be activated using the new parameter safeReduceMinPickCount. If not set or set to 0, the old “simple reduce-algorithm” will be used to reduce picks. If you use overlapping of minimum 0.5, you can set the parameter to a value between 1 and 1/(1-overlapping-ratio) (which is approximately the maximum overlapping-induced coverage of a prediction segment). A cluster has the maximum length of reducePicksInterval seconds. If a cluster has at least safeReduceMinPickCount of picks, they will be reduced to their most confident one, and this one is published. Later picks within the interval limits around the chosen pick will be ignored. This is supposed to speed up realtime picking.

2025.261

Changed

  • When amplitudes cannot be calculated, their value will be -1.

  • Add waveform ID to Amplitude object

Fixed

  • The time window of the Amplitude object is now in seconds and signed

2025.259

Added

  • EventParameters now contain amplitudes, calculated by maximum of the signal / standard deviation of the noise. Currently, amplitudes for picks too close to the border their prediction window can’t be calculated and get amplitude 0.

  • Component letters ‘1’ and ‘2’ of stream IDs are now mapped to components ‘N’ and ‘E’.

  • “DLog”, which is dlpick’s own logger, now writes to the log file, following the SeisComP conventions. All dlpick’s ‘DLog’ messages are printed as Seiscomp warning.

Fixed

  • Increasing the log level using verbosity flags (“-v…”) now works properly for dlpick’s own logger.

2025.244

Fixed

  • dlpick --print-models didn’t find dlmodels_maps.json when data dir was different from default.

Changed

  • Updated documentation

2025.240

Added

  • Documentation

2025.198

Important

  • The deep learning models that are used by this dlpick have been removed from this repository. They are now part of the GSM packages dlmodels-pick, which must be installed separately.

2025.119

Changed

  • Universal configuration format for all models: Change the path where models are read from to default to /home/data/dlmodels/

  • Change model config reading behavior to be more flexible.

Added

  • Universal configuration format for all models: Add parameter modelsPath to customize the path where models are read from.

Fixed

  • Add API version check to make dlpick compatible with seiscomp 17.0.0 API and below.

2024.221

Added

  • Added this changelog.