GEMScienceTools/oq-vmtk

GitHub: GEMScienceTools/oq-vmtk

OQ-VMTK 是一个开源的地震结构建模与易损性评估 Python 工具包,为地震工程师提供从地震动处理到非线性分析再到脆弱性函数推导的完整标准化工作流。

Stars: 13 | Forks: 10

[![DOI](https://img.shields.io/badge/DOI-10.5281%2Fzenodo.17524871-1082c3)](https://doi.org/10.5281/zenodo.17524871) [![Windows 测试](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0c86a52d48031422.svg)](https://github.com/GEMScienceTools/oq-vmtk/actions/workflows/windows_test.yaml) [![Linux 测试](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/9e920862f4031428.svg)](https://github.com/GEMScienceTools/oq-vmtk/actions/workflows/linux_test.yaml) [![Contributors](https://img.shields.io/github/contributors/GEMScienceTools/oq-vmtk?style=for-the-badge)][contributors-url] [![Forks](https://img.shields.io/github/forks/GEMScienceTools/oq-vmtk?style=for-the-badge)][forks-url] [![Stargazers](https://img.shields.io/github/stars/GEMScienceTools/oq-vmtk?style=for-the-badge)][stars-url] [![Issues](https://img.shields.io/github/issues/GEMScienceTools/oq-vmtk?style=for-the-badge)][issues-url] [![project_license](https://img.shields.io/github/license/GEMScienceTools/oq-vmtk?style=for-the-badge)][license-url]
OQ-VMTK Logo

Vulnerability Modeller's ToolKit (OQ-VMTK)

一个用于地震结构建模、非线性分析和地震易损性评估的开源 Python 工具包 — 由全球地震模型(GEM)基金会开发。

文档 »  ·  演示  ·  报告 Bug  ·  提出功能请求

## 概述 OQ-VMTK 是一个用于区域性地震易损性和风险建模的 Python 库。它提供了一个独立完整的工作流——从地震动处理和结构模型编译,到非线性分析以及易损性和脆弱性函数的推导,由 [OpenSeesPy](https://openseespydoc.readthedocs.io) 提供支持。 该工具包专为需要可重现且标准化的函数库以集成到其结构评估工作流中的地震工程师和模型开发者而设计。 ## 模块 | 模块 | 描述 | |--------|-------------| | `calibration` | 根据 SDOF 能力曲线,为 MDOF 质点-质量模型校准基于楼层的力-变形关系。 | | `modeller` | 在 OpenSeesPy 中编译并运行 SDOF 和 MDOF 结构模型:模态分析、重力、静力/循环 pushover 以及非线性时程分析(包括增量动力分析)。 | | `imcalculator` | 读取地震动记录文件并计算多种强度指标(PGA、PGV、PGD、SA、AvgSA、Arias Intensity、CAV、D5–95、FIV3)。 | | `imselection` | 使用效率性、熟练度、实用性和相对充分性指标(RSM)评估并排序用于地震需求建模的强度指标候选项。 | | `postprocessor` | 根据非线性分析结果(改进的云分析、多条带分析、增量动力分析)推导概率地震需求模型、易损性和脆弱性函数。支持对数正态累积分布函数、GLM、有序 CLM 和 MCMC 方法。 | | `slfgenerator` | 根据可损毁构件清单数据(结构、非结构和内容物)生成楼层损失函数(SLF)。 | | `plotter` | 为工作流的所有阶段生成可用于出版物的高质量图形:模型几何形状、地震需求剖面、易损性函数、脆弱性曲线、SLF 等。 | | `utilities` | 用于 I/O、数据格式转换以及与 OpenQuake Engine 输出互操作性的辅助函数。 | ## 核心功能 ### 结构建模 - 通过 OpenSeesPy 直接在 Python 中编译理想化的 SDOF 和 MDOF 质点-质量模型。 - 根据 SDOF 能力曲线校准 MDOF 层间属性,以实现基本周期和模态参与的一致性。 - 在统一的 API 中运行模态分析、静力/循环 pushover、重力分析和非线性时程分析。 ### 地震动处理 - 批量处理地震动记录文件以提取标量和谱强度指标。 - 计算反应谱和全套 IM(SA、AvgSA、PGA、PGV、PGD、AI、CAV、D5–95、FIV3)。 - 使用相对充分性指标对用于地震需求建模的最佳 IM 进行排序和选择。 ### 易损性评估 - **改进的云分析(MCA):** 拟合概率地震需求模型(对数线性回归)并推导易损性函数,包含自助法和贝叶斯(MCMC)不确定性量化。 - **多条带分析(MSA):** 通过最大似然估计从符合危险性的地震动套件中推导易损性函数。 - **增量动力分析(IDA):** 使用 Hunt, Trace and Fill 算法将记录缩放至倒塌,并通过矩量法推导易损性函数。 - 九种易损性拟合方法,包括对数正态 CDF 变体、GLM(logit/probit)、有序 CLM(常数和可变离散度)以及 MCMC。 ### 脆弱性与损失评估 - 将易损性函数与后果模型(损伤-损失比)相结合,推导具有显式不确定性处理的平均脆弱性函数(Beta 分布、显式和 Silva 2019 COV 方法)。 - 应用楼层损失函数推导组件级和系统级脆弱性模型。 - 通过与场地危险性曲线整合,计算平均年损伤概率(AADP)和平均年损失比(AALR)。 ## 演示 Notebooks `demos/` 目录包含十三个独立的 Jupyter notebooks,涵盖了完整的易损性工作流: | 演示 | 描述 | |------|-------------| | `IntensityMeasureProcessing` | 地震动记录处理和强度指标提取 | | `IntensityMeasureSelection` | 使用相对充分性指标进行 IM 选择(MCA 和 IDA) | | `ModelCompilation` | SDOF 和 MDOF 模型校准和编译 | | `ModalAnalysis` | 模态分析和动态属性验证 | | `PushoverAnalysis` | 单调和循环静力 pushover 分析 | | `NonlinearTimeHistoryAnalysis` | 非线性时程分析和需求剖面提取 | | `ModifiedCloudAnalysis` | 使用改进的云分析进行端到端易损性评估 | | `MultipleStripeAnalysis` | 使用多条带分析进行端到端易损性评估 | | `IncrementalDynamicAnalysis` | 使用增量动力分析进行端到端易损性评估 | | `FragilityAnalysis` | 比较所有支持的易损性拟合方法 | | `StoreyLossFunctionGeneration` | 从组件清单数据生成楼层损失函数 | | `StoreyLossFunctionApplication` | 使用楼层损失函数推导系统级脆弱性模型 | ## 安装 强烈建议在**虚拟环境**中安装 OQ-VMTK,以避免与 OpenQuake Engine 依赖要求发生冲突。 ### 1. 克隆仓库 ``` git clone https://github.com/GEMScienceTools/oq-vmtk.git cd oq-vmtk ``` ### 2. 创建并激活虚拟环境 ``` # 创建 python -m venv .venv # Windows python3 -m venv .venv # Linux / macOS # 激活 .venv\Scripts\activate # Windows source .venv/bin/activate # Linux / macOS ``` 稍后如需退出:`deactivate` Virtual environment setup ### 3. 安装依赖 选择与您的操作系统和 Python 版本相匹配的 requirements 文件: **Windows:** ``` pip install -r requirements-py311-win64.txt # Python 3.11 pip install -r requirements-py312-win64.txt # Python 3.12 ``` **Linux:** ``` pip install -r requirements-py311-linux.txt # Python 3.11 pip install -r requirements-py312-linux.txt # Python 3.12 ``` **macOS:** OpenSeesPy 目前不支持 Apple Silicon(M1/M2/M3)上的 macOS。建议运行 Linux 虚拟机。 检查您的 Python 版本:`python --version` Installing requirements ### 4. 安装软件包 **标准安装(推荐):** ``` pip install . ``` **可编辑安装**(适用于修改源代码的贡献者): ``` pip install -e . ``` Package installation ### 5. 验证 ``` python -c "import openquake.vmtk; print(openquake.vmtk.__version__)" ``` 预期输出:`1.1.0` ## 运行演示 Jupyter Lab 会随 OQ-VMTK 自动安装。 ``` # 首先激活你的 virtual environment,然后: jupyter-lab ``` 导航到 `demos/` 文件夹并打开任意 notebook。每个演示都是完全独立的,并包含输入数据。 ## 文档 完整的 API 参考、模块指南和示例可在以下网址获取: **[https://gemsciencetools.github.io/oq-vmtk](https://gemsciencetools.github.io/oq-vmtk)** ## 许可证 OQ-VMTK 基于 **GNU Affero General Public License v3.0 (AGPL-3.0)** 发布。 [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) 您可以自由使用、修改和分发本软件,但需遵循 AGPL v3 的条款。对源代码进行的任何修改也必须在相同的许可证下发布。有关完整的许可证文本,请参见 [LICENSE](./LICENSE) 文件。 ## 引用 如果您在学术或专业工作中使用 OQ-VMTK,请同时引用该软件发布版本及其配套论文。 ### 软件 v1.1.0 版本已归档于 Zenodo: [![DOI](https://img.shields.io/badge/DOI-10.5281%2Fzenodo.17524871-1082c3)](https://doi.org/10.5281/zenodo.17524871) ``` @software{oq_vmtk_2025, author = {{GEM Foundation}}, title = {{OpenQuake Vulnerability Modeller's Toolkit (oq-vmtk)}}, version = {1.1.0}, year = {2025}, doi = {10.5281/zenodo.17524871}, url = {https://github.com/GEMScienceTools/oq-vmtk} } ``` 仓库根目录下提供了 `CITATION.cff` 文件;GitHub 会自动显示一个 **Cite this repository** 组件。 ### 配套论文 ``` @article{nafeh2026vmtk, author = {Nafeh, Al Mouayed Bellah and Aljawhari, Karim and Ettorre, Antonio and Silva, Vitor and Crowley, Helen}, title = {The {OpenQuake} {Vulnerability} {Modellers}' {Toolkit}: An Open-Source Toolkit for Earthquake Vulnerability Modelling Applications}, journal = {(In Press)}, year = {2026} } ``` ## 参考文献 - Nafeh, A.M.B., Aljawhari, K., Ettorre, A., Silva, V., and Crowley, H. (2026). *The OpenQuake Vulnerability Modellers' Toolkit: An Open-Source Toolkit for Earthquake Vulnerability Modelling Applications*.(已接收) ## 贡献者 Contributors

(返回顶部)

标签:Python, 后端开发, 地震工程, 无后门, 易损性评估, 结构建模, 逆向工具, 非线性分析