gamma-phase-associator

Polar Sponsor
爱发电 赞助
.NET 9.0

GaMMA 地震相位关联算法的 Python 包概述。该算法期望相位拾取数据和台站数据,如...

GAMMA 关联器库

功能概述

GAMMA 关联器库是一项面向实际任务的技能,主要用于GAMMA 是怎样的?;GAMMA 是一个地震相关联器算法, 将关联作为一个不受监督的集群问题处理;

核心要点

  • 它使用多变量的 Gaussian 分布器。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

GaMMA 关联器库

GaMMA 是什么?

GaMMA 是一种地震震相关联算法,将关联问题建模为无监督聚类问题。它使用多元高斯分布对某次地震事件的所有震相拾取结果进行建模,并通过期望最大化(Expectation-Maximization, EM)算法完成拾取分配,同时估计震源参数——即地震位置、发震时刻和震级。

GaMMA 是该算法的 Python 实现库。对于输入的地震波形数据,本库假设 P 波与 S 波的拾取结果(P/S wave picks)已预先提取完成。本文档介绍其核心 API 的使用方法。

Zhu, W., McBrearty, I. W., Mousavi, S. M., Ellsworth, W. L., & Beroza, G. C. (2022). Earthquake phase association using a Bayesian Gaussian mixture model. Journal of Geophysical Research: Solid Earth, 127(5).

本技能基于代码仓库 https://github.com/AI4EPS/GaMMA 衍生而来。

安装 GaMMA

pip install git+https://github.com/wayneweiqiang/GaMMA.git

GaMMA 核心 API

association

函数签名

def association(picks, stations, config, event_idx0=0, method="BGMM", **kwargs)

功能说明

使用贝叶斯高斯混合模型(BGMM)或标准高斯混合模型(GMM)对地震震相拾取(P 波与 S 波)进行事件关联。该函数基于拾取的到时与振幅信息进行聚类,并拟合高斯混合模型以估计地震的位置、发震时刻与震级。

1. 输入参数

参数 类型 默认值 说明
picks DataFrame 必需 地震震相拾取数据
stations DataFrame 必需 台站元数据(含空间坐标)
config dict 必需 配置参数字典
event_idx0 int 0 事件编号起始索引
method str "BGMM" "BGMM"(贝叶斯)或 "GMM"(标准)

2. DataFrame 所需列名

picks DataFrame
列名 类型 说明 示例
id str 台站标识符(须与 stations 中的 id 匹配) network.station. 或 network.station.location.channel
timestamp datetime/str 拾取到时(ISO 格式字符串或 datetime 类型) "2019-07-04T22:00:06.084"
type str 震相类型:"p" 或 "s"(小写) "p"
prob float 拾取概率 / 权重(取值范围:0–1) 0.94
amp float 振幅(单位:m/s;当 use_amplitude=True 时为必需字段) 0.000017

注意事项:

  • 时间戳必须为 UTC 时间,或已转换为 UTC
  • 震相类型在内部被强制转为小写
  • 当 use_amplitude=True 时,amp == 0 或 amp == -1 的拾取将被过滤
  • DataFrame 的索引将用于在输出中追踪拾取项的身份
stations DataFrame
列名 类型 说明 示例
id str 台站标识符 "CI.CCC..BH"
x(km) float X 坐标(单位:km,投影坐标系) -35.6
y(km) float Y 坐标(单位:km,投影坐标系) 45.2
z(km) float Z 坐标(单位:km,通常为负值,表示海拔/深度) -0.67

注意事项:

  • 坐标应采用投影后的局部坐标系(例如可使用 pyproj 包进行转换)
  • id 列内容必须与 picks DataFrame 中的 id 值完全一致(如 network.station. 或 network.station.location.channel)
  • 相同 id 的多条台站记录将按唯一 id 分组;属性一致者合并为单值,属性冲突者保留为排序后的列表

3. 配置字典(config)键说明

必需键
键 类型 说明 示例
dims list[str] 待求解的位置维度 ["x(km)", "y(km)", "z(km)"]
min_picks_per_eq int 每场地震所需的最少拾取数 5
max_sigma11 float 允许的最大到时残差(单位:秒) 2.0
use_amplitude bool 是否在聚类中使用振幅信息 True
bfgs_bounds tuple BFGS 优化的参数边界 ((-35, 92), (-128, 78), (0, 21), (None, None))
oversample_factor float 初始 GMM 成分过采样倍数 5.0(BGMM),1.0(GMM)

关于 dims 的说明:

  • 可选值:["x(km)", "y(km)", "z(km)"]、["x(km)", "y(km)"] 或 ["x(km)"]

关于 bfgs_bounds 的说明:

  • 格式:((x_min, x_max), (y_min, y_max), (z_min, z_max), (None, None))
  • 最后一个元组对应时间维度(无界)
速度模型相关键
键 类型 默认值 说明
vel dict {"p": 6.0, "s": 3.47} 均匀速度模型(单位:km/s)
eikonal dict/None None 一维速度模型(用于走时计算)
DBSCAN 预聚类相关键(可选)
键 类型 默认值 说明
use_dbscan bool True 启用 DBSCAN 预聚类
dbscan_eps float 25 拾取间允许的最大时间间隔(单位:秒)
dbscan_min_samples int 3 DBSCAN 邻域内所需最小样本数
dbscan_min_cluster_size int 500 用于层级分裂的最小聚类规模
dbscan_max_time_space_ratio float 10 用于分裂操作的最大“时间/空间”比值
  • dbscan_eps 可由 estimate_eps 函数自动估算
筛选相关键(可选)
键 类型 默认值 说明
max_sigma22 float 1.0 振幅残差最大值(对数尺度;当 use_amplitude=True 时为必需)
max_sigma12 float 1.0 最大协方差值
max_sigma11 float 2.0 震相到时残差最大值(单位:秒)
min_p_picks_per_eq int 0 每场地震所需的最少 P 波拾取数
min_s_picks_per_eq int 0 每场地震所需的最少 S 波拾取数
min_stations int 5 每场地震所涉最少独立台站数
其他可选键
键 类型 默认值 说明
covariance_prior list[float] 自动推导 协方差先验(顺序为 [time, amp])
ncpu int 自动推导 并行处理所用 CPU 核心数

4. 返回值

返回元组 (events, assignments):

events(list[dict])

字典列表,每个字典代表一次已关联的地震事件:

键 类型 说明
time str 发震时刻(ISO 8601 格式,含毫秒)
magnitude float 估计震级(若 use_amplitude=False,则为 999)
sigma_time float 时间不确定性(单位:秒)
sigma_amp float 振幅不确定性(log₁₀ 尺度)
cov_time_amp float 时间–振幅协方差
gamma_score float 关联质量评分
num_picks int 已分配拾取总数
num_p_picks int 已分配 P 波拾取数
num_s_picks int 已分配 S 波拾取数
event_index int 唯一事件索引
x(km) float 震源 X 坐标
y(km) float 震源 Y 坐标
z(km) float Z 坐标(深度)
assignments(list[tuple])

元组列表,每个元组形如 (pick_index, event_index, gamma_score):

  • pick_index:原始 picks DataFrame 中的行索引
  • event_index:所关联事件的索引
  • gamma_score:该分配的概率 / 置信度

estimate_eps 函数文档

函数签名

def estimate_eps(stations, vp, sigma=2.0)

功能说明

根据台站空间分布估算适用于地震震相拾取聚类的 DBSCAN epsilon(eps)参数。该参数控制 DBSCAN 聚类算法中视为邻近点的最大时间距离。

1. 输入参数

参数 类型 默认值 说明
stations DataFrame 必需 含三维坐标的台站元数据
vp float 必需 P 波速度(单位:km/s)
sigma float 2.0 高于均值的标准差倍数

2. DataFrame 所需列名

stations DataFrame
列名 类型 说明 示例
x(km) float X 坐标(单位:km) -35.6
y(km) float Y 坐标(单位:km) 45.2
z(km) float Z 坐标(单位:km) -0.67

3. 返回值

类型 说明
float 用于 DBSCAN 聚类的 epsilon 值(单位:秒)

4. 使用示例

from gamma.utils import estimate_eps

# 假设 stations DataFrame 已准备就绪,且包含 x(km)、y(km)、z(km) 列
vp = 6.0  # P 波速度(单位:km/s)

# 基于台站间距自动估算 eps
eps = estimate_eps(stations, vp, sigma=2.0)

# 在 config 中使用
config = {
    "use_dbscan": True,
    "dbscan_eps": eps,  # 或使用 estimate_eps(stations, config["vel"]["p"])
    "dbscan_min_samples": 3,
    # ... 其他配置项
}
典型使用模式
from gamma.utils import association, estimate_eps

# 自动估算 eps
config["dbscan_eps"] = estimate_eps(stations, config["vel"]["p"])

# 或手动指定(实践中更常见)
config["dbscan_eps"] = 15  # 单位:秒

5. 实践建议

  • 在示例 notebook 中,该函数常被注释掉,而直接采用硬编码值(10–15 秒)
  • 实际应用中,用户往往倾向针对特定台网或区域手动调优
  • 典型输出值范围约为 10–20 秒,具体取决于台站密度
  • 当最优 eps 值未知,或面对新布设台网时尤为有用

6. 相关配置项

该函数输出通常用于以下配置项:

config["dbscan_eps"] = estimate_eps(stations, config["vel"]["p"])
config["dbscan_min_samples"] = 3
config["dbscan_min_cluster_size"] = 500
config["dbscan_max_time_space_ratio"] = 10

相关专题

更多
Gamma技巧大全
Gamma技巧大全

PHP中文网为您精心汇总了Gamma高效创作技巧与经验。本合集全面解析AI一键生成PPT、网页及文档的进阶玩法,涵盖Prompt提示词优化、大纲微调及排版美化等实用干货。无论您是职场打工人还是学生党,都能在此掌握省时省力的AI演示文稿制作秘籍,轻松提升内容创作效率。

2026.06.09

107

11

gammaai生成ppt提示词大全
gammaai生成ppt提示词大全

PHP中文网为您精心汇总了Gamma AI生成PPT的提示词教程大全。本合集全面解析高质量提示词的编写逻辑,并提供涵盖不同场景的结构化指令模板。无论您是想快速生成专业大纲,还是精准控制排版与视觉风格,都能在此找到实用指南,助您轻松打造精美演示文稿。

2026.06.09

159

26

gamma软件使用教程
gamma软件使用教程

PHP中文网为您精心整理了Gamma软件使用教程合集。本专题专为新手打造,全面涵盖从账号注册、AI一键生成PPT到个性化编辑与导出的完整流程。无论您是想快速制作专业演示文稿,还是想掌握提示词优化等进阶技巧,都能在此找到一站式解答,助您轻松玩转AI办公。

2026.06.09

138

10

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

0

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GenerateAPI使用指南
GenerateAPI使用指南

共0课时 | 0人学习

GammaAcademy学习手册
GammaAcademy学习手册

共0课时 | 0人学习

Gamma Basics 入门手册
Gamma Basics 入门手册

共0课时 | 0人学习