Try   HackMD

Xspec(in heasoft)の導入

X線スペクトル解析

XspecはNASAが公開しているソフトであり、X線スペクトル解析を行う上で必要不可欠なものである。Xspecの導入は他のX線解析で役に立つソフトと一緒になったheasoftというパッケージのインストールという形で行う。

Docker形式もサポートされている。: HEASoft & Docker

まずはダウンロード

heasoftのダウンロードページ にアクセスする。Source CodeのところをクリックするとずらっとOS名が並ぶので、自分のOSにチェックを入れる。ちなみにWSLはLinuxとは独立にチェックボックスが用意されている。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

次にheasoftの内訳としてダウンロードするパッケージを選択するが、特にこだわりがなければAllにチェックを入れて、Submitをクリックする。圧縮ファイルのダウンロードが開始する。(回線の速度にもよるが、時間がかかる。)移動もできるので、ダウンロード先はひとまずどこでもよい。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

このMissionの欄は先に述べた「衛星データ解析用のソフトやパイプライン」(の一部)にあたる。
実際には、これに加えて衛星ごとの補正データであるcalbration database(CALDB、容量がでかい)も必要になる。

インストール

ダウンロードしたソフトを環境になじませる(インストールする)。作業内容としては先のページのSTEP3にあたる。

1. heasoftのインストールで必要になるパッケージを準備する。

すでに入っているパッケージならすぐにスキップされるので、まとめてterminalにコピペすればよい。

sudo apt update \
 && sudo apt upgrade -y \
 && sudo apt install -y libreadline-dev libncurses5-dev ncurses-dev \
    curl libcurl4 libcurl4-gnutls-dev \
    xorg-dev make gcc g++ gfortran perl-modules python3-dev

# 以下、古の記載(heasoft6.27)
#sudo apt -y install libreadline6-dev libncurses5-dev xorg-dev \
#                    gcc g++ gfortran perl-modules python-dev \
#                    libxt-dev libx11-dev

引数-yを入れるとyesの入力をスキップできる。

2. 環境変数を設定する。

これはheasoftのインストール時にのみ必要なので~/.bashrcに書き込む必要はない。また、インストール作業中にterminalを立ち上げなおした場合はあらためて環境変数の設定を行う。

export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
export FC=/usr/bin/gfortran
export PERL=/usr/bin/perl
export PYTHON=/usr/bin/python3
#export PYTHON=/usr/bin/python

terminalがbash以外(cshなど)の場合は環境変数の設定がexportでない可能性があるので、適宜読み替える。

以下、古の記載。

環境によっては/usr/bin/pythonが存在しない場合もあるようだ。

export PYTHON=/usr/bin/python3

3. 解凍、およびインストールを行う(まあまあ時間がかかる)。

頻繁にアクセスするわけでもない上に、linuxにはシンボリックリンク(ln -s)もあるので、適当な場所をheasoftフォルダの置き場所としてよい。

# ファイル名がheasoft*に対応していないなら適宜書き換え
tar xvf heasoft*

tarは解凍圧縮に使用するコマンドである。引数xzvf(もしくは-xzvf)は.tar.gzおよび.tgzの解凍に対応する。圧縮の場合はczvfとなる。その他の場合についてはtar <拡張子>などで検索すればよい(++こんな感じのページが出てくる++ )
でも解凍に関してはtar xvf FILE_NAMEが自動判別もあって拡張子に一切関係なく使えて無敵らしい。

ちなみに.zipの場合は別のコマンドgzip -d FILEまたはgunzip FILEを使う。

heasoft6.30の場合は、先にcfitsioのインストールが必要!
GLIBC-6.33が不足しているなどのメッセージが出るが、cfitsioを入れれば解決する

# cfitsio cfitsio_version="4.1.0" mkdir $HOME/mylib/soft/cfitsio -p \ && cd $HOME/mylib/soft/cfitsio/ \ && wget http://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/cfitsio-${cfitsio_version}.tar.gz \ && tar xvf cfitsio-${cfitsio_version}.tar.gz \ && cd cfitsio-${cfitsio_version} \ && ./configure && make && make install
# ディレクトリ名が違った場合は適宜書き換える
cd heasoft-6.30/BUILD_DIR/
make clean ; ./configure && make && make install
#make clean ; ./configure && make -lcfitsio && make install
#./configure && make -j$(nproc) && make -j$(nproc) install
# やり直すときは make cleanを一度挟んで生成ファイルを消す
# heasoft6.29やheasoftv6.30ではmakeに「-j$(nproc)」オプションをつけると失敗する

./FILE_NAMEは現在のディレクトリの実行ファイルをファイル内部で指示(Shebang)された方法で実行するときのコマンド。

A && Bは「Aを実行 -> それがエラーなく成功すればBも実行」という意味。
参照ページ

ここでやっている作業としては概ね次のようになっている。

  • ./configure : 実行ファイル作成準備(
    FILE.c作成)
  • make : 実行ファイル作成(
    gcc)
  • make install : 実行(
    ./a.out)

複数のCPUコアを利用できる場合、makeの高速化オプション-j<Num>を利用できる。
<Num>には利用可能な物理コア数+1を指定するとよいらしい。

物理コア数(CPUコア数)
grep cpu.cores /proc/cpuinfo | sort -u
from コア数に応じた最適なmake実行 - Qiita

このmakeでエラーが出ることが多々ある。(その場合はmake installも当然うまくいかない。)
それは「1.」でインストールしたパッケージ以外に必要なパッケージがあったということなのでエラーメッセージから適当に検索して、追加でインストールする。
apt-fileが役に立つ : 参照ページ

heasoft6.29以降ではpyXspecは同時にinstallされる。
headas-init.shを実行後のshellでpython3を開いてimport xspecが成功すればOK

pyXspecを利用する場合は追加で作業が必要だが、そもそもPyXspecはXspecに慣れてから導入した方がよい。

4. 設定の記述を行う。

まずは~/.bashrcにheasoft用の設定を記入する。

# XXXXやファイル名などは自分のheasoftの置き場所などに併せて書き換える。
cat <<EOF >> ~/.bashrc
export HEADAS=~/XXXXX/heasoft-6.26/x86_64-unknown-linux-gnu-libcX.XX
source $HEADAS/headas-init.sh
EOF

source ~/.bashrc

cat <<EOF >> ~/.bashrcは次の行からEOFが出てくるまでを~/.bashrcに追記するという意味。
ヒアドキュメント : 参照ページ

source FILEはterminalと変数などを共有しながら中身を実行するコマンド(つまりterminal上にコピペした場合と同じ)。通常の実行の場合は環境変数ではない内部変数などは実行後に消去される。

追記した~/.bashrcなどを反映させるためにsource ~/.bashrcとするのはよく利用する。

ここで一度xspecと入力して、起動を確認する。(このときは追加ウィンドウが出ない。)はじめてxspecを起動すると、~/.xspecが作成される。

次にXspecの設定ファイルも調整する。Xspecのグラフなどの画面が追加ウィンドウで表示されるようにする。長い設定ファイルの135行目あたりにあるPLOTDEVICEの右辺をnull -> xwに 143行目あたりにあるPLOTTING DEVICEの右辺を/null -> /XWINDOW or /XSERVERに書き換える。

# editorはなんでもよい。
vim ~/.xspec/Xspec.init
# この長い設定ファイルの143行目あたりにあるPLOTTING DEVICEの右辺を/null -> /XWINDOW or /XSERVERに書き換える

その後、terminalでxspecと入力してXspecが起動すれば成功である。また、このとき画像のような表示の別ウィンドウが現れるが、グラフなどはここに表示される。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

5. X線解析用のディレクトリ作成およびCALDBのダウンロードを行う。

まとめ用のディレクトリheaの中にCALDB用のcaldb、観測データやその解析結果を入れる用のwork、追加で導入したmodelを入れる用のmodelを作成する。heaの置き場所はどこでもよいが、HOMEにheaのシンボリックリンクは作成しておいた方がよい。

HOMEにheasoft-6.26のディレクトリないしシンボリックリンクを作成してしまった場合、heaに移動しようとしても名前が全被りしてるためtab補完で/が入らず、地味にうざくなるので注意。

mkdir hea
cd hea
mkdir caldb work model

heasoft用のCALDBのinstallは NASAのページ に従う。

cd caldb
wget https://heasarc.gsfc.nasa.gov/FTP/caldb/software/tools/caldb_setup_files.tar.Z
tar xvf caldb_setup_files.tar.Z

~/.bashrcにCALDB用の記述も追加する。

cat <<"EOF" >> ~/.bashrc
export CALDB=~/hea/caldb
source $CALDB/software/tools/caldbinit.sh
EOF

source ~/.bashrc