光学seti图像减影流水线

sdi-pipeline的Python项目详细描述


SDI管道
这是一条为加州大学圣巴巴拉分校实验宇宙学实验室建造的图像处理管道,用于SDI光学SETI计划和Las Cumbres天文台望远镜网络。管道从LCO的网络下载源图像,对齐并共同添加它们以创建模板图像,并从源图像中减去每个模板以创建剩余帧。然后,搜索这些残差,寻找指示外星激光击中LCO CCD的超大通量分布。更多文档可以在()中找到。



install:
install on linux machines from pypi with
pip install sdi_pipeline



dependencies:
运行pipeline需要许多辅助图像处理包才能正常工作。在运行管道之前,请在您的计算机上安装这些程序。

-sextractor(由Emmanuel Bertin编写的源代码提取)
*要从Astromatic.net安装下载tarball并解压缩

-swap(由Emmanuel Bertin编写的图像注册和共同添加代码)
*要安装,请从Astromatic.net和d解包

-psfex(由emmanuel bertin编写的psf计算软件)
*从astromatic.net安装下载tarball并解包

-skymaker(astromatic.net)(可选,仅用于模拟)
*安装下载tarball并解包。

-热裤(由andrew b编写的图像减法程序ecker)

-isis(由christophe alard编写的图像减法代码)
*包含在pipeline的源代码中,不需要单独安装。要安装,请运行管道的初始化脚本。

-cfitsio(适合美国宇航局的图像处理包)
*要安装下载tarball并解压缩。

-astroalign(由martin beroiz编写的图像注册包)
*要安装,请运行"pip install astroalign"

-图像注册(图像注册p由adam ginsburg编写的包)
*要安装,请运行"pip install image_registration"



管道本身将在任何操作系统上运行,但是,许多补充图像处理包仅在Linux系统上分发。

测试:
要测试管道安装并确保您具有所有依赖项,请r通过

"python-m sdi戋pipeline.test"


卸载test.py模块,测试模块下载两张稀疏星型字段的图像(21:40:47.388,+00:28:35.11),并在整个管道中运行,从下载到对齐,再到组合到减法,最后到源提取。为了测试管道的检测能力,在其中一幅图像(非参考图像)中添加了三颗假恒星。它们应该在减法运算后存活下来,并在图像中间以狗腿图案的三个明显的星星出现在非参考残差中。
在最后,函数将显示包含DS9假星星的残差图像,以及每个残差中检测到的源。最后,该函数将把机器的结果与"test_config"目录中的标准"control"结果集进行比较,该目录与管道的源代码位于同一目录中。您可以通过访问此目录来查看这些控制结果。相关文件是"test_sources.txt"和"09:14:00.260_a_a_remain_u.fits"。如果成功,函数将打印"测试成功!"

使用管道:
软件的物理架构是在"loc"路径中创建的目录树。"loc"变量在initialize.py脚本中定义,默认为用户的主目录。如果要在其他位置安装管道的目录树,则需要在运行initialize.py脚本之前更改"loc"变量。


基本管道函数是-
初始值ize——安装包后运行此脚本。这将创建管道的体系结构,并确保安装了所有适当的辅助软件。这也将允许选项安装ISIS图像减法代码,这里表示为AIS。

get——将下载的LCO图像从下载目录(或任何其他指定目录)移动到SDI目录树,解压缩图像,并根据Observation重命名和排序离子靶/滤光片/曝光时间等。

align——将目标"数据"目录中的所有图像与选定的参考图像对齐。软件选择该参考图像作为天空噪声最小的参考图像。有两种不同的对齐方法:一种使用adam ginsberg编写的dft上采样方法,另一种使用martin beroiz编写的astroalign包。astroalign对于初始对准是足够的,而chi2方法用于在相减之前测试图像和模板之间的亚像素配准。chi2方法特别适用于诸如星系之类的扩展对象。单独与astroalign对齐的图像会被赋予"_a_u.fits"后缀,而与这两种方法对齐的图像会被赋予"_a_u.fits"后缀。图像需要有一个"_a_u.fits"后缀才能被减去。未对齐的图像将保留"_n_u.fits"后缀。运行"align"方法将只运行astroalign。无论何时进行减法运算,CHI2都会自动运行,无需用户输入。

combine--将目录中的所有"u a u.fits"图像合并到一个共同添加的模板图像中,然后将此图像移动到目标的"template"目录。有两种组合方法:swarm和numpy。所有这些都应该给出相同的输出图像,主要区别是每个图像的计算时间。numpy是速度最快的方法,但占用的内存最多,因为它处理python数组。蜂群需要很少的记忆,但要慢得多。它还需要以"default.swarm"配置文件的形式进行配置。

subtract——从每个源图像中减去使用"combine"函数创建的模板,然后将生成的剩余图像放在"residuals"目录中。有两种减法:热裤减法和ais减法。a is是christophe alard编写的一种图像减法算法。它将模板的psf与每个源图像的psf相匹配,并对模板进行卷积,以便进行精确的减法。请参阅此处的文档http://www2.iap.fr/users/alard/package.html。热裤完成同样的任务,但方式略有不同。请参见Hotpant的文档https://github.com/acbecker/Hotpants。它们都是非常精确的方法,计算时间差别不大。主要区别在于配置减法参数。这将决定代码的有效性。我发现ais的可配置参数比热裤更少,更容易理解。两者都需要彻底阅读代码的文档,并练习使用真实的图像。这是使用这两种方法最困难的部分,但是如果选择了正确的参数,代码的有用性就会很清楚。ais的配置文件"process_config"位于"ais/package/register"目录中,它本身将位于机器上安装sdi_管道源代码的任何位置。Hotpants的参数是在调用命令本身时定义的,因此要修改它们,需要修改实际的"subtract_Hotpants"脚本。

pipeline——只需将align、combine和subtract函数合并到一个命令中。运行此命令将按align->;combine->;subtract。


sextractor--首先使用psfex(由emmanuel bertin编写)查找每个源图像的psf。使用此psf sextractor在每个残差上运行,以查找超过某个背景噪声倍数的源。检测到的源目录对于每个图像都放在目标的"源"目录中。然后,这些目录被合并到一个文本文件中。然后根据sextractor参数"spread_model"过滤文本文件中的源。spread_model评估每个检测的类psf形态学,并报告一个单值。负值表示小于psf的源,可能类似于宇宙射线撞击或减法伪影。接近1的值表示一个已被积分的物体,如星系。接近零的正数表示通量分布与原始源图像的psf相似的源。此管道将丢弃具有扩展模式<;0和>;0.1的任何检测。每个iamge的最终检测列表可以在sources目录中的"sources.txt"文件中找到。sextracter参数可以在包的.param和.config文件中配置。它们位于"config"目录中,该目录位于机器上安装SDI_管道源代码的任何位置。sextractor的相关文件是"default.sex"(用于最终源代码提取的配置)、"default.param"(将包含在最终"source s.txt"文件中的参数)、"psfex.config"(psfex的配置文件)和"psf.sex"(sextractor用于提供数据的配置文件进入PSFEX)。"default.sex"和"default.param"可能是你唯一需要改变的东西。请参阅Sextracter在Astromatic.net上的文档。

run——这是将所有管道功能组合在一起的主脚本。我建议这是唯一运行的脚本。首先询问要运行的方法(initialize、get、align、combine、subtract、extract或pipeline)。然后,它将引导您完成指定的任何方法。



和创造者在一起。这方面的代码包括在内,但还没有整齐地打包成一个单一的函数。用户仍然可以使用这段代码,但它将需要操作大量未注释且几乎没有文档的脚本。我正在开发一个更新包,其中将包括容易的源代码模拟功能。在此之前,如果您对这部分管道有任何疑问,请告诉我。




未来的改进:
当前代码还有很大的改进空间。需要添加注释并创建更详细的文档。在此之前,给管道一个机会,并通过电子邮件向我提出任何问题/评论。安德鲁.亨利.斯图尔特@emory.edu

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java具有数量可变的参数,可以同时加载数量可变的图像   java应用程序在后台运行数小时后,当对象变量被系统破坏时,如何在应用程序类中保存对象变量   Java使用不带名称空间的XSD验证XML   关于在Play 2.2.1上安装死锁的java问题   字符串中的java字符串分隔符。分裂法   菜单中的java项不显示操作栏,而是在三个点中显示,没有任何图标   以int值作为键的java HashMap   java OpenAPIgeneratorEventPlugin身份验证查询参数未发送   java如何使用用户输入停止程序   java XIMA Formcycle图像预览问题   java Android登录MainActivity中的google   java Spring JPA@Query JPQL因“意外标记:日期”而失败   java如何将JTextField中的数据保存到mysql数据库中?   java jMonkeyEngine是否在网格内应用材质?   java传感器。键入旋转向量没有值?   java是一个从随机数序列中求值的简单算法吗?   java安卓8。x通知:当我的应用打开时,如何避免通过我的应用淡入/淡出通知?   java tomcat无法启动:严重:启动静态资源时出错   带有自定义列表的java Json操作警告