
引力波数据是用 Python 分析的,真牛!
Python 作为数据分析师人员应该掌握的一门技术,python技术的发展及使用在社会上得到更大的应用。
美国科学家11日宣布,他们去年9月首次探测到引力波。这一发现印证了物理学大师爱因斯坦100年前的预言。宣布这一发现的,是激光干涉引力波天文台(LIGO)的负责人。
这个机构诞生于上世纪90年代,进行引力波观测已经有近30年。那么观测到的引力波数据的量应该很大,科学家如何对这些数据进行分析?有没有用到Python编程语言?
答案是肯定的。笔者在Github上发现了一个专门用于分析引力波数据的Python包:GWPY。据维护者介绍,GWPY的代码来自LIGO和另一个名叫Virgo的机构,维护者将这两个机构科学家的Python代码整理,最终的产品就是GWPY这个用户友好的Python包。
在具体介绍GWPY之前,先给和笔者一样的小白简单科普一下引力波和LIGO的相关知识。
什么是引力波?
This 3-D visualization shows the gravitational waves produced by two orbiting black holes. (Credit: NASA)
上图是两个黑洞所产生的引力波的3-D模拟图(NASA)。
首 先,什么是引力波?在物理学上,引力波是爱因斯坦广义相对论所预言的一种以光速传播的时空波动,如同石头丢进水里产生的波纹一样,引力波被视为宇宙中的 “时空涟漪”。通常引力波的产生非常困难,地球围绕太阳以每秒30千米的速度前进,发出的引力波功率仅为200瓦,还不如家用电饭煲功率大。宇宙中大质量 天体的加速、碰撞和合并等事件才可以形成强大的引力波,但能产生这种较强引力波的波源距离地球都十分遥远,传播到地球时变得非常微弱。
下面分享两个优秀的视频,很好地解释了引力波及背后的原理。第一个来自LIGO,第二个则是比较通俗的漫画式讲解。
LIGO科学家的解释:
漫画式通俗解释:
LIGO是什么?
激光干涉引力波观测站Laser Interferometer Gravitational-Wave ObservatoryLIGO是加州理工学院(Caltech)和麻省理工学院(MIT)的合作实验室,现在也有其他的大学参与。实验资金来源于美国国家科学基金会。LIGO是用来寻找宇宙中的引力波,从而可以验证黑洞的存在和检验广义相对论。
LIGO 主要有两个观测点,位于路易斯安那Livingston Parish的LIGO Livingston观测点,和华盛顿 Hanford的LIGO Hanford观测点。除此之外,在加州Passadena 的Caltech校园中还有LIGO 40m Prototype 。
LIGO是如何探测引力波的?
GWPY:LIGO用它分析引力波数据?
接下来是本文的重头戏。我们一起来学习如何GWPY分析引力波数据。下面的介绍及示例均来自GWPY的官方文档。
安装
很简单,pip install gwpy就可以完成安装。
不过安装的过程可能会比较长,因为gwpy使用的依赖包比较多,包括numpy、 scipy、 cycler、matplotlib、astropy等。
面向对象编程
GWPY是一个面向对象编程的Python包,也就是说,数据对象是这个包的核心关注点。每一个数据对象都体现为一个类实例,包含了其属性和包含的数据。
如果想创建一个新的类实例,建议使用标准的构建器constructor。举个例子,我们可以使用一个数据数组,生成一个TimeSeries对象:
>>> from gwpy.timeseries import TimeSeries>>> mydata = TimeSeries([1,2,3,4,5,6,7,8,9,10], sample_rate=1, epoch=0)
或者从在线数据服务器上下载:
>>> from gwpy.timeseries import TimeSeries>>> mydata = TimeSeries.fetch('H1:LDAS-STRAIN', 964656015, 964656615)
核心数据对象
据介绍,GWPY提供了4种核心数据对象,分别代表引力波探测器所产生的四种标准数据:
TimeSeries(时间序列数据)
Spectrum(光谱数据)
Spectrogram(光谱图)
DataQualityFlag
引力波数据可视化
我们知道,将引力波探测器收集的数据可视化,对于理解引力波的特性、研究引力波信号来说非常有帮助。gwpy.plotter模块中提供了一些plot类,可以直观地展示相应的数据类型。
GWPY的核心数据对象里,大部分都内置有一个plot()方法,可以让研究人员快速对某个数据集进行可视化展示。举个例子:
>>> from gwpy.timeseries import TimeSeries>>> data = TimeSeries.fetch('H1:LDAS-STRAIN', 968654552, 968654562)>>> plot = data.plot()>>> plot.show()
gwpy data plot
GWPY:利用公开的LIGO数据进行绘图
我们接下来利用LIGO公开的一些引力波时间序列数据进行绘图。我们可以直接在线加载这些数据。首先导入我们需要的模块:
>>> from urllib2 import urlopen>>> from numpy import asarray>>> from gwpy.timeseries import TimeSeries
然后,下载数据,保存为文本字符串:
>>> data = urlopen('http://www.ligo.org/science/GW100916/L-strain_hp30-968654552-10.txt').read()
现在,我们可以对文本进行解析,补充必要的元数据之后,就可以生成一个TimeSeries:
>>> ts = TimeSeries(asarray(data.splitlines(), dtype=float),>>> epoch=968654552, sample_rate=16384, unit='strain')
最后,我们就可以绘图了:
>>> plot = ts.plot()>>> plot.set_title('LIGO Livingston Observatory data for GW100916')>>> plot.set_ylabel('Gravitational-wave strain amplitude')>>> plot.show()
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在 “神经网络与卡尔曼滤波融合” 的理论基础上,Python 凭借其丰富的科学计算库(NumPy、FilterPy)、深度学习框架(PyTorch、T ...
2025-10-23在工业控制、自动驾驶、机器人导航、气象预测等领域,“状态估计” 是核心任务 —— 即从含噪声的观测数据中,精准推断系统的真 ...
2025-10-23在数据分析全流程中,“数据清洗” 恰似烹饪前的食材处理:若食材(数据)腐烂变质、混杂异物(脏数据),即便拥有精湛的烹饪技 ...
2025-10-23在人工智能领域,“大模型” 已成为近年来的热点标签:从参数超 1750 亿的 GPT-3,到万亿级参数的 PaLM,再到多模态大模型 GPT-4 ...
2025-10-22在 MySQL 数据库的日常运维与开发中,“更新数据是否会影响读数据” 是一个高频疑问。这个问题的答案并非简单的 “是” 或 “否 ...
2025-10-22在企业数据分析中,“数据孤岛” 是制约分析深度的核心瓶颈 —— 用户数据散落在注册系统、APP 日志、客服记录中,订单数据分散 ...
2025-10-22在神经网络设计中,“隐藏层个数” 是决定模型能力的关键参数 —— 太少会导致 “欠拟合”(模型无法捕捉复杂数据规律,如用单隐 ...
2025-10-21在特征工程流程中,“单变量筛选” 是承上启下的关键步骤 —— 它通过分析单个特征与目标变量的关联强度,剔除无意义、冗余的特 ...
2025-10-21在数据分析全流程中,“数据读取” 常被误解为 “简单的文件打开”—— 双击 Excel、执行基础 SQL 查询即可完成。但对 CDA(Cert ...
2025-10-21在实际业务数据分析中,我们遇到的大多数数据并非理想的正态分布 —— 电商平台的用户消费金额(少数用户单次消费上万元,多数集 ...
2025-10-20在数字化交互中,用户的每一次操作 —— 从电商平台的 “浏览商品→加入购物车→查看评价→放弃下单”,到内容 APP 的 “点击短 ...
2025-10-20在数据分析的全流程中,“数据采集” 是最基础也最关键的环节 —— 如同烹饪前需备好新鲜食材,若采集的数据不完整、不准确或不 ...
2025-10-20在数据成为新时代“石油”的今天,几乎每个职场人都在焦虑: “为什么别人能用数据驱动决策、升职加薪,而我面对Excel表格却无从 ...
2025-10-18数据清洗是 “数据价值挖掘的前置关卡”—— 其核心目标是 “去除噪声、修正错误、规范格式”,但前提是不破坏数据的真实业务含 ...
2025-10-17在数据汇总分析中,透视表凭借灵活的字段重组能力成为核心工具,但原始透视表仅能呈现数值结果,缺乏对数据背景、异常原因或业务 ...
2025-10-17在企业管理中,“凭经验定策略” 的传统模式正逐渐失效 —— 金融机构靠 “研究员主观判断” 选股可能错失收益,电商靠 “运营拍 ...
2025-10-17在数据库日常操作中,INSERT INTO SELECT是实现 “批量数据迁移” 的核心 SQL 语句 —— 它能直接将一个表(或查询结果集)的数 ...
2025-10-16在机器学习建模中,“参数” 是决定模型效果的关键变量 —— 无论是线性回归的系数、随机森林的树深度,还是神经网络的权重,这 ...
2025-10-16在数字化浪潮中,“数据” 已从 “辅助决策的工具” 升级为 “驱动业务的核心资产”—— 电商平台靠用户行为数据优化推荐算法, ...
2025-10-16在大模型从实验室走向生产环境的过程中,“稳定性” 是决定其能否实用的关键 —— 一个在单轮测试中表现优异的模型,若在高并发 ...
2025-10-15