相関処理の実際

相関処理は以下の2段階に分かれる。

フリンジサーチ

測地VLBI実験の定常相関処理は効率よく処理を行うため遅延ラグ数(サンプリング周期単位) を小さく(32が一般的である)とることが多い。 このラグ範囲の中央付近に相関のピークを持ってくる必要があり、そのためには 2局間の時刻同期誤差(クロックオフセット)の精密な値(少なくともサンプリング周期の数分の1程度の確度) が必要になる。

フリンジサーチとはVLBI観測データ(サンプリングデータ)の相互相関処理を行ない相関を検出して クロックオフセットを決定する作業である。 相関処理を行うには2局に到達する電波の時間差(遅延時間)の予測値が必要であるが、この遅延時間は 地球回転によって時々刻々と変化する。この予測値は局位置と電波源の位置情報およびクロックオフセット から計算によって求められる\footnote{地球姿勢パラメータも予測値に影響を及ぼすが実用的には0として 大丈夫である}が、 2局間の時刻同期誤差(クロックオフセット)は事前に精度よく求めることが難しい。 そこで、クロックオフセットとして``仮の値''を用いて予測値を計算し、 その予測値に基づくフリンジサーチによりクロックオフセットを決定する。 クロックオフセットの``仮の値''としては各局の時計とUTCの比較が可能な場合(通常GPSが用いられる)はその値を、 比較手段がない場合は0を用いる。

測地実験のように実験(セッション)が24時間のような 長時間に及ぶ場合にはクロックレートも求めてやる。 フリンジサーチおよびクロックレート決定の具体的手順を以下に記す。

1.処理する観測(スキャン)を決める

強い電波源のスキャン番号を調べるにはスケジュールファイルの中身をテキストエディタで 見る必要があるが、 Ver.2016-10-12以降の"apri_calc"であれば電波源や基線を指定した スケジュールモニターモードで起動すると以下のように簡単に調べることができる (以後、"apri_calc"のバージョンは2016-10-12以降の使用を仮定)。 ここではスケジュールファイル名を"sample.skd"とし"sample.skd"のあるディレクトリを作業ディレクトリとする。
 apri_calcをモニターモードで実行する
    apri_calc -sample.skd
    または
    apri_calc sample.skd -monit
以下の例のようにスケジュールファイル中の電波源リストおよび参加局IDのリストを 見ることができるので、強い電波源を選ぶ(3C273B, 3C290, 4C39.25など)。
注:スケジュールファイル名の前に"-"をつけるとモニターモードとなる。スケジュールファイル名を 例えば"/home/vlbi/sked/sample.skd"のようにパス名を含めたいときはパス名の先頭に"-"をつけて
    apri_calc -/home/vlbi/sked/sample.skd
のように起動する(ではあるが"-monit"オプションの使用を推奨)。
	apri_calc (Ver. 2016-10-12)

	====================== RUN CONDITION ========================
	  K5 file naming type is  Type 1 : sidDDDNNNN.dat (SKED deflt)
	=============================================================
	SkdMonit: *********** Schedule file monitor **********
	SkdMonit: Schedule file = ipvlbi/sked/sample.skd
	SkdMonit: Expcode       = KS07235
	SkdMonit: Total Scan #  = 593
	SkdMonit: Total Star #  = 16
	SkdMonit:
	SkdMonit:  1st   Scan   = 2007/08/23 01:15:00  3C84
	SkdMonit:  Last  Scan   = 2007/08/24 00:46:20  3C273B
	SkdMonit:
	SkdMonit: ---------- Station ID Table ----------
	SkdMonit:  G --- KOGANEI
	SkdMonit:  R --- KASHIM11
	SkdMonit:  Y --- TATEYAMA
	SkdMonit: --------------------------------------
	SkdMonit: ------- Star Table -------------------
	SkdMonit:          NAME1      NAME2  R.A.(deg)   DEC(deg)   EPOCH
	SkdMonit:   1   0059+581          $  15.690677  58.403093 2000.000000
	SkdMonit:   2   0316+413       3C84  49.950667  41.511695 2000.000000
	SkdMonit:   3   0420-014          $  65.815836  -1.342518 2000.000000
	SkdMonit:   4   0552+398          $  88.878357  39.813657 2000.000000
	SkdMonit:   5   0727-115          $ 112.579635 -11.686833 2000.000000
	SkdMonit:   6   0923+392    4C39.25 141.762558  39.039126 2000.000000
	SkdMonit:   7   1226+023     3C273B 187.277915   2.052389 2000.000000
	SkdMonit:   8   1253-055      3C279 194.046527  -5.789312 2000.000000
	SkdMonit:   9   1308+326          $ 197.619433  32.345495 2000.000000
	SkdMonit:  10   1334-127          $ 204.415762 -12.956859 2000.000000
	SkdMonit:  11   1641+399      3C345 250.745042  39.810276 2000.000000
	SkdMonit:  12   1730-130    NRAO530 263.261274 -13.080430 2000.000000
	SkdMonit:  13   1921-293          $ 291.212733 -29.241700 2000.000000
	SkdMonit:  14   2134+004    2134+00 324.160776   0.698393 2000.000000
	SkdMonit:  15   2145+067          $ 327.022744   6.960723 2000.000000
	SkdMonit:  16   2251+158    3C454.3 343.490616  16.148211 2000.000000
	SkdMonit: --------------------------------------
	SkdMonit: ------- Frequency (MHz) Table --------
	SkdMonit: Gr# 1    7714.99 U   7724.99 U   7754.99 U   7814.99 U
	SkdMonit: Gr# 2    8034.99 U   8234.99 U   8414.99 U   8524.99 U
	SkdMonit: Gr# 3    8564.99 U   8584.99 U   2154.99 U   2164.99 U
	SkdMonit: Gr# 4    2234.99 U   2294.99 U   2384.99 U   2414.99 U
	SkdMonit: --------------------------------------
	SkdMonit: ------- PCAL Freq (kHz) Table ---------
	SkdMonit: Gr# 1      10.0     10.0     10.0     10.0
	SkdMonit: Gr# 2      10.0     10.0     10.0     10.0
	SkdMonit: Gr# 3      10.0     10.0     10.0     10.0
	SkdMonit: Gr# 4      10.0     10.0     10.0     10.0
	SkdMonit: --------------------------------------
続いてapri_calcを電波源を指定したモニターモードで実行する
    apri_calc -sample.skd -source 3C273B
    または 
    apri_calc sample.skd -monit -source 3C273B
指定した電波源のスキャンのみが表示されるので、スキャン番号をメモする。 基線を絞る場合は参加局IDのリストから"-baseid"オプションを使って基線を指定して
    apri_calc sample.skd -monit -source 3C273B -basei RY
のように実行する。 すると以下のような情報が得られる。

	SkdMonit: --------- PICKUP SCAN TABLE ----------
	SkdMonit: SCAN#     SOURCE YYYY/DDD HH:MM:SS DURA  STATION_IDS
	SkdMonit:     8     3C273B 2003/197 02:40:20  100  T A C J R Y H
	SkdMonit:    17     3C273B 2003/197 03:56:00  100  T A C J R Y H
	SkdMonit:    27     3C273B 2003/197 04:54:40  100  T A C J R Y H K
	SkdMonit:    35     3C273B 2003/197 05:54:10  100  T A C J R Y H
	SkdMonit:    44     3C273B 2003/197 06:51:40  100  T A C J R Y H
	SkdMonit:    53     3C273B 2003/197 07:53:10  100  A C J R Y H
	SkdMonit:    71     3C273B 2003/197 10:11:40  100  A C J R Y H
	SkdMonit:    81     3C273B 2003/197 11:11:00  100  T A C J R Y H
	SkdMonit:    94     3C273B 2003/197 12:31:30  100  T A C J R Y H K
	SkdMonit: --------------------------------------
SCAN#で示されている番号が抽出されたスキャン番号である。

2.予測値の計算

1で決めたスキャンに対して予測値計算ソフトapri_calcを使用して予測値を計算する。1で抽出される全スキャン番号の 予測値を計算したいなら、以下のように実行しても良い。

    apri_calc sample.skd -source 3C273B -basei RY
この場合は予測値ファイル出力ディレクトリ等はデフォルト値を使用しているが、他のオプション指定の詳細は apri_calcの使用法を参照されたい。 予測値ファイルはテキストファイルなので(フォーマットの詳細はここ)、 必要な場合(例えば生データファイル名やディレクトリの変更)はテキストエディタで簡単に修正できる。

3.相関処理の実行 "fx_cor"(K5/VSSP,VSSP32,VSSP64フォーマット以外のデータの場合は"fx_cor_new")を用いてラグ数を大きく取って (1024またはそれ以上)相関処理を実行する。 具体的に予測値ファイルをapesample.txtとし予測値ファイルのあるディレクトリで作業を行うとすると 以下のように実行する。

    fx_cor ./apesample.txt -lag 1024
処理が終わると

	  ==============================================================
	     CH#    FREQ(MHz)      MAX AMP        RESIDUAL DELAY (sec)
	  --------------------------------------------------------------
	      1      8209.99      0.000651            -3.26108e-06
	      2      8219.99      0.000443            -3.28622e-06
	      3      8249.99      0.000589            -3.23678e-06
	      4      8309.99      0.000480            -3.25464e-06
	  ==============================================================

	COUT File is ../cout/cout0005.txt
のようにチャンネル毎の相関強度と遅延残差および相関処理結果ファイル(coutファイル)名情報が 表示され、さらに相関関数のグラフ(図1)も表示される。


図1. 相関処理後に表示される相関関数

相関のピークが明瞭な場合はこれらの結果のみでクロックオフセットを決定できるが、 "sdelay"を用いて粗決定サーチまで行うとより確実に判定することができる。 fx_cor出力を使って粗決定サーチを行なうには以下のように実行する。

     sdelay ../cout/cout0005.txt
実行すると以下のようなサマリーとサーチ関数と呼ばれる3D図(図2)が表示される。
	 ******************** SDELAY (Ver. 2016-08-12) SUMMARY OUT PUT ************
	   COUT     : ../cout/cout0005.txt
	   X DATA   : /home/kondo/data/testspeed/Xk5data.10.dat
	   Y DATA   : /home/kondo/data/testspeed/Yk5data.10.dat
	   BASELINE : KASHIM11 - TOMAKO11
	   SOURCE   :     3C273B           SAMPLING  : 1 bit   8 MHz
	   PRT      : 2003/197 02:41:10    Tinteg(s) : 9.0
	   LAG SIZE : 1024
	   CLOCK    : offset    5.735e-06(s)   rate    0.000e+00(s/s)
	   EOP      : ut1-utc 0.000000(s)
	            : x-wobb  0.000000(asec)
	            : y-wobb  0.000000(asec)

	  ========================================================================
	   CH#  FREQUENCY       AMP MAX     POSITION         RESIDUAL
	           (MHz)                  (2048x 128)  Delay(usec) Rate(ps/s)  SNR
	  ------------------------------------------------------------------------
	     1    8209.99 U    1.192e-03  ( 973,  65)     -3.251    -0.134    10.1  <=相関強度と残差を確認
	     2    8219.99 U    8.613e-04  ( 973,  68)     -3.270     2.482     7.3
	     3    8249.99 U    1.089e-03  ( 973,  65)     -3.239    -0.089     9.2
	     4    8309.99 U    1.095e-03  ( 973,  66)     -3.242     0.943     9.3
	  ------------------------------------------------------------------------
	   Note: No amplitude correction is made.
	  ========================================================================

	  ======================= PCAL SUMMARY ============================
	   CH#   PCAL FREQ(kHz)     X-Amp  X-Phase    Y-Amp  Y-Phase
	  -----------------------------------------------------------------
	    1         10.00         0.109    70.6     0.251   111.9
	    2         10.00         0.107   -92.2     0.244  -162.7
	    3         10.00         0.106   136.2     0.247    84.3
	    4         10.00         0.104  -143.5     0.259   -43.2
	 *************************************************************************

	Outfile is ./sdelayout.txt

図2.sdelay処理終了後表示されるサーチ関数。ラグ数が大きいためピークが良く分からない。 こうした場合には"-tzoom"および"-tshit"オプションを使って得られた残差遅延付近を拡大すると 良い。"-tzoom 20 -tshift -3.25e-6"オプションで表示したサーチ関数を図3に示す。
図3.図2と同じcoutファイルを"-tzoom 20 -tshift -3.25e-6"オプションで sdelay処理した場合のサーチ関数。

サマリー表示およびサーチ関数の3D表示からフリンジ検出の判断を行なう。

していればフリンジ検出と判断しても良いが、更に であれば、より確実である。

4.クロックオフセットを決める

予測値計算時に設定したクロックオフセットをco、相関処理後に得られた遅延残差をΔτとすると 実際のクロックオフセットcoffsetは次式で得られる。

5.クロックレートを決める

セッションの最初の方の時刻t1で得られたクロックオフセットをc1、 セッションの最後の方の時刻t2で得られたクロックオフセットをc2とすると クロックレートcrateは次式で計算される。


ここでt1,t2は秒単位で表したそれぞれのPRT(処理参照時刻)である。 セッションは0hを跨いでいない場合は時分秒のみの考慮で良いが、0hを跨いでいる場合は 日まで考慮する必要がある。

6.apri_calcでのクロックパラメータの設定

apri_calcではクロックオフセット、クロックレートおよびクロックエポックを設定できるがそれらは 以下のように設定する。

全観測(スキャン)の処理

1.予測値の計算

apri_calcを使ってフリンジサーチで得たクロックオフセット、レートおよびエポックを反映させて全スキャンの 予測値を計算する。非会話型で行うには以下の例のようにオプションを指定する。

    apri_calc  /home/vlbi/sked/jd1606.skd -coffset -3.25e-6 -crate 1.0e-13 -cepoch 2016/197-02:41:10 
              -baseid RY -g 2 -xdir -ydir /home/vlbi/Y -apedir /home/vlbi/corrapri
この例ではクロックオフセットを-3.25μsec、クロックレートを1.0x10-13(s/s)、クロックエポックを 2016年197日02時41分10秒とし、基線IDは"RY"、X局データのディレクトリは"/home/vlbi/data/R"、 Y局データのディレクトリは"/home/vlbi/data/Y"、予測値ファイルの出力ディレクトリは"/home/vlbi/corrapri"としている。 全スキャンで同じクロックオフセットを使う場合は"-crate"オプションおよび"-cpoch"オプションを省略する。

2.予測値ファイルリストの作成

予測値ファイルのあるディレクトリを"/home/vlbi/corrapri"とする。以下のコマンドを実行する。

    ls -1 /home/vlbi/corappri/ape*RYb.txt > apelistRY.txt
"ape*RYb.txt"の部分はそのディレクトリに複数基線の予測値があった場合にファイルを抽出するフィルターであるが、 全予測値を対象とする場合は
    ls -1 /home/vlbi/corappri/ape*.txt > apelistRY.txt
で良い。なお"apelistRY.txt"は作成するリストファイル名で任意である。

3.全スキャンの相関処理

予測値ファイルリストをapelistRY.txtとした場合、以下のように実行する。

    cor_all ./apelistRY.txt
ただし作業ディレクトリに予測値ファイルリストがあるとする。別のディレクトリにある場合は パスを含めて指定する(実行時のオプションについてはここ参照)。 "cor_all" は 1ビットサンプリングデータの処理を行う場合であるが多ビットサンプリングデータの場合は "fx_cor_all"を使用する。またK5/VSSP以外のデータの処理を行う場合は "cor_all_new"や"fx_cor_all_new"を使用する。

K5/VSSP以外のフォーマットデータ(VDIF, Mark5B, ADS)を含む場合の相関処理)

K5/VSSPデータとそれ以外のフォーマットデータとの混合相関やK5/VSSPフォーマット以外の データ同志での相関処理手順はK5/VSSP同志の場合と同じであるが、予測値計算時に データフォーマットを指定する必要がある。具体的にはapri_calcの実行時に オプション"-format"や"-formX"、"-formY"のオプションでデータフォーマットを指定する。 詳しくはここを参照。


更新日 2017年3月8日