这份新手入门教程将带你从零开始,一步步了解AIPS,完成一个简单的数据校准和成像流程。

aips新手入门教程
(图片来源网络,侵删)

第一部分:准备工作与心态调整

在开始之前,有几个重要的概念需要明确:

  1. AIPS是什么? AIPS是一个基于任务驱动的命令行软件,你不会像使用Photoshop那样点击按钮,而是通过输入特定的命令(称为“任务”,Task)来执行操作。CALIB 是一个校准任务,IMAGR 是一个成像任务。

  2. 为什么用AIPS?

    • 行业标准:它是射电天文学领域的“老牌”和权威工具,许多经典天文成果都是用它处理的。
    • 功能强大:提供了从数据校准、自校准、复杂成像到测量的全套工具。
    • 灵活性高:可以对数据进行精细的、参数化的控制。
  3. 挑战是什么?

    aips新手入门教程
    (图片来源网络,侵删)
    • 学习曲线陡峭:需要记忆大量的任务名称和参数。
    • 命令行操作:对不熟悉终端/命令行的用户来说有门槛。
    • 界面古老:纯文本界面,没有现代GUI的直观性。
  4. 必备心态

    • 耐心:不要指望一天就能精通,这是一个循序渐进的过程。
    • 细心:AIPS的命令参数很多,一个字母的错误都可能导致任务失败或结果错误。
    • 勤查文档这是最重要的习惯! AIPS自带的在线文档(HELP 命令)是你的“圣经”。

第二部分:安装与环境配置

对于新手,最推荐的方式是使用AIPS预编译的虚拟机,这可以让你免去复杂的编译和依赖问题。

  1. 下载虚拟机镜像

  2. 配置虚拟机

    aips新手入门教程
    (图片来源网络,侵删)
    • 在 VMware 或 VirtualBox 中创建新的虚拟机,并选择“从OVA文件导入”或“从磁盘添加”。
    • 启动虚拟机,它会自动进入AIPS环境。
  3. 首次启动

    • 虚拟机启动后,你会看到一个命令行界面。
    • 输入 go 命令,然后按回车,这会启动AIPS。
    • 你会看到类似 1200 > 的提示符,这个数字 1200 是你的“AIPS用户号”(AIPS User Number),非常重要!后续所有操作都会关联到这个用户号下的数据。

第三部分:AIPS核心概念

在动手之前,先理解几个核心概念:

  1. 任务 AIPS中执行操作的命令。

    INP 'CALIB'    ; 显示CALIB任务的所有参数和默认值

    执行任务的基本格式是:任务名 关键字=值, 关键字=值, ...

  2. 数据集 AIPS中处理的所有数据(包括观测数据、校准表、图像等)都存储在一个名为 aips++ 的数据库中,它们通过“数据集名”、“用户号”和“序列号”来唯一标识。

  3. 数据集名 通常是你观测项目的缩写,my_vla_obs

  4. 用户号 就是你在启动AIPS时看到的那个数字(如 1200),它隔离了不同用户的数据。

  5. 序列号 一个整数,用于区分同一用户下的不同数据集,每次你将数据存入AIPS时,都需要指定一个新的序列号,或者覆盖旧的。

  6. 文件扩展名(伪扩展名) AIPS内部不使用传统文件扩展名,但为了方便用户,它使用了一些约定俗成的“伪扩展名”来标识数据类型:

    • .uv: UV格式的原始观测数据
    • .cl: 校准表
    • .in: 输入表
    • .out: 输出表
    • .im: 图像数据
    • .pl: 绘图文件
    • 注意:这些只是显示上的提示,文件本身存储在 aips++ 数据库中。
  7. 显示器 AIPS没有图形界面,它通过文本字符在终端上绘制图像和图表,你需要先配置显示器。

    TV  1           ; 激活1号显示器(通常在终端窗口中)
    TV  2           ; 激活2号显示器(可能需要在新终端窗口)
    TV  3           ; 激活3号显示器(通常是一个独立的xgterm窗口)

    你会看到屏幕被划分为多个区域,用于显示图像、幅度、相位等信息。


第四部分:新手入门实战流程

我们将模拟处理一个VLA的L波段观测数据,假设你的数据已经从NRAO的FTP服务器下载,并解压,数据通常是 .uv 格式的文件。

步骤 1:将数据读入AIPS

  1. 确定数据集名和序列号

    • 数据集名:my_first_vla
    • 序列号:我们使用 1
  2. 运行 UVLOD 任务 UVLOD (UV LOaD) 是将外部数据文件读入AIPS数据库的任务。

    ; UVLOD 版本
    ; INP
    ; UVLOD
    ;     INFILE  =  'my_vla_data.uv/'      ; 你的数据文件路径
    ;     OUTNAME =  'my_first_vla'        ; 数据集名
    ;     OUTSEQ  =    1                   ; 序列号
    ;     OUTDISK =   21                   ; 存储在哪个磁盘分区 (1-31)
    ;     CLASS   =   'UV'                 ; 数据类型
    ;     SUBARRAY=    0                   ; 子阵列
    ;     NCHANS  =    1                   ; 通道数 (通常设为1,让AIPS自动处理)
    ;     FREQID  =    1                   ; 频率ID
    ;     DOBAND  =    0                   ; 不做带宽分割
    ;     SRTYPE  =   'VELA'               ; 源名称
    ;     TIMERANG=   ' '                  ; 时间范围 (全部)
    ;     STOKES  =    ' '                  ; Stokes参数 (全部)
    ;     SELEC   =   ' '                  ; 其他选择 (无)
    ;     GO
    • 操作说明
      • 输入 UVLOD,然后按回车。
      • AIPS会显示参数列表,你可以直接输入 GO 来使用默认值(不推荐新手这么做)。
      • 更好的方式是逐行输入 关键字=值,先输入 INFILE = 'my_vla_data.uv/',然后按回车,再输入 OUTNAME = 'my_first_vla',再回车... 直到所有必要的参数都设置好。
      • 最后输入 GO,任务开始执行,完成后,你的数据就在AIPS里了。

步骤 2:初步检查数据

  1. 运行 LISTR 任务 LISTR (LIST Raster) 可以列出数据集的基本信息。

    LISTR
        SOURC  = 'my_first_vla'  / 数据集名
        CLASS  = 'UV'            / 数据类型
        SEQ    = 1               / 序列号
        DISK   = 21              / 磁盘号
        OPTYPE = 'HEADER'        / 只列出头信息
        GO

    查看输出,确认望远镜、观测时间、频率、积分时间等信息是否正确。

  2. 运行 TVFLG 任务 TVFLG (TV FLag) 是一个可视化工具,用来检查数据的质量和坏基线。

    TVFLG
        INP
        SOURC  = 'my_first_vla'
        CLASS  = 'UV'
        SEQ    = 1
        DISK   = 21
        DOBAND = 0
        FREQID = 1
        TIMERANG= ' '
        ANTENNA= ' '
        CORR   = ' '
        CHANR  = ' '
        CPARM  =  0
        BCHAN  =  1
        ECHAN  =  1
        BPVER  =  0
        OPTYPE = 'PL'
        GO
    • 操作说明
      • 任务启动后,你的1号显示器会变成一个网格,每个点代表一个天线(基线)。
      • 使用键盘方向键移动光标。
      • 按下 F 键,可以切换显示不同的数据(幅度、相位、信噪比等)。
      • 按下 D (Delete) 键,可以“标记”你认为有问题的基线或数据点(这叫做“Flagging”),被标记的数据会在后续处理中被忽略。
      • 按下 U (Unflag) 键可以取消标记。
      • 按下 Q 键退出。

步骤 3:相位校准

这是最关键的一步,通常使用一个已知亮、致密的点源(相位校准源)来校准系统误差和大气引入的相位变化。

  1. 运行 CALIB 任务 CALIB 是AIPS的核心校准任务。

    CALIB
        INP
        SOURC  = 'my_first_vla'        ; 你的数据
        CLASS  = 'UV'
        SEQ    = 1
        DISK   = 21
        OUTDISK= 21                    ; 校准表也存放在21号盘
        SOLINT =  60.0                 ; 解积分时间 (秒)
        REFANT =  1                    ; 参考天线 (通常是1号天线)
        TECORR =  0                    ; 不做TEC校正
        SBDONE =  0                    ; 不做带宽分割
        SMODE  =  'P'                  ; 校准模式 (P=相位, A=幅度, PA=两者)
        GAINUSE =  1                   ; 使用增益表版本1
        PHASEC =  -1                   ; 相位校准源 (需要提前知道)
        CALCODE=  ' '                  ; 校准码
        BCHAN  =  1
        ECHAN  =  1
        BPVER  =  0                    ; 基线版本号 (0表示新表)
        GO
    • 重要参数解释

      • SOLINT: 校准的时间间隔,对于相位校准,通常设置为几分钟到十几分钟。
      • REFANT: 选择一个稳定、信噪比高的天线作为参考。
      • SMODE = 'P': 告诉 CALIB 我们只关心相位校准。
      • PHASEC: 这是相位校准源的名称,你必须提前知道你的观测列表中哪个源是相位校准源,并用它的名字替换 -1PHASEC = '3C286'
    • 输出CALIB 会生成一个校准表(.cl 文件),里面包含了各个时间点的增益和相位校正信息。

步骤 4:幅度校准

这一步校准系统的幅度响应(如天线增益、系统温度等)。

  1. 再次运行 CALIB 我们使用上一步生成的校准表作为输入,进行幅度校准。

    CALIB
        INP
        SOURC  = 'my_first_vla'        ; 你的数据
        CLASS  = 'UV'
        SEQ    = 1
        DISK   = 21
        OUTDISK= 21
        SOLINT =  0.0                  ; 0表示对所有数据点做整体校准
        REFANT =  1
        TECORR =  0
        SBDONE =  0
        SMODE  =  'A'                  ; 校准模式 (A=幅度)
        GAINUSE =  1                   ; 使用上一步生成的增益表
        PHASEC =  ' '                  ; 不做相位校准
        CALCODE=  ' '
        BCHAN  =  1
        ECHAN  =  1
        BPVER  =  1                    ; 使用上一步生成的基线版本号
        GO
    • 关键变化
      • SMODE = 'A':现在只做幅度校准。
      • BPVER = 1:告诉 CALIB 使用版本号为1的校准表(即上一步的输出)。
      • SOLINT = 0:对整个数据集进行一次性的幅度校准。
  2. 应用校准 我们需要将校准应用到原始数据上,生成一个新的、已校准的数据集。

    CLCAL
        INP
        SOURC  = 'my_first_vla'        ; 原始数据
        CLASS  = 'UV'
        SEQ    = 1
        DISK   = 21
        OUTDISK= 21
        DOWT   =  0                    ; 不做加权
        SOLINT =  0.0
        DOBAND =  0
        FREQID =  1
        GAINVER=  1                    ; 使用增益表版本1
        BPVER  =  1                    ; 使用基线版本1
        GO
    • 操作说明
      • CLCAL 会读取原始数据,并应用 CALIB 生成的校准表。
      • 它会直接修改原始数据! 强烈建议你先复制一份原始数据再进行校准,或者使用新的序列号。
      • 更安全的做法是:在 UVLOD 步骤使用序列号 1,然后在 CLCAL 步骤将输出数据集名设为 my_first_vla_cal,序列号设为 2

步骤 5:成像

数据校准完毕,现在可以生成天空图像了。

  1. 运行 IMAGR 任务 IMAGR 是AIPS的成像任务,功能非常强大。

    IMAGR
        INP
        SOURC  = 'my_first_vla_cal'    ; 使用已校准的数据
        CLASS  = 'UV'
        SEQ    = 2
        DISK   = 21
        OUTNAME = 'my_first_image'     ; 图像数据集名
        OUTSEQ  =  1                    ; 图像序列号
        OUTDISK = 21
        BEAM   =  -1                    ; 使用自然权重
        IMSIZE =  256                   ; 图像大小 (像素)
        CELL   =   0.5                  ; 像素大小 (弧秒)
        ROBUST =   0.0                  ; 权重因子 (0.0 = 自然权重, 1.0 = 高斯权重)
        STOKES =   'I'                  ; 成像Stokes I
        DO3COLOR=  0                    ; 不做三色图
        BCHAN  =  1
        ECHAN  =  1
        BPVER  =  0
        GO
    • 关键参数解释
      • OUTNAMEOUTSEQ: 定义你生成的图像的名称和序列号。
      • IMSIZE: 图像的像素尺寸,256 表示一个 256x256 像素的图像。
      • CELL: 每个像素对应的天区大小(角秒),对于VLA L波段,5 是一个比较合适的值。
      • ROBUST: 权重类型。0 是自然权重(最高灵敏度,分辨率低),0 是高斯权重(分辨率高,灵敏度低),5 是折中,新手可以先尝试 0
  2. 查看图像 图像生成后,使用 TV 任务来查看。

    TV
        INP
        NAME   = 'my_first_image'     ; 图像数据集名
        CLASS  = 'image'
        SEQ    = 1
        DISK   = 21
        LUTYPE =  -1                    ; 使用默认的颜色查找表
        DOLEVEL=  0                    ; 自动调整颜色级别
        GO
    • 操作说明
      • 图像会显示在1号显示器上。
      • 使用方向键移动光标。
      • L 键可以调整颜色映射。
      • Q 键退出。

第五部分:进阶技巧与资源

  1. 自校准 当你的图像质量还不够好时,可以进行“自校准”,这是一个迭代过程:

    • 用当前图像模型去反算更精确的校准解。
    • 用新的校准解重新校准数据。
    • 重新成像。 这个过程需要经验,但能显著提升图像质量,相关任务有 SBCALCLCAL
  2. 多频谱成像 如果你的数据有多个通道,可以使用 MFCLEANIMAGR 的多通道模式来生成数据立方体。

  3. 官方文档

  4. 社区与求助

    • NRAO的邮件列表 aips-users 是提问和交流的好地方,在提问前,请务必仔细查阅文档,并提供你使用的命令和完整的错误信息。

这份教程为你勾勒出了一个最基本的AIPS处理流程,AIPS的学习是一个“干中学”的过程,从一个简单的例子开始,尝试修改参数,观察结果的变化,并不断查阅文档,祝你在射电天文图像处理的世界里探索愉快!