1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Chandra解析入門:CIAOを使ったイメージ作成とデコンボリューション

Last updated at Posted at 2025-09-14

はじめに

Chandra X線天文衛星は 0.5″ という非常に高い分解能を誇り、精密な撮像観測を得意とするX線天文学の代表的な衛星です。
近年は XRISM という精密分光衛星も打ち上がり、撮像と分光の両面から天体を調べることで、さらに多くの発見が期待されています。

一方で、Chandra のデータ取得やイメージ表示にはいくつかのステップが必要で、初めて触れる方には公式マニュアルを読み込むハードルが少し高く感じられるかもしれません。

そこで本記事では、初めて Chandra を触る方でもスムーズに進められるよう、公式ツール CIAO (Chandra Interactive Analysis of Observations) を用いて、

  1. アーカイブデータの取得
  2. 再処理
  3. イメージ生成と表示

までの流れを紹介します。

さらに 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 です。

  1. 観測データの検索
    ChaSeR を開き、検索欄「Target」に Cassiopeia A と入力して Search をクリックしてみましょう。
    ずらっと過去の Cas A 観測リストが表示されます。
  2. ObsID の確認
    CIAO でデータを取得するには、このリストの中に表示される ObsID を使います。
    (ObsID は観測を一意に示す番号で、データを取得する際にこの番号が必要になります。)
  3. データの取得と再処理
    たとえば 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つのケースについて順に紹介します。

  1. 用意された観測バンドを使用する場合
    観測データをざっくり眺めたい場合、エネルギーに細かくこだわらなくても大丈夫です。
    そのために用意されているのが、よく使われる「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″)を意味します。

  2. エネルギーを直接指定する場合
    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 をそのまま指定するだけで十分なことが多いと思います。詳しく知りたい方は 公式の説明 をご参照ください。

  3. 出力ファイルの説明

    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 経由で簡単にインストールできます。
詳細は 公式手順 にありますが、ここでは流れを簡単に紹介します。

  1. インストール

    CIAO が使える環境で次のコマンドを実行します:

    install_marx
    

    インストールが完了すると、MARX がどこに入ったかがログに表示されます。

  2. パスの設定

    表示されたパスをもとに、環境設定ファイル(例: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 は超新星残骸の中心に位置する中性子星で、点源として扱えるため、デコンボリューションが正しく点に戻るかを検証する対象として適しています。

  1. PSF を作りたい位置の座標を確認

    1. fluximage で作成した画像(broad_flux.img)を DS9 で開く
    2. 鮮明化したい領域を矩形や円で選択 → image 座標で整数値を取得
      (中途半端な座標だと PSF が隣接画素に分散するため)
      image.png
    3. 座標表示を「Degrees」に切り替え、赤経・赤緯を確認
      simulate_psf では Sexagesimal 表記は使えない点に注意)
      image.png
  2. ディレクトリを準備

    simulate_psf は出力先ディレクトリが存在しないとエラーになるため、あらかじめ作成しておきます。

    mkdir simple_monoenergy
    
  3. 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 法の数理的な背景については、拙著の解説記事でも触れていますので、ご興味のある方はご参照ください。

  1. PSF の中心座標を取得

    RL法を実行するには、まず PSF の中心となる image 座標 を確認する必要があるのでその手順を説明します。

    1. DS9 で対象を表示

    2. 領域を作成して「Degrees」に切り替え、PSF をシミュレーションしたときと同じ座標を入力
      image.png

    3. その座標を「image」に戻したときに得られる整数座標を取得
      (そのimageの座標を arestore の入力に使用)
      image.png
      画像上では小数点を含んで揺れることがありますが、arestore では整数を指定するので、この場合は (7, 7) を入力します。

  2. 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
    
    • numiter : 反復回数。ここでは例として 50 回に設定しています。
      まずはこのくらいの値から始めて、画像がノイジーにならないか確認しながら調整するとよいでしょう。
      最適な反復回数を決める万能な方法はなく、対象やデータの質に依存します。
  3. デコンボリューション結果を確認

    DS9 で観測画像(左)と、RL法で 50 回反復した結果(右)を比較してみます。

    obs_deconv.png

    中心の 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_obsflux_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 は単色で生成しているため、飛び飛びに分布しているのがわかります。

hetg_obs_psf.png

デコンボリューションを適用したい場合は:

  • 分散光も含めて忠実に RL 法を実装する
  • 領域をゼロ次光に限定して RL 法を実装する

の 2 つの方法があります。前者の方法ではスペクトル情報を利用する必要があり、さらに空間ごとでスペクトル形状が変化する場合、±1 次光などがエネルギー変化に対して空間的な変動に敏感なため、実装が難しくなります。そのため、筆者としては後者の方法が現実的だと考えています。

👉 ゼロ次光に限定したデコンボリューションの実装例は、拙著の HETG の RL 法実装論文 で解説しています。

また、Xu et al. 2022 もゼロ次光にフォーカスしたデコンボリューションを実装しており、あわせて参考になります。

おわりに

本記事では、CIAO を用いた Chandra データ解析の基本手順として、
環境構築、アーカイブデータの取得と再処理、イメージ生成、
そして MARX と arestore を使ったデコンボリューションまでを紹介しました。

Chandra の空間分解能は 0.5″。
これは「月の表面にある 1 m の岩を地球から見分けられる」ほどの精度に相当します。
とはいえ、月面に 1 m 以下の細かい構造が無数にあるように、はるか彼方の宇宙では 0.5″ でも見えない世界が広がっています。
だからこそ、デコンボリューションを試すことで観測像の奥に隠れていた構造が浮かび上がる瞬間に遭遇できるかもしれません。

私自身、いわばデコンボリューターとして 5 年目になりますが、まだまだ探求の途中です。
同じように興味を持ってくださる方と一緒に歩んでいけたら嬉しいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?