--- lang:ja-jp ###### tags: `open` --- # Xspec(in heasoft)の導入 ++[X線スペクトル解析](/wOsMOU-3QCC6rkHt3kdfuA)++ [TOC] XspecはNASAが公開しているソフトであり、X線スペクトル解析を行う上で必要不可欠なものである。Xspecの導入は他のX線解析で役に立つソフトと一緒になったheasoftというパッケージのインストールという形で行う。 **Docker形式もサポートされている。: ++[HEASoft & Docker](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/docker.html)++** ## まずはダウンロード ++[heasoftのダウンロードページ](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/download.html)++ にアクセスする。Source CodeのところをクリックするとずらっとOS名が並ぶので、自分のOSにチェックを入れる。ちなみにWSLはLinuxとは独立にチェックボックスが用意されている。  次にheasoftの内訳としてダウンロードするパッケージを選択するが、特にこだわりがなければAllにチェックを入れて、Submitをクリックする。圧縮ファイルのダウンロードが開始する。(**回線の速度にもよるが、時間がかかる。**)移動もできるので、ダウンロード先はひとまずどこでもよい。  :::info このMissionの欄は先に述べた「衛星データ解析用のソフトやパイプライン」(の一部)にあたる。 実際には、これに加えて衛星ごとの補正データであるcalbration database(CALDB、**容量がでかい**)も必要になる。 ::: ## インストール ダウンロードしたソフトを環境になじませる(インストールする)。作業内容としては先のページのSTEP3にあたる。 ### 1. heasoftのインストールで必要になるパッケージを準備する。 すでに入っているパッケージならすぐにスキップされるので、まとめてterminalにコピペすればよい。 ```bash 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 ``` :::info 引数`-y`を入れると`yes`の入力をスキップできる。 ::: ### 2. 環境変数を設定する。 これはheasoftのインストール時にのみ必要なので`~/.bashrc`に書き込む必要はない。また、インストール作業中にterminalを立ち上げなおした場合はあらためて環境変数の設定を行う。 ```bash 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 ``` :::info terminalがbash以外(cshなど)の場合は環境変数の設定が`export`でない可能性があるので、適宜読み替える。 ::: :::info 以下、古の記載。 > 環境によっては/usr/bin/pythonが存在しない場合もあるようだ。 ```bash export PYTHON=/usr/bin/python3 ``` ::: ### 3. 解凍、およびインストールを行う(**まあまあ時間がかかる**)。 頻繁にアクセスするわけでもない上に、linuxにはシンボリックリンク(`ln -s`)もあるので、適当な場所をheasoftフォルダの置き場所としてよい。 ```bash # ファイル名がheasoft*に対応していないなら適宜書き換え tar xvf heasoft* ``` :::info `tar`は解凍圧縮に使用するコマンドである。引数`xzvf`(もしくは`-xzvf`)は`.tar.gz`および`.tgz`の解凍に対応する。圧縮の場合は`czvf`となる。その他の場合についてはtar <拡張子>などで検索すればよい([++こんな感じのページが出てくる++](https://qiita.com/supersaiakujin/items/c6b54e9add21d375161f) ) ==でも解凍に関しては`tar xvf FILE_NAME`が自動判別もあって拡張子に一切関係なく使えて無敵らしい。== ちなみに`.zip`の場合は別のコマンド`gzip -d FILE`または`gunzip FILE`を使う。 ::: :::danger heasoft6.30の場合は、先にcfitsioのインストールが必要! GLIBC-6.33が不足しているなどのメッセージが出るが、cfitsioを入れれば解決する ```bash= # 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 ``` ::: ```bash # ディレクトリ名が違った場合は適宜書き換える 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)」オプションをつけると失敗する ``` :::info `./FILE_NAME`は現在のディレクトリの実行ファイルをファイル内部で指示(Shebang)された方法で実行するときのコマンド。 ::: :::info `A && B`は「`A`を実行 -> それがエラーなく成功すれば`B`も実行」という意味。 ++[参照ページ](https://qiita.com/wwwaltz/items/9ee247ee8fe3ab63fd27)++ ::: :::info ここでやっている作業としては概ね次のようになっている。 - `./configure` : 実行ファイル作成準備($\sim$`FILE.c`作成) - `make` : 実行ファイル作成($\sim$`gcc`) - `make install` : 実行($\sim$`./a.out`) ::: :::info 複数のCPUコアを利用できる場合、`make`の高速化オプション`-j<Num>`を利用できる。 `<Num>`には利用可能な物理コア数+1を指定するとよいらしい。 物理コア数(CPUコア数) : `grep cpu.cores /proc/cpuinfo | sort -u` from ++[コア数に応じた最適なmake実行 - Qiita](https://qiita.com/ymdymd/items/312c9f554d4ffb1f8dc6)++ ::: :::info この`make`でエラーが出ることが多々ある。(その場合は`make install`も当然うまくいかない。) それは「1.」でインストールしたパッケージ以外に必要なパッケージがあったということなのでエラーメッセージから適当に検索して、追加でインストールする。 ++[`apt-file`が役に立つ : 参照ページ](https://qiita.com/Yuichirou/items/38165af29ab1e2d307f6)++ ::: :::warning heasoft6.29以降ではpyXspecは同時にinstallされる。 `headas-init.sh`を実行後のshellでpython3を開いて`import xspec`が成功すればOK > pyXspecを利用する場合は追加で作業が必要だが、そもそもPyXspecはXspecに慣れてから導入した方がよい。 ::: ### 4. 設定の記述を行う。 まずは`~/.bashrc`にheasoft用の設定を記入する。 ```bash # 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 ``` :::info `cat <<EOF >> ~/.bashrc`は次の行からEOFが出てくるまでを`~/.bashrc`に追記するという意味。 ++[ヒアドキュメント : 参照ページ](https://qiita.com/mofmofneko/items/bf003d14670644dd6197)++ ::: :::info `source FILE`はterminalと変数などを共有しながら中身を実行するコマンド(つまりterminal上にコピペした場合と同じ)。通常の実行の場合は環境変数ではない内部変数などは実行後に消去される。 追記した`~/.bashrc`などを反映させるために`source ~/.bashrc`とするのはよく利用する。 ::: ここで一度`xspec`と入力して、起動を確認する。(このときは追加ウィンドウが出ない。)はじめてxspecを起動すると、~/.xspecが作成される。 次にXspecの設定ファイルも調整する。Xspecのグラフなどの画面が追加ウィンドウで表示されるようにする。長い設定ファイルの~~135行目あたりにあるPLOTDEVICEの右辺をnull -> xwに~~ 143行目あたりにあるPLOTTING DEVICEの右辺を/null -> /XWINDOW or /XSERVERに書き換える。 ```bash # editorはなんでもよい。 vim ~/.xspec/Xspec.init # この長い設定ファイルの143行目あたりにあるPLOTTING DEVICEの右辺を/null -> /XWINDOW or /XSERVERに書き換える ``` その後、terminalで`xspec`と入力してXspecが起動すれば成功である。また、このとき画像のような表示の別ウィンドウが現れるが、グラフなどはここに表示される。  ### 5. X線解析用のディレクトリ作成およびCALDBのダウンロードを行う。 まとめ用のディレクトリheaの中にCALDB用のcaldb、観測データやその解析結果を入れる用のwork、追加で導入したmodelを入れる用のmodelを作成する。heaの置き場所はどこでもよいが、HOMEにheaのシンボリックリンクは作成しておいた方がよい。 :::danger HOMEにheasoft-6.26のディレクトリないしシンボリックリンクを作成してしまった場合、heaに移動しようとしても名前が全被りしてるためtab補完で`/`が入らず、地味にうざくなるので注意。 ::: ```bash mkdir hea cd hea mkdir caldb work model ``` heasoft用のCALDBのinstallは ++[NASAのページ](https://heasarc.gsfc.nasa.gov/docs/heasarc/caldb/install.html)++ に従う。 ```bash 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用の記述も追加する。 ```bash cat <<"EOF" >> ~/.bashrc export CALDB=~/hea/caldb source $CALDB/software/tools/caldbinit.sh EOF source ~/.bashrc ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up