使用pyraf处理测光数据

使用pyraf前首先要安装pyraf,可以在网上搜到如何安装pyraf的教程。如张志翔写过一篇如何安装pyraf的博客,尽管内容存在错误,但照着步骤安装,应该能成功。pyraf安装记录

pyraf的使用方式:

pyraf有两种使用方式,一种是类似iraf的交互式使用方式,打开一个终端,在终端中输入pyraf就能进入pyraf的使用环境。相比于原生的iraf交互环境,pyraf更加方便,比如不必在xgterm终端下使用,如果安装没有问题的话,从任何目录登入pyraf都可以使用系统的ls、pwd、grep等命令,使用epar会弹出一个交互式的界面等。具体的使用和用cl命令登入iraf后类似,但是相比更加智能。

第二种使用方式是用来编写python脚本,pyraf作为python的一个包,可以通过其提供的函数接口调用相应的iraf命令来处理数据。由于python语言的易用性,这样写脚本处理数据是很方便的。

这里假设读者已经具备基本的python使用经验(其实具备其他类似语言基础亦可)和iraf的基本使用经验。

在python中使用pyraf,首先要在脚本中导入,from pyraf import iraf。之后调用相应的iraf命令。如iraf.display(image=abc.fits,frame=1)。如果想要使用某个包下面的命令,需要先执行其上层的函数,如想使用ccdproc命令需要先执行以下两个函数:iraf.imred(),iraf.ccdred(),否则程序会报错,提示找不到相应的函数。下面举一个具体的脚本例子:

[code lang=”python”]#! /usr/bin/env python
from pyraf import iraf

def main():
iraf.display(image="abc.fits",frame=1)
iraf.imred()
iraf.ccdred()
iraf.ccdproc(images="@fitslist.txt", output = "o//@fitslist.txt", zerocor = "Yes", zero = "Zero.fits")

if __name__ == ‘__main__’:
main()
[/code]

从上面的示例脚本可以看出来,iraf命令中的选项对应着pyraf相应函数的参数,这些参数不必全部指明,如果在函数中没有指定相应的参数,该参数将会使用已经设定好的值。但是不在函数列表中指明参数的值,使用设定的默认值有可能会引起错误,所以为了脚本的通用性,避免运行时各种莫名其妙的错误,最好还是指明所有的参数。

容易出现的问题

有时候脚本运行时会出现莫名其妙的错误,偶发很难重现,一个可能的原因是没有刷新iraf缓存。比如当脚本切换当前目录后,执行某个iraf命令,有可能会给出找不到文件的错误提示,原因就是iraf还在使用之前的目录。这时候可以用iraf.flpr()函数刷新一下。

另一个常见的问题是上面提到的,使用的默认参数存在问题,比如想用ccdproc来减零秒曝光,但是如果flatcor选项也被默认打开,而又没有提供flat文件的话,会引发错误。若不想因此修改脚本,可以手动进入pyraf交互环境,epar ccdproc,把flatcor选项关闭并保存。

使用ccdproc出现错误的一个常见原因是没有指定instrument文件,此时可以手动在交互环境下执行setinstrument命令指定这个文件,当然也可以在脚本中执行相应的函数来每次都指定一回。

处理测光的步骤

首先说明一下处理测光数据的流程,测光数据基础处理包含以下步骤:

  1. 减overscan(可选)
  2. 减bias(零秒曝光)
  3. trim
  4. 修正平场(flat)

其中减overscan是指,一般情况下CCD两侧会分别保留一段像素点不曝光,据说用这段来减同一行的基本电位效果更好,如果作overscan的话,下一步的减bias只是修正不同像素的基本电位的差别。2015-12-13 21:42:19屏幕截图

减bias,不用多说。

trim,减去fits文件图片周围滤光片覆盖范围之外的部分,这些地方因为没有光打上去,一般很暗,可能会影响下一步的平场修正。

修正平场,平场一般是每天早晚拍的背景均匀的天光平场。用来修正不同像素对某一段波长范围内光子的响应。

具体处理过程

首先要做的是对文件进行分类,iraf支持从列表文件中读取fits文件的文件名,如上面的例子所示,在列表文件前面加一个@作为标示,o//表示在列表中给出的fits文件名前面加上’o’。所以可以把不同种类的文件分门别类保存在相应的列表文件中,分类的工作可以用程序自动完成(通过读取fits文件文件头的信息确定)。另外一种方法是直接重命名fits文件,iraf也支持bias*这样的语法。python下面有一个pyfits的包,可以用来读取修改fits文件(文件头和数据)。

然后可以选择检查文件是否有问题,有些bias会出现明显条纹或者不均匀的现象,测光目标可能背景非常不均匀,flat可能会饱和等,可以手动检测,也可以写段代码自动检测做辅助。

如果bias或flat缺少,可以从其他天拷贝使用。

处理过程中用到的iraf命令,减overscan使用ccdproc,合并bias使用zerocombine,之后的减bias也使用ccdproc,合并平场使用flatcombine,trim使用ccdproc,除平场依然使用ccdproc。

经过以上的处理,对测光fits文件的基本修正就算完成了。

之后可以使用daofind自动找fits文件中的点源,计算点源的流量可以使用phot命令。他们都会生成一个文本文件,内容包括对应的点源的位置,流量,测量的误差等。这些可以自己去查生成的文件的内容。以上两个命令都需要配置相应的参数。如daofind需要用datapars命令配置半高全宽等参数,phot做孔径测光需要用datapars,fitskypars,photpars设置内圈,中圈,外圈的半径等参数。

Visits: 1180

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

*