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