SWSデータの簡単なリダクション=山村製パイプライン"stdaa"の使い方 # 履歴 # 97/06/02 1st version (書きなぐりバージョン)作成 # 97/06/06 stdaaのオプション追加等による改訂(sec. 6.c, 7.) # 97/06/06 defaultのresolution変更(sec. 3.(14), 7.) # 97/06/12 データのexportについて追加(sec. 6) 以下sec.番号を繰り下げ # 97/06/12 ついでにContentsをつける。 # 97/06/16 flgaarなどで、line tagを扱えるようになった(sec.4.4)。 # 97/06/16 diet()の説明(sec. 4.2) # 文責: 山村一誠(yamamura@astron.s.u-tokyo.ac.jp) Contents: 0. 準備 1. とりあえずQuick Look 2. プロットする 3. 実は何をやっているのか? 4. データのflagging 4.1 ファイルの準備 4.2 特定のdetectorを使いたくない 4.3 特定の波長範囲を捨てたい 4.4 cosmic ray glitchを除く 4.5 band glitchを除く 5. リダクションをやり直す 6. データのexport (97/06/12 挿入) 7. flatfieldに凝ってみる 8. stdaaオプションのまとめ(stdaa.proヘッダより) 9. コマンドのまとめ 9.1 基本コマンド 9.2 応用コマンド(全て山村製) SWSに関してもVilspaで行われるpipeline処理やISAPの性能が向上してきたため、 CD-ROMで送られてくるデータをそのまま使うことも非現実的ではなくなってきました。 それでも、最新のキャリブレーションデータを使ったり、cosmic rayによるglitchを ていねいに取り除きたいときなどは、依然としてSWS IAで処理することが必要になる 場合が多々あります。ここでは、山村が(元々自分のために)作った「パイプライン」 stdaaによる、簡易的なデータ処理の方法を説明します。 [お断り]stdaaは、山村が主にAOT01のデータを処理するために作成したものです。 したがってその他のAOTや、山村が普段取り扱っている恒星のスペクトルデータ以外 ではきちんとテストされているとは言えません。そんなにとんでもないことが起こる とは思えませんが、無保証であることをご承知おきください。また、IAのバージョンや キャリブレーションデータのupdate、あるいは山村の「研究」の如何によって、 予告無く内容が変更される可能性があります。なるべくdefaultは変えないつもり ではありますが。 0. 準備 SWS IAおよびstdaaは、tochan.astron.s.u-tokyo.ac.jp(東大天文教室:root=尾中さん、 山村)、avenier.mtk.ioa.s.u-tokyo.ac.jp(東大天文センター:root=田辺さん)、 leopard.astro.isas.ac.jp(宇宙研赤外:root=中川さん、松浦さん)にインストール されています。まずこれらのWSにアカウントを貰うか、sws用のアカウントのpassword を教えてもらってください。また、作業用のディスクスペースを確保してください。 CD-ROMからデータを落します。昨年夏以降に観測されたデータや、Vilspaから送り直 されてきたCD-ROMでは、SWSのパイプラインのversion 5.0以降で処理されているはず です。各ファイルのFITS ヘッダ部分の"OLPVERS"というキーワードが"OLP_51"のように 50以上の数字になっていればOKです。この場合、必要となるのは /products/p???????/????????/swsp.fit というファイルのみです。 これを、name.spdという名前("name"の部分は任意)でディスクに落してください。 万が一、version 4以前であれば、swsp.fit、swaa.fit以外のすべてのファイルが 必要になります。この場合は山村までお訪ねください。なお、SWSのデータは全て version 5.0以降で再処理されて送り直されるはずなので、送られていない場合は helpdeskに問い合わせることをお勧めします。往々にしてあちらのミスで漏れている ことがあります。 IAおよびstdaaその他の山村製のtoolを使うための環境を設定します。 % source /rog01/mcc/bin/setup_ia % source ~yamamura/ia/pro/setup_ia_yamamura を(UNIXのshellで)実行してください。あるいは、上の2行を.cshrcの中に書いて しまっても結構です。うまく行かないときは各WSの管理者にお問い合わせ下さい。 1. とりあえずQuick Look IAを起動します。コマンド % ia でIAが起動されるはずです。もしうまく行かないときは、上の環境設定がきちんと 行われているか確認してください。また、IDLのライセンスは大丈夫でしょうか? 無事にIAが起動されたら、 > stdaa, 'name' とタイプして下さい。ここで、"name"は先ほどディスクに落した"name.spd"に対応 します。しばらくいろいろ作業して画面にプロットが出た末に、 ARB: name という表示が出て正常に終了すればOKです。画面には処理された結果のスペクトルが 表示されているはずです。万が一異常終了した場合、最も考えられる原因はメモリの 不足です。「メモリが足りない」とか、 % CALL_EXTERNAL: Error loading sharable executable. といった内容のメッセージが出るはずです。この場合は、 > exit で一旦IAを終了させて、再度起動し直して続けます(「5. リダクションをやり直す」 を参照)。 正常に終了した場合、作業しているディレクトリには tmp.??? というファイルが いくつかと、name.asc、name.arbというファイルが出来ているはずです。tmp.???は 処理の途中結果を保存して、上のような「事故」に備えるとともに、途中から リダクションをやり直すことが出来るようにするものです。name.arbが最終の スペクトルです。name.ascは最終の一歩手前で、場合によってはそのまま解析に 使うことの出来るデータです。 2. プロットする 結果をとりあえずプロットしてみましょう。まずデータを読み込みます。 > a=read_faar('name.arb') プロットにはIA標準の"plotaar"と山村製の"plt"があります。とりあえずplotaarを 使ってみます。 > plotaar, a で画面にプロットがでます。デフォルトでは点で描かれますが、 > plotaar, a, psym=0 というオプションを付けると、線でつなぎます。また、描画範囲は > plotaar, a, xrange=[3.5, 4.3], yrange=[200, 300] のように指定できます。プリンタに出したいときは、 > pson, file='psfile.ps' で始め、 > psoff で終わります。この間の出力が全てPSファイルにでます(これらは山村製です。 IA標準ではstart_hardcopy, stop_hardcopyというコマンドがあります。 詳しくはhelp参照のこと)。 3. 実は何をやっているのか? swsiaにはいろんなオプションがあって、それも増築を重ねているので、ちょっと 見ただけでは何をやっているのか非常に分かりにくくなっています。デフォルトの 場合を主に、swsiaがやっているプロセス(これは標準的なSWS reductionのプロセス でもあります)を説明します。 (0) リダクションは上に述べたとおり name.spd というファイルから始まります。 これは、SPD(Standard Processed Data)という、データが時系列で格納されている ファイル形式です。 (1) antimem() によって、detectorの感度の非線型性を補正します。 (2) dark() によって、dark currentを差し引きます。 (3) cleanstruct() によって、データ中の不要な(不良な)部分を除きます。 (4) (AOT06(07)のみ)データ中の"reference scan"と呼ばれている部分をflagします。 (5) ここまで処理の済んだデータを、"tmp.drk"という名前で保存します。 (6) respcal() によって、各detectorの波長による感度特性を補正します。 (7) fluxcon() によって、detector output (micro Volt/sec) => Jy へ変換します。 (8) ここまでのデータを、"tmp.fcn"という名前で保存します。 (9) /defringes オプションを付けた場合のみ、band 3のフリンジの除去を試みます。 結果は、"tmp.frg"という名前で保存されます。 (10) extract_aar() によって、SPDからAAR(Auto Analysis Results:波長-fluxの形式)へと formatの変換を行います。結果は、"tmp.aar"に保存されます。 (11) cleanstruct() その他によって、データの掃除を行います。単に「ゴミ」を 除くだけでなく、各AOT_BANDの両端の性能の悪い部分や(AOT01のみ:97/06/16)、 glitchによって飛び出たデータもざっと除きます。結果は、"tmp.aac"に保存されます。 (12) sws_flatfield() によって、detector間や複数のscan間のばらつきをそろえます。 結果は、"tmp.aff"に保存されます。 (13) sigmaclip() によって、極端に外れたデータ点(stdaaのdefaultでは3sigma)を 除きます。結果は、"name.asc"に保存されます。 (14) sws_rebin() によって、希望するresolutionにbinningします。 (stdaaのdefaultでは、AOT01 Speed=[1,2,3,4]=>R=[300, 300, 500, 1000]、 AOT02,06(07)=>1500が仮定されますが、res=800のようにパラメータで与える ことが出来ます。結果は、"name.arb"に保存されます。 4. データのflagging stdaaは、"name_fla.pro" および "name_fls.pro" ファイルが同じディレクトリ (あるいはIDLのpathが通っているところ)にあると、それを探し出して実行します。 ファイルがなければ何も行いません。ファイル名の"name"は、これまでの例のとおり データファイル名に対応します。ただし、IDLが大文字と小文字を区別しないという 理由から、元々のデータファイル名が大文字でも(例えば"NaMe.std"の場合でも) flag用プログラムの名前は全部小文字でなければなりません(すなわち、 "name_fla.pro"等でなければならない)。 name_fla.proはAARに適用され、3節の(11)の途中で実行されます。name_fls.proは SPD用で、(3)で実行されます。それぞれのファイルの中身は、IDLのコマンド (普通はIAのコマンド)の羅列ですので、基本的にはデータの掃除だけでなく、 何でも書くことが出来ます。普通はname_fla.proだけで十分用が足りますので、 ここではname_fla.proの作り方だけ説明します。AOT06(07)のリダクションでは name_fls.proが必要になる場合もありますが、それについては個別にお問い合わせ 下さい。 flaggingは言うまでもなく不必要なデータ、悪いデータを除くものですが、 おおむね次のようなケースが考えられます。 (a) 特定のdetectorの調子が悪く、きわめてnoisyである。 (b) 特定の波長帯(特にAOT_BANDの端など)を切り落としたい。 (c) 特にband 4でcosmic rayによるglitchが甚だしい。 (d) "band glitch"と呼ばれる、12個のdetectorの値が一斉に(一瞬だけ)ジャンプ する現象を除きたい。 以下ではこれらの事例について、データのチェックのやり方と_flaファイルの 作り方を説明します。 4.1 ファイルの準備 ~yamamura/ia/pro/tmpl_fla.proに_flaファイルのtemplateがあります。といっても 中身は空っぽですが、これを作業中のディレクトリにコピーし、ファイル名と、 一行目のfunction名を適宜変えてください。このファイルでは、一行目は FUNCTION tmpl_fla, aac となっていると思います(tmplの部分は変わっているはずですが)。がstdaaから 渡されるAAR形式のデータです。最後にreturnによって戻されるのも同じくaacです。 従ってこのファイルの中身は、 aac=flagging_functions(aac, options) という行の羅列で構成されることになります。ファイルの先頭数行に、コメントと して以下に説明するfunctionsの文法が書いてあります。 4.2 特定のdetectorを使いたくない まずデータを眺めましょう。 > aac=read_faar('tmp.aac') > plotaar, aac, band=1, psym=4 plotaarのband=1オプションはband 1の12個のデータを色分けして表示します。 psym=4はプロットの記号(defaultは3:点)の指定です。さらにdet=5と与えると、 5番のdetectorのみ表示します。あるいは、det=[5,6,7]のようにして複数の detectorを表示することも出来ます。各バンドのdetector番号は以下の通りです。 band 1 : 1〜12 band 2 : 13〜24 band 3 : 25〜36 band 4 : 37〜48 これらのオプションの組み合わせでデータを眺める分けですが、これをもう少し 能率的に行うために山村が作ったコマンドがあります(単なるplotaarへの interfaceです)。 > chkdet, aac, aot='1d', 3 とやると、AOT_BAND 1Dの12個のdetectorを色別にプロットした上で、3番のdetectorを 別の色と記号で重ねてプロットします(このdetector番号は省略可です。その場合、 12個のdetectorのみ示します)。これでデータを眺めて、特定のdetectorが変な 振る舞いをしていないかどうかをチェックします。通常、band 1 ('1a', '1b', '1d', '1e'), band 2 ('2a', '2b', '2c')は問題が少ないので、ざっと眺めてデータが おおむね同じように並んでいればOKです。ただし、今見ているのはflatfieldする前の データですので、いくつかのdetectorの値が全体とかけ離れたところにいることも あります。この差は後に修整されますのでほぼ平行に並んでいれば大丈夫だと 思います(心配なら、'tmp.aff'を同じように見てみればよい)。band 3('3a', '3c', '3d', '3e')では、ときどき極めてnoisyなdetectorがあるので要注意です。36番が 最も悪くなる確立が大きいですが、その他の奴も安心は出来ません。band 4 ('4')は むしろcosmic rayの影響の方が大きいので、後で触れます。明らかに異常なdetectorが 見つかったら、これをflagします。この作業はcleanstruct()(IA標準コマンド)で 出来ます。次の行を name_fla.pro に書きます。 aac=cleanstruct(aac, det=[30,36]) この例では、detector 30番と36番を使わないようにしています。 #diet()について(97/06/16) cleanstruct()では、defaultではデータを捨てる代わりに、データ中のflag fieldの "nodata"というflagを立てます。これで通常は良いのですが、データのサイズが 減らないことと、plot routineで捨てたデータも見えてしまう(特にauto scaleの場合 迷惑)という問題があります。flagしたデータを完全に捨ててしまうには、 cleanstruct()に"/nodata"オプションをつけるか、あるいはcleanstructの後で > aac=diet(aac) とやります。diet()は山村製コマンドで、cleanstruct()+/nodata よりも若干高速です。 4.3 特定の波長範囲を捨てたい stdaaでは、デフォルトで各AOT_BANDの端の性能の悪いところをざっと切るように していますが、多少広めに(データを捨てないように)設定しているので、場合に よってはもう少し端っこを切りたいという場合があるかも知れません。 又、他の理由である特定の波長範囲を消してしまいたいということもあるでしょう。 これもcleanstruct()でできます。 aac=cleanstruct(aac, band_2a=[5.4, 5.8]) によって、AOT_BAND 2Aの5.4micronよりも長い側を切り落とします。この場合、 5.8は十分大きいということで、数字自体には意味はありません。バンドの両端を 切り落としたいときは、 aac=cleanstruct(aac, band_2a=[5.4, 4.05]) のように、上限と下限を入れ換えます(通常の順だと内側を切ってしまう)。 オプションはband_1aからband_4まであります。 一つ注意しなければならないのは、 aac=cleanstruct(aac, band_3d=[26.5, 29.0], det=36) とやっても、detector 36の26.5〜29.0micronを切るという意味にならず、 detector 36 全部と、全部のdetectorの26.5〜29.0micronを切る、と解釈されて しまうことです。このような場合には山村製のコマンドflgaar()が使えます。 aac=flgaar(aac, 36, 0, 0, aot='3d') この例では、36番のdetectorのband_3dの部分を全て取り去っています。"0, 0"の 部分は波長範囲で、0の場合はそのaot_bandの左端(右端)を意味しますが、例えば "25.0, 27.0"と書けば25〜27micronを除くことになります。 4.4 cosmic ray glitchを除く これは特にband 4で重要になってきます。まず > chkdet, aac, aot='4', 37 で37番のdetectorを表示してみましょう。もし2本(あるいはそれ以上)のスペクトルが ほとんど平行に並んでいればOKです。cosmic rayが当たっていると、スペクトルに 大きく撥ねたところがあるはずです。もう少し詳しく見るために、スキャンごとに プロットしてみましょう。SWSでは一つの波長域を必ず往復の対になったスキャンで 測定しています。これらをup scanおよびdown scanと呼びます。 > chkdet, aac, aot='4', 37, scan=1 によって、up scanのみを強調して表示することが出来ます。down scanはscan=-1です。 もしcosmic rayが当たっている部分があれば、 aac=flgaar(aac, 37, 38.0, 41.0, aot='4', scan=1) などとして、取り去りましょう。まともな部分がほとんどないくらいひどい場合には、 波長範囲を"0, 0,"にして全部を捨てましょう。ただしあんまり厳しくやるとデータが なくなってしまいますので、その辺は悩みどころです。band 4はこのようにして detector一つづつていねいに見てやった方が良いと思います。 #AOT02, 06(07)のデータについて(97/06/16) これらのAOTでは、同じ波長を何回もスキャンしている場合があり、それらの一部分 のみをflagしたいという状況があります。この「スキャン」はAARデータ中の"line" というtagで識別されています。まず、 > linelist, aar, band=[1〜4]、aot_bands='AOT_BANDS' によって、見たい領域の"line"番号を調べて下さい。optionsはもちろん目的に応じて 適当に与えてください。line番号が分かったら、後は上のscan番号の場合と同じように > chkdet, aac, aot='4', 38, scan=1, line=5 > aac=flagaar(aac, 38, 40.0, 42.3, aot='4', scan=-1, line=5) のように、line毎にチェックしたり、特定のlineをflagしたりすることが出来ます。 line番号は複数を同時に与えることが可能です。 4.5 band glitchを除く chkdetで一つのバンドのデータを良く見てください。もし、あたかもemission featureのように飛び出しているところ(しかも予測していないところに)がある場合は、 chkdetにxrange=[x1, x2]で範囲を指定して更に良く見てください。up/downの両方の データがそろっていればおそらくrealであると言えますが、データ点の半分が 飛び出ていて、半分が周囲と同じレベルにあるときは要注意です。更に詳しく調べる ために山村製のコマンド、 > pltud, aac, aot='1e', xrange=[3.5, 3.6] を実行して見てください。プロットはup/down scanを別の記号と色で示します。 赤(ダイヤ型)がup scan、青(+)がdown scanです。これでどちらかのスキャンだけが 飛び出しているような状況であることが確認された場合、これはband glitchですので 除く必要があります。 pltudでxrangeを調節して、glitchの部分がプロットの横軸の範囲の1/4くらいを 占めるようになるまで拡大してください。次に、/noupまたは/nodownを指定して、 glitchを起こしているscanだけを表示してください。この状態で、 さらに/itkオプションを指定してください。すなわち、 > pltud, aac, aot='1e', xra=[3.5, 3.55], /nod, /itk のような入力になります。画面には、階段上のプロットが描かれると思います。 このときの、glitchに対応する位置の、縦軸の値(当然unitは意味ありません)を 読んでください。また、このときコンソールには reference=3376584 のように数字が表示されるはずです。この2つの数字から、 aac=itkshift(aac, '1e', 3376584+750, 0, /remove) という行をname_fla.proに加えてください。"750"という数字はプロットから 読み取った数字です。もちろん、この2つの数字は足し算してしまっても良いですが、 referenceは一つのデータでは同じなので、いくつもglitchを除く場合には上のように 書いておいた方が面倒が少ないでしょう。"0"はここでは意味がない「おまじない」と 考えてください。 以上の他にもデータをflagしたい動機はあるかと思いますが、その方法は上に 挙げたいくつかの関数の応用でできるはずです。 5. リダクションをやり直す name_fla.proが出来たらもう一度リダクションをやり直しますが、その前に念のため name_fla.proが正しく書けているかをチェックします。 > .run name_fla で、正常にコンパイルできればOKです。エラーメッセージ(syntax error)が 出たときは、大抵","の入れ忘れや、optionの名前のつづり間違えだと思いますので、 プログラムを見直してください。 AARのflaggingは上述のように手順(11)で行われますから、全く頭からやり直すのは 時間の無駄です。stdaaには、保存しておいた"tmp.???"を使って途中から リダクションをやり直すことが出来ます。いまの場合は、 > stdaa, 'name', startp='aar' とやります。"tmp.aar"(作業(10)の結果)を読み込み、(11)から始めます。 startpオプションには、次のパラメータが与えられます。 'drk', 'fcn', 'frg'(/defringe オプションを与えた場合のみ), 'aar', 'aac', 'aff', 'asc' いずれも、"tmp.???"('asc'の場合のみ"name.asc")を読み込んで、その先の作業から 始めます。また、endpオプションによって、作業を途中で終わらせることも出来ます。 例えば、 > stdaa, 'name', endp='aff' とした場合、"name.spd"から始めて、"tmp.aff"を保存したところ(作業(12)の後)で 終了します。もちろん、startpとendpを両方指定すれば、途中から始めて途中で 終わることも出来ます。 さて、上記のようにflagging情報を入れてリダクションをやり直してみて、 結果がOKならばとりあえずこれでリダクションは終了です。お疲れさまでした。 6. データのexport IDLに通じた人ならば、そのままIDLの中で結果のAARデータを元にscientificな 解析をしたり、プロットを作ったりすることが出来ますが、普通はなかなかそういう 訳にはいきません。多くの場合、データをASCIIなどのテキスト形式に変換したりして リダクションから先の処理を行うことになると思います。このための簡単なtoolを 作成しました。 a. aartxt aartxtは、AARのデータを 波長(micron)、Flux(Jy)、Error(Jy) の3列の形式のテキストに落とします。ただし、Error fieldは現時点では意味のある データが入っていません。使い方は、 > aartxt, aar, file='textfile' です。通常aartxtは、rebinしたデータ(stdaaの場合*.arb)に使います。 b. aartxtd 場合によっては、rebinする前のdetector毎のデータ(すなわち*.asc)を 使いたいことがあります。例えばemission lineのfittingなどは、 rebinすると厳密にはline profileやpeak強度が変わってしまうので、 *.ascを解析に使った方が良いかも知れません。この場合には、 > aartxtd, aar, file='textfile' でASCII形式に直すことが出来ます。フォーマットは Detector番号、scan 方向、line番号、波長(micron)、Flux(Jy) です。scan方向は +1 (up scan : 波長が小さくなる方向 : gratingの往き)または -1 (down scan : 波長が大きくなる方向 : gratingの帰り)のどちらかです。 line番号は個々のscan(darkとdarkの間(?))についてつけられる番号で、 AOT01の場合には一つのAOT_bandについて1つですが、AOT02,06では一つの波長域に 複数のline番号が存在します。通常これらを気にする必要は無いと思いますが、 場合によって一部のscanを取り出したり取り除いたりする必要があることを予想して 出力に含まれています。 7. flatfieldに凝ってみる 更にいろいろと追及してみたい人のために、いくつかオプションが用意されています。 これらは主にsws_flat_field()(作業(12))に関係するものです。時間があれば これらをいろいろ試してみて、結果がどう変わるか、あるいは自分のデータには どれが適当なのかを調べるといいと思います。山村の場合はAOT01による比較的明るい (>100Jy)星のデータに関して、 > stdaa, 'star', /ffiter という形を標準としていますが、これがその他のAOTや様々な天体に関しても 同じようにうまく行くという保証はありません。また、結果をどう評価するのかと いうことも確立しているわけではないので、かなり各個人の主観が入ると思います。 山村は相談には乗れますが答えを持っているわけではないことをご承知おきください。 a. /scaling デフォルトでは、detector間のfluxの補正をスペクトルに下駄を履かせる(あるいは 脱がせる)ことで行っています。/scalingオプションはその代わりに適当な係数を 掛けることで補正します。一般に暗い(天体からのflux〜dark current)天体では、 dark currentの決定が誤差の大きな要因となるのでデフォルトのまま(offset)が、 明るい天体ではdetectorの感度やmemory effectなどの振る舞いの違い、あるいは pointingのエラーによる入力fluxがapertureによって異なるなどの要因が大きく 利くと考えられるので、この場合には/scalingオプションを付ける方が適当であると 考えられています。 b. order=x 補正値を決める場合に、スペクトルを何次の曲線でfitするかを与えます。 デフォルトでは0になっています。注意しなければならないのは、x > 0の場合には 補正量がx次の(波長の)関数になっていることで、すなわちスペクトルの形が 変わってきます。従って、スペクトルの形に対してS/Nの悪いデータで大きな(x>=2) 次数を与えると、スペクトルに思わぬspriousを導入することがありますので、 十分気をつけてください。逆に、星などの明るい天体でorder=0だと、band 2では memory effectによって大きなばらつきが出てきてしまいます。 c. /ffiter 上記の(特にorderに関する)問題を何とか出来ないかということで、まず低い次数で おおざっぱに合わせておいてsigclipでノイズを取り去り、更に高い次数でflatfieldを やり直すということをやります。山村がAOT01の明るい星のデータをリダクションする ときの標準ですが、それ以外のデータに適応できるかどうかは未確認です。 (97/06/06: 若干の問題(stdaaの履歴参照)を修整後、AOT02のデータ一つに適応した ところでは、一応使えるようです。ただし、上記の簡単な方法に比べてどれくらい 効果があるかは不明。大量のデータを持っている人のコメントを期待。) (97/06/06) /ffiterの第一、第二段階では、弱い天体(<100Jy)かつdetector間の 値のばらつきがデータの絶対値(全detectorの値の単純平均)よりも大きい場合のみ、 /OFFSETが、それ以外の場合には/SCALINGが用いられます。第三段階(通常order=2)では バンドの端でexterapolationによってデータが暴れるのを防ぐために、/OFFSETが 使われています。 /ffiterには2つのパラメータがあります。 fforderは3回のflatfieldingの次数を配列で与えられます。配列の要素が3つに 足りないときは、後ろから使われます。すなわち、単に ffiter=1 と与えたときには、defaultの[0, 1, 2]が[0, 1, 1]になります。 refresは同様に3回のflatfieldに用いられるreference spectrumのresolutionを与えます。 ただし、resolutionそのものではなく、最終的なresolutionとの比を与えます。すなわち、 refres=[10, 10, 3] (defaultの値)と与えたとき、最終的なresolutionが300だったとすると、 [300/10, 300/10, 300/3] = [30, 30, 100] がそれぞれのreference spectrumのresolutionとして使われます。 d. /defringe band 3に現れるfringeを取り除こうとするoptionです。基本的にはsine waveを fitして、それを除くということをやっています。効果はデータによりけりですが、 完全に除くことは非常に難しいです。特にband 3Aにはほとんど効果はありません。 fringeの強度は天体の強度につれて大きくなるので、100Jyよりくらい天体では (精密な測定を除き)あまり意味がないでしょう。 8. stdaaオプションのまとめ(stdaa.proヘッダより) PRO stdaa, objn, RES=res, ERDN=erdn, STARTP=startp, ENDP=endp, $ MERGE=merge, DEFRINGES=defringes, NFRINGES=nfringes, $ NOSETCAL=nosetcal, WDISM=wdism, $ REFSCAN=refscan, DOREF=doref, NOFLAGGING=noflagging, $ NOLINES=nolines, ORDER=order, METHOD=method, SCALING=scaling, $ FFITER=ffiter, FFORDER=fforder, REFRES=refres, NOPLOT=noplot ; objn : (string) 天体名(データファイル名) ; RES = res : 最終結果のresolution。省略時 300(AOT01)、1600(AOT02,06(07))。 ; ERDN = 'obsno' : ERDデータから始めるときに観測番号を与える。 ; STARTP = 'starp' : リダクションをやり直すステップ ; ENDP = 'endp' : リダクションを終了するステップ ; /MERGE : sws_rebin()で各AOT_BANDのデータを一つにつなげる ; /DEFRINGES : band 3のフリンジの除去を試みる ; NFRINGES = nfringes : いくつのフリンジ成分を除くか(省略時=4)。 ; /NOSETCAL : 推奨のcalibration fileを使わない。 ; /DOREF : sws_flatfieldで、事前にreferenceスペクトルを作る ; REFSCAN = 'up' or 'down' or 'both' : /dorefを指定したとき、どのスキャンから refereceスペクトルを作るか。省略時='down'。 ; /NOFLAGGING : *_fla.pro, *_fls.proがあっても実行しない。 ; /NOLINES : 現在意味なし。 ; ORDER = order : sws_flatfieldでスペクトルをfitする次数。 ; METHOD = 'fluxcon' or 'mean' or 'median' : sws_rebin()で使う方法。 省略時='flaxcon'。 ; /SCALING : sws_flatfield()でscalingで合わせる。 ; /FFITER : 山村製iterative flatfieldingスクリプトを使う。 ; FFORDER = fforder : /ffiterの3回のステップにそれぞれ用いられるorder。 ; REFRES = refres : /ffiterの3回のステップで用いられるreference spectrumの resolution。 ; /NOPLOT : 途中経過のプロットを表示しない。 9. コマンドのまとめ 9.1 基本コマンド stdaa, stdspd : SWS IA 標準のプロットコマンド。詳しくはヘルプ('?'コマンド) /ia_plot参照。 plt, aar, (options) : 山村製プロットコマンド。主なオプションは次の通り。 aar : 入力AARデータ BAND=band : [1,2,3,4] 指定されたbandのみをプロット AOT_BANDS='aot_bands' : '1a', '1b', ...., '4' 指定されたAOT_BANDのみを プロット XRANGE=[from, to] : x軸の範囲 YRANGE=[from, to] : y軸の範囲 TITLE='title' : プロットに付けるタイトル文字列 /OPLOT : 現在のプロットに重ね描き /XLOG : x軸を対数スケールに /YLOG : y軸を対数スケールに PSYM=psym : プロットのシンボル(default=0=線でつなぐ) COLOR=color : プロットの色指定 (0から255) /AOT_COLOR : 各AOT_BANDを別の色でプロット pson, file='output.ps' PostScriptファイルに出力する。file名を省略したときは'out.ps'になる。山村製。 psoff PostScriptファイルを閉じる。山村製。 9.2 応用コマンド(全て山村製) chkdet, aar, dets, AOT_BAND='aot_band', SCAN=scan, BSCAN=bscan, $ LINE=line, BLINE=bline aar : 入力AARデータ AOT_BANDS: プロットするAOT_BANDs dets : 強調してプロットするdetectorの番号(省略可) SCAN : 強調してプロットするscan方向(1 or -1) BSCAN: プロットするscan方向(1 or -1) LINE : 強調してプロットするline番号(linelist()参照) BLINE : プロットするline番号 データチェック用のプロットコマンド。 pltud, aar, AOT_BANDS='aot_bands', /BW, /NOUP, /NODOWN, /ITK aar : 入力AARデータ AOT_BANDS : プロットするAOT_BANDs bw : 白黒で出力 /NOUP : down scanのみをプロット /NODOWN : upscanのみをプロット /ITK : データのITK番号(〜データ取り込み時刻の情報)を縦軸にプロット。 また、offsetをプリント。 この他 xrange, yrangeが指定可。 up/down scanを比較して、スペクトルの信頼性をチェックする。up scanが 赤(ダイヤ)で、down scanが青('+')でプロットされる。 pltdetail, arb, asc, AOT_BANDS='aot_bands' arb : 通常"name.arb"のデータ asc : 通常"name.asc"のデータ AOT_BANDS : プロットするAOT_BANDS asc(rebin前)についてpltudと同じようにup / down scanを別々の記号で描いた後、 arb(rebin後)を太線でプロットする。最終結果のチェックに使える。 showrms, aar, RES=res, AOT_BANDS='aot_bands', DETECTORS=detectors aar : 入力AARデータ RES : 観測のresolution AOT_BANDS : 調べるAOT_BANDS。defaultは全部 DETECTORS : 調べるdetectorsの番号 プロットルーチンではないが、各detectorの大まかなRMS noise levelをプリントする。 まず、与えられたres/3.0のresolutionでrebinしたスペクトルを作り、それを差し 引いてほぼflatになったスペクトルについて、rmsを計算して表示する。 性能の悪いdetectorを見つけるのに便利? linelist, aar, BAND=band, AOT_BANDs=aot_bands aar : 入力AARデータ BAND : 調べるband(1〜6)。defaultは全部 AOT_BANDS : 調べるAOT_BANDS。defaultは全部 データに含まれる"line"番号の一覧を表示する。 diet, aar aar : 入力AARデータ データ中の"/nodata"flagの立っているものを完全に削除する。 aartxt, aar, file='textfile' aar : 入力AARデータ file : 出力(テキスト)ファイル名。defaultは"out.txt"。 AARデータをテキストに直す。Section 6.参照。 aartxtd, aar, file='textfile' aar : 入力AARデータ file : 出力(テキスト)ファイル名。defaultは"out.txt"。 AARデータをdetector, scan, line情報付きでテキストに出力する。 rebin前のデータに使う。Section 6.参照。 End of stdaa_man.txt