イメージング

セルフキャリブレーション

較正天体と目的天体は時分割で観測される場合がほとんどであり、その時間差で起こる位相変動を補正することはできません。 また較正天体と目的天体では方向が異なるため、大気による位相揺らぎを完全に取り除くことはできません。 そこで考え出されたのが、目的天体自身のビジビリティを使って位相と振幅の較正する、セルフキャリブレーションです。

このスクリプトでは、サイエンスターゲットである TW Hydra の連続波イメージングとサイエンスデータのセルフキャリブレーションを説明します。 前回のイメージングチュートリアルの一部としてデータパッケージをダウンロードしたはずです。 まだの方は、"連続波のイメージング"を参照してください。

その最初のチュートリアルでは、連続波イメージを作成しました。 ここでは、そのステップを繰り返すことから始め、短い時間スケールの位相補正に焦点を当てながら、データを繰り返しセルフキャリブレーションします。 まず、較正されフラグが付けられたデータを作業ディレクトリからコピーします。

# In CASA
os.system("rm -rf sis14_twhya_calibrated_flagged.ms")
os.system("tar -xvf ../working/sis14_twhya_calibrated_flagged.ms.tar")

listobs タスクで内容を確認しておきます。

# In CASA
listobs("sis14_twhya_calibrated_flagged.ms")

tclean を使って TW Hydra (フィールド 5) の連続波イメージを作ります。 ここでは対話的モードにしてありますが、前回の"連続波のイメージング"で使った非対話的モードでも構いません。 ここで連続光としてイメージングするスペクトルウィンドウには、N2H+ 輝線も含まれていることを思い出してください。 ただ、N2H+ 輝線は十分に暗いので、イメージング前に輝線チャンネルにフラグを立てなくても、最終的な連続光の画像に違いはほとんどありません。 このチュートリアルでは、イメージングとセルフキャリブレーションの基本的なステップに集中するために、このように輝線を無視しています。 しかし、一般的には、連続光をイメージングする前に、自分のデータで輝線を含むチャンネルにフラグを立てるべきです。 連続光をイメージングする前に輝線にフラグを立てる方法については、IRAS16293_Band9_-_Imaging の上級者向けチュートリアル (英語) を参照してください。

TW Hyd 付近の残差が画像の他の部分の残差と同等になるまでクリーニングします。 たとえば、クリーンマスクを中心の天体部分の上にだけ置き、2 回のサイクルでクリーニングすることができます。 つまり、緑の矢印を 2 回使い、赤い X をクリックしてクリーンを終了します。 一般的に、セルフキャリブレーションの最初の反復の前に、保守的にクリーニングするのが良いとされています。 つまり、浅く、スプリアス (本来ないはずの見かけ上の放射) の可能性のあるフラックスを含む代わりに、フラックスの欠落を避けるようにします。 TW Hydra は明るくコンパクトな放射が多いので,その点では比較的寛容です。 これらの点についての詳細な議論は、TW Hydra Casa Guide (英語) と the guide to the NA Imaging Template Script (英語) のセルフキャリブレーションのセクションを参照してください。

# In CASA
os.system('rm -rf first_image.*')
tclean(vis='sis14_twhya_calibrated_flagged.ms',
       imagename='first_image',
       field='5',
       spw='',
       specmode='mfs',
       deconvolver='hogbom',
       nterms=1,
       gridder='standard',
       imsize=[250,250],
       cell=['0.1arcsec'],
       weighting='natural',
       threshold='0mJy',
       niter=5000,
       interactive=True,
       savemodel='modelcolumn')

図 1: 最初の tclean の、最後のクリーニングサイクル後の残差。ビームサイズ 0".652 x 0".504, -65°.889, RMS = 12.9 [mJy]

画像を作成することに加えて、tclean は、パラメータ savemodel="modelcolumn" であれば、MS とともにサイエンスターゲットのクリーニングされた "モデル" を保存します。 このモデルは後のセルフキャリブレーションのステップに必要です。 前の "連続波のイメージング" では、サイエンスターゲットそのものではなく、較正天体のモデルだけを持っていたことに注意してください。 もちろん、このサイエンスターゲットのモデルは完璧ではありません。 CASA のログでモデルが作成されたことを確認するように警告が表示されるかもしれません。ログの中の "Saving model column" という行を探してください。


WARN tclean	Please check the casa log file for a message confirming that the model was saved after the last major cycle. If it doesn't exist, please re-run tclean with niter=0,calcres=False,calcpsf=False in order to trigger a 'predict model' step that obeys the savemodel parameter.
モデルが整ったので、サイエンスターゲットを較正できる状態になりました。 別の較正天体を使用した一般的なゲイン較正と、セルフキャリブレーションの両方に使用されるタスクである gaincal を使用します。 振幅のセルフキャリブレーションは、光源の特性を変える (つまり人工的な変更がおこなわれる) 可能性が大きいため、ここでは位相補正に焦点を当てます。

# In CASA
os.system("rm -rf phase.cal")
gaincal(vis="sis14_twhya_calibrated_flagged.ms",
        caltable="phase.cal",
        field="5",
        solint="inf",
        calmode="p",
        refant="DV22",
        gaintype="G")

gaincal は、"data" と "model" カラムを見て、"data" を "model" のように見せるためにどのような補正を "data" に適用する必要があるかを計算します。 各アンテナ、各時間について、これらの補正を加えた較正表 ("*.cal" ファイル) を作成しますが、実際にこれらの補正を適用するわけではありません。 補正の適用は後に述べる applycal タスクで行います。

最適な平均化パラメータを見つけ出すことが、良いセルフキャリブレーションを行うための鍵となることが多いです。 解の間隔は、大気の位相の変化を高精度で追跡するのに十分なほど短く、良い S/N で位相を測定するのに十分なほど長くしたいものです。 理想的には、異なるスペクトルウィンドウと偏光に対して別々の解を維持したいですが、S/N 比を高める必要がある暗い天体の場合、 良い解を得るためにこれらのパラメータを平均化する必要があるかもしれません。

solint: gaincal では、パラメータ "solint" が、gaincal が位相解を導く時間間隔を決定します。 理想的には、これは積分時間の整数倍であるべきです (積分時間が 3 秒の場合、solint は solint=3s、solint=6s、solint=9s など)。 solint の範囲は、最小の "int" (すなわち "integration"、1 回の積分時間) から最大の "inf" ("infinity" ですが、実際には無限大ではなく、許容される最大時間間隔) までです。 combine="" を設定している場合、"inf" を設定すると、1 つのスキャン内のすべての積分を結合することと同じになりますが、スキャンをまたいで結合することはありません (例えば、積分時間が 3 [sec]で、各スキャンが 2 [min] だった場合、solint="inf" を設定すると、solint="120s" を設定することと同じになります)。 combine="scan" と設定した場合、solint="inf" の実効値も同様に増加します。

gaintype : gaintype="G" を指定すると、gaincal は各偏波に対して独立に解を導きます。 これは、偏光ソースまたは偏光状態がわからないソースを持っている場合に、より重要になります。 ソースが偏光していない場合でも、可能であれば gaintype="G" を使用することをお勧めします。 しかし、解の S/N 比を上げる必要がある場合は、calmode="T" を使用すると、偏波をまたいでデータを結合し、両方に対して単一の解を導きます。

上記の gaincal の例では、solint の最初の選択は完全に任意です。試してみてください。 我々のゴールは、失敗した解を全く持たず、得られた解の S/N 比を良くすることです。(常に S/N > 3 ですが、理想的には S/N > 5 以上です)。

異なる時間間隔や平均化オプションを試してみてください。 SPW と偏波の分離を保ちつつ、可能な限り短い間隔が望ましいことを念頭に置いてください。 良い解が得られない場合は、以下を試してみます。
(1) combine="scan" または "spw" を使って、解が SPW / scan の境界を越えられるようにするか、combine="scan,spw" を使って両方できるようにする。
(2) solint を増やして解の間隔を設定する。
(3) gaintype を "G" と "T" の間で切り替える (前者は各偏波に対して独立して解を生成し、後者は解を決定する前に 2 つの偏波を平均化します)。

plotms を使用して、異なる設定の SNR (S/N 比) 対 時間、または位相 対 時間をグラフ化すると便利です。 solint 値の違いによる S/N 比の違いに注意してください。

# In CASA
plotms(vis='phase.cal', xaxis='time', yaxis='SNR')

# In CASA
plotms(vis='phase.cal', xaxis='time', yaxis='phase')

得られた解をプロットします。 2 つの相関が互いにかなりよく追従している、自明ではないが、大きくない解 (数十秒程度) を見つけています。 もしデータがすでに完全に較正されていれば、これらの値はゼロになるはずです。

# In CASA
plotms(vis="phase.cal", 
       xaxis="time", 
       yaxis="phase", 
       gridrows=3, 
       gridcols=3, 
       iteraxis="antenna", 
       plotrange=[0,0,-30,30], 
       coloraxis=’corr’,
       titlefont=7, 
       xaxisfont=7, 
       yaxisfont=7, 
       plotfile="sis14_selfcal_phase_scan.png", 
       showgui = True)

図 2: 最初のセルフキャリブレーションの位相解。

この解で問題なさそうなので、applycal を使ってデータに適用してみます。フィールド 5 (サイエンスターゲット) だけに注目します。

# In CASA
applycal(vis="sis14_twhya_calibrated_flagged.ms",
         field="5",
         gaintable=["phase.cal"],
         interp="linear")

この時点で、セルフキャリブレーションされたデータは MS の "corrected data" に保存される。 セルフキャリブレーションを色々試したくなることが多いので、この時点で補正されたデータを新しいデータセットに分割しておくと便利なことがよくあります (必須ではありません)。 applycal を再び実行する場合は、まず出力された ".ms" と ".flagversions" ファイルを削除する必要があります。

# In CASA
os.system("rm -rf sis14_twhya_selfcal.ms sis14_twhya_selfcal.ms.flagversions")
split(vis="sis14_twhya_calibrated_flagged.ms",
      outputvis="sis14_twhya_selfcal.ms",
      datacolumn="corrected")

次に、セルフキャリブレーションしたデータをクリーニングします。 もう一度、TW Hydra の残差が周囲の画像の残差と同じになるまでクリーニングします。

# In CASA
os.system('rm -rf second_image.*')
tclean(vis='sis14_twhya_selfcal.ms',
       imagename='second_image',
       field='5',
       spw='',
       specmode='mfs',
       deconvolver='hogbom',
       nterms=1,
       gridder='standard',
       imsize=[250,250],
       cell=['0.1arcsec'],
       weighting='natural',
       threshold='0mJy',
       interactive=True,
       niter=5000,
       savemodel='modelcolumn')

図 3: 2 回目の tclean の、2 回のクリーニングサイクル後の残差。ビームサイズ 0".639 x 0".494, -65°.483, RMS = 5.86 [mJy]

残差は今回の方が良いようです。 ビューワーを実行し、1 回目と 2 回目の画像を比較してください。 ノイズが顕著に改善され、信号もいくらか改善され、全体的な S/N 比が大幅に改善されているのがわかるはずです。 この 2 回目のクリーンアップでモデルも生成されます (savemodel パラメータが設定されている場合)。 今度は、この改善されたモデルを使用して、位相のみのセルフキャリブレーションの第 2 ラウンドを実行します。

# In CASA
os.system("rm -rf phase_2.cal")
gaincal(vis="sis14_twhya_selfcal.ms",
        caltable="phase_2.cal",
        field="5",
        solint="170s",
        calmode="p",
        refant="DV22",
        gaintype="G")

今回は、gaincal が (minSNR で設定された閾値と比較して) 不十分な S/N が理由とするフラグを立てられた、失敗した解が数多く見られます。 理想的には、失敗解が出ないような solint を見つけることですが、解の間隔によっては、特にアンテナ間隔が広い設定の場合に、失敗解が少数出ることが予想されます。 解が失敗するということは、それらのデータに自動的にフラグが立つ (つまり、もう使われない) ということです。 フラグが立ったベースラインが、各ゲイン較正反復後のビームサイズと画像忠実度にどのように影響するかを考慮することが重要です。

もう一度キャリブレーションテーブルをプロットしてみましょう。 この時点では、モデルに対する位相のばらつきがかなり小さくなっているため、位相のみのセルフキャリブレーションではあまり効果が期待できません。

# In CASA
plotms(vis="phase_2.cal", 
       xaxis="time", 
       yaxis="phase", 
       gridrows=3, 
       gridcols=3, 
       iteraxis="antenna", 
       plotrange=[0,0,-30,30], 
       coloraxis=’corr’,
       titlefont=7, 
       xaxisfont=7, 
       yaxisfont=7, 
       plotfile="sis14_selfcal_phase_scan_2.png",  
       showgui = True)

図 4: 2 回目のセルフキャリブレーション後の位相解。

この解をまた適用します。

# In CASA
applycal(vis="sis14_twhya_selfcal.ms",
         field="5",
         gaintable=["phase_2.cal"],
         interp="linear")

再びデータをスプリットします。 このようにして、較正とスプリットをおこなうことで、セルフキャリブレーションを進めていきます。

# In CASA
os.system("rm -rf sis14_twhya_selfcal_2.ms sis14_twhya_selfcal_2.ms.flagversions")
split(vis="sis14_twhya_selfcal.ms",
      outputvis="sis14_twhya_selfcal_2.ms",
      datacolumn="corrected")

3 回目のクリーンをします。

# In CASA
os.system('rm -rf third_image.*')
tclean(vis='sis14_twhya_selfcal_2.ms',
       imagename='third_image',
       field='5',
       spw='',
       specmode='mfs',
       deconvolver='hogbom',
       nterms=1,
       gridder='standard',
       imsize=[250,250],
       cell=['0.1arcsec'],
       weighting='natural',
       threshold='0mJy',
       interactive=True,
       niter=5000,
       savemodel='modelcolumn')

図 5: 3 回目の tclean の、3 回のサイクル後の残差。ビームサイズ 0".691 x 0".549, -62°.883, RMS = 4.98 [mJy]

改善されたモデルを用いて、3 回目のセルフキャリブレーションをおこなう (位相較正のみ)。

# In CASA
os.system("rm -rf amp.cal")
gaincal(vis="sis14_twhya_selfcal_2.ms",
        caltable="phase_3.cal",
        field="5",
        solint="30s",
        calmode="p",
        refant="DV22",
        gaintype="T")

# In CASA
plotms(vis="phase_3.cal", 
       xaxis="time", 
       yaxis="phase", 
       gridrows=3, 
       gridcols=3, 
       iteraxis="antenna", 
       plotrange=[0,0,-30,30], 
       coloraxis=’corr’,
       titlefont=7, 
       xaxisfont=7, 
       yaxisfont=7, 
       plotfile="sis14_selfcal_phase_scan_3.png",  
       showgui = True)

解を適用します。

# In CASA
applycal(vis="sis14_twhya_selfcal_2.ms",
         field="5",
         gaintable=["phase_3.cal"],
         interp="linear")

図 6: 3 回目のセルフキャリブレーション後の位相解。

スプリットします。

# In CASA
os.system("rm -rf sis14_twhya_selfcal_3.ms sis14_twhya_selfcal_3.ms.flagversions")
split(vis="sis14_twhya_selfcal_2.ms",
      outputvis="sis14_twhya_selfcal_3.ms",
      datacolumn="corrected")

4 回目に進みます。

# In CASA
os.system('rm -rf fourth_image.*')
tclean(vis='sis14_twhya_selfcal_3.ms',
       imagename='fourth_image',
       field='5',
       spw='',
       specmode='mfs',
       deconvolver='hogbom',
       nterms=1,
       gridder='standard',
       imsize=[250,250],
       cell=['0.1arcsec'],
       weighting='natural',
       threshold='0mJy',
       interactive=True,
       niter=5000)

図 7: 4 回目の tclean の、2 回のサイクル後の残差。ビームサイズ 0".722 x 0".565, -58°.463, RMS = 4.88 [mJy]

改善の度合いがかなり少なくなってきました。 位相についてのセルフキャリブレーションはもう十分と判断したら、次は振幅のセルフキャリブレーションを試してみます。 ただし、多くの場合、位相のみのセルフキャリブレーションで満足したら、セルフキャリブレーションを停止してもまったく問題ありません。 振幅のセルフキャリブレーションは位相のそれよりも天体放射信号の特性を変える可能性が高いため、いくらか危険であることを注意しておきます。 solnorm=True を設定して、解が正規化されるようにすることで、これを幾らか緩和します。

# In CASA
os.system("rm -rf amp.cal")
gaincal(vis='sis14_twhya_selfcal_3.ms',
        caltable="amp.cal",
        field="5",
        solint="inf",
        calmode="ap",
        refant="DV22",
        gaintype="G",
        solnorm=True)

solint を "inf" に戻しました。これは、振幅のセルフキャリブレーションでは一般的なことです。 振幅のセルフキャリブレーションでは、位相のみのセルフキャリブレーションのベストラウンドの solint よりも大きな solint が必要です。

もう一度較正表をプロットします。

# In CASA
plotms(vis="amp.cal", 
       xaxis="time", 
       yaxis="amp", 
       gridrows=3, 
       gridcols=3, 
       iteraxis="antenna", 
       plotrange=[0,0,0,0],
       coloraxis=’corr’,
       titlefont=7, 
       xaxisfont=7, 
       yaxisfont=7, 
       plotfile="sis14_selfcal_amp_scan.png",  
       showgui = True)

図 8: 4 回目のセルフキャリブレーション後の位相解。

かなりの散らばりと相関間のオフセットが見られます。 これは、"Display" タブを選択し、"colorize" ボックスをチェックし、"corr" を選択して相関によってデータを色付けすることで、ビューワー内で簡単に視覚化することができます。 少なくとも、これを適用することでどのような効果が得られるかを見てみる価値はあるでしょう。それでは、この解を暫定的に適用してみます。

# In CASA
applycal(vis='sis14_twhya_selfcal_3.ms',
         field="5",
         gaintable=["amp.cal"],
         interp="linear")

この時点で、セルフキャリブレーションされたデータは、"corrected data" の中にあります。 セルフキャリブレーションをもっと試すには、補正されたデータを新しいデータセットに分割することが (必須ではないが) 非常に有効です。

# In CASA
os.system("rm -rf sis14_twhya_selfcal4.ms*") 
      split(vis='sis14_twhya_selfcal_3.ms', 
      outputvis='sis14_twhya_selfcal_4.ms', 
      datacolumn="corrected")

5 回目のクリーンをします。

# In CASA
os.system('rm -rf fifth_image.*')
tclean(vis='sis14_twhya_selfcal_4.ms',
       imagename='fifth_image',
       field='5',
       spw='',
       specmode='mfs',
       deconvolver='hogbom',
       nterms=1,
       gridder='standard',
       imsize=[250,250],
       cell=['0.1arcsec'],
       weighting='natural',
       threshold='0mJy',
       interactive=True,
       niter=5000,
       savemodel='modelcolumn')

図 9: 5 回目の tclean の、4 回のサイクル後の残差。ビームサイズ 1".988 x 1".154, -88°.964, RMS = 16.3 [mJy]

今回は、より深くクリーニングできることに気づきました。 4 回のメインサイクルの後、バックグラウンドの RMS はビームサイズのスケールで非常にランダムに見えます。これは良いことです。

4 枚目と 5 枚目の画像を比較してください (imstat タスクを使うか、ビューワーでボックスを描いて統計パネルに見てください)。 ノイズレベルは劇的に改善されていますが、フラックスは顕著に変化していません (これは非常に良いことです)。 前のクリーニングが良いモデルを表していると仮定することで、データの S/N 比をほぼ 1 桁改善することができました。

このケースの振幅のセルフキャリブレーションに満足するかどうかは別として、振幅+位相のセルフキャリブレーションが常に成功するわけではなく、 また常に必要なわけでもないことを理解することは非常に重要です。 振幅のセルフキャリブレーションで良い解を得ることができれば、セルフキャリブレーションしていないデータよりも S/N 比が 1 桁以上向上している可能性が高いです。 同様に、位相のみのセルフキャリブレーションで大幅に改善され、振幅+位相で良い解が得られなかったとしても、大丈夫です。

この場合、4 番目の画像は最高の連続波イメージです。このデータセット (sis14_twhya_selfcal_3.ms) を使って、後の作業を進めることができます。 次は、UV 連続光差し引きとラインイメージングを行います。

ページ先頭に戻る
CASA guides "First Look at Self Calibration CASA 6" へ (本家のサイト:英語)

Last Update: 2023.09.30