←[[前へ>http://www39.atwiki.jp/vitaminc/pages/31.html]]↑[[目次>http://www39.atwiki.jp/vitaminc/pages/20.html]]→[[次へ>http://www39.atwiki.jp/vitaminc/pages/33.html]] *&u(){Difmapによる処理(5)CLEANによるdeconvolution} ---- **&u(){CLEANを実行する} CLEANによるdeconvolutionのアルゴリズムについて詳しく知りたい人は、[[こちら>http://astro.sci.kagoshima-u.ac.jp/omodaka-nishio/member/kameno/AIPS-Difmap/Lecture/CLEAN.swf]]をご覧下さい。要するに、ダーティマップの中で輝度が最大の場所にCLEAN componentを置き、そのCLEAN componentから導かれるビジビリティを観測データから差し引いて残差ビジビリティにし、その残差ビジビリティを使って新たなダーティマップを描く…というプロセスを繰り返す反復法です。 さて、CLEANの効果を見やすくするために、ちょっと小細工をしてみましょう。残差マップをmapplotで表示するときに、輝度の値と画面上での明るさの対応は、デフォルトでは輝度の最小値・最大値を画面の最小輝度・最大輝度に対応させるように設定されています(この対応を transfer function: 伝達関数といいます)。この可変スケーリングは親切ですけど、CLEANによって残差が減っていくことを実感しづらいでしょう。そこで伝達関数を固定して、CLEANによって残差が減る様子を分かりやすくしてみます。それには、 >&u(){mapfunc linear, -0.5, 3.0} 第1引数は線型の伝達関数を指定, 第2引数は輝度の最小値, 第3引数は輝度の最大値を指定。 >! Mapplot transfer-function = linear, Data range = -0.6 - 3 Jy. と打ちます。これで輝度の伝達関数が線型に, 最小・最大輝度のレンジが-0.5 - 3.0 Jy/beam に設定されました。 この状態で、再度ダーティマップを表示しておきましょう。 >&u(){mappl} >! >! Move the cursor into the plot window and press 'H' for help PGPLOT画面上で&bgcolor(#ccff00){x}キーを押して、コマンドプロンプトに戻ります。それではいよいよ&u(){clean}コマンドでCLEANします。 >&u(){clean -1000, 0.001} CLEAN gainを0.001に設定して、1000回の反復でCLEANする。 >! clean: niter=-1000 gain=0.001 cutoff=0 >! Component: 050 - total flux cleaned = 0.166858 Jy >! Component: 100 - total flux cleaned = 0.325574 Jy >! Component: 150 - total flux cleaned = 0.476546 Jy >! Component: 200 - total flux cleaned = 0.620151 Jy >! Component: 250 - total flux cleaned = 0.756749 Jy >! Component: 300 - total flux cleaned = 0.886682 Jy >! Component: 350 - total flux cleaned = 1.01027 Jy >! Component: 400 - total flux cleaned = 1.12784 Jy >! Component: 450 - total flux cleaned = 1.23966 Jy >! Component: 500 - total flux cleaned = 1.34603 Jy >! Component: 550 - total flux cleaned = 1.44721 Jy >! Component: 600 - total flux cleaned = 1.54345 Jy >! Component: 650 - total flux cleaned = 1.635 Jy >! Component: 700 - total flux cleaned = 1.72208 Jy >! Component: 750 - total flux cleaned = 1.80491 Jy >! Component: 800 - total flux cleaned = 1.8837 Jy >! Component: 850 - total flux cleaned = 1.95864 Jy >! Component: 900 - total flux cleaned = 2.02993 Jy >! Component: 950 - total flux cleaned = 2.09774 Jy >! Component: 1000 - total flux cleaned = 2.16224 Jy >! Total flux subtracted in 1000 components = 2.16224 Jy >! Clean residual min=-0.261898 max=1.257721 Jy/beam >! Clean residual mean=0.000468 rms=0.100505 Jy/beam >! Combined flux in latest and established models = 2.16224 Jy &u(){clean}コマンドの第1引数は反復回数です。マイナスを付けるのは、残差マップ中で最小輝度(負の値)の絶対値が最大輝度を上回ったらそこで反復を止める、というオプションです。つまり負のCLEAN成分を避けることができます。第2引数はCLEAN gainで、残差マップの最大値に対してCLEAN gain倍の値を、そこに置くCLEAN componentのフラックス密度とします。通常CLEAN gain は1より小さい値で、ここではとても慎重にCLEANを行うために0.001と小さな値にしています。CLEAN gainが大きすぎると、CLEANのしすぎ(CLEAN成分を差し引きすぎること)の原因になります。特に残差が大きいうち(CLEANがあまり進んでいない段階)ではCLEAN gainを控えめにした方がいいでしょう。強気に攻める場合でも0.1くらい、慎重な人は0.001くらいから始めてください。 さて、CLEAN実行時のメッセージを見てみましょう。total flux cleaned とあるのは、その段階までにCLEANした成分のフラックス密度の和です。理想的にはtotal flux cleanedが天体の全フラックス密度 (= 空間周波数ゼロλにおけるビジビリティ振幅 : [[radpl>http://astro.sci.kagoshima-u.ac.jp/omodaka-nishio/member/kameno/AIPS-Difmap/DA193/image/difmap_radpl01.png]]でチェック!)になるまでCLEANを進めるべきでしょう。1000回の反復が終わった後で、残差マップの最小値が-0.26 Jy/beam, 最大値が1.26 Jy/beamですから、まだ正の側に偏っており、CLEANが十分ではないと判ります。 **&u(){CLEANしたらチェック} このままCLEANを続けてもいいのですが、ここでCLEANの効果を見るために&u(){mappl}コマンドで残差を表示してみましょう。 >&u(){mappl} >! >! Move the cursor into the plot window and press 'H' for help