はじめに
Chandra CIAOで chandra_repro で再処理していると、次のようなエラーに遭遇することがあります:
# chandra_repro ... ERROR Multiple evt1 files found in directory <path>.
Skipping it. If this is a multi-obi OBS_ID, try running the splitobs script first.
これはデータが壊れているわけではなく、
同一 OBS_ID の中に、観測モードや露光時間の異なる複数のデータ(evt1)が入っている
という 正常なケース です。
この記事では、
- このエラーが何を意味しているのか
- どうやって最短で対処すればいいか
を、splitobs と chandra_repro に絞ってまとめます。
このエラーが意味していること
chandra_repro は基本的に
「1 つのディレクトリに evt1 が 1 個だけある」
ことを前提に動きます。
ところが、一部の OBS_ID では以下のような理由で evt1 ファイルが複数 入っていることがあります。
-
通常露光と短露光が混在している
-
サブアレイとフルフレームが混在している
-
グレーディング設定が違う
-
Multi-OBI 観測になっている
-
alternating exposure(交互露出)で e1 / e2 / e3 などに分かれている
その結果、たとえば OBS_ID 1612 を download_chandra_obsid すると、primary ディレクトリ内にこんなファイルが並んでいるはずです:
acisf01612_001N00?_e1_evt1.fits
acisf01612_001N00?_e2_evt1.fits
chandra_repro から見ると、
「このディレクトリには evt1 が 2 個ある。どっちを処理すればいいのかわからないので止めます」
という状態になっている、というだけです。
対処の基本方針:splitobs で「1ディレクトリ = 1観測」に分ける
考え方はシンプルで、
evt1 が複数入っているなら、あらかじめディレクトリを分けてしまう
だけです。
そのための専用コマンドが splitobs です。
1. splitobs で分割する
まずは、生データが入っている OBS_ID のディレクトリで splitobs を実行します。
(ここでは例として OBS_ID 1612 を使います)
splitobs indir=1612 outroot=1612
-
indir: 元のデータが入っているディレクトリ(primary,secondaryなどを含む) -
outroot: 出力ディレクトリ名のプレフィックス
参考: https://cxc.harvard.edu/ciao/ahelp/splitobs.html
実行後、例えば次のようなディレクトリができます:
1612_e1/
1612_e2/
ここで重要なのは、
それぞれのディレクトリには 1 個だけ の evt1 が入っている
ように分割されていることです。
2. 分割したそれぞれに chandra_repro をかける
あとはいつも通り、分割後のディレクトリごとに chandra_repro を実行するだけです。
chandra_repro 1612_e1 outdir=""
chandra_repro 1612_e2 outdir=""
outdir を空文字にしておけば、各ディレクトリ内に repro/ が作られます。
参考: https://cxc.harvard.edu/ciao/ahelp/chandra_repro.html
これで、Multiple evt1 files found エラーは解消され、通常通り evt2 まで作成されます。
複数観測(Multi-OBI)の場合も基本は同じ
「alternating exposure(e1, e2)」に限らず、
- 長い観測を複数の OBI に分けて実行しているケース
- 観測条件を少しずつ変えながら繰り返しているケース
などでも、同様に「evt1 が複数」という状況になります。
基本的な対処はすべて同じで、
1つの OBS_ID 内に複数の evt1 があったら、とりあえず splitobs → chandra_repro(個別処理)
と覚えておけば十分です。
より詳しいケース分けや推奨ワークフローは、公式の解説がまとまっています:
- Multi-OBI 観測について
https://cxc.harvard.edu/ciao/why/multiobi.html
まとめ
-
Multiple evt1 files foundは、データ破損ではなく 「1 OBS_ID に evt1 が複数ある」だけ -
その原因は、
- モード違い
- 露光時間違い
- Multi-OBI
- alternating exposure(e1/e2/e3)
などが同じ OBS_ID にまとめられているため
-
対処は一貫してシンプル:
-
splitobs indir=<OBS_ID> outroot=<OBS_ID>で分割 - 分割された各ディレクトリに対して
chandra_reproを実行
-
-
「複数の観測が 1 OBS_ID に入っていたら、とりあえず splitobs」という感覚で OK