# Change Log All notable changes to DLPick will be documented in this file. ## 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 \ -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 ` 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.