NASA's HEASoft を初めて使う人向けのメモ

# HEASoft とは

HEASoft はNASAが開発管理している宇宙X線の解析ソフトウェア群のことで、

https://heasarc.gsfc.nasa.gov/docs/software/heasoft/ 

に書かれておりますが、ざっと下記のツールが入っています。

- [XANADU](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/xanadu/)	High-level, multi-mission tasks for X-ray astronomical spectral, timing, and imaging data analysis
    - スペクトル解析ツール [xspec](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/xanadu/xspec/index.html) 
        - これはスペクトル解析の定番ツールで、最もよく使う。
    - 時間変動解析ツール [xronos](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/xanadu/xronos/xronos.html)
        - これは、python でやれなくもないが、C or fortran で書かれているので動作が早く、パワースペクトルの規格化なども枯れているので使えると便利。
    - イメージ解析ツール [ximage](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/xanadu/ximage/ximage.html)
        - 最近は ximage を使わずに、astropy で一気に解析することも多い。
- [FTOOLS](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/ftools/)	General and mission-specific tools to manipulate FITS files
    - fits ファイルの処理を助けてくれる便利ツール群。
- [FITSIO](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/fitsio/fitsio.html)	Core library responsible for reading and writing FITS files
    - fits ファイルの処理に使われるが、これをダイレクトに使う機会は最近は減っている。
[fv](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/ftools/fv/)	General FITS file browser/editor/plotter with a graphical user interface
    - GUI で fits ファイルの中身を見たり、プロットできたりする。
- [XSTAR](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/ftools/fv/)	Tool for calculating the physical conditions and emission spectra of photoionized gases
    - 光電離プラズマの計算ソフトウェア。初学者がいきなり使うことはないです。

スペクトル解析や時間変動解析など、いろんなことができるツール群です。FITSファイルをいじるだけなら自分でpythonなどでコーディングしてもよいのですが、個々の衛星のデータリダクションと強くカップルして使うことがあるので、X線のデータ解析をする上では必須ツールになります。

## 基礎知識

### FITS ファイル

天文分野で最もポピュラーなデータ形式なので慣れておきましょう。
python でもよく使う[HDF5ファイル](https://qiita.com/simonritchie/items/23db8b4cb5c590924d95)の天文版がFITSファイルという感じです。

https://astro-dic.jp/fits-format/

など、参考に。巨大なデータを扱うため、メタ情報(基礎的な情報)は人が読める[アスキーデータ](https://www.wdic.org/w/TECH/%E3%82%A2%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%87%E3%83%BC%E3%82%BF#:~:text=%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E8%A6%8F%E6%A0%BC%E3%81%A7,%E5%84%AA%E3%81%97%E3%81%84%E4%BF%9D%E5%AD%98%E5%BD%A2%E5%BC%8F%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82)で保持し、データはコンピュータが読めるバイナリ形式で保存します。バイナリで保存すると可読性は下がりますが、データ容量がアスキーデータよりも桁で減ります。


### ソースコードと pre-compiled (=事前にコンパイルされた) バイナリの違い 

まず、ソースコードとバイナリファイル、の違いは抑えておきましょう。

http://archive.linux.or.jp/JF/JFdocs/Unix-and-Internet-Fundamentals-HOWTO/languages.html

https://milestone-of-se.nesuke.com/nw-basic/as-nw-engineer/binary-text-ascii/

などを参考ください。

Heasoft は、C言語、fortran も使われているので、適切なC言語やfortranのコンパイラの設定が必要で、それはコンパイル時に環境を自動的に取得して普通はやってくれますが、コンパイルに時間がかかるので、すでにコンパイルしてバイナリ化されたもの(pre-compiled binary)をダウンロードして、PATHを通せばすぐに使えるようにしてくれています。この日本語の意味がわからない場合は、もう一つ次を呼んでください。

### PATH を通すとは？

「PATH を通す」とは、環境変数を設定することです。

https://qiita.com/sta/items/63e1048025d1830d12fd

https://daeudaeu.com/mac-path/

pre-compiled binary を使う場合は、ダウンロードして、PATH を貼るだけで使えます。ただし、自分と同じ環境でコンパイルされたものでなければ動かないので、環境の違いがあれば動かないことがあります。

ソースコードであれば、自分の環境にあったものをつかうので、確実性が高いですが、稀に自分の環境が特殊だったり、自分のコンパイル時の環境設定と動作時の環境が違ったり、そもそもバグでコンンパイルが通らなかったり、確実に動くかどうか注意が必要です。Heasoftは膨大なソフトウェアなのでコンパイルにも時間がかかります。

### なんか動かない場合の確認方法 (1) PATH が通ってない場合

まずは、環境変数 HEADAS が設定できているかを確認しましょう。

``` bash:
$ echo $HEADAS
/Users/syamada/work/software/heasoft-6.27.2/x86_64-apple-darwin18.7.0
```

あるいは、

``` bash:
$ printenv | grep HEADAS
HEADAS=/Users/syamada/work/software/heasoft-6.27.2/x86_64-apple-darwin18.7.0
```

で環境変数 HEADAS が設定できていることを確認しましょう。

もし設定されてなければ、zsh の場合は、

``` bash:
$ grep HEADAS ~/.zshrc
export HEADAS=/Users/syamada/work/software/heasoft-6.27.2/x86_64-apple-darwin18.7.0
```

など、.zshrc に記載されていれば、ターミナルの自動時に設定されます。

環境変数 HEADAS が設定されていれば、

``` bash:
source $HEADAS/headas-init.sh 
```

を実行して、初期化を行います。


### なんか動かない場合の確認方法 (2) PATH が通っているが、起動時におかしい場合

mac では、otool -L, linux では ldd などで、ダイナミックに呼ばれるファイルが適切かを確認します。

https://qiita.com/kunichiko/items/b101a713450f099eefbf


# ダウンロード方法

https://heasarc.gsfc.nasa.gov/docs/software/heasoft/download.html

から、ダウンロードします。

:::note alert 
ダウンロードに時間かかります。
サイトは米国なので、ダウンロードに時間がかかります。途中で途切れると変なファイルになることもあります。安定したネット環境でダウンロードしましょう。

:::

## STEP 1 - Select the type of software:

次のうち、

- SOURCE CODE DISTRIBUTION (Recommended):
- PRE-COMPILED BINARY DISTRIBUTIONS (May experience portability issues):

どちらでやるかを、自分で決めます。(人に言われたとおりではなくて、自分でこの２つの選択肢の意味を理解してからやりましょう。) 

どちらを選択したかに依存して、マニュアルの読むべき場所も変わります。

## STEP 2 - Download the desired packages:

必要なものを選択します。初めてであれば、とりあえず All を選択しておきましょう。足りなくてやり直すよりはマシ、ということで。


## STEP 3 - Install the software:

これは、それぞれのOSにしたがって、かつ、自分がソースコードを選んだのか、pre-compiled binary を選んだのかによって、手順が変わることにも気をつけてください。

# インストール方法

## mac編

### バイナリからのインストール方法

:::note info

#### 2025.6.6 追記

Apple M4 で HEASoft 6.35.1 のバイナリを動かすのはちょっとトリッキーなので別の記事にまとめました。

https://qiita.com/yamadasuzaku/items/b959e237ba90211ff98a

ソースコードについては、酒井くんの記事を参考にしてください。

https://qiita.com/yusuke_s_yusuke/items/b6154c79900e718214b3

:::


https://heasarc.gsfc.nasa.gov/docs/software/heasoft/macos.html

`PRE-COMPILED BINARY INSTALLATION:` 以下を実行する。

:::note alert 
ファイルをダウンロードするだけではないです。
https://heasarc.gsfc.nasa.gov/lheasoft/macos.html
B.2. Configure (Pre-Compiled Binaries)
は、バイナリの場合でも必要です。

例えば、heasoft-6.34/x86_64-apple-darwin23.2.0/BUILD_DIR 以下で、

``` bash:
./configure >& config.txt
```

を実行する必要があります。

:::

mac はバイナリでも動くことが多いです。

(自前の python 環境との共存でハマることはあります。)

:::note alert

mac のバイナリを使う場合に、`wish` の開発元を検証できないため開けません、などのエラーメッセージが出て、`fv` などが使えない場合があります。 

wish というのは、`heasoft/heasoft-6.33.1/x86_64-apple-darwin21.6.0/bin/wish` に入っていて、

https://www.tcl.tk/man/tcl8.6/UserCmd/wish.htm

という、昔の GUI を `fv` が使ってるためだと思います。コマンドラインには、

``` bash:
heasoft/heasoft-6.34/x86_64-apple-darwin23.2.0/bin/fv: line 23: 30357 Killed: 9               $FV/bin/wish $FITSVIEWER_LIBRARY/fvInit.tcl -- "$@"
```

というエラーがでます。

解決方法は簡単で、mac のシステム設定 --> プライバシーとセキュリティ を確認し、`fv`を実行すると`許可する`というボタンが生成するので、それを押します。`wish`以外にもいろんなライブラリが許可されてないので、なんども `fv` を実行して許可します。

:::


### ソースコードからのインストール方法

https://heasarc.gsfc.nasa.gov/docs/software/heasoft/macos.html

`SOURCE CODE INSTALLATION:` 以下を実行する。

## linux編 (Ubuntu)

### ソースコードからのインストール方法

https://heasarc.gsfc.nasa.gov/docs/software/heasoft/ubuntu.html

`SOURCE CODE INSTALLATION:` 以下を実行する。

linux では pre-compiled binary はあまりオススメしないです。

# 動作確認

## xspec 

https://qiita.com/yamadasuzaku/items/b978a5cac6197b6f1090

など、xspec が動くことをまず確認しましょう。

## 観測データの解析

もし、この次に、ある衛星のデータを解析したい場合は、もう一つ、ダウンロードと設定が必要です。
それが、

https://heasarc.gsfc.nasa.gov/docs/heasarc/caldb/caldb_intro.html

にあるもので、HEASARC's calibration database (CALDB) の意味です。これを自分の解析したい衛星ごとに取得して、初めて衛星に固有のソフトウェアが動かせます。

例えば、./xraydata/caldb 以下に CALDB の環境を構築した場合は、下記のようなディレクトリ構造になるはずです。

``` bash:
./xraydata/caldb$ tree -L 3
.
├── caldb_setup_files.tar.Z
├── data
│   └── data
│       └── nicer
├── goodfiles_nicer_xti_20221001.tar.gz
└── software
    └── tools
        ├── alias_config.fits
        ├── caldb.config
        ├── caldbinit.csh
        └── caldbinit.sh
```

そのあとで、環境変数を、

``` bash:
# CALDB
export CALDB=$HOME/xraydata/caldb
source $CALDB/software/tools/caldbinit.sh
``` 

のように設定して使います。echo $CALDBCONFIG 

``` bash:
$ echo $CALDBCONFIG 
..../caldb/software/tools/caldb.config
``` 

のように、$CALDBCONFIG が設定されていることを確認しましょう。

最近は、Chandra 衛星であれば、ciao を anaconda で install したときに、最新のCALDBも自動でインストールしてくれます。所望の衛星のHPなどに記載があるので、その説明に従います。

## 関連ページ

FITSファイルや、画像処理につかうds9などは下記の記事も少し書いていますので、参考にしてください。

https://qiita.com/yamadasuzaku/items/f4535f16ea69f1f3cc2c

インストールログは、

https://qiita.com/yamadasuzaku/items/8c6ddc4cf37fbb8ac8ed

にまとめていきます。