射电数据处理:CLASS初步

CLASS是由隶属法国射电天文毫米波研究所(Institut de Radio Astronomie Millimetrique, IRAM)的Gildas (Grenoble Image and Line Data Analysis Software) 工作组开发的单碟天线频谱分析软件(Continuum and Line Analysis Single-dish Software)的缩写,由早期的光谱处理软件LAS发展而来,用Fortran90编写。

它的安装运行非常简单,在Windows XP下只要解压到任意目录,添加相应的系统变量就可以了,具体步骤是:在“我的电脑”上点右键选属性,在高级选项卡中找到环境变量,新建GAG_PATH 为 C:\Progra~1\Gildas(如果是按默认解压到C:\Program Files目录下),并在PATH中添加C:\Progra~1\Gildas\bin;这样就可以在命令行界面输入class直接启动了,也可以通过 .\Gildas\Bin 目录下的 class.exe 来运行,如果运行后没有自动跳出标题为GREG的图像显示窗口的话,在提示符下输入dev I W启动即可,至于在linux下的安装,相信不用我来啰嗦。(08新版的Gildas可以在安装时自动设置,这段的步骤都可以省去了!)

下面简单介绍下基本的数据处理命令,Class使用的数据文件是bur格式,如果原始数据是FITS文件则要先进行转换,比如有个example.fits:
LAS> LAS\FITS read example !将FITS文件读入内存,其中fits前加入LAS\ 是为了与 VECTOR语言库中的FITS命令区分
LAS> file out example.bur new ! 创建一个对应的CLASS文件
LAS> write 1 ! 将数据写入第一列
新文件生产之后最好检查一下结果:
LAS> file in example.bur ! 载入新建的bur文件
LAS> find ! 将文件中的数据载入内存并编号,因为bur文件中可储存多次观测结果
LAS> get first ! 获取第一条数据
LAS> plot ! 作图显示

准备好class用的数据之后,就可以开始正式处理了。文件中可能包含多个目标,多条谱线的数据(如:CO、13CO、HCO等),需要先进行筛选。
LAS> set source sample ! 选取名为sample的观测目标
LAS> set line 13CO ! 选取13CO的谱线
LAS> find ! 将符合条件的谱线载入内存
LAS> list ! 查看各谱线的头信息,如果输出过长可加上 /output a.dat 保存到文件,默认输出为:处理,目标(source),谱线名称(Line), 望远镜(telescope), 坐标偏移量(offset,包括赤经偏移 off_lambda, 赤纬偏移 off_beta), 历元(Epoch)等
LAS> get first ! 获取第一条数据
LAS> plot ! 图示
LAS> set mod x n1 n2 !选取x轴范围在n1,n2之间的区域,去除边缘处的非线性影响
LAS> set win m1 m2 ! 设置x轴m1-m2之间为窗口,不参与背景零点修正
LAS> file out example.bas new ! 为零点修正创建文件
LAS> for i 1 to found
LAS: get index[i]
LAS: base 1 ! 用n次多项式拟合噪声并处理,默认为1
LAS: write ! 保存处理结果
LAS: next

LAS> plot ! 绘出噪声归零后的频谱
如果不考虑俯仰改正等因素的话,谱线就可以直接使用了。但如果观测的不是点源,我们还需要谱线强度的空间二维分布,可以用
LAS> stamp ! 把所有频谱全部列出,以便检查, 如果有损坏或是不符要求的数据,可以用drop 从缓存中去除。
LAS> map/gr !可以按空间位置显示观测结果,
LAS> hardcopy example /dev ps fast 保存成ps格式以便调用

class的批处理脚本文件是用称作SIC(Sympathetic Interpretor of Commands)的内置语言来创建,语法十分简单,可以认为就是把许多命令写在一个文本文件中一起执行。通过对多次观测求平均,能够有效的提高信噪比,但自带的sum命令只能处理同一位置的数据,下面就是利用脚本找出相同位置数据并求平均的实例(处理结果如上图所示),若在当前路径下保存为sum.class,则可用@sum直接调用。

file in example.bas
if file(example.sum) !判断文件是否存在
sic delete example.sum !若存在则删除
endif
file out example.sum new !创建新文件
for i -5 to 5 ! 设置偏移量范围
for j -5 to 5
find /offset i j !
if found.NE.0 !若该位置无观测则跳过
sum !若有数据则求平均
write
endif
next
next

LAS> print area 13 22 /output example.dat ! 输入积分范围,提取面积数值
有了空间各位置处的谱线积分强度,要得到相关气体的空间密度轮廓就不难了(如下图所示)。

如果要对谱线做高斯拟合,操作如下:
LAS> line 1 ! 声明谱线数目
Line 1: 0 3 0 18 0 8 ! 输入谱线参数,高斯拟合时前两个为温度,中间为位置,后两个为宽度, 也可以将参数写入文件,然后用“ line /file 文件名 ”来调用,提高运行效率
LAS> gauss ! 高斯拟合
LAS> fit ! 生成拟合曲线以便比较
LAS> print fit /output fit.dat ! 保存拟合结果

本文主要参考德令哈观测站制作的class中文使用手册, 另外特别感谢逯登荣工程师的耐心讲解~

订阅评论
提醒

10 评论
最旧
最新 最多投票
内联反馈
查看所有评论
符号
2008 年 8 月 14 日 16:12

上次问十三你的联系方式,他说你外出。回来了?给我个msn吧。想请教关于天文的知识。就是上次去延庆,晚上烤全羊坐你边上那位。

fjd
2008 年 10 月 17 日 14:26

楼主是谁?

2008 年 11 月 13 日 20:50

在CLASS90里面
get index[i]已经不行了
index这个变量被IDX%NUM所替代了

推荐
http://sfig.pmo.ac.cn/astrowiki
一起来写我们自己用的gildas的cookbook吧?

星图
2009 年 2 月 21 日 04:20

居然搞射电。。。
太fz了!!!

2009 年 8 月 10 日 17:17

正好在学习使用CLASS,真是及时雨,学习学习。