はじめに
Chandra X線天文衛星は 0.5″ という非常に高い分解能を誇り、精密な撮像観測を得意とするX線天文学の代表的な衛星です。
近年は XRISM という精密分光衛星も打ち上がり、撮像と分光の両面から天体を調べることで、さらに多くの発見が期待されています。
一方で、Chandra のデータ取得やイメージ表示にはいくつかのステップが必要で、初めて触れる方には公式マニュアルを読み込むハードルが少し高く感じられるかもしれません。
そこで本記事では、初めて Chandra を触る方でもスムーズに進められるよう、公式ツール CIAO (Chandra Interactive Analysis of Observations) を用いて、
- アーカイブデータの取得
- 再処理
- イメージ生成と表示
までの流れを紹介します。
さらに Chandra の イメージングの強みを活かす 応用例として、イメージデコンボリューション(Image Deconvolution) による鮮明化にも挑戦してみます。
Chandra 全体の解析の基本については、山田さんの記事がとても参考になりますので、あわせてご活用ください:
それでは、Chandra のデータを一緒にのぞいてみましょう!
方法
1. 観測画像を開くまで
1.1. CIAOのインストール
CIAO は公式の Anaconda パッケージとして配布されています。
まずは 公式のダウンロードページ をご確認ください。最新の手順と注意事項がまとまっています。
ここでは、2025/9/14 時点の最新版 CIAO 4.17 を例に、公式に沿った最小限の環境構築手順を紹介します。
# CIAO 用の新しい環境を作成
conda create -n ciao-4.17 \
-c https://cxc.cfa.harvard.edu/conda/ciao \
-c conda-forge \
ciao pyciao sherpa ds9 ciao-contrib caldb_main marx
# 環境に入る
conda activate ciao-4.17
# 環境から出る
conda deactivate
ポイント
-
conda activate
で環境に入っている間だけciao
コマンドが利用できます。 - 他の Python パッケージをこの環境に無闇に追加すると、CIAO の依存関係と干渉することがあるため注意してください。
環境のサイズは約 3 GBあり、インストールには時間がかかる場合があります。
(なお、もし conda --version
を実行してCommand not found
となる場合は、Anacondaのインストールから始める必要があります。)
1.2. Cas A の観測データを取得
Chandra のアーカイブデータは、Chandra Data Archive からアクセスできます。その中でも便利なのが ChaSeR です。
-
観測データの検索
ChaSeR を開き、検索欄「Target」に Cassiopeia A と入力して Search をクリックしてみましょう。
ずらっと過去の Cas A 観測リストが表示されます。 -
ObsID の確認
CIAO でデータを取得するには、このリストの中に表示される ObsID を使います。
(ObsID は観測を一意に示す番号で、データを取得する際にこの番号が必要になります。) -
データの取得と再処理
たとえば ObsID が 5196 のデータを取得する場合は、次のコマンドを実行します:# データのダウンロード download_chandra_obsid 5196 # データの再処理(標準的な初期処理を実行) chandra_repro 5196 outdir=""
1.3. データ取得後のディレクトリ構成
先ほどのコマンドを実行すると、5196/
というディレクトリが作成され、その下にいくつかのフォルダが展開されます。
このうち、実際の解析で主に使うのは repro/
フォルダの中身です。
その repro/
フォルダの中でも、解析の基盤となるのが acisf*_repro_evt2.fits
です。
光子の位置・時間・エネルギーが記録されたイベントファイルで、これをもとに画像やスペクトルを作成していきます。
1.4. イメージを作成
再処理済みイベントファイルからイメージを作るには、CIAO の fluximage
を使います。
解析をはじめる際にイメージを作る目的には大きく2つあるかと思います:
- 観測データをざっくり眺めたい
- 特定のエネルギー帯域に絞って解析したい
以下では、この2つのケースについて順に紹介します。
-
用意された観測バンドを使用する場合
観測データをざっくり眺めたい場合、エネルギーに細かくこだわらなくても大丈夫です。
そのために用意されているのが、よく使われる「broad
/soft
/medium
/hard
」の4つの標準帯域です:-
broad
: 0.5–7 keV -
soft
: 0.5–1.2 keV -
medium
: 1.2–2 keV -
hard
: 2–7 keV
まずは
broad
を使うのが定番です。光子数が多いため、統計的に安定した見やすい画像が得られます。fluximage repro/acisf05196_repro_evt2.fits fluxed/ band=broad binsize=1 clobber=yes
ここで
binsize=1
は検出器のネイティブピクセルサイズ(ACIS なら 0.492″)を意味します。 -
-
エネルギーを直接指定する場合
fluximage
では自分でエネルギー範囲を指定することも可能です:fluximage repro/acisf05196_repro_evt2.fits fluxed/4.2-6.0 band=4.2:6.0:4.8 binsize=1 clobber=yes
ここで
band=4.2:6.0:4.8
は「4.2–6.0 keV の帯域を画像化し、その補正には単色エネルギー 4.8 keV の有効面積を使う」という意味です。有効面積はエネルギー依存なので、これはあくまで近似です。ただしイメージ解析では 相対的な明暗を比べることが多く、表示も log スケールが一般的 なので、そこまで厳密に気にしなくてもいいのかなと思います。
ちなみに、
broad
(0.5–7 keV)などの標準バンドも内部的には単色エネルギー 2.3 keV を使っています。観測対象のスペクトルによって多少の違いはありますが、「0.5–7 keV のイメージを見たい」という場合には、broad
をそのまま指定するだけで十分なことが多いと思います。詳しく知りたい方は 公式の説明 をご参照ください。 -
出力ファイルの説明
fluximage
を実行すると、主に次の3種類のファイルが出力されます。-
*_flux.img
有効面積や露出時間を補正して、光子数を「フラックス」に換算した画像です。
ピクセル間で微妙に異なる有効面積等を補正し比較可能な値になっており、解析で最もよく使うファイルです。 -
*_thresh.expmap
エクスポージャーマップ(露出マップ)。望遠鏡の感度や観測条件による違いを補正するための情報が入っています。
補正の仕組みを理解したいときや、精密な解析に使うファイルです。 -
*_thresh.img
カウントマップ。補正をかける前の単純な光子数の画像です。
統計誤差を確認したいときに役立ちます。
-
binsize
は何を選べば良いか
基本的には binsize=1
がおすすめです。
これは ACIS 検出器のネイティブピクセルサイズ(0.492″)をそのまま使う指定です。
統計ノイズが気になる場合も後で平滑化できるので、まずは 1
から始めるのが無難です。
2. イメージデコンボリューションの実装
イメージデコンボリューションを行うには、望遠鏡が点源を観測した際にどのように像が広がるかを表す PSF の情報が必要です。
その PSF をシミュレーションするツールのひとつが MARX です。Chandra の光学系や検出器の特性を再現し、観測時の見え方を模擬できます。
ここでは、この MARX の導入方法と、CIAO を通じた利用方法について説明します。
2.1. MARX のインストールと設定
MARX は CIAO 経由で簡単にインストールできます。
詳細は 公式手順 にありますが、ここでは流れを簡単に紹介します。
-
インストール
CIAO が使える環境で次のコマンドを実行します:
install_marx
インストールが完了すると、MARX がどこに入ったかがログに表示されます。
-
パスの設定
表示されたパスをもとに、環境設定ファイル(例:Linux なら
~/.bashrc
、macOS なら~/.zshrc
)に以下を追記します:source /soft/marx/setup_marx.sh
/soft/marx
の部分は、インストール時に表示されたパスに置き換えてください。
補足
- macOS や Linux の通常環境では
.sh
を使えばOKです。 -
公式手順にある
.csh
は tcsh/csh 用なので、最近だとあまり気にしなくても大丈夫だと思います。
2.2. PSF を作成
ここでは、Cas A の中央にある CCO (Central Compact Object) を例に、PSF を生成する手順を紹介します。
CCO は超新星残骸の中心に位置する中性子星で、点源として扱えるため、デコンボリューションが正しく点に戻るかを検証する対象として適しています。
-
PSF を作りたい位置の座標を確認
-
ディレクトリを準備
simulate_psf
は出力先ディレクトリが存在しないとエラーになるため、あらかじめ作成しておきます。mkdir simple_monoenergy
-
simulate_psf
を実行例として、
broad
バンドの標準的な代表エネルギーである2.3 keVの単色 PSF をシミュレーションします。
(筆者の感覚では、単色エネルギーで PSF を作成する際には、fluximage
で使われている有効面積の代表エネルギーと揃えるのがわかりやすいと思います。)simulate_psf \ infile=repro/acisf05196_repro_evt2.fits \ ra=350.8665636 dec=58.8117165 \ monoenergy=2.3 flux=1e-2 spectrum=none \ outroot=simple_monoenergy/2.3 binsize=1
-
ra
,dec
: DS9 で領域を選び、「Degrees」に切り替えて取得した赤経・赤緯の値を入力します。 -
monoenergy
: PSF を計算する代表エネルギー(例:2.3 keV) -
flux
: 入射光子のフラックス。小さすぎると統計ノイズが増えるので、大きめに設定するのがポイントです。
出力ファイルは以下の 2 つです:
-
*.psf
: PSF の確率分布関数で、デコンボリューションの際に基本的に使用します。 -
*_projrays.fits
: シミュレーションされた光子のカウントマップで、サンプル数が十分かどうかなどを確認するときに使います。
-
2.3. デコンボリューションを実行
CIAO の arestore
を使ってデコンボリューションを行います。
CIAO 公式では現在のバージョン4.17では、Richardson–Lucy 法(RL法) のみが実装されています。この方法は、反復を重ねるごとに真の天体像に近づく一方、反復を増やしすぎると統計ノイズが増幅する点に注意が必要です。
RL 法の数理的な背景については、拙著の解説記事でも触れていますので、ご興味のある方はご参照ください。
-
PSF の中心座標を取得
RL法を実行するには、まず PSF の中心となる image 座標 を確認する必要があるのでその手順を説明します。
-
arestore
を実行CIAO のスクリプトで以下を実行すると、RL法によるデコンボリューションが行えます:
arestore fluxed/broad_flux.img simple_monoenergy/2.3.psf \ deconv/broad_flux_rl_iter50.img \ psf_x_center=7 psf_y_center=7 numiter=50 method=lucy
-
numite
r : 反復回数。ここでは例として 50 回に設定しています。
まずはこのくらいの値から始めて、画像がノイジーにならないか確認しながら調整するとよいでしょう。
最適な反復回数を決める万能な方法はなく、対象やデータの質に依存します。
-
-
デコンボリューション結果を確認
DS9 で観測画像(左)と、RL法で 50 回反復した結果(右)を比較してみます。
中心の CCO が点に収束し、周辺の構造も鮮明化されているのがわかります。
PSFの精度と推定結果について
ここで得られるのは、あくまで CCO 周辺の PSF に基づいた復元結果 です。
Chandra の PSF は視野位置によって形が変わるため、外側の構造では推定精度が低下する点に注意してください。
詳細は PSF の位置依存性を考慮したデコンボリューション の節をご参照ください。
知っておくと便利コマンド
ここまでで基本的な解析の流れは一通り紹介しました。
この先でもっと実用的に進めたいときに役立つ、便利コマンドをいくつか紹介します。
-
dmcopy
イメージやイベントファイルを柔軟にフィルタリングできるコマンドです。
特定領域の切り出しによく使われます。# 座標を直接指定する場合(CIAO Physical形式でboxを指定) dmcopy "../fluxed/broad_flux.img[sky=box(4270,4230.5,72,71,0)][bin sky]" broad_flux_crop.img clobber=yes # DS9で保存した region ファイルを指定する場合 dmcopy "../fluxed/broad_flux.img[sky=region(regfile.reg)][bin sky]" broad_flux_crop.img clobber=yes
DS9 の region の保存方法
- メニュー → Region → Save
- Format: CIAO
- Coordinate System: Physical を選ぶとよいと思います。
(Sky/WCS 形式のままだと CIAO でうまく使えないことがあります)
-
merge_obs
複数の観測を統合する標準的なコマンドです。簡易的な位置合わせや露出補正も行ってくれるので、実務では最もよく使われます。
(似たコマンドにreproject_obs
やflux_obs
がありますが、基本的にはmerge_obs
で十分対応できると思います。もしmerge_obs
では対応しきれない場面などをご存じの方がいれば、ぜひ教えていただけると嬉しいです。)ただし、光軸の位置やロール角が異なるデータをそのまま統合すると不自然な結果になることがあります。光軸の確認方法については こちらの記事 で解説しています。
より詳細な位置合わせをしたい場合は、次に紹介する
wavdetect
と組み合わせて使うこともあります。また、デコンボリューションと組み合わせる場合は特に注意が必要です。
simulate_psf
はあくまで「1つの ObsID に対応する観測条件(光軸・姿勢・エネルギー)」を前提にした PSF を計算します。
そのため、merge_obs
で統合した画像から直接 PSF を作ることはできません。
複数の ObsID がある場合は、そのうち代表的な1つを選び、その ObsID に対応する PSF を使ってください。
-
wavdetect
点源を自動的に検出してくれる強力なツールです。検出した点源をマスクしてバックグラウンド解析に使ったり、位置合わせに利用できます。
ただし設定項目が多く少し難しいので、ここでは名前だけ紹介にとどめます。
応用編
ここからは「もう少し踏み込んだ解析をやってみたい」という方向けに、いくつかの発展的な手法を紹介します。
PSF の位置依存性を考慮したデコンボリューション
Chandra の PSF は、視野の位置によって形が大きく変わります。
(中心では鋭い点像ですが、視野の端に行くにつれて細長く歪んでいきます。)
このため、Cas A のように広がった天体では 単一の PSF では補正しきれない 場合があります。
解決策のひとつとして、領域ごとにその場所の PSF を適用することで、観測画像全体をより自然に鮮明化できます。
👉 詳細は拙著の 位置依存型 RL 法の実装論文 をご参照ください。
サブピクセル解析
Chandra の ACIS 検出器は 0.492″ のピクセルサイズを持っていますが、光子がピクセル内のどこに落ちたかの情報を活用すれば、サブピクセル精度での画像再構成 が可能です。
代表的なのが EDSER(Energy-Dependent Subpixel Event Repositioning)法 で、光子の「グレード情報」を使って位置をより正確に推定します。古典的な「ランダムに揺らす方法」に比べて格段に高精度です。
- 使い方は簡単で、
fluximage
実行時にbinsize=0.5
(ピクセルを1/2に分割)やbinsize=0.25
(1/4に分割)を指定します。 - PSF 生成 (
simulate_psf
) 側でも同じbinsize
を指定することで、arestore
でRL法を実行することもできます。
👉 詳しくは 公式ページ にまとまっています。
イメージング比較:HRC vs. ACIS
余談ですが、Chandra のイメージング専用検出器である HRC は(エネルギー情報はほとんど持ちません)、ピクセルサイズが 0.1318″ と非常に細かい一方で、サブピクセル化の方法はランダムに揺らす古典的な手法しかありません。
一方、ACIS はピクセルサイズこそ 0.492″ とやや粗いですが、EDSER 法を使ってサブピクセル化できるため、イメージングの観点でもACISは十分に魅力的な検出器だと思います。
ちなみに Chandra が打ち上げられたのは 1999 年で、EDSER 法が提案されたのは 2004 年です。当初は ACIS でのサブピクセル化はまだ想定されていなかったのかもしれません。だからこそ HRC を積んだとも考えられます。こうした歴史を振り返ると、検出器の使い方の幅が広がってきた背景も垣間見えて面白いですね。
Chandra/HETGデータのゼロ次光のイメージング
分光用の HETG を使った観測では、ゼロ次光(イメージングとして活用できる像)と、±1 次・±2 次…といった回折光(分散されたスペクトル)が得られます。主に分光解析で利用されるのは ±1 次光です。
simulate_psf
を実行すると、これらをすべて含めた PSF が生成されます。
たとえば SS 433 (ObsID 15781) を例に見てみましょう。
下図は観測のイベントファイル(左)と、3.7 keV の単色 PSF(右)です。左の円で示した領域がゼロ次光、長方形が HETG の回折光です。観測ではスペクトルが連続的なため、回折光はエネルギーごとに筋状に分散して伸びています。一方、PSF は単色で生成しているため、飛び飛びに分布しているのがわかります。
デコンボリューションを適用したい場合は:
- 分散光も含めて忠実に RL 法を実装する
- 領域をゼロ次光に限定して RL 法を実装する
の 2 つの方法があります。前者の方法ではスペクトル情報を利用する必要があり、さらに空間ごとでスペクトル形状が変化する場合、±1 次光などがエネルギー変化に対して空間的な変動に敏感なため、実装が難しくなります。そのため、筆者としては後者の方法が現実的だと考えています。
👉 ゼロ次光に限定したデコンボリューションの実装例は、拙著の HETG の RL 法実装論文 で解説しています。
また、Xu et al. 2022 もゼロ次光にフォーカスしたデコンボリューションを実装しており、あわせて参考になります。
おわりに
本記事では、CIAO を用いた Chandra データ解析の基本手順として、
環境構築、アーカイブデータの取得と再処理、イメージ生成、
そして MARX と arestore を使ったデコンボリューションまでを紹介しました。
Chandra の空間分解能は 0.5″。
これは「月の表面にある 1 m の岩を地球から見分けられる」ほどの精度に相当します。
とはいえ、月面に 1 m 以下の細かい構造が無数にあるように、はるか彼方の宇宙では 0.5″ でも見えない世界が広がっています。
だからこそ、デコンボリューションを試すことで観測像の奥に隠れていた構造が浮かび上がる瞬間に遭遇できるかもしれません。
私自身、いわばデコンボリューターとして 5 年目になりますが、まだまだ探求の途中です。
同じように興味を持ってくださる方と一緒に歩んでいけたら嬉しいです。