Picker
Automatic phase picking workflows.
ai
Phase picking interfaces for EQTransformer and PhaseNet.
This module provides wrapper classes and configuration containers for running seismic phase picking workflows using:
EQTransformer
PhaseNet
- The classes standardize:
model configuration
waveform preprocessing
prediction execution
result conversion to SeisMonitor format
- The module also includes helper utilities for:
TensorFlow session cleanup
MiniSEED organization
datalist generation
duplicate pick removal
Notes
TensorFlow warnings and verbose logging are suppressed to reduce console noise during inference.
Examples
Run EQTransformer:
eqt_config = EQTransformerObj(
model_path="model.h5",
batch_size=4,
)
picker = EQTransformer(eqt_config)
picks = picker.pick(
mseed_storage="./mseed",
metadata_dir="./metadata",
out_dir="./results",
)
Run PhaseNet:
pnet_config = PhaseNetObj(
pnet_path="./PhaseNet",
model_path="./model",
)
picker = PhaseNet(pnet_config)
picks = picker.pick(
mseed_storage="./mseed",
metadata_dir="./metadata",
out_dir="./results",
)
- class SeisMonitor.monitor.picker.ai.EQTransformer(eqt_obj)[source]
Bases:
objectWrapper class for EQTransformer predictions.
- Parameters:
eqt_obj (EQTransformerObj) – EQTransformer configuration object.
- pick(mseed_storage, metadata_dir, out_dir)[source]
Run EQTransformer phase picking.
- Parameters:
mseed_storage (str) – Directory containing MiniSEED files.
metadata_dir (str) – Directory containing station metadata.
out_dir (str) – Output directory for prediction results.
- Returns:
pandas.DataFrame – Picks converted to SeisMonitor format.
Notes – Saves results to {out_dir}/results/seismonitor_picks.csv
- class SeisMonitor.monitor.picker.ai.EQTransformerObj(model_path, n_processor=2, overlap=0.3, detection_threshold=0.1, P_threshold=0.1, S_threshold=0.1, number_of_plots=1, batch_size=1, plot_mode=1, overwrite=False, rm_downloads=False)[source]
Bases:
objectConfiguration container for EQTransformer predictions.
- Parameters:
model_path (str) – Path to the trained EQTransformer model.
n_processor (int, default=2) – Number of processors used during prediction.
overlap (float, default=0.3) – Overlap fraction between prediction windows.
detection_threshold (float, default=0.1) – Detection probability threshold.
P_threshold (float, default=0.1) – P-phase probability threshold.
S_threshold (float, default=0.1) – S-phase probability threshold.
number_of_plots (int, default=1) – Number of prediction plots to generate.
batch_size (int, default=1) – Number of waveforms processed per batch.
plot_mode (int, default=1) – Plotting mode used by EQTransformer.
overwrite (bool, default=False) – Whether existing outputs should be overwritten.
rm_downloads (bool, default=False) – Remove MiniSEED files after prediction.
- name
Picker identifier.
- Type:
str
- class SeisMonitor.monitor.picker.ai.PhaseNet(pnet_obj)[source]
Bases:
objectWrapper class for PhaseNet predictions.
- Parameters:
pnet_obj (PhaseNetObj) – PhaseNet configuration object.
- pick(mseed_storage, metadata_dir, out_dir)[source]
Run PhaseNet phase picking.
- Parameters:
mseed_storage (str) – Directory containing MiniSEED files.
metadata_dir (str) – Directory containing station metadata.
out_dir (str) – Output directory for prediction results.
- Returns:
pandas.DataFrame – Picks converted to SeisMonitor format.
Notes – Saves results to {out_dir}/results/seismonitor_picks.csv
- class SeisMonitor.monitor.picker.ai.PhaseNetObj(pnet_path, model_path, mode='pred', P_threshold=0.3, S_threshold=0.3, batch_size=2, plot=False, save_result=False, epochs=100, learning_rate=0.01, decay_step=-1, decay_rate=0.9, momentum=0.9, filters_root=8, depth=5, kernel_size=[7, 1], pool_size=[4, 1], drop_rate=0, dilation_rate=[1, 1], loss_type='cross_entropy', weight_decay=0, optimizer='adam', summary=True, class_weights=[1, 1, 1], log_dir='log', num_plots=10, input_length=None, input_mseed=True, filename_picks='picks', one_single_sampling_rate=-1, data_dir='./dataset/waveform_pred/', data_list='./dataset/waveform.csv', train_dir='./dataset/waveform_train/', train_list='./dataset/waveform.csv', valid_dir=None, valid_list=None, output_dir=None, rm_downloads=False)[source]
Bases:
objectConfiguration container for PhaseNet predictions.
- Parameters:
pnet_path (str) – Path to PhaseNet repository.
model_path (str) – Path to trained PhaseNet model.
mode (str, default="pred") – Operation mode (‘pred’ for prediction).
P_threshold (float, default=0.3) – Minimum P-phase probability.
S_threshold (float, default=0.3) – Minimum S-phase probability.
batch_size (int, default=2) – Number of waveforms per batch.
plot (bool, default=False) – Whether to generate plots.
save_result (bool, default=False) – Whether to save prediction results.
epochs (int, default=100) – Number of training epochs.
learning_rate (float, default=0.01) – Initial learning rate.
decay_step (int, default=100) – Steps for learning rate decay.
decay_rate (float, default=0.9) – Learning rate decay rate.
momentum (float, default=0.9) – Momentum for optimizer.
filters_root (int, default=8) – Base number of filters.
depth (int, default=5) – Network depth.
kernel_size (list, default=[7, 5, 5, 5, 5]) – Kernel size for convolution.
pool_size (list, default=[4, 2, 2, 2, 2]) – Pooling size.
drop_rate (float, default=0.1) – Dropout rate.
dilation_rate (list, default=[1, 2, 4, 8, 16]) – Dilation rate for convolution.
loss_type (str, default="dice") – Loss function type.
weight_decay (float, default=1e-5) – Weight decay factor.
optimizer (str, default="adam") – Optimizer type.
summary (bool, default=True) – Whether to show summary.
class_weights (list, optional) – Weights for class balancing.
log_dir (str, default="logs") – Directory for logs.
num_plots (int, default=10) – Number of plots to generate.
input_length (int, optional) – Input length in samples.
input_mseed (bool, default=True) – Whether input is MSEED format.
filename_picks (str, default="picks") – Base name for picks output file.
one_single_sampling_rate (float, default=-1) – Override sampling rate (-1 for auto).
data_dir (str) – Directory for prediction data.
data_list (str) – Path to data list CSV.
train_dir (str) – Directory for training data.
train_list (str) – Path to training list CSV.
valid_dir (str, optional) – Directory for validation data.
valid_list (str, optional) – Path to validation list CSV.
output_dir (str, optional) – Directory for output.
rm_downloads (bool, default=False) – Whether to remove input MSEED files after processing.
utils
- SeisMonitor.monitor.picker.utils.clone_aipicker(name, output_folder)[source]
Clone AI picker repository from GitHub.
- Parameters:
name (str) – Name of the AI picker (‘EQTransformer’ or ‘PhaseNet’)
output_folder (str) – Directory path to store the cloned repository
- Returns:
True if successful
- Return type:
bool
- Raises:
Exception – If invalid picker name is provided
- SeisMonitor.monitor.picker.utils.create_datalist(self, all_in_folder=False)[source]
Create PhaseNet datalist(s) for processing.
- Parameters:
self – Object with datalist_dir and mseed_storage attributes
all_in_folder (bool) – If True, create single datalist; otherwise, per station
- SeisMonitor.monitor.picker.utils.eqt_picks_2_seismonitor_fmt(eqt_folder, mseed_folder, out_path)[source]
Convert EQTransformer picks to SeisMonitor format.
- Parameters:
eqt_folder (str) – Directory containing EQTransformer pick files
mseed_folder (str) – Directory containing MSEED files
out_path (str) – Output path for the converted CSV file
- Returns:
Converted picks DataFrame
- Return type:
pandas.DataFrame
- SeisMonitor.monitor.picker.utils.get_filenames(mseed, filter_net=None, filter_sta=None, filter_cha=None)[source]
Retrieve MSEED filenames with optional filtering.
- Parameters:
mseed (str) – Path to MSEED files directory
filter_net (list, optional) – Networks to exclude
filter_sta (list, optional) – Stations to exclude
filter_cha (list, optional) – Channels to include (if specified)
- Returns:
Filtered filenames
- Return type:
list
- Raises:
Exception – If filter parameters are not lists
- SeisMonitor.monitor.picker.utils.get_pickframe(path, csv_filename)[source]
Collect picks from CSV files in a directory structure.
- Parameters:
path (str) – Root directory containing station folders with picks
csv_filename (str) – Name of CSV file containing picks
- Returns:
Combined picks DataFrame
- Return type:
pandas.DataFrame
- SeisMonitor.monitor.picker.utils.get_picks(datapicks, datalist, min_p_prob=0.3, min_s_prob=0.3, one_single_sampling_rate=-1, mode='df_obj', export=None)[source]
Read PhaseNet picks and convert to desired format.
- Parameters:
datapicks (str) – Path to PhaseNet picks CSV
datalist (str) – Path to datalist CSV
min_p_prob (float) – Minimum P-phase probability
min_s_prob (float) – Minimum S-phase probability
one_single_sampling_rate (float) – Override sampling rate (-1 for auto)
mode (str) – Output mode (‘pick_obj’ or ‘df_obj’)
export (str, optional) – Path to export DataFrame as CSV
- Returns:
Picks in specified format
- Return type:
list or pandas.DataFrame
- SeisMonitor.monitor.picker.utils.id_maker(pick_time, net, station, loc, ch, phasehint)[source]
Create SeisComP-style pick PublicID.
- Parameters:
pick_time (UTCDateTime) – Pick time
net (str) – Network code
station (str) – Station code
loc (str) – Location code
ch (str) – Channel code
phasehint (str) – Phase hint (‘P’ or ‘S’)
- Returns:
SeisComP pick PublicID
- Return type:
str
- SeisMonitor.monitor.picker.utils.make_dataframe(mseed, json_path, filter_net=None, filter_sta=None, filter_cha=None)[source]
Create DataFrame from MSEED files and JSON metadata.
- Parameters:
mseed (str) – Directory containing MSEED files
json_path (str) – Path to JSON metadata file
filter_net (list, optional) – Networks to exclude
filter_sta (list, optional) – Stations to exclude
filter_cha (list, optional) – Channels to include
- Returns:
DataFrame with waveform metadata
- Return type:
pandas.DataFrame
- SeisMonitor.monitor.picker.utils.make_phasenet_datalist(datadir, json_path, datalist_path, channel_list=None, filter_network=None, filter_station=None, **kwargs)[source]
Create PhaseNet datalist CSV file.
- Parameters:
datadir (str) – Directory with MSEED files
json_path (str) – Path to JSON metadata
datalist_path (str) – Output path for datalist CSV
channel_list (list, optional) – Channels to include
filter_network (list, optional) – Networks to exclude
filter_station (list, optional) – Stations to exclude
kwargs – Additional keyword arguments
- Returns:
Directory containing the datalist
- Return type:
str
- SeisMonitor.monitor.picker.utils.merge_picks(path, csv_filename, output_path, sort=None)[source]
Merge picks from multiple CSV files into one.
- Parameters:
path (str) – Root directory containing station folders with picks
csv_filename (str) – Name of CSV file containing picks
output_path (str) – Path for output merged CSV
sort (str, optional) – Column name to sort by
- SeisMonitor.monitor.picker.utils.mv_mseed2onefolder(mseed_folder, one_folder)[source]
Move MSEED files from subfolders to a single folder.
- Parameters:
mseed_folder (str) – Source directory with MSEED files
one_folder (str) – Destination directory
- SeisMonitor.monitor.picker.utils.mv_mseed2stationfolder(one_folder, mseed_folder)[source]
Move MSEED files to station-specific subfolders.
- Parameters:
one_folder (str) – Source directory with MSEED files
mseed_folder (str) – Destination base directory
- SeisMonitor.monitor.picker.utils.phasenet_from_console(pnet_obj, msg_author)[source]
Run PhaseNet from console with specified parameters.
- Parameters:
pnet_obj – Object with PhaseNet configuration attributes
msg_author (str) – Author identifier for logging
- SeisMonitor.monitor.picker.utils.pick_constructor(datalist, picks, prob, wf_name, ph_type, min_prob, one_single_sampling_rate=-1)[source]
Construct Pick objects from PhaseNet data.
- Parameters:
datalist (str) – Path to datalist CSV
picks (list) – Pick sample points
prob (list) – Pick probabilities
wf_name (str) – Waveform name
ph_type (str) – Phase type (‘P’ or ‘S’)
min_prob (float) – Minimum probability threshold
one_single_sampling_rate (float) – Override sampling rate
- Returns:
List of Pick objects
- Return type:
list
- Raises:
Exception – If datalist file is missing
- SeisMonitor.monitor.picker.utils.picks2df(picks)[source]
Convert list of Pick objects to DataFrame.
- Parameters:
picks (list) – List of Pick objects
- Returns:
Converted DataFrame
- Return type:
pandas.DataFrame
- SeisMonitor.monitor.picker.utils.rm_phasenet_duplicate_picks(path, output_path)[source]
Remove duplicate picks from PhaseNet output.
- Parameters:
path (str) – Path to input picks CSV
output_path (str) – Path for output cleaned CSV
- Returns:
Cleaned picks DataFrame
- Return type:
pandas.DataFrame
- SeisMonitor.monitor.picker.utils.sample2time(sample, to, df, segment, dtt)[source]
Convert PhaseNet sample count to time.
- Parameters:
sample (str) – Sample point of pick
to (datetime) – Waveform start time
df (float) – Sampling rate
segment (int) – Segment number
dtt (float) – Waveform duration in seconds
- Returns:
(pick_time, creation_time, observation_type)
- Return type:
tuple