.. _catalyst-sec-nucleation: Nucleation ========== Nucleation forms candidate events from picks. |package| offers four methods, each on its own tab in the **Pick processing → Nucleation** panel. All of them * work on the unassociated picks, or only on the selected picks if picks are selected, * ignore picks that are hidden by the pick filters, * create one *preliminary* seed origin per detected event. A seed origin is only a starting point. Locate the seeds afterwards, usually with **Smart-locate all** (see :ref:`catalyst-sec-analysis-rules`), and remove duplicates with **Merge origins** (see :ref:`catalyst-sec-refine`). The number of origins nucleation may create is limited by ``maxOrigins`` in :file:`catalyst.cfg`. .. figure:: media/catalyst/nucleation-dbscan.png :alt: The Nucleation panel with the DBSCAN page open :width: 70% The Nucleation panel with the DBSCAN page open. Each method is a page of the panel; **Nucleate** runs the open one. The DBSCAN parameters are described below. .. _catalyst-sec-nucleation-dbscan: DBSCAN ------ DBSCAN :cite:p:`ester-1996` groups picks that are close to each other in time and space. The distance between two picks is measured in seconds as the vector sum of * their pick-time difference and * the distance between their stations divided by a velocity. A pick with at least **Min size** picks, itself included, within **Max dist** starts a cluster. Clusters grow through neighbouring picks. Each cluster that spans at least **Min sta** different stations becomes a seed origin. The picks are played back in time order. At each pick only the picks not older than **Window** take part in the search, like ``maxPickDelay`` in :program:`scanloc`. The window must be at least as long as the pick-time span of one event. .. csv-table:: :header: "Parameter", "Description" :widths: 25, 75 "Phase", "Picks to cluster: ``P``, ``S``, ``P+S`` or ``Is`` (infrasound). All other picks are ignored. In ``P+S`` mode a mixed P–S pair uses the S velocity and the larger of the two maximum distances." "Max dist P / S / Is [s]", "Largest distance between two neighbouring picks (DBSCAN eps), per phase." "Vel P / S / Is [km/s]", "Velocity that converts station distance into time. Roughly 6–7 for P, 3.5–4 for S and 0.34 for infrasound." "Min size", "Minimum number of picks in a cluster." "Min sta", "Minimum number of different stations in a cluster. A cluster from only one or two stations cannot be located, however many picks it has. 0 switches the check off." "Window [s]", "Part of the pick buffer used for the search. 0 = 180 s." "Use 3D distances", "Include the station elevation in the station distance." "Dist pctl [%]", "Percentile used by **Auto dist.** 100 = maximum." "Pg max [km]", "Only picks within this distance are used for the apparent-velocity fit, so that one line is not fitted across the Pg/Pn crossover. 0 = all picks." Choosing the parameters from trusted events ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Select a few well-located origins in the origin table first, then use the buttons next to the fields: * **Auto vel.** to set the velocity to the median apparent velocity of the selected origins, fitted from their used picks of the chosen phase, * **Auto dist.** to set **Max dist** with the k-distance method: the chosen percentile of each member pick's distance to its (Min size − 1)-th nearest neighbour, * **Auto** next to **Window** to set the window from the largest pick-time span of the selected origins, with a margin. **Fit V** on the *Move-out* tab of the active origin sets the velocity from a single origin. .. _catalyst-sec-nucleation-bp: Back projection --------------- Back projection searches a grid of trial sources. For each grid node it computes the origin time implied by each pick and counts how many picks agree on a common origin time within **t0 tol**. Nodes with enough agreeing picks become detections. Several phases can be used together (joint search): a pick then supports a node if any of the selected phases explains it. Picks that carry a measured back-azimuth, for example from arrays, only support nodes within **Az tol** of their bearing. For station sets wider than about 400 km the search uses spherical geometry. .. csv-table:: :header: "Parameter", "Description" :widths: 25, 75 "Grid [km]", "Spacing of the search grid. Finer is slower. The seed only needs to be good enough for the locator to converge." "Depth [km]", "Depth assumed during the search. 0 suits infrasound and shallow events." "Max range [km]", "Largest source–station distance, and the margin the grid adds around the stations." "Min size", "Minimum number of picks for a detection." "Phases", "P, S and Is. Tick several for a joint search." "t0 tol [s]", "How closely picks must agree on the origin time." "Az tol [deg]", "Back-azimuth tolerance for picks that carry one." "Max az gap [deg]", "Reject detections with a larger station azimuthal gap. 360 = off." "EDT stacking", "Score each node with an EDT stack instead of counting picks (see below)." "EDT σ [s]", "Differential-time uncertainty for EDT stacking." EDT stacking ^^^^^^^^^^^^ With **EDT stacking** each node is scored by an Equal Differential Time stack :cite:p:`font-2004`. Every pick pair adds a Gaussian of its differential-time residual. The differential time does not depend on the origin time, so the stack is robust against a wrong seed time, and a bad pick, which disagrees with all its pairs, cannot build up score. It is slower than counting, but often cleaner in swarms. **EDT σ** controls the width of the Gaussian. Too small finds only near-perfect events; too large merges nearby sources. **Auto σ** estimates it from the origins currently shown in the origin table: the robust (MAD) spread of their travel-time residuals, scaled by √2 for a pick pair. Filter the origin table to trusted origins first. .. _catalyst-sec-nucleation-gamma: GaMMA-lite ---------- GaMMA-lite is a simplified implementation of the GaMMA phase association method :cite:p:`zhu-2022`. Picks are first grouped by time with a coarse window. Within each group, an epicentre grid search and the origin-time spread separate the events. .. csv-table:: :header: "Parameter", "Description" :widths: 25, 75 "Grid [km]", "Epicentre search grid spacing." "Coarse window [s]", "Time window for the coarse grouping of picks." "OT tol [s]", "Origin-time gap that separates two events within a group." "Processing window [s]", "Sliding window for large data sets. 0 = one pass over all picks. Must exceed the pick-time span of the longest event; 90–120 s for a local network." "Min size", "Minimum number of picks for an event." "Depth [km]", "Initial source depth." "Max range [km]", "Largest source–station distance." "Max OT spread [s]", "Reject a cluster whose best origin-time spread is larger." .. _catalyst-sec-nucleation-gridsearch: Grid search (scautoloc) ----------------------- The grid-search nucleator uses the grid of :program:`scautoloc`. For each node of the grid it projects the picks back to the node and looks for enough stations that agree on an origin time. .. csv-table:: :header: "Parameter", "Description" :widths: 25, 75 "Grid file", "Path to the scautoloc :file:`grid.conf` file. Required." "Station file", "Optional scautoloc :file:`station.conf` file with per-station distance limits." "Min. stations", "Lowest number of stations that must agree at a node. A node's own minimum applies if it is higher." "Max. distance [deg]", "Largest station distance." "Agreement offset [s]", "Additive term of the arrival-time agreement window." "Projected window [s]", "Rough projected-time window per node; scautoloc uses 50 s." "Max. radius factor", "Reserved. Set to 0 to ignore it." "Processing window [s]", "Trim each node's pick buffer to this span. 0 = no trimming, the safe setting." Choosing a method ----------------- * **DBSCAN** is fast and needs no velocity model beyond one velocity per phase. It works best for local networks and for picks from a compact source region, such as swarms. * **Back projection** handles sparse and irregular networks, infrasound and array picks with back-azimuths, and large regions. * **GaMMA-lite** separates events that overlap in time. * **Grid search** reproduces the nucleation of :program:`scautoloc` and reuses its grid configuration.