Associator
Earthquake phase association tools.
ai
- class SeisMonitor.monitor.associator.ai.GaMMA(gamma_obj)[source]
Bases:
objectMain 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:
objectGaMMA 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
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
- SeisMonitor.monitor.associator.utils.link(p_row, s_df, tt, st=2, et=4)[source]
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
- SeisMonitor.monitor.associator.utils.link_eqt_phases(df)[source]
Link P and S phases in EQTransformer format.
- Parameters:
df (pandas.DataFrame) – Input picks DataFrame
- Returns:
EQTransformer formatted DataFrame
- Return type:
pandas.DataFrame
- SeisMonitor.monitor.associator.utils.link_seismonitor_phases(df, tt=30, st=2, et=4)[source]
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