0%

DiFX 2016 IVS school 练习

DiFX 示例教程

一些基础要求

需要掌握一些基础的 Linux / Unix 和 bash shell的内容。

另外一些基本的文本编辑知识也很必要,比如使用vim来编辑文件。

在演示中使用的程序基本都具有内置的帮助信息,可以通过在命令行中使用 -h 选项运行来访问。 例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
$ vex2difx -h

vex2difx version 3.1.0 Walter Brisken/Adam Deller 20221115

Usage: vex2difx [<options>] <v2d file>

<options> can include:
-h
--help display this information and quit.

-v
--verbose increase the verbosity of the output; -v -v for more.

-o
--output create a v2d file with all defaults populated.

-d
--delete-old delete all job(s) in this series before running.

-f
--force continue desipte warnings.

-s
--strict treat some warnings as errors and quit [default].

-6
--mk6 call mk62v2d utility to generate mark6 related files

<v2d file> is the vex2difx configuration file to process.

$ difx2fits -h
difx2fits ver. 3.8.0 Walter Brisken <wbrisken@nrao.edu>

A program to convert DiFX format data to FITS-IDI

Usage : difx2fits [options] <baseFilename1> [<baseFilename2> ... ] [<outfile>]

It assumed that SWIN format visibility file(s) to be converted live
in directory <baseFilename>.difx/
It is also assumed that at least 3 additional files exist:
<baseFilename>.input DiFX input file
<baseFilename>.calc Base file for calcif
<baseFilename>.im Polynomial UVW and model
One other files is optionally read:
<baseFilename>.flag Antenna-based flagging

VLBA calibration transfer will produce 4 files:
flag, tsys, pcal, weather
If these are present in the current directory, they will be used to
form the FL, TS, PH and WR tables

If env variable GAIN_CURVE_PATH is set, gain curves will be looked for
and turned into a GN table

The output file <outfile> will be written in FITS-IDI format nearly
identical to that made at the VLBA HW correlator. The first two optional
files are required for full model accountability.

options can include:
--help
-h Print this help message

--bin <bin>
-B <bin> Select on this pulsar bin number

--difx
-d Run on all .difx files in directory

--no-model
-n Don't write model (ML) table

--dont-combine
-1 Don't combine jobs

--scale <scale>
-s <scale> Scale visibility data by <scale>

--deltat <deltat>
-t <deltat> Set interval (sec) in printing job matrix (default 20.0)

--difx-tsys-interval
-i <interval> Set the Difx-derived tsys interval (sec) (default 30.0)

--difx-pcal-interval
<interval> Set the Difx-derived pcal interval (sec) (default 30.0), 0 means to average over a whole scan

--phaseCentre <p>
--phasecenter <p> Create a fits file for all the <p>th phase centres (default 0)

--keep-order
-k Keep antenna order

--ac-always
-a Write standard autocorrelations into every output file

--profilemode Don't discard autocorrelations for pulsar bins other than bin 0

--skip-extra-autocorrs
Ignore e.g. LL autocorrs in a job with only RR cross-corrs

--history <file>
-H <file> Read file <file> and populate FITS History

--sniff-all
-S Sniff all bins and centers

--dont-sniff
-x Don't produce sniffer output

--sniff-time <t>
-T <t> Sniff output on a <t> second timescale (default 30.0)
Set to zero to disable sniffing

--union
-u Form union of frequency setups

--max-jobs <max>
-m <max> Set maximum number of jobs to merge into one FITS file to <max>

--eop-merge-mode Set the mode for merging differerent EOPs. Legal modes are strict (default), drop, relaxed.

--clock-merge-mode Set the mode for merging clock entries of an antenna. Legal modes are strict (default), drop (ignore clock breaks).

--verbose
-v Be verbose. -v -v for more!

--override-version Ignore difx versions

--zero
-0 Don't put visibility data in FITS file

--antpol Use antenna-based polarization codes. Warning: fits-idi file will violate original specifcaitions and abide extended specifications.

--polxy2hv Convert XY polarziation codes to HV codes. Requires --antpol option

--localdir
-l *.calc, *.im, and *.difx are sought in the same directory as *.input files

--all-pcal-tones
-A Extract all phase calibration tones

--primary-band <pb> Add PRIBAND keyword with value <pb> to FITS file

--relabelCircular Change naming of all polarizations to R/L

--vanVleck Force difx2fits to apply van Vleck correction

--bandpass Write baseline-based bandpass to .bandpass file

--applybandpass <file>
Read <file> and apply it as a bandpass to the output
--applydelaycal <file>
Read <file> and apply it as delay corrections to the output
--sourcelist <list>
Only propagate source(s) listed (comma separated)
difx2fits responds to the following environment variables:
DIFX_GROUP_ID If set, run with umask(2).
DIFX_VERSION The DiFX version to report.
DIFX_LABEL Your local DiFX version label.
GAIN_CURVE_PATH Path where gain curves can be found.
TCAL_PATH Path where switched power T_cal values are found.
TCAL_FILE Path to single specific T_cal file.
DIFX_MAX_SNIFFER_MEMORY Max number of bytes to allow for sniffing.
DIFX2FITS_UVFITS_DUMP Prints in stdout the ascii dump of records from the binary visilibity file. Warning: the output may be huge.
DIFX2FITS_UVFITS_DUMP_UTCMIN Sets the minimum UTC time tag for the visibility dump. Units are seconds. Default is zero.
DIFX2FITS_UVFITS_DUMP_UTCMAX Sets the maximum UTC time tag for the visibility dump. Units are seconds. Default is 86400.
DIFX_USE_CABLE_CAL If 0, then cable calibration files are ignored. Default is 1.

PLEASE file all bug reports at http://svn.atnf.csiro.au/trac/difx .
Include at a minimum the output of difx2fits with extra verbosity
(that is with -v -v). The .input, .im & .calc files may help too.

通常,如果不熟悉一个程序的话,可以通过运行此程序,了解可用的选项以及语法的帮助。

如果需要更详细的帮助,可以参考DiFX的用户手册。

不过手册中也不一定是最新的内容,目前可以考虑通过阅读 https://difx.readthedocs.io 来阅读最新的文档。

预备工作

DiFX包含一套程序,库和小型实用程序,通常安装在非系统目录中,所以如果没有配置的话,是不能使用的。

另外实际使用的相关处理机可能会安装多个版本。

这种情况下,每个版本都可以通过设置脚本进行选择。 对于本次的演示,使用单个DiFX版本,并且可以通过键入来配置

1
$ source setup.bash

其中setup.bash是一个设置脚本,可以在DiFX安装过程中找到。

这种方法的弊端在于,每次打开新的终端都需要键入这个命令,所以,可以把这个命令加到.bashrc中,这样每次打开终端都将自动设置好需要的环境。

启动时延模型服务

在计算机启动后需要启动一次时延模型服务。 这可以通过以下方式完成:

1
$ startCalcServer

这个命令将在后台启动了一个名为CalcServer的进程。

不过在DiFX2版本之后,这个服务已经不再需要了,相关处理的时延多项式可以通过difxcalc来完成。

准备数据集1:2台站UT1-UTC观测

创建工作目录

在您的主目录中创建一个新目录,比如~/data/,然后进入该目录

1
2
$ mkdir ~/data/
$ cd ~/data/

拷贝.vex文件和.v2d文件

.vex 文件是由观测纲要程序生成的,该文件包含实验的基本描述,观测源的坐标以及每个scan使用的设置。

大多数相关处理实验所需的信息都包含在此文件中。

1
$ cp /the/path/of/vex/file.vex .

详细的可以参考 https://vlbi.org/vlbi-standards/vex/

.v2d文件补充了.vex文件,它包含两种类型的信息:

  1. 不包含在.vex文件中的信息,例如积分时间(也称为累积周期)以及在相关处理中要使用的频谱分辨率;
  2. 覆盖.vex文件中包含的值信息。

一般的理念是.vex文件不需要编辑,并且相关处理所需的更改应包含在.v2d文件中。

所以对于常规的观测而言,vex文件避免编辑,需要的参数可以通过v2d文件来调整相关处理的参数。

1
$ cp /the/path/of/v2d/file.v2d .

.v2d文件的名称(.v2d扩展名之前的所有内容)构成相关处理作业名称的基础。
为了防止混淆(稍后会详细介绍),建议将.v2d文件重命名为唯一的名称, 这可以是您的姓名或者处理中心的缩写。

1
$ mv file.v2d yourname.v2d

在接下来的示例中,假设它被称为yourname.v2d。 随时替换为你喜欢的名字。

生成要相关处理的基带数据列表

相关处理需要知道在哪里找到数据以及要与每个文件关联的时间范围。

这可以通过检查数据本身的工具来完成。

对于这个特定的实验,数据是用称为Mark5B的数据格式记录的(这种数据的描述请参阅http://www.haystack.mit.edu/tech/vlbi/mark5/mark5_memos/019.pdf)。

一个名为 m5bsum 的工具可以制作需要的列表信息。

比如分别对来自两个站点的数据执行此操作(其中PT = Pie Town和MK = Mauna Kea,这两个站点都是美国的VLBA天线)。

1
2
$ m5bsum -s /the/data/of/pt/station/n6043/NRAO+301* > filelist.pt
$ m5bsum -s /the/data/of/mk/station/n6043/NRAO+390* > filelist.mk

-s 选项很重要,上面的命令会强制生成每个文件的一行摘要,可以给后来的软件使用。

请注意,您可以将这些大型数据文件保留在当前位置,而不需要将其拷贝到处理目录,并且建议相关处理的目录和原始数据最好分开存放。
比如相关处理的结果可以存放在~/corr/目录下,而原始数据可以存放在/data/目录下。
如果您想查看单个文件的更多详细信息,可以尝试:

1
$ m5bsum /the/data/of/pt/station/n6043/NRAO+301_0540_N6043_PT_No0008

这里创建的两个文件将需要在.v2d文件中引用,进行后面的相关处理。

这些文件是ASCII文本,可以使用cat,less或您喜欢的编辑器查看。

长数字是以MJD表示的开始和停止时间。

cat filelist.pt

检查并修改.v2d文件

.v2d文件已经创建好。

文件中的许多内容都可以更改。

对于第一次相关处理,建议不要改变任何东西。

如果时间允许,可以尝试更改一些参数。

如果您这样做,最好重命名.v2d文件,以便可以保留以前相关处理的输出。

可以尝试的一些相关参数是:

  • tInt 积分周期(秒):数字最好在0.25和4之间
  • specRes 相关处理输出的谱分辨率(MHz)。 数字最好在0.05和0.5之间
  • fftSpecRes 执行FFT的分辨率。 必须是specRes必须是整数倍。 这会影响光谱响应。
  • clockOffset 改变时钟偏移(微秒)并产生输出中的相位斜率。 建议可以尝试数字高达0.2左右。
  • addZoomFreq 允许放大到带宽的一部分。 这是一个高级功能,对不同带宽的可以考虑。

关于 vex2difx 的详细文档可以参考其使用说明 vex2difx .

一旦 .v2d 文件准备就绪,运行 vex2difx :

1
$ vex2difx yourname.v2d

仔细查看输出。 可能会有有意义的消息。
如果您看到错误,则该步骤失败,您需要调试.v2d文件。
如果您看到警告,则可能会出现问题,但请仔细查看消息,因为它可能意味着某些内容可能是不对的。
如果您看到一个注释,那么 vex2difx 中做出了一些假设,这可能是预期的,但您可能需要确保它是有意义的。

vex2difx 为项目生成一个或多个作业。 每个作业都有一个不同的数字(在下划线之后)。
此阶段的每个作业应该已经有一些文件。 .input 文件包含作业的DiFX配置,.calc 文件包含生成延迟多项式所需的信息。
这两个文件都是ASCII文本,可以像为filelist文件所做的那样查看。

生成时延多项式

延迟多项式用于计算每个数据流延迟所需的时间,以使波前从接收传播到地球中心,通常为10毫秒或更少。
Goddard Calc程序用于执行此操作。 当前的安装使用Calc 9.1(通过此处的说明),但是Calc 11可通过名为 difxcalc 的程序提供给difx
执行Calc的最简单方法是运行

1
$ calcif2 -a

它将遍历当前目录中所有的.calc文件并生成模型文件(以.im结尾)。
同样,这些输出文件是ASCII文本,可以检查。

启动一些监视进程

当DiFX运行时,它会产生信息(有时是错误)消息。 它还生成状态信息。 这些信息的位是多播的,以便本地网络上的任何进程都可以听到。 这意味着您将能够看到来自邻居进程的消息。 要仅过滤与您的进程相关的消息,请使用标准unix工具grep来过滤输出。 如果您愿意,可以在没有grep的情况下运行并立即查看所有人的信息! 请注意,即使在相关处理正在进行时,您也可以启动和停止这些监视器进程。

启动错误或者消息监视

启动一个新的终端窗口并在shell中设置环境:

1
$ source setup.bash

然后运行

1
$ errormon | grep yourname

但是不要忘记将我的名字更改为您的进程的名称。

启动状态监视

启动一个新的终端窗口并在shell中设置环境:

1
$ source setup.bash

Then run 然后运行

1
$ statemon | grep yourname

启动DiFX!

此时,一切就绪,可以开始进行相关处理了。可以使用以下命令运行DiFX:

startdifx -v -f -n yourname*.input

请注意,-f 选项强制执行并将覆盖同一作业的以前的相关结果。 小心使用!
-v 选项仅增加输出的详细程度,并且在这种情况下需要 -n 选项以防止覆盖机器文件,描述要使用的计算机集群的哪些元素(在这种情况下仅为您的工作站)。

运行这些作业根据观测时常、台站等的不同需要一会时间。 在运行时,您可以监视两个诊断窗口。

转换为FITS输出

difx2fits 程序接受DiFX的原始输出以及用于驱动它的文件,以生成FITS-IDI格式的文件。
FITS-IDI是干涉测量数据的标准格式,文档位于http://www.aoc.nrao.edu/~egreisen/AIPSMEM114.PDF
此文件格式适合读入AIPS,这是天文VLBI观测的常规数据路径。

difx2fits 还会生成一些诊断输出,这些输出非常方便(请参见下一节)。

运行difx2fits:

1
$ difx2fits yourname*.difx YOURNAME.FITS

Make diagnostic plots and inspect

一个名为difxsniff的工具可用于制作“sniffer plots”,以快速查看数据。 NRAO的数据分析师使用这些图来确定项目的成功。 运行:

1
$ difxsniff YOURNAME.FITS PT

第二个参数PT是将在某些图中用作“参考天线”的站点。 通常,VLBI阵列中心附近的行为良好的天线用于此。 这将在名为sniffer / PT /的子目录中生成文件。 主要感兴趣的文件如下:

  • YOURNAME.apd.ps : 绘制所有基线到参考天线的速率,延迟,相位和幅度随时间变化的图
  • YOURNAME.acb.ps : 绘制所有自相关带通
  • YOURNAME.xcb.ps : 绘制所有与参考天线的交叉相关带通
  • YOURNAME.wts.ps : 绘制数据有效权重随时间变化

所有这些文件都是PostScript文件,可以使用任何PostScript查看器查看。 例如,您可以使用evince:

1
$ evince YOURNAME.apd.ps

制作Mark4输出以进行大地测量处理

确保回到实验目录(即,如果您进入了sniffer目录,请回来),您可以从相同的DiFX输出中制作Mark4数据集。 这可以通过以下方式调用:

1
$ difx2mark4 yourname*.input

输出文件将放在一个编号的目录中(默认为1234/)。

数据集2:10站VLBA观测

使用上面的工具(有一些例外:请参见下文),尝试相关10个站点的VLBA观测。 问题中的数据使用多线程VDIF数据(如果您想知道VDIF数据的格式,请参见http://vlbi.org/vdif/docs/VDIF_specification_Release_1.1.1.pdf)。 下面是一些基本的信息,应该可以让您开始:

  1. 一个可用的scan数据。
  2. 数据来自对夸克星的12.2 GHz观测,具有4个基带通道,每个通道4 MHz。
  3. 基带通道以极化对的形式出现:RCP和LCP。
  4. 基带数据文件可以在/difx_data/ts036h(站点名称是文件名的倒数第二个字段)
  5. VEX 和 示例.v2d文件可以在同一位置找到(称为ts036h.vex.obs和ts036h.v2d)
  6. 生成文件列表,使用vsum -s而不是m5bsum -s
  7. 制作10个文件列表。 请注意,10个VLBA站点的站点代码为:BR,FD,HN,KP,LA,MK,NL,OV,PT,SC,如.v2d文件顶部所列。
处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道