アットウィキロゴ

clump同定(clumpfindほか編)

FITS cubeからクランプを同定したい時には
複数のアルゴリズムがあり、
clumpfind(Williams et al., 1994, ApJ 428, 693)やcpropsなどが使われている。
ここではclumpfindなどを導入、利用する方法を記載する。

IDLなど幾つかの形式でプログラムが配布されている。
また、miriadにも標準で入っているらしい(、が試してないし確認もしていない)。

1. starlinkの環境整備
ここでは、starlinkというUKで開発、
Joint Astronomy Centre→East Asian Observatoryで維持されている解析ツールセットを試してみる。
リンク先の最新版(この文章記載時[2015/06/16]で2015A版)を手順通りにインストール。
何故かちょこちょこリンクが切れているところがあるが、丁寧に追えば必要なものは残っているようである。
linuxに入れる場合、IMPORTANT NOTEにもあるとおり、
pathが衝突を起こすようなので、回避方法を考えなければならない。
とりあえず、自分としては(tcsh環境下。bashの場合は適宜文法を読み替え).cshrcの中で

alias starlink1 'setenv STARLINK_DIR /home/HOGE/starlink/star-2015A'
alias starlink2 'source $STARLINK_DIR/etc/login'
alias starlink3 'source $STARLINK_DIR/etc/cshrc'

とか無茶をした(user名をHOGEとした場合)。
これで実際に使いたい時にstarlink[1, 2, 3]を次々入力する。
もっとスマートにやるなら専用シェルを作ってsourceしたほうがいいかも。

2. FITSデータについて
starlinkではFITSファイルではなく、NDFという専用の形式でデータを扱う。
もちろんFITSファイルを変換するツールは用意されている。
NDF形式について
変換ツールfits2ndfについて

2-1. starlinkを起動
terminalで1.の通り[一時的に]パスを通す。
2-2. 変換ツール群convertを起動
convertコマンドを打つ。
2-3. FITS変換コマンド
fits2ndf (入力fitsファイル) (出力ファイル名)
の形式で実行。
但し、CASAから吐き出したFITSファイルはどうやらうまく読み込めないようである。
AIPSとかmiriadとか適当な別の解析ソフトを経由してやるとうまく行った。

3. クランプの同定
starlinkで用意されているクランプ同定法は以下の4種類。
  • GaussClumps
  • ClumpFind
  • Reinhold
  • FellWalker
各アルゴリズムの詳細については下記オフィシャルのマニュアルを参照。


クランプ同定はCUPIDという解析ツールセットに収録されているfindclumps(そのまま)で行える。

ということで…
3-1. cupidの起動
starlinkが使える状態(1.参照)でcupidを打つ

3-2. クランプを探す
findclumps (2.で用意したndf形式のファイル) (アウトプット。ndf形式) outcat="(FITS形式のクランプのカタログ)" method="(アルゴリズム。clumpfindなど)"
がデフォルトのコマンド。
これを打つとrmsを聞かれる(一応ツールでも計算してくれる)ので入力すれば、
後はクランプを探してカタログ化してくれる。

但し、このままでは条件が結構怪しいので、
config="(いろんな条件)"
をコマンドに追加する必要がある。

外部ファイルで設定を記載しておいて、それを読み込むことも可能。
例えば、clumpfind用の設定ファイルとして
clumpfind.param
を用意した場合では、

findclumps (2.で用意したndf形式のファイル) (アウトプット。ndf形式) outcat="(FITS形式のクランプのカタログ)" method="clumpfind" config=^clumpfind.param
という形で実行可能。

詳細は前述のマニュアルを参考にするべきであるが、
clumpfind用に設定ファイルとパラメータの意味を記載しておく(主に自分のため)

ClumpFind.AllowEdge=0 #0以外:マップの端にあるクランプもクランプとしてカウントする(形や質量などに同定ミスがありうる).
ClumpFind.DeltaT=2*RMS #ここで定義した間隔でクランプを探す(RMSは別途定義した値)
ClumpFind.FwhmBeam=2.0 #ビームサイズ。単位はピクセルであることに注意。
ClumpFind.IDLAlg=1 #0:オリジナルのクランプファインドアルゴリズム(Williams et al. 1994).0以外:アップグレード版アルゴリズム(Williams WWW site on 28th April 2006)。2つ目のコントアまで引いてふたつのクランプが重なってる時にクランプとみなすのがアップグレード版。
ClumpFind.Level<n>:<n>は自然数。<n>番目のコントアレベルを具体的に指定するとき用。指定しなければDeltaTと後述のTlowで決まる。
ClumpFind.MaxBad=0.05 #バッドピクセルがどれくらいクランプの隣にいていいか、の割合。他のアルゴリズムで同定したクランプと比べたい場合は1にすること
ClumpFind.MinPix=16 #クランプとみなすには最低でどれくらいのピクセルが必要か。キューブデータの場合16, 2次元で7は必要。但し他のアルゴリズムで同定したクランプと比べたい場合は5(キューブ)、40(2次元)にすること
ClumpFind.Naxis=1 #clumpfindはピークのピクセルの周囲でクランプかどうかを判定する。このパラメータは"周囲"を定義する。キューブデータの場合…1:面が接するピクセル。2:辺が接するピクセル。3:角が接するピクセル
ClumpFind.RMS #RMSの値で定義した値以外に別途clumpfind内でRMS(という変数)を定義したい時に使うらしい。
ClumpFind.Tlow=2.0*RMS #最初のコントアレベル
ClumpFind.VeloRes=1.0 #速度分解能。単位はピクセル。

同定したクランプを2次元マップに重ねたい時
1. kappa で表示ツール起動
2. lutable mapping=linear coltab=colour カラーテーブル読み込み
3. display (2次元マップ).sdf device=xwindow mode=range
でxwindowに表示。deviceをapscol_pとするとepsファイル。
centre='' xmagn=2とかすると、中心座標を指定して2倍に拡大。
(centre='hh:mm:ss +-dd:mm:ss'とか書きたいがなぜか8文字制限とか言って怒られるので、
一度指定しておいてからあとで聞かれたときに入力する)
4. listshow (同定したクランプ情報の入ったFITSテーブル).FIT plot=STCS device=xwindow
clumpの位置とサイズを重ねて表示。plot=markとするとピーク位置を十字で示す。
3.でapscol_pにしてこちらも同じようにすれば重ねたepsファイルを作れる。

タグ:

+ タグ編集
  • タグ:
最終更新:2018年01月26日 12:50