-このページは? // --副鏡測定の解析を行う人のためのページです。 -更新履歴 -- 22-Jun-09 - YT - created. -- 15-Aug-09 - YT - modified. -- 29-Sep-09 - YT - modified (pointing analysis). -- 02-Oct-09 - YT - moved "pointing analysis" to another page. -- 21-Apr-10 - YT - added a section describing the "problem 2010". -- 14-May-10 - BH - modified for 2010 session -- 16-Apr-11 - YS -modified. -- 10-May-13 - YT - modified. -- 25-Apr-14 - BH - updated -目次 #contents ---- // ----------------------------------------------------------------------- *副鏡位置測定のデータ解析 [#yb38b734] - 大幅な改訂を実行中... - [[大島製手順書>http://aste-www.mtk.nao.ac.jp/astecal/subref_ana.txt]]も参考になります。 //- 以下、2010/04/28 の Saturn のデータの解析を例とする。 //- 以下、2009/07/20 の Jupiter 1セット目のデータの解析を例とする。適宜、Jul 15, 20090720, jup等の変更が必要。 // ----------------------------------------------------------------------- ** 0. 解析の流れ [#c83ce52d] 下記の一連の繰り返しで副鏡の最適位置を探し出す。 +ファイルリストの作成 +連続波データの一次解析 +焦点位置のEL依存性 +器差ファイルの更新と再測定による確認 - ''以下、アカウントが複数あるので要注意。'' - ''解析プログラムを実行する前に、かならず下記のコマンドを実行してください。(環境変数設定、パスを通すため)'' astebeam@aste-mx2% source .cshrc.linux //-->astebeam@aste-mx2% source .cshrc.linux.shimajiri #ver 2011/10/25 // ----------------------------------------------------------------------- ** 1. ファイルリストの作成 [#m190d282] (1.1, 1.2まで自動で行うスクリプト astebeam@aste-mx2:~/subref/observations/make_sbrf_focus_list.sh もあります) *** 1.1. アンテナログファイルをaste-mx2にコピー [#scf33b33] - ''aste10''アカウントでaste-mx2にログイン //+''aste10''アカウントでaste-mx2にログインする。 //+aste-2cからaste-mx2に、観測データファイル(*.LCK)ファイルをコピー。 // aste09@aste-mx2[~/sbrf09/continuum]% rsync -avz -e ssh aste09@aste-2c:~/sbrf09/continuum/data/'C80315*.LCK' ~/sbrf09/continuum/data/ // //- アンテナログファイルをコピー rsync -avz -e ssh asteobs@aste-1c:/log/7/'real20130812*' ~/antlog/ ~~~~~~~~ <- 測定日 //+アンテナログファイルを aste-1c → aste-2c → aste-mx2 の順番でコピー。 // aste10@aste-2c% rsync -avz -e ssh asteobs@aste-1c:/log/7/'real20130812*' ~/antlog/ // aste10@aste-mx2% rsync -avz -e ssh aste10@aste-2c:~/antlog/'real20130812*' ~/antlog/ // aste09@aste-2c% rsync -avz -e ssh asteobs@aste-1c:/log/7/'real20090720*' ~/antlog/ // aste09@aste-mx2% rsync -avz -e ssh aste09@aste-2c:~/antlog/'real20090720*' ~/antlog/ -- もしaste-1cから4日以上前のデータをコピーする場合、rsync時に'No match'などと言われてコピーができないかもしれない。 この場合、aste-1c上で、/log/7/real201308/ ディレクトリ内を探すと、目的のアンテナログ(gzipされている)が見つかるはず。 -- aste-mx2にgzファイルをコピーしてきた場合、gunzipで解凍しておく。 aste10aste-mx2% gunzip real20130812012345.gz //2011年4月バージョン //+2011年でもaste10のアカウントを使用する。 //+アンテナログファイルを aste-1c → aste-2c →aste-at3i →aste-mt2 → aste-mx2 の順番でコピー。 // aste10@aste-2c% rsync -avz -e ssh asteobs@aste-1c:/log/7/'real20110422*' ~/antlog/ // aste10@aste-at3i% rsync -avz -e ssh aste10@aste-2c:~/antlog/'real20110422*' ~/antlog/ // aste10@aste-mt2% cd ~/antlog // aste10@aste-mt2% sftp aste10@aste-at3i <--rsynが使えなかった。 // sftp> cd antlog // sftp> get real20110422* // sftp> exit // aste11@aste-mx2% cd ~/antlog // aste11@aste-mx2% sftp aste10@aste-mt2 // sftp> cd antlog // sftp> get real20110422* // sftp> exit // //-aste-at3i, aste-mt2には~/antlogを作成しました。by Y. Shimajiri, 2011.4.16 // ----------------------------------------------------------------------- *** 1.2. 解析に使うファイルリストを作成する [#m5712a47] - 指示書と観測データファイル(*.LCK)のリストを作成する。 -- ''astebeam''アカウントでaste-mx2にログインし、下記の作業ディレクトリで指示書名と観測データファイル名(*.LCK)のリストを作成する。 --- ディレクトリ: /home/astebeam/subref/observations --- リスト名: C30812.list (<-- 数字は、西暦の下一桁と、月日。2013年の場合はC3xxxx.list) //---リスト名: C90720jup.list // astebeam@aste-mx2% cd ~/subref/observations // astebeam@aste-mx2% rm tmp[1-3].txt <--過去の物を削除 astebeam@aste-mx2% ssh aste10@aste-2c 'grep "Aug[ ]* 12" /log/6/mess | grep START | grep -v Cosmos | grep -v SEND' > tmp1.txt ~~~ ~~ <- Month & Day // astebeam@aste-mx2% cat tmp1.txt | grep sbrf10 | awk '{print $9,$8}' | sed -e "s/aste10.sbrf10.//;s/'../.start C/;s/00.000/.LCK/" > tmp2.txt astebeam@aste-mx2% cat tmp1.txt | grep sbrf10 | awk '{print $9,$8}' | sed -e "s/aste10.sbrf10.//;s/'[ ]1/.start C/;s/00.000/.LCK/" > tmp2.txt // astebeam@aste-mx2% source .cshrc.linux # <-- 当面はおまじないと思ってください // astebeam@aste-mx2% cd ~/subref/observations // astebeam@aste-mx2% ssh aste10@aste-2c 'grep "Aug[ ]* 12" /log/6/mess | grep START | grep -v Cosmos | grep -v SEND' > tmp.txt // astebeam@aste-mx2% cat tmp.txt | grep sbrf10 | awk '{print $9,$8}' | sed -e "s/aste10.sbrf10.//;s/'[ ]*13/.start C3/;s/00.000/.LCK/" > tmp2.txt // astebeam@aste-mx2% ssh aste09@aste-2c 'grep "Jul[ ]* 20" /log/6/mess | grep START | grep -v Cosmos | grep -v SEND' > tmp.txt // astebeam@aste-mx2% cat tmp.txt | grep sbrf09 | awk '{print $9,$8}' | sed -e "s/aste09.sbrf09.//;s/'[ ]*09/.start C9/;s/00.000/.LCK/" > tmp2.txt // ---3行目のgrepコマンドの引数"Aug[ ]* 12"は、空白を「_」で表現することにすると(つまり、アンダーバーはいらない)。「[ ]*」は (Solarisの) 正規表現で空白の0個以上の繰り返しを意味します。7/20のデータの場合は「"Jul[_]*_20"」、8/1のデータの場合は「Aug[_]*_1」です。 // //--2011年4月バージョン aste-2c ->aste-at3i ->aste-mt2 -> aste-wx2 // asteobs@aste-2c% rm tmp.txt <--過去の物を削除 // asteobs@aste-2c% grep "Apr[ ]* 22" /log/6/mess | grep START | grep -v Cosmos | grep -v SEND > tmp.txt // asteobs@aste-at3i% rm tmp.txt <--過去の物を削除 // asteobs@aste-at3i% sftp asteobs@aste-2c // sftp>get tmp.txt // sftp> exit // asteobs@aste-mt2% rm tmp.txt <--過去の物を削除 // asteobs@aste-mt2% sftp asteobs@aste-at3i // sftp>get tmp.txt // sftp> exit // astebeam@aste-mx2% rm tmp.txt <--過去の物を削除 // astebeam@aste-mx2 % sftp asteobs@aste-mt2 // sftp> get tmp.txt // sftp> exit // astebeam@aste-mx2 % cat tmp.txt | grep sbrf11 | awk '{print $9,$8}' | sed -e "s/aste11.sbrf11.//;s/'[ ]*11/.start C1/;s/00.000/.LCK/" > tmp2.txt // astebeam@aste-mx2 % mv tmp2.txt ~/subref/observations // // // - アンテナログファイルのリストを作成する。 astebeam@aste-mx2[~]: cd ~/subref/observations astebeam@aste-mx2[~/subref/observations]: ls -l /home/aste10/antlog/real20130812* | grep -v gz$ | awk '{print $9}' | sed s#/home/aste10/antlog/## > tmp3.txt ~~~~~~~~ <- 測定日 // astebeam@aste-mx2[~/subref/observations]: rm tmp3.txt <---古いものを削除 // astebeam@aste-mx2[~/subref/observations]: ls -l /home/aste10/antlog/real20130812* | grep -v gz$ | awk '{print $9}' | sed s#/home/aste10/antlog/## > tmp3.txt // astebeam@aste-mx2[~/subref/observations]: ls -l /home/aste09/antlog/real20090720* | grep -v gz$ | awk '{print $9}' | sed s#/home/aste09/antlog/## > tmp3.txt // // -- wcコマンドを使うとテキストファイルの行数を調べることが出来て便利 wc tmp2.txt wc tmp3.txt *** 1.3. tmp2.txtとtmp3.txtを整形して、下記のような C30812.list を作成 [#d03022c6] -行数等をあわせたあとに paste tmp2.txt tmp3.txt > C30812.list YMMDD // --''【重要】'' 下記に示した jupzc3, jpsbc3a, jpsbc3b, ..., jpsbc3a の12ファイルをひとつのセットと数える。したがって、リストされた指示書の数は12の倍数となるはず。jupzc3 で始まり、次の jupzc3 の直前の jpsbc3a で終わっていることを確認する。 行数が12の倍数になっていることも確認する。タブだけの行などがあっても、解析が通らない。 --''【重要】'' LCK と real の時刻が対応していることを確認する。 -- (方法はさておき、とにかく) C30812.list が下記のような形になっていればOK。列の区切りはスペース・タブ、両方可能。 // jupzc3.start C803150134.LCK real20080315013322 jpsbc3a.start C803150137.LCK real20080315013614 ←stsbc3?の並びは以下の通り jpsbc3b.start C803150143.LCK real20080315014246 (間隔はX,Y共に1mm) jpsbc3c.start C803150150.LCK real20080315014849 e jpsbc3d.start C803150156.LCK real20080315015546 d ↑X jpsbc3e.start C803150202.LCK real20080315020145 g f a h i ←Y jpsbc3a.start C803150208.LCK real20080315020744 b jpsbc3f.start C803150214.LCK real20080315021346 c jpsbc3g.start C803150220.LCK real20080315021946 jpsbc3h.start C803150226.LCK real20080315022546 jpsbc3i.start C803150232.LCK real20080315023145 jpsbc3a.start C803150238.LCK real20080315023743 ***ファイルリスト作成時のtips [#lfc1161d] - rectangular cut & paste on emacs --ctrl-space で矩形の開始位置(左上角)をマーク --ctrl-{ > で最終行に行きカーソルで矩形の右下角に移動 --ctrl-x r k -> cut --ctrl-x r y -> paste - rectangular cut & paste on mi (for Mac users) --Macユーザはエディタ mi (http://mimikaki.net/ ) をつかっても便利。 --[shift]+[command]+R で矩形選択モードに入る --マウスでテキスト中の矩形領域を選択し、[command]+C でコピー --[shift]+[command]+V で矩形貼付け - Excelを用いる --[データ]→[外部データの取り込み]を用いるなどして、「指示書・LCK」と「アンテナログ」の時刻を照らし合わせつつ、ひとつのファイルにする。 --テキストファイル(空白区切り・タブ区切り両方可能)で書き出す。 --ただし、書き出したファイルの改行コードがUNIXのもの(LF)になっていることを確認する。 - command "paste" を用いる -- $paste file1 file2 > C00428.list :参考)|X, Y (stsbc3*.start) の生データは、各X, Y方向のクロススキャンに対する強度プロファイル。Z方向スキャン (satzc3.start) の生データは、Z-T。 // ----------------------------------------------------------------------- **2. 連続波データの一次解析 [#z47209bb] *** IDL上で各データの一次解析、およびガウシアンフィット [#hb547e1d] +求まるのは、下記の2点。 -- X, Y は、各副鏡位置(X, Y)における、惑星に対する1次元スキャンのピーク強度と半値幅 -- Zスキャンの結果は、最適な Z のピークパラメータ // +ディレクトリ ~/subref/observations/ において、下記のパイプライン astebeam@aste-mx2% source ~/.cshrc.linux astebeam@aste-mx2% cd ~/subref/observations/ astebeam@aste-mx2% subref_redux 130812 C30812.list を実行する。ここで、Zスキャンの観測データとフィッティング結果、各副鏡位置(X,Y)におけるクロススキャンデータとフィッティング結果がプロットされる。惑星が受かっていない、フィットが成功していないなどの異常が見られた場合は、各自ノートにひかえておき、次のステップ (生成ファイルの整形)でフラグする。 // +生成された一次解析結果、フィッティング結果を確認する。リダクションが済んだ1次元プロファイル(position vs. Ta*)が記載されたファイルは astebeam@aste-mx2:~/subref/observations/130812/ 配下に出力される。1次元プロファイルのフィット結果は、~/subref/observations/に生成されている。生成されたデータファイル(フィット結果)の内容は下記: --C30812.sbrfx, y: X,Y を振った時の各点のピーク値と幅 データの並び: X, Y, Z, AZ, EL, C00428, peak, width, peak, width, ...(以降fitting error) --C30812.sbrfz: ZスキャンをGaussianフィットした結果 データの並び: date, time, AZ, EL, peak(K), center(mm), width(mm), d(peak(K)), d(center(mm)), d(width(mm)), ...(以降fitting error) :参考1| //--最後の [] には、[dX, dY, dZ] を入れることができるらしいが、現在値に対するずれを知りたいので [0., 0., 0.] のままで良い。 一度subref_reduxパイプラインを走らせると、まず~/subref/observations/に結果が出力される。つぎに 130812/ を作成し、~/subref/observations/ にある結果を 130812/ に移動させる。すでに 130812/ ディレクトリに結果のファイルが存在する場合には、上書きせず、終了する。この場合、すでに作成されている 130812/ の内容を別名にして保存しておき、~/subref/observations/ にある結果を 130812/ に移動するか、再度subref_reduxパイプラインを走らせれば良い。 :参考2| subref_reduxからbatchidlを用いてIDLを呼び出している。必要なプロシージャや関数は~/linux/idl/pro/aste/subref/にあり、これらをIDL起動時にコンパイルしている。 :参考3| --Jupiterの場合の典型値:ピーク値 Ta* ~ 80-90 K, FWHM ~ 40 arcsec 程度。(副鏡が最適位置からずれると低く太くなる) --Saturn の場合の典型値: ピーク値 Ta* = 20-30 K, FWHM = 20-30 arcsec 程度。(副鏡が最適位置からずれると低く太くなる) :トラブル例| IDL が途中で反応していない場合、X window が飛ばせないで進んでいない可能性がある。aste-mx2 リモートログイン時に -X オプション等でXフォワーディングしていなければ、-X 付きで再度ログインし直す。 // ----------------------------------------------------------------------- ***バッドデータのフラグ [#z3bd545d] //-&color(red,white){''To-do -- ここをある程度自動化したい''}; //異常と思われる peak, width の''セット''の数値の頭に "?" をつけてコメントアウト(e.g., ?peak, ?width)する。 //-異常と思われる peak, width値が含まれる行の頭に "#" をつけてコメントアウトする。 -基本的には、次のステップで自動フラグしてくれるので、当面はそのまま次のステップへ進んでください。 -もし次のステップで自動フラグがうまく働かないような場合、次を試してみてください。 -- CXXXXX.sbrfx/sbrfy のファイルの内容を確認し、異常と思われる peak 値の符号をマイナスにする。(例:12.345 ==> -12.345) -- CXXXXX.sbrfx/sbrfy のファイルの内容を確認し、異常と思われる peak, width値が含まれる行の頭に "#" をつけてコメントアウトする。 // ----------------------------------------------------------------------- ***ゲインが最大になるX/Y位置を探す [#j094a242] - Zスキャンを行ってから5点のX, Y位置(a, b, c, d, e, f, g, h, i)におけるクロススキャンを行ったわけだが、y = a*(x-b)^2+c の形の二次関数で X,Y のデータをフィットする。たとえば、Xスキャン(Yスキャン)のデータについては-xオプション(-yオプション)を付けて astebeam@aste-mx2[~/subref/observations]: subref_xyfit -x -a C30812 astebeam@aste-mx2[~/subref/observations]: subref_xyfit -y -a C30812 ↑".sbrfx"などの拡張子は不要。 これにより、最大のゲインを与える、最適なX, Yの値を得る。フィット結果は、C30812.sbrfy2、および画像ファイル C30812.sbrfx_0.ps, C30812.sbrfx_0.png などのファイル名で保存される。この ***.sbrfy2 は次のステップ(EL依存性)で使用する。ちなみに、ファイルが複数ある場合は astebeam@aste-mx2[~/subref/observations]: subref_xyfit -y -a C30812 C30812b C30812c ... のようにすべて書き下してもOK。また、複数のファイルをリストした任意名のファイル (e.g., 130812.sbrfy.list) を作成しておいて、-l オプション付きで与えることもできる。 astebeam@aste-mx2[~/subref/observations]: subref_xyfit -y -a -l 130812.sbrfy.list //------- -なお、「-a」が自動フラグ機能を使うためのオプションです。つねに -a オプションを付すことを推奨します。 - もし subref_xyfit> too few data (all data flagged?). subref_xyfit> try again WITHOUT the -a option. などとエラーが出る場合、自動フラグオプション (-a) を外して再度実行してみてください。 astebeam@aste-mx2[~/subref/observations]: subref_xyfit -x C30812 ただし、このように "too few data ..." というメッセージが出るような場合、正常なデータを取得できていない可能性が高いです。その場合は、(大変もうしわけありませんが)データ取得からやり直す可能性も探ってください。 //#ref(C80319sat.sbrfy_0.gif); #ref(subref_xyfit_snapshot.png); -''図:Yスキャン解析結果。'' 副鏡位置Yに対してAz, Elのクロススキャンをそれぞれ2度行い、ゲインが最大となる副鏡位置を得ている。 ***解析結果をログにアップ [#c1f3c1cd] - 上記sbrf_xyfitの結果(working directoryにPNGファイルとして生成されている)を、データ取得日と同じ測定ログのページに書き込んでください。[[Observing Log/2009-08-01]]のページを参考にしてください。 // ----------------------------------------------------------------------- **3. 焦点位置のEL依存性 [#i803f1f6] ***ゲインが最大になるX/Y/Z値のEL依存性を調べる [#x07553d7] +ここで用いるデータファイルは、下記の拡張子が付いたものです。 --.sbrfx2 --.sbrfy2 --.sbrfz // +各ELにおいて最大のゲインを与えるX/Y/Z方向の副鏡位置 (X**/Y*/Z*とよぶ) は、X**/Y*/Z* = A1 sin(EL) + A2 cos(EL) + A3 と書けます。今回の測定で得られてきた複数のデータ (例えば C907**jup*.sbrfz) に対して、X**/Y*/Z* vs. ELのプロットを作り、上式で表されるEL依存性を調べます。 // +まず、入力データファイル名をリストしたファイルを作成します。たとえば、3つのファイルを記入したsbrfz09.listというリストを作成することにします。 090720/C90720 # <-- ファイルのパス。".sbrfz" などの拡張子は不要 090730/C90730 090805/C90805 //たとえば、sbrfz09.listというリストを作成することにします。内容は // 090720/C90720jup # <-- ".sbrfz" などの拡張子は不要 // 090730/C90730jup // ... // 090805/C90805jup // +フィットします。-lオプション付きで先に作成したリスト名を引数に指定します。 astebeam@aste-mx2[~/subref/observations]: subref_elfit -x -l sbrfz09.list astebeam@aste-mx2[~/subref/observations]: subref_elfit -y -l sbrfz09.list astebeam@aste-mx2[~/subref/observations]: subref_elfit -z -l sbrfz09.list ちなみに、 astebeam@aste-mx2[~/subref/observations]: subref_elfit -z ./090720/C90720jup ./090730/C90730jup (..中略..) ./090805/C90805jup のようにすべて書き下してもOK (-lオプションなし)。 -subref_elfitは-x|y|zオプションに応じて、データファイルの拡張子(.sbrfx2, .sbrfy2, .sbrfz)を勝手に付けて、該当するデータファイルを読みに行きます。 - -c オプションで、直線フィット。例: astebeam@aste-mx2[~/subref/observations]: subref_elfit -cz -l sbrfz09.list -PGPLOT窓にデータ点とフィット関数を出力します。 -標準出力に3つの数値を出力します。それぞれ、sin(EL)の係数, cos(EL)の係数, 定数となります。(器差ファイルの更新時に使用) // ----------------------------------------------------------------------- **4. 器差ファイルの更新と再測定による確認 [#x4bafda2] -&color(red,white){''器差ファイルの更新を行う権限は、各立ち上げ時の責任者1名が持ちます。''}; -&color(red,white){''権限のない方は決して責任者の同意なしに器差ファイルを更新してはいけません。''}; - 器差ファイルの更新手順は[[Observation and Analysis/SubRef/PageForChief]]に記載。 //*** 最終結果の確認と記録 [#v8eb3ed3] //生成PostScriptファイル(3ページ)上で以下を確認する。 //-1ページ: 中心に向かってピークが高くなっている (行を"#"でコメントアウトした場合は一部の表示が重なることがある) //-2ページ: Tpeak の山 & HPBW(EL) の谷 & HPBW(AZ) がフラットか //-3ページ: Tpeak の山 & HPBW(AZ) の谷 & HPBW(EL) がフラットか // astebeam@aste-mx2[~/subref/observations/080315]: gv C80315sat1.ps //-生成データファイルにある ddX, ddY, ddZ の値を観測ノートに記録する。 //:参考1) 生成データファイルの中身| //--C80315sat1.sbrfx.dat: AZ, EL, X_center(ddX), width //--C80315sat1.sbrfy.dat: AZ, EL, Y_center(ddY), width //--C80315sat1.sbrfz: date, time, AZ, EL, gauss_norm, gauss_center(ddZ), gauss_width //:参考2)| Xc,Yc,Zc の誤差は 0.1mm 程度 //:参考3)| 得られた (ddX, ddY, ddZ) を subref offset に反映する際には、符号はこのまま入力する。 //:参考4)| ddX(Y)=1mm は、約 EL(AZ)=40" に相当する。ddX,Y を入力するときには dAZ, dEL も補正すると良い。 以上 //================================================ *データ解析ツールの詳細 [#me4cc8b1] ここの項目は、データ解析ツールを使って解析する人には、基本的には不要です。解析の詳細を知りたい人、解析ツールを管理・更新する人はご参考ください。 ** データ解析ツールのディレクトリ構造 [#ia28e957] aste-mx2:/home/astebeam/ └linux/ ├bin/ │ ├subref_redux │ ├subref_xyfit │ ├subref_elfit │ ├point_redux │ ├copon_redux │ ├iopt_track │ └point_elfit │ └idl/ ├batch_subref.pro ├init.pro └pro/ └idl/ └aste/ └subref/ ├sbrf_redux.pro ├sbrf_common.pro ├sbrf_fcs_functions.pro ├sbrf_pnt_functions.pro ├pnt_redux.pro ├pnt_functions.pro └pick_xyz.pro ** subref_reduxおよびpoint_reduxで使用される各pro/funcの依存関係 [#e1daf28d] #ref(sbrf_anly2.png); #ref(planet_pnt_sw_nrw.png); ** 2010年問題の対処 [#g6ff3d20] -&color(red,white){aste10アカウントでは、未修正。(21-Apr-10, YT)}; -症状 : -- "C003323***"等のファイル名が、2000年のデータとして認識されてしまう。 -- 惑星の位置計算関連でエラーが発生する -対処 : -- とりあえず以下のファイルを修正 "/home/aste10/linux/idl/pro/aste/subref/sbrf_common_functions.pro" line 27 : 修正前) starttime.yr = long(strmid(dataname),1,1))+2000l 修正後) starttime.yr = long(strmid(dataname),1,1))+2010l -備考 : -- 共通アカウント"astecont"下のスクリプトは手を付けず -- 上記修正では、逆に2009年以前のデータの日付が正しく認識されなくなるので注意。