NumFOCUS 是一家非营利慈善机构,致力于支持用于科学计算和数据科学的优秀开源工具包。为了将 Opensource.com 的读者与 NumFOCUS 社区联系起来,我们重新发布了 我们的博客 中一些最受欢迎的文章。要了解有关我们的使命和计划的更多信息,请访问 numfocus.org。如果您有兴趣亲自参与 NumFOCUS 社区,请查看您附近的 PyData 活动。
使用 Python 进行天文学研究
Python 是一种非常适合科学,特别是天文学的语言。各种软件包,例如 NumPy、SciPy、Scikit-Image 和 Astropy(仅举几例)都充分证明了 Python 适用于天文学,并且有很多用例。[NumPy、Astropy 和 SciPy 是 NumFOCUS 财政赞助的项目;Scikit-Image 是一个附属项目。] 自从 10 多年前离开天文研究领域,开始我的软件开发第二职业以来,我一直对这些软件包的演变感兴趣。我在天文学领域的前同事们几乎都使用过所有这些软件包进行研究工作。此后,我一直致力于为位于智利的甚大望远镜 (VLT) 的仪器实施专业天文软件包,例如。
我最近意识到,Python 软件包已经发展到如此程度,以至于现在任何人都可以相当容易地构建 数据简化 脚本,这些脚本可以提供高质量的数据产品。天文数据无处不在,更重要的是,几乎所有数据都是公开可用的——你只需要去寻找它。
例如,运行 VLT 的欧洲南方天文台 (ESO) 在其网站上提供数据下载。访问 www.eso.org/UserPortal 并为其门户创建一个用户名。如果您查找来自 SPHERE 仪器的数据,您可以下载附近恒星(具有系外行星或原恒星盘)的完整数据集。对于任何 Pythonista 来说,这是一个梦幻般且令人兴奋的项目,可以简化数据并使隐藏在噪声深处的行星或星盘可见。
我鼓励您下载 ESO 或任何其他天文成像数据集,并开始冒险。这里有一些提示:
- 从一个好的数据集开始。查看有关附近恒星(带有星盘或系外行星)的论文,然后搜索,例如:http://archive.eso.org/wdb/wdb/eso/sphere/query。请注意,此站点上的某些数据标记为红色,而某些数据标记为绿色。红色数据尚不可公开访问 — 它将在“发布日期”下说明何时可用。
- 阅读一些关于您正在使用其数据的仪器的信息。尝试基本了解如何获取数据以及标准数据简化应该是什么样子。所有望远镜和仪器都有关于此的公开文档。
- 您将需要考虑天文数据的标准问题并对其进行校正
- 数据以 FITS 文件形式提供。您将需要 pyfits 或 astropy(其中包含 pyfits)才能将它们读入 NumPy 数组。在某些情况下,数据以立方体形式提供,您应该使用 numpy.median 沿 z 轴将它们转换为 2-D 数组。对于某些 SPHERE 数据,您可以在同一图像上获得同一片天空的两个副本(每个副本都有不同的滤镜),您将需要使用索引和切片提取它们。
- 主暗场和坏像素图。所有仪器都将拍摄特定的图像作为“暗帧”,其中包含快门关闭(完全没有光线)的图像。使用这些来提取坏像素的掩模,为此请使用 NumPy 掩模数组。坏像素的这个掩模将非常重要 — 您需要在处理数据时跟踪它,以便最终获得干净的组合图像。在某些情况下,从所有科学原始图像中减去此主暗场也有帮助。
- 仪器通常也会有一个主平场帧。这是使用均匀光源拍摄的图像或一系列图像。您将需要将所有科学原始图像除以此帧(同样,使用 numpy 掩模数组可以轻松完成除法运算)。
- 对于行星成像,使行星在明亮的恒星背景下可见的基本技术依赖于使用日冕仪和一种称为角度差分成像的技术。为此,您需要在图像上识别光学中心。这是最棘手的步骤之一,需要使用 skimage.feature.blob_dog 查找嵌入在图像中的一些人工辅助图像。
- 请耐心等待。可能需要一段时间才能理解数据格式以及如何处理它。绘制一些像素数据的图表和直方图可以帮助您理解它。坚持不懈是值得的!您将学到很多关于成像数据和处理的知识。
结合使用 NumPy、SciPy、Astropy、scikit-image 等提供的工具,并具有一定的耐心和毅力,就有可能分析大量可用的天文数据,从而产生一些惊人的结果。谁知道呢,也许您会成为第一个发现以前被忽视的行星的人!祝你好运!
本文最初发表在 NumFOCUS 博客上,并经许可重新发表。它基于 Ole Moeller-Nilsson(Pivigo 的 CTO)的演讲。如果您想支持 NumFOCUS,您可以在此处捐款或查找您所在地区的 PyData 活动。
评论已关闭。