Differences between revisions 39 and 43 (spanning 4 versions)
Revision 39 as of 2022-06-02 10:29:01
Size: 11076
Comment:
Revision 43 as of 2023-01-12 11:07:29
Size: 4657
Comment:
Deletions are marked like this. Additions are marked like this.
Line 31: Line 31:


= Condaによるpython環境構築 =

IGWN (the International Gravitational-Wave Observatory Network) Computing and Software で用意された環境(igwn-py39)を元にするのがよい。<<BR>>
使い方は[[https://gwdoc.icrr.u-tokyo.ac.jp/cgi-bin/private/DocDB/ShowDocument?docid=13584|JGW-G2113584]]を参照<<BR>>

== igwn-py39 を元にした環境構築 ==

柏PCにログイン
{{{
ssh m31-01
}}}
[[https://computing.docs.ligo.org/conda/environments/igwn-py39/]]からlinux-64と書かれたものをダウンロードしてくる。
{{{
wget https://computing.docs.ligo.org/conda/environments/linux/igwn-py39.yaml
}}}
ダウンロードしたレシピファイルを元に仮想環境を作る。→少し時間がかかる。<<BR>>
''myenv'' の所は自分の好きな名前にしてよい
{{{
conda env create -n myenv --file igwn-py39.yaml
}}}
この時、出てくる質問に y と答えると自分用のconda環境ができるらしい。出てこないで進む人もいる。
{{{
done
#
# To activate this environment, use
#
# $ conda activate myenv
#
# To deactivate an active environment, use
#
# $ conda deactivate
}}}
と表示されたら''myenv''環境のできあがり。
{{{
conda info -e
}}}
と打つと環境一覧が表示され、自分のホームの下に "".conda/envs/myenv"" というものが見えるはず。

仮想環境に入るには
{{{
conda activate myenv
}}}
と打てばよい。

condaの使い方は以下などを参照 (ググれば腐るほど出てきます)
 * [[https://www.python.jp/install/anaconda/conda.html|Conda コマンド:Python環境構築ガイド]]
 * [[http://www.yamamo10.jp/yamamoto/comp/Python/settings/install/index.php|Python環境設定: インストール]]
 * [[https://qiita.com/naz_/items/84634fbd134fbcd25296|Anaconda でよく使うコマンド一覧]]




いちいち仮想環境に入るためにコマンドを打つのは面倒なので、以下を~/.bashrcもしくは~/bash_profileに書いておけば、ターミナル起動時に自動的myenvに入るように設定できる
{{{
# User specific aliases and functions
source /gpfs/ligo/sw/conda/etc/profile.d/conda.sh
conda activate myenv
}}}









== virtualenvによる仮想環境構築 ==

柏PCのdefault環境ではmatplotlibが古すぎてplotがダサくなる方やgwpyのerrorが自身のPCと異なり困る方など向け。<<BR>>
--(おそらくkashiwaでpython環境構築に使うのが推奨されているのがvirtualenvである。)--
IGWNでは,virtualenvではなく Conda の利用を推奨している。<<BR>>
'''''以下の記述は古いものなので、もしものときの参考用。'''''

=== virtualenvの使い方 ===

柏PCにログイン
{{{
ssh m31-01
}}}
仮想環境の構築(python3.7の部分は好みのversionで良い, 後ろの~/.virtualenvs/new_envの部分も好きなpathに好きな名前で置いても良い)
{{{
virtualenv -p python3.6 ~/.virtualenvs/new_env
}}}
仮想環境を有効にする。
{{{
source ~/.virtualenvs/new_env/bin/activate
}}}
今後、仮想環境を有効にする際は毎回これを打つ必要があり、面倒くさいので
{{{
echo "alias nenv='source ${HOME}/new_env/bin/activate' " >> ${HOME}/.bashrc
}}}
と打てば、nenvと打つだけで仮想環境を有効にできる。<<BR>>
次に仮想環境を有効にした状態でpipを用いてlibraryをinstallする。
{{{
pip install -U pip setuptools wheel
pip install gwpy==0.15.0 lalsuite
}}}
lalsuiteもinstallしないとframe fileが読めないので注意。<<BR>>
gwpyをinstallする時に必要なものはほとんど一緒にinstallされると思うが、他に必要なlibraryがある場合は別途pip installを用いてinstallする。



=== virtualenvで pyROOTを使う ===

柏計算機ではデフォルトでROOT, pyROOTが使えるが、virtualenvで自分で構築した環境だとそのままではpyROOTがimportできない。
もちろん、pip install ROOT とかやっても無駄。<<BR>>
私(鷲見)が1年ほど事項錯誤した結果、自前でROOT5をビルドすることでvirtualenvで pyROOTを使えることがわかった。<<BR>>
(ROOT6の場合は、概ね柏PCのCMakeのバージョンが古いせいでビルドできない。初期のバージョン(6.02とか)はビルドできるが、ROOT.pyが生成されず{{{$PYTHONPATH}}}を通せなかった。)


ちなみに、root fileの読み書きだけなら[[https://github.com/scikit-hep/uproot|uproot]]を使えばよい


まず自分のhomeにてきとうなディレクトリ(ここでは {{{myROOT}}} )を作り、ROOTの公式ページから[[https://root.cern.ch/content/release-53438|ROOT5.34.38]]のソースを落として解凍する。
{{{
~ $ mkdir myROOT
~ $ cd myROOT
~/myROOT $ wget https://root.cern.ch/download/root_v5.34.38.source.tar.gz
~/myROOT $ tar zxvf root_v5.34.38.source.tar.gz
~/myROOT $ mv root root-5.34.38
~/myROOT $ cd root-5.34.38
~/myROOT/root-5.34.38 $
}}}
ビルド用のディレクトリを作り、cmake -> make する。
{{{
~/myROOT/root-5.34.38 $ mkdir cmake_build
~/myROOT/root-5.34.38 $ cd cmake_build
~/myROOT/root-5.34.38/cmake_build $ cmake ../ -Dpython3=On -DPYTHON_EXECUTABLE=/gpfs/home/(自分の名前)/(仮想環境)/bin/python3
~/myROOT/root-5.34.38/cmake_build $ make -j 5
}}}
ROOT5のインストールが終わるのをしばらく待つ。終わったら、自分の仮想環境のbin/activateに以下を追記する。
{{{
### ROOT ###
export PATH="/home/(自分の名前)/(仮想環境)/bin:$PATH"
source /home/(自分の名前)/myROOT/root-5.34.38/cmake_build/bin/thisroot.sh
export PATH="/home/(自分の名前)/myROOT/root-5.34.38/cmake_build/bin:$PATH"
export LD_LIBRARY_PATH="/home/(自分の名前)/myROOT/root-5.34.38/cmake_build/lib:$LD_LIBRARY_PATH"
export PYTHONPATH="/home/(自分の名前)/myROOT/root-5.34.38/cmake_build/lib:$PYTHONPATH"
}}}
これでこの仮想環境でpyROOTが使えるようになる。

{{{
~ $ source (仮想環境)/bin/activate
(仮想環境) ~ $ python
Python 3.4.9 (default, Aug 14 2018, 21:28:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ROOT
>>>
}}}
Line 190: Line 36:
Line 191: Line 38:
Line 230: Line 78:
=== gwpyを最新のものにするとframe fileがtimeseries.readで読めなくなる === === gwpy 1.0.0 にするとframe fileがtimeseries.readで読めなくなる ===

KAGRA主データ保管装置の使い方

以下では簡単のため、このシステムを柏PCと呼びます。
柏PCを使用してみんなが快適に解析できるようにできるようにしたい。あと環境構築などで詰まったことの備忘録。

ちなみにframe fileのデータが欲しいだけなら、Pastaviを使えば良い(宇宙線研のネットワークにつなぐ必要あり)

セットアップ

アカウント申請

Application for an account of KAGRA Main Storage System に従い申請する.

startup

主にアカウント発行の際にメールでもらえるguideに沿って行えば良い。 一応、JGW docにも資料がある

frame fileを読んでみる(python)

環境はdefaultでほとんどできているはずなのでgwpyを使ってframe fileを読んでみる Lecture in Japanese

frame fileを読んで様々なplotを書くためのsample codeやcondor_jobを使ってjobを投げるためのshellなどが豊富にある Kozapy



condorの使い方

https://git.ligo.org/yuzurihara/commissioning-tools-for-kagra/-/tree/main/script

condorのコマンドについては澤田さんのスライドを見てみてください

https://gwdoc.icrr.u-tokyo.ac.jp/cgi-bin/private/DocDB/ShowDocument?docid=11049


自身のPC上でprogram編集と結果閲覧を完結したい人向け

自身のpc上のeditorを愛している方や、ネットワークが弱くsshでm31-01にログインした状態で作業するのにストレスがある方向け

自身のpc上に作業用のディレクトリを適当に作る(mkdir以下は当然任意)

mkdir ~/work

作ったdirectoryにcodeを書く

emacs ~/work/test.py
.
.
.

以下のshell scriptを作業用のdirectiryにおく

exePath=$(pwd)/$2
exePath=~${exePath#*$(cd $(dirname $0); cd ../ ;pwd)}

rsync  -arp --inplace  $(cd $(dirname $0); pwd) m31-01:~/
ssh -Y -t -t m31-01 <<EOC
source ~/.virtualenvs/new_env/bin/activate
$1 ${exePath}
exit
EOC
rsync -arp --inplace m31-01:~/$(basename $(cd $(dirname $0); pwd))/ $(cd $(dirname $0); pwd)

公開鍵の設定を済ましておけばかなりリモートで作業を行なってfileを持ち帰るという作業はスムーズになる


詰まった問題

詰まった問題やこのページの通りやってもうまくいかないことを書き込む

gwpy 1.0.0 にするとframe fileがtimeseries.readで読めなくなる

単一source fileなら読めるが複数source fileを読もうとするとerrorが出る

単一ファイル読み出し(ok)
data = TimeSeries.read(['/data/full/12567/K-K1_C-1256700000-32.gwf', '/data/full/12567/K-K1_C-1256700032-32.gwf', '/data/full/12567/K-K1_C-1256700064-32.gwf', '/data/full/12567/K-K1_C-1256700096-32.gwf'], c K1:CAL-CS_PROC_C00_STRAIN_DBL_DQ, start =  1256700000, end = 1256700100, format='gwf.lalframe')

TimeSeries([ 2.24202135e-11,  2.24398064e-11,  2.24622275e-11,
            ..., -1.91058005e-11, -1.90862017e-11,
            -1.90661226e-11]
           unit: dimensionless,
           t0: 1256700000.0 s,
           dt: 6.103515625e-05 s,
           name: K1:CAL-CS_PROC_C00_STRAIN_DBL_DQ,
           channel: K1:CAL-CS_PROC_C00_STRAIN_DBL_DQ)

複数ファイル読み出し(ng)
data = TimeSeries.read(['/data/full/12567/K-K1_C-1256700000-32.gwf', '/data/full/12567/K-K1_C-1256700032-32.gwf', '/data/full/12567/K-K1_C-1256700064-32.gwf', '/data/full/12567/K-K1_C-1256700096-32.gwf'], c K1:CAL-CS_PROC_C00_STRAIN_DBL_DQ, start =  1256700000, end = 1256700100, format='gwf.lalframe')

RuntimeError: Failed to read /data/full/12470/K-K1_C-1247030016-32.gwf: Internal function call failed: I/O error

gwpy0.15.0だとこのエラーは起こらず、1.0.0だと起こる

今のところ1.0.0でこの問題を解決する方法が分からないので、pipでのinstallの際は

pip install gwpy==0.15.0

とすることを勧める。 ちなみにTimeSeriesDict.readなら複数ファイルでも問題なく読めるので、1チャンネルだけのときもこちらを使うようにすれば問題ない。

KAGRA/Subgroups/PEM/UseKashiwaPC (last edited 2023-01-12 11:07:29 by tatsuki.washimi)