README
🚀 GW150914 MCP信号搜索
本项目是一个引力波信号检测与优化系统,借助模型上下文协议(MCP)实现高效的参数空间探索,专注于分析GW150914事件的引力波信号。
🚀 快速开始
前提条件
- Python 3.9 或更高版本
- UV 包管理器
若尚未安装UV,可运行以下命令:
curl -LsSf https://astral.sh/uv/install.sh | sh
安装步骤
- 克隆并设置项目:
git clone <repository-url>
cd gw150914-mcp-signal-search
make setup
- 配置环境变量:
cp env.template .env
# 使用你的OpenAI API密钥编辑.env文件
- 安装依赖项:
make install-dev
运行系统
- 启动分析服务器和优化客户端:
make run-client SERVER_PATH=mcp-server/gw_analysis_server.py
- 或者运行完整演示(包含服务器和客户端):
make demo
✨ 主要特性
引力波分析服务器工具
- 数据获取:从GWOSC下载并预处理引力波数据。
- 匹配滤波搜索:执行基于模板的信号检测。
- 网络分析:进行多探测器相干分析。
- 可视化:生成图表和分析结果。
优化客户端特性
- 人工智能驱动搜索:利用OpenAI GPT进行智能参数探索。
- 四维参数空间:优化质量1、质量2、赤经和赤纬参数。
- 收敛检测:在找到最佳信噪比时自动停止。
- 进度跟踪:在优化过程中提供可视化反馈。
📦 安装指南
前提条件
- Python 3.9 或更高版本
- UV 包管理器
安装步骤
- 克隆并设置项目:
git clone <repository-url>
cd gw150914-mcp-signal-search
make setup
- 配置环境变量:
cp env.template .env
# 使用你的OpenAI API密钥编辑.env文件
- 安装依赖项:
make install-dev
💻 使用示例
基础用法
# 客户端将自动为GW150914事件优化参数
python mcp-client/gw_optimization_client.py mcp-server/gw_analysis_server.py
高级用法
编辑客户端中的优化查询,可指定不同的参数范围,包括:
- 质量范围(当前为10 - 80个太阳质量)
- 天空位置范围(赤经:0 - 2π,赤纬:-π/2 到 π/2)
- 收敛标准
📚 详细文档
可用命令
运行 make help 查看所有可用命令:
安装与设置
make install- 安装生产依赖项make install-dev- 安装开发依赖项make setup- 完成开发设置make update- 更新所有依赖项
代码质量
make format- 使用black和isort格式化代码make lint- 运行代码检查make check- 运行所有代码质量检查make test- 运行测试
运行应用程序
make run-server- 启动引力波分析服务器make run-client SERVER_PATH=<path>- 启动优化客户端make demo- 运行完整演示
开发
make notebook- 启动Jupyter笔记本make dev-shell- 进入开发环境make clean- 清理临时文件
数据管理
make data-info- 显示数据文件信息make clean-data- 清理临时数据文件(保留应变数据)make backup-data- 备份分析结果和日志
项目结构
gw150914-mcp-signal-search/
├── data/ # 引力波数据和分析结果
│ ├── H1-1126259446-1126259478.txt # LIGO汉福德探测器应变数据 (GW150914)
│ ├── L1-1126259446-1126259478.txt # LIGO利文斯顿探测器应变数据 (GW150914)
│ ├── matched_filter_records.jsonl # 分析结果和优化历史记录
│ └── logs/ # 应用程序日志(自动生成)
│ ├── server_YYYYMMDD_HHMMSS.log # 服务器执行日志
│ ├── client_YYYYMMDD_HHMMSS.log # 客户端优化日志和人工智能交互日志
│ └── demo_YYYYMMDD_HHMMSS.log # 演示运行的组合日志
├── mcp-client/
│ └── gw_optimization_client.py # 人工智能驱动的优化客户端
├── mcp-server/
│ └── gw_analysis_server.py # 引力波分析MCP服务器
├── pyproject.toml # 项目配置
├── Makefile # 构建和部署命令
├── env.template # 环境变量模板
└── README.md # 本文件
数据目录说明
data/ 目录包含GW150914事件的引力波应变数据和分析结果:
应变数据文件
-
H1-1126259446-1126259478.txt:LIGO汉福德(H1)探测器应变数据- GPS时间范围:1126259446 到 1126259478(GW150914事件前后32秒)
- 格式:两列 - GPS时间(秒)和应变振幅
- 采样率:4096 Hz
- 数据点:每个探测器约131,072个样本
-
L1-1126259446-1126259478.txt:LIGO利文斯顿(L1)探测器应变数据- 格式和时间范围与H1数据相同
- 包含双黑洞合并产生的引力波信号
分析结果
matched_filter_records.jsonl:JSON Lines文件,包含优化结果- 每行代表一次匹配滤波分析结果
- 包含信噪比(SNR)值、模板参数、探测器响应
- 跟踪优化历史和参数探索过程
- 供人工智能客户端从先前尝试中学习
应用程序日志
logs/:包含带时间戳的执行日志的目录(自动生成)server_YYYYMMDD_HHMMSS.log:服务器执行日志,带时间戳client_YYYYMMDD_HHMMSS.log:客户端优化日志和人工智能交互日志demo_YYYYMMDD_HHMMSS.log:演示运行的组合日志- 所有标准输出和错误输出都带有时间戳记录
- 运行
make run-server、make run-client或make demo时自动创建日志
数据格式详情
应变数据格式:
GPS_TIME STRAIN_AMPLITUDE
1.126259446000000000e+09 2.177040281448404468e-19
1.126259446000244141e+09 2.087638998822567751e-19
...
分析结果格式:
{
"timestamp": "010725",
"max_network_snr": 7.3055496414353565,
"max_snr_time": 1126259462.4360352,
"template_parameters": {
"mass1": 17.0,
"mass2": 9.5,
"ra": 0.94,
"dec": -0.31
},
"detector_snrs_at_max": {
"H1": {"snr_abs": 5.064289109514169},
"L1": {"snr_abs": 5.2653614670535624}
}
}
数据使用说明
- 应变数据由MCP服务器自动加载进行分析。
- 处理过程中,结果缓存到
/tmp/gw-mcp/。 - 优化客户端使用历史结果指导参数搜索。
- 可使用服务器的绘图工具可视化数据。
- 所有执行日志自动保存 到
data/logs/,并带有时间戳,用于调试和分析。
🔧 技术细节
科学背景
本项目聚焦于GW150914事件,这是首次直接探测到的引力波事件:
- 事件时间:GPS 1126259462.427
- 事件源:双黑洞合并(约36 + 29个太阳质量)
- 探测器:LIGO汉福德(H1)和LIGO利文斯顿(L1)
- 峰值信噪比:网络中约为24
结果与验证
本项目在 北京人工智能科学黑客松 中开发并验证,取得了有前景的结果,证明了大语言模型代理驱动的引力波检测的有效性。
可靠性分析
系统在不同初始条件下表现出一致的收敛行为:
参数演化和收敛分析显示,在探索过程中逐渐收敛到真实值。系统在不同初始条件下表现一致,平均迭代13.3 ± 3.5次达到最大信噪比19.56。
检测性能
自动化系统成功检测并分析了引力波信号:
网络信噪比时间序列显示成功检测到GW150914信号。系统在GPS时间1126259462.428达到峰值网络信噪比19.6,证明了在真实引力波数据上使用大语言模型代理验证的自动化引力波数据检测能力。
验证结果
- 收敛性:探索过程中参数逐渐收敛到真实值。
- 一致性:模型在不同初始条件下表现一致。
- 准确性:成功达到约19.6的最大信噪比,符合理论预期。
- 自动化:在真实LIGO数据上验证了全自动化检测流程。
技术报告
如需详细的方法、结果和分析,请参阅:docs/Hackathon.pdf
由王贺(国际理论物理中心亚太地区办公室,中国科学院大学)和董一鸣(北京大学)在2025年8月24日的北京人工智能科学黑客松上展示
开发说明
设置开发环境
# 完成开发设置
make setup
# 安装预提交钩子
make pre-commit-install
# 运行测试
make test
# 检查代码质量
make check
依赖项
核心依赖项包括:
mcp:模型上下文协议框架numpy,scipy:科学计算库gwpy,pycbc:引力波分析库openai:人工智能集成库matplotlib:可视化库
📄 许可证
本项目采用MIT许可证,详情请参阅 LICENSE 文件。
📚 学习资源
MCP(模型上下文协议)资源
- MCP官方文档 - 完整的入门指南和API参考
- DeepLearning.AI MCP课程 - "MCP:使用Anthropic构建富上下文人工智能应用程序" - 由Elie Schoppik提供的全面实践课程
- 使用模型上下文协议构建人工智能科学家代理教程 - 使用MCP框架构建人工智能科学家代理的综合教程
- MCP.Science仓库 - 用于科学研究的开源MCP服务器,星标数超过65
- 如何构建自己的MCP服务器 - 创建自定义MCP服务器的分步教程
- 集成MCP服务器指南 - MCP服务器与人工智能应用程序的完整集成指南
科学计算与人工智能资源
资源重要性说明
本项目展示了MCP在科学计算中的实际应用,特别是在引力波分析方面。上述资源提供了:
- 基础知识:理解MCP架构和实现。
- 实践学习:构建和部署MCP服务器和客户端。
- 科学背景:人工智能在物理学和天文学中的实际应用。
- 社区交流:与从事类似项目的研究人员和开发人员建立联系。
MCP入门指南
- 从 MCP官方文档 开始了解核心概念。
- 参加 DeepLearning.AI课程 进行实践实现。
- 探索 MCP.Science仓库 了解科学用例。
- 将本项目作为模板,用于你自己的引力波或科学分析应用。
🙏 致谢
- 感谢LIGO科学合作组织提供引力波数据。
- 感谢PyCBC和GWpy社区提供分析工具。
- 感谢Anthropic开发MCP框架和协议。
- 感谢路径积分研究所提供MCP.Science开源服务器。
- 感谢DeepLearning.AI和Elie Schoppik提供教育资源。
Scan to join WeChat group