
使用 NumPy、SciPy、Scikit-Image 和 Astropy 探索宇宙
• 來源:linux.cn • 作者:Gina Helfrich,ph.d. • 譯者:SilentDawn •
(本文字數:2442,閱讀時長大約:3 分鐘)
天文學與 Python
對科學界而言,尤其是對天文學界來說,Python 是一種偉大的語言工具。各種軟件包,如 NumPy 、 SciPy 、 Scikit-Image 和 Astropy ,(僅舉幾例) ,都充分證明了 Python 對天文學的適用性,而且有很多用例。(NumPy、Astropy 和 SciPy 是 NumFOCUS 提供資金支持的項目;Scikit-Image 是個隸屬項目)。我在十幾年前脫離天文研究領域,成為了軟件開發者之后,對這些工具包的演進一直很感興趣。我的很多前天文界同事在他們的研究中,使用著前面提到的大部分甚至是全部工具包。以我為例,我也曾為位于智利的超大口徑望遠鏡(VLT)上的儀器編寫過專業天文軟件工具包。
最近令我吃驚的是,Python 工具包竟然演進到如此好用,任何人都可以輕松編寫 數據還原 (data reduction) 腳本,產生出高質量的數據產品。天文數據易于獲取,而且大部分是可以公開使用的,你要做的只是去尋找相關數據。
比如,負責 VLT 運行的 ESO,直接在他們的網站上提供數據下載服務,只要訪問 www.eso.org/UserPortal 并在首頁創建用戶就可以享有數據下載服務。如果你需要 SPHERE 數據,可以下載附近任何一個包含 系外行星(exoplanet)或者 原恒星盤(proto-stellar discs)的恒星的全部數據集。對任何 Python 高手而言,通過還原數據發現深藏于噪聲中的行星或者原恒星盤,實在是件令人興奮的事。
我鼓勵你下載 ESO 或其它天文影像數據,開啟你的探索歷程。這里提供幾條建議:
- 首先要有一個高質量的數據集。看一些有關包含系外行星或者原恒星盤的較近恒星的論文,然后在 http://archive.eso.org/wdb/wdb/eso/sphere/query 之類的網站檢索數據。需要注意的是,前述網站上的數據有的標注為紅色,有的標注為綠色,標注為紅色的數據是尚未公開的,在相應的“發布日期”處會注明數據將來公開的時間。
- 了解一些用于獲取你所用數據的儀器的信息。盡量對數據的獲取有一個基本的理解,對標準的數據還原之后應該是什么樣子做到心中有數。所有的望遠鏡和儀器都有這方面的文檔供公開獲取。
- 必須考慮天文數據的標準問題,并予以校正:數據以 FITS 格式文件保存。需要使用 pyfits 或者 astropy (包含 pyfits )將其讀入到 NumPy 數組。有些情況下,數據是三維的,需要沿 z 軸使用 numpy.median 將數據轉換為二維數組。有些 SPHERE 數據在同一幅影像中包含了同一片天空的兩份拷貝(各自使用了不同的濾波器),這時候需要使用 索引 和 切片 將它們分離出來。全黑圖(master dark)和 壞點圖(bad pixel map)。所有儀器都有快門全關(完全無光)狀態拍攝的特殊圖片,使用 NumPy 掩膜數組 從中分離出壞點圖。壞點圖非常重要,你在合成最終的清晰圖像過程中,需要持續跟蹤壞點。有些情況下,這還有助于你從原始科學數據中扣除暗背景的操作。一般情況下,天文儀器還要拍 標準響應圖(master flat frame)。這是對均勻的單色標準光源拍攝的一張或者一組圖片。你需要將所有的原始數據除以標準響應之后再做后續處理(同樣,使用 Numpy 掩膜數組實現的話,這僅僅是一個簡單的除法運算)。對行星影像,為了使行星在明亮恒星背景下變得可見,需要仰仗 日冕儀(coronagraph)和 角差分成像(angular differential imaging)技術。這一步需要識別影像的光學中心,這是比較棘手的環節之一,過程中要使用 skimage.feature.blob_dog 從原始影像中尋找一些人工輔助影像作為幫助。
- 要有耐心。理解數據格式并弄清如何操作需要一些時間,繪出像素數據曲線圖或者統計圖有助于你的理解。貴在堅持,必有收獲!你會從中學到很多關于圖像數據及其處理的知識。
綜合應用 NumPy、SciPy、Astropy、scikit-image 及其它工具,結合耐心和恒心,通過分析大量可用的天文數據分析實現重大的發現是非常有可能的。說不定,你會成為某個之前被忽略的系外行星的第一發現者呢。祝你好運!
NumFOCUS 是個非盈利組織,維護著一套科學計算與數據科學方面的杰出開源工具集。如果想了解我們的任務及代碼,可以訪問 numfocus.org 。如果你有興趣以個人身份加入 NumFOCUS 社區,可以關注你所在地區的 PyData 活動 。
本文基于 Pivigo CTO Ole Moeller-Nilsson 的一次 談話 ,最初發布于 NumFOCUS 的博客,蒙允再次發布。如果你有意支持 NumFOCUS,可以 捐贈 ,也可以參與遍布全球的 PyData 活動 中你身邊的那些。
via: opensource.com
作者: Gina Helfrich, Ph.D. 選題: lujun9972 譯者: silentdawn-zz 校對: wxy
本文由 LCTT 原創編譯, Linux中國 榮譽推出