GWPY:發現重力波的機構使用的Python套件
GWPY:發現重力波的機構使用的Python套件
2016.02.16 | 科技

圖說明

文章為《數位時代》獲授權轉載自編程派

美國科學家11日宣佈,他們去年9月首次探測到重力波。這一發現印證了物理學大師愛因斯坦100年前的預言。宣佈這一發現的,是鐳射干涉重力波天文臺(LIGO)的負責人。

這個機構誕生於上世紀90年代,進行重力波觀測已經有近30年。那麼觀測到的重力波資料的量應該很大,科學家如何對這些資料進行分析?有沒有用到Python程式設計語言?

答案是肯定的。筆者在Github上發現了一個專門用於分析重力波資料的Python套件:GWPY。據維護者介紹,GWPY的程式碼來自LIGO和另一個名叫Virgo的機構,維護者將這兩個機構科學家的Python程式碼整理,最終的產品就是GWPY這個使用者友好的Python套件。

在具體介紹GWPY之前,先給和筆者一樣不了解的人簡單科普一下重力波和LIGO的相關知識。

什麼是重力波?

圖說明

上圖是兩個黑洞所產生的重力波的3-D模擬圖(NASA)。

首先,什麼是重力波?在物理學上,重力波是愛因斯坦廣義相對論所預言的一種以光速傳播的時空波動,如同石頭丟進水裡產生的波紋一樣,重力波被視為宇宙中的「時空漣漪」。

通常重力波的產生非常困難,地球圍繞太陽以每秒30千米的速度前進,發出的重力波功率僅為200瓦,還不如家用電飯煲功率大。宇宙中大品質天體的加速、碰撞和合併等事件才可以形成強大的重力波,但能產生這種較強重力波的波源距離地球都十分遙遠,傳播到地球時變得非常微弱。

下面分享兩個優秀的影片,很好地解釋了重力波及背後的原理。第一個來自LIGO,第二個則是比較通俗的漫畫式講解。

###LIGO科學家的解釋:
http://v.qq.com/boke/page/g/0/0/g0184mxwie0.html

###漫畫式通俗解釋:
http://v.qq.com/page/j/x/u/j0184qlilxu.html

LIGO是什麼?

鐳射干涉重力波觀測站( Laser Interferometer Gravitational-Wave Observatory)LIGO是加州理工學院(Caltech)和麻省理工學院(MIT)的合作實驗室,現在也有其他的大學參與。實驗資金來源於美國國家科學基金會。LIGO是用來尋找宇宙中的重力波,從而可以驗證黑洞的存在和檢驗廣義相對論。

圖說明

LIGO主要有兩個觀測點,位於路易斯安那Livingston Parish的LIGO Livingston觀測點,和華盛頓 Hanford的LIGO Hanford觀測點。除此之外,在加州Passadena 的Caltech校園中還有LIGO 40m Prototype 。

LIGO是如何探測重力波的?

影片: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:利用公開的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()

圖說明

關鍵字: #GitHub
往下滑看下一篇文章
免費下載「會議紀錄整理師」!逐字稿丟給AI,自動抓決議跟待辦,支援ChatGPT與Claude
免費下載「會議紀錄整理師」!逐字稿丟給AI,自動抓決議跟待辦,支援ChatGPT與Claude

在某個大雨滂沱的晚上,超級感謝有 7 位一天一 AI 的讀者來體驗我做的「會議紀錄整理師」AI 工作流。現在,我要把它免費開放給你用了!

今天來跟你分享,一天一AI PRO 設計出的 AI 工作流,到底可以幹嘛,並且讓你試用看看。

首發就是「會議紀錄整理師」,這是我自己最常用的工作流之一。有了它,會議上我都可以集中精神發表意見,之後 AI 再幫我統整即可!

除了省時省力、釐清待辦,我還多做了一點巧思:區分出討論項目與決議。那些會議上討論過的,但根本沒結論的事情,我請 AI 幫忙抓出來。

這個工作流可以到一天一AI PRO 的官網下載,裝進你的 ChatGPT 和 Claude。具體怎麼做?往下看圖卡吧。

還想看哪些內容?歡迎點此連結跟我分享~

AI會議紀錄怎麼做?「會議紀錄整理師」自動整理逐字稿

會議紀錄整理師是什麼?

每次會議我會取得同意後錄音,一結束就把逐字稿丟給 AI,呼叫「會議紀錄整理師」技能來做紀錄。逐字稿的錯字多、內容散亂、缺乏說話者資訊,通通沒關係,這個技能可以通過一串設計好的流程,區分是哪種會議(進度追蹤、規劃討論、解題決策)來決定紀錄的重點,最後產出會議紀錄通知信+留存版的完整紀錄文件。

AI整理會議紀錄最大亮點:自動區分討論、決議與待辦

最有感的亮點:區分出討論項目與決議

看完「會議紀錄整理師」整理的紀錄,第一印象一定是「很清楚、有結構」。但細看會發現,它除了幫你列清楚待辦事項,也會提醒你會議缺失的資訊,例如沒指定負責人、沒確定截止日期、哪些是拍板的決定、哪些決議沒討論完、哪些人的意見有衝突。

同件事反覆討論怎麼整理?AI只抓最後拍板結論

結論回掃:同件事來回討論,AI 只認最後的拍板

開會常常一個議題反覆討論,前面說「先用 A 方案」,後面又改口「還是 B 好」。一般 AI 整理會把兩個都列出來,會搞不清楚到底選了哪個。「會議紀錄整理師」有「結論回掃」機制:以最後一次明確確認為準,早期被推翻的版本會被歸類到「否決了什麼」,不會讓過時的決策混淆你。

與會者有誰?例行會議可以沿用團隊設定

與會者有誰?例行會議可以沿用設定

第一次使用,直接貼逐字稿就能跑。AI 遇到不認識的人名或職稱,會在結尾列出來問你:「這位是誰、負責什麼?要不要記下來?」你回覆後,它就建立你的團隊記憶檔。下次再開相同主題的會議會自動沿用,提高會議紀錄裡名字、職稱、待辦事項隸屬的正確性。

ChatGPT、Claude怎麼安裝「會議紀錄整理師」?

下載後怎麼用?

註冊登入一天一AI PRO 官方網站,找到「會議紀錄整理師」的立即下載按鈕,下載 zip 檔。Claude 網頁版的用戶,從Setting→Skills→右上方Add選擇→Upload skill→上傳 zip 檔。ChatGPT 網頁版的用戶要是付費版:開一個新對話→選擇「工作」標籤→在對話框上傳 zip 檔→輸入「幫我安裝到個人雲端技能」。完成設定後,重整頁面、開新對話,在對話框輸入「/」或是「@」輸入「會議紀錄整理師」就能把技能呼叫出來,再把會議逐字稿貼給它就行了。

AI會議紀錄還能怎麼用?散會前確認、累積成專案進度報告

散會前就做紀錄、同專案紀錄能做成進度報告

我在每個會議結束前,都會速跑紀錄,現場確認與會者的理解都一致。同一個專案的會議紀錄累積起來,還可以變成專案進度簡報給主管看:這個月做了哪些決策、還有哪些待辦沒完成、風險有沒有被處理掉。

訂閱《一天一AI》日報,每天跟你分享超實用的AI小技巧!

延伸閱讀:
一天一AI PRO上線!6組專家工作流,讓ChatGPT、Claude不再每次從頭教

AI又唱反調?每月10分鐘做記憶健檢,4招讓ChatGPT、Claude認得現在的你

登入數位時代會員

開啟專屬自己的主題內容,

每日推播重點文章

閱讀會員專屬文章

請先登入數位時代會員

看更多獨享內容

請先登入數位時代會員

開啟收藏文章功能,

請先登入數位時代會員

開啟訂閱文章分類功能,

請先登入數位時代會員

我還不是會員, 註冊去!
追蹤我們
一次搞懂工業AI
© 2026 Business Next Media Corp. All Rights Reserved. 本網站內容未經允許,不得轉載。
106 台北市大安區光復南路102號9樓