Associator

Earthquake phase association tools.

ai

class SeisMonitor.monitor.associator.ai.GaMMA(gamma_obj)[source]

Bases: object

Main GaMMA class for seismic event association.

Parameters:

gamma_obj (GaMMAObj) – GaMMAObj instance with configuration

associate(picks_csv, xml_path, out_dir)[source]

Associate picks and create catalog.

Parameters:
  • picks_csv (str) – Path to picks CSV file

  • xml_path (str) – Path to station XML file

  • out_dir (str) – Output directory path

Returns:

(Catalog, pandas.DataFrame, pandas.DataFrame) containing

catalog, catalog DataFrame, and picks DataFrame

Return type:

tuple

class SeisMonitor.monitor.associator.ai.GaMMAObj(region, epsg_proj, use_dbscan=True, use_amplitude=True, dbscan_eps=10.0, dbscan_min_samples=3, vel={'p': 7.0, 's': 4.0}, method='BGMM', oversample_factor=20, min_picks_per_eq=5, max_sigma11=2.0, max_sigma22=1.0, max_sigma12=1.0, calculate_amp=True, p_window=10, s_window=5, waterlevel=10)[source]

Bases: object

GaMMA object for seismic event association and processing.

Parameters
regionlist

List of [lon_min, lon_max, lat_min, lat_max, z_min, z_max]. z is depth in km.

epsg_projstr

EPSG projection code.

use_dbscanbool, default=True

Whether to use DBSCAN clustering.

use_amplitudebool, default=True

Whether to use amplitude in processing.

dbscan_epsfloat, default=10.0

DBSCAN epsilon parameter.

dbscan_min_samplesint, default=3

DBSCAN minimum samples parameter.

veldict, default={“p”: 7.0, “s”: 7.0 / 1.75}

Average velocity model with P and S wave velocities.

methodstr, default=”BGMM”

Association method.

oversample_factorint, default=20

Oversampling factor for processing.

min_picks_per_eqint, default=5

Minimum picks per earthquake.

max_sigma11float, default=2.0

Maximum sigma for x-x uncertainty.

max_sigma22float, default=1.0

Maximum sigma for y-y uncertainty.

max_sigma12float, default=1.0

Maximum sigma for x-y uncertainty.

calculate_ampbool, default=True

Whether to calculate amplitudes.

p_windowint, default=10

P-wave window length.

s_windowint, default=5

S-wave window length.

waterlevelint, default=10

Waterlevel for amplitude calculation.

add_response(response)[source]

Add response inventory to the GaMMA object.

Parameters:

response (Inventory or str) – Either an Inventory object or path to inventory file

property stations

Get station information with transformed coordinates.

Returns:

Station information with projected coordinates

Return type:

pandas.DataFrame

Raises:

Exception – If response inventory hasn’t been added

SeisMonitor.monitor.associator.ai.get_gamma_catalog(picks_df, catalog_df, in_proj, out_proj)[source]

Create a Catalog object from picks and catalog dataframes.

Parameters:
  • picks_df (pandas.DataFrame) – DataFrame containing pick information

  • catalog_df (pandas.DataFrame) – DataFrame containing catalog information

  • in_proj (str) – Input projection EPSG code

  • out_proj (str) – Output projection EPSG code

Returns:

Obspy Catalog object

Return type:

Catalog

SeisMonitor.monitor.associator.ai.get_gamma_origin(catalog_info, event_picks, in_proj='EPSG:3116', out_proj='EPSG:4326')[source]

Create an Origin object from catalog information and picks.

Parameters:
  • catalog_info (pandas.Series) – Catalog information for the event

  • event_picks (list) – List of Pick objects

  • in_proj (str) – Input projection EPSG code

  • out_proj (str) – Output projection EPSG code

Returns:

Obspy Origin object

Return type:

Origin

SeisMonitor.monitor.associator.ai.get_gamma_picks(event_picks)[source]

Convert event picks to Obspy Pick objects.

Parameters:

event_picks (pandas.DataFrame) – DataFrame containing pick information

Returns:

List of Obspy Pick objects

Return type:

list

SeisMonitor.monitor.associator.ai.picks2arrivals(picks)[source]

Convert picks to arrivals.

Parameters:

picks (list) – List of Pick objects

Returns:

List of Arrival objects

Return type:

list

utils

SeisMonitor.monitor.associator.utils.get_amplitudes_from_local_st(file_name, df, response, p_window=10, s_window=5, waterlevel=10)[source]

Calculate amplitudes from local seismic data file.

Parameters:
  • file_name (str) – Path to seismic data file

  • df (pandas.DataFrame) – Picks DataFrame

  • response (Inventory or Parser) – Response information

  • p_window (int) – P-wave window length in seconds

  • s_window (int) – S-wave window length in seconds

  • waterlevel (int) – Waterlevel for simulation

Returns:

DataFrame with added amplitudes

Return type:

pandas.DataFrame

SeisMonitor.monitor.associator.utils.get_amplitudes_from_pick(st, picktime, phasehint, p_window=10, s_window=5)[source]

Calculate amplitude from a seismic trace for a given pick.

Parameters:
  • st (Stream) – Obspy Stream object

  • picktime (datetime) – Pick time

  • phasehint (str) – Phase type (‘P’ or ‘S’)

  • p_window (int) – P-wave window length in seconds

  • s_window (int) – S-wave window length in seconds

Returns:

Maximum amplitude value

Return type:

float

SeisMonitor.monitor.associator.utils.get_paz_from_response(seed_id, response, datetime=None)[source]

Extract Poles and Zeros (PAZ) information from response.

Parameters:
  • seed_id (str) – SEED identifier

  • response (Inventory or Parser) – Response information

  • datetime (UTCDateTime, optional) – Specific time for response

Returns:

PAZ dictionary or None if not found

Return type:

dict

SeisMonitor.monitor.associator.utils.get_picks_gamma_df(picks, response, compute_amplitudes=True, p_window=10, s_window=5, waterlevel=10)[source]

Convert picks to GaMMA-compatible DataFrame format.

Parameters:
  • picks (str) – Path to picks CSV file

  • response (Inventory or Parser) – Station response information

  • compute_amplitudes (bool) – Whether to compute amplitudes

  • p_window (int) – P-wave window length in seconds

  • s_window (int) – S-wave window length in seconds

  • waterlevel (int) – Waterlevel for amplitude calculation

Returns:

Formatted picks DataFrame

Return type:

pandas.DataFrame

SeisMonitor.monitor.associator.utils.get_seismonitor_amplitudes(df, response, out=None, p_window=10, s_window=5, waterlevel=10)[source]

Add amplitude calculations to SeisMonitor picks.

Parameters:
  • df (pandas.DataFrame) – Input picks DataFrame

  • response (Inventory or Parser) – Response information

  • out (str, optional) – Output CSV file path

  • p_window (int) – P-wave window length in seconds

  • s_window (int) – S-wave window length in seconds

  • waterlevel (int) – Waterlevel for simulation

Returns:

DataFrame with amplitudes

Return type:

pandas.DataFrame

SeisMonitor.monitor.associator.utils.get_stations_gamma_df(response)[source]

Convert station response to GaMMA-compatible DataFrame format.

Parameters:

response (Inventory) – Station response inventory

Returns:

Formatted stations DataFrame

Return type:

pandas.DataFrame

Link P and S phases for a given pick.

Parameters:
  • p_row (pandas.Series) – P pick row

  • s_df (pandas.DataFrame) – S picks DataFrame

  • tt (float) – Time threshold in seconds

  • st (float) – Start time offset in seconds

  • et (float) – End time offset in seconds

Returns:

Updated pick row with linked phases

Return type:

pandas.Series

Link P and S phases in EQTransformer format.

Parameters:

df (pandas.DataFrame) – Input picks DataFrame

Returns:

EQTransformer formatted DataFrame

Return type:

pandas.DataFrame

Link P and S phases in SeisMonitor format.

Parameters:
  • df (pandas.DataFrame) – SeisMonitor picks DataFrame

  • tt (float) – Time threshold in seconds for S pick search

  • st (float) – Start time offset in seconds

  • et (float) – End time offset in seconds

Returns:

EQTransformer formatted DataFrame

Return type:

pandas.DataFrame

SeisMonitor.monitor.associator.utils.make_eqt_dirs(eqt_df, folder)[source]

Create EQTransformer-style directory structure and files.

Parameters:
  • eqt_df (pandas.DataFrame) – EQTransformer formatted DataFrame

  • folder (str) – Output directory path

SeisMonitor.monitor.associator.utils.seismonitor_picks_to_eqt_fmt(seismonitor_picks, eqt_folder, tt=30, st=2, et=4)[source]

Convert SeisMonitor picks to EQTransformer format.

Parameters:
  • seismonitor_picks (str) – Path to SeisMonitor picks CSV

  • eqt_folder (str) – Output directory for EQTransformer files

  • tt (float) – Time threshold in seconds

  • st (float) – Start time offset in seconds

  • et (float) – End time offset in seconds