ALPS チュートリアル: Introduction to ALPS Python 
ALPS チュートリアル: Introduction to ALPS 
Python 
CMSI ハンズオン 
ALPS Collaboration 
http://alps.comp-phys.org/ 
2014-10-16 
1 / 15
ALPS チュートリアル: Introduction to ALPS Python 
Outline 
1 ALPS python 
2 Preparing simulation 
3 Running simulation 
4 Loading simulation results 
5 Plotting results 
6 Evaluating data 
2 / 15
ALPS チュートリアル: Introduction to ALPS Python 
ALPS python 
Launching Python 
ALPS をPython のモジュールとして利用することができます. 
その準備としてALPS Python へPATH を通す必要があります. 
phi 上でALPS Python へPATH を通すには次のコマンドを実行し 
てください. 
bash> source /opt/nano/alps/alpsvars-20121208-r6630.sh 
自分でALPS をインストールした場合,まずALPS へPATH を通 
してください.そこにalpspython というコマンドがインストール 
されているので,それを実行することでALPS Python へPATH が 
通せます. 
bash> alpspython 
3 / 15
ALPS チュートリアル: Introduction to ALPS Python 
Preparing simulation 
Importing ALPS modules 
ALPS Python をPython のインタープリタから利用してみま 
しょう.できればiPython を使ってください. 
$ ipython 
>>> import pyalps 
なにもエラーが出なければこれで準備終了です. 
iPython の場合Tab 補完でpyalps のモジュールや関数などが 
列挙できます. 
>>> al.[ここでTab] 
Display all 102 possibilities? (y or n) 
al.CycleColors 
al.CycleMarkers 
... 
4 / 15
ALPS チュートリアル: Introduction to ALPS Python 
Preparing simulation 
Preparing parameter 
1 回のシミュレーションに必要なパラメータセットを辞書型で与え 
ます. 
温度T = 1:5; 2; 2:5 と変化させ3 回のシミュレーションを行う例 
>>> parms = [] 
>>> for t in [1.5,2,2.5]: 
... parms.append({'LATTICE': "square lattice", 
... 'T': t, 'J': 1 , 
... 'THERMALIZATION': 1000, 'SWEEPS': 100000, 
... 'UPDATE': "cluster", 'MODEL': "Ising", 
... 'L': 8}) 
>>> 
辞書型の要素を3 つ持つリストparams ができます 
5 / 15
ALPS チュートリアル: Introduction to ALPS Python 
Preparing simulation 
Preparing input XML
les 
パラメータからXML 形式の入力ファイルを作成します. 
>>> mkdir sim # シミュレーション用のディレクトリを作成し 
>>> cd sim # そこへ移動する 
>>> input_file = pyalps.writeInputFiles('parm1',parms) 
>>> print input_file # 入力ファイル名が返されている 
parm1.in.xml 
>>> ls # 作成されたファイルを確かめる. 
ALPS.xsl parm1.in.xml parm1.task1.in.xml parm1.task2.in.xml parm1 
.task3.in.xml 
parm1.in.xml はシミュレーション全体の入力ファイルです 
parm1.task# .in.xml は各タスク毎の入力ファイルです 
6 / 15
ALPS チュートリアル: Introduction to ALPS Python 
Running simulation 
Running simulation on serial machine 
>>> pyalps.runApplication('spinmc', 
input_file,Tmin=5,writexml=True) 
spinmc parm1.in.xml --Tmin 5 --write-xml 
Generic classical Monte Carlo program using local or cluster 
updates 
... 
Checkpointing Simulation 3 
Finished with everything. 
(0, 'parm1.out.xml') 
実行が終了するとparm1.out.xml, parm1.task1.out.h5,    と 
いったファイルが出力されています. 
7 / 15
ALPS チュートリアル: Introduction to ALPS Python 
Running simulation 
Running simulation on parallel machine 
 pyalps.runApplication('spinmc',input_file,Tmin=5,writexml= 
True,MPI=4) 
MPI=4 でMPI プロセス4 並列でシミュレーションを実行す 
ることを指示しています. 
8 / 15
ALPS チュートリアル: Introduction to ALPS Python 
Loading simulation results 
Getting result
les 
 result_files = pyalps.getResultFiles(prefix='parm1') 
 print result_files 
['./parm1.task2.out.xml', './parm1.task3.out.xml', './parm1. 
task1.out.xml'] 
カレントディレクトリ内からプレフィックスが'parm1' のファ 
イルを正規表現によるパターンマッチで探してファイル名を出 
力します. 
result
les はファイル名のリスト. 
9 / 15
ALPS チュートリアル: Introduction to ALPS Python 
Loading simulation results 
Loading results 
指定したファイル名のリストから,指定した物理量(複数可)を取 
り出す 
 data = pyalps.loadMeasurements(result_files,['|Magnetization| 
','Magnetization^2']) 
 data[0] # data の中身をみてみます 
[x=[0] 
y=[0.083339021352 +/- 0.00038780838614] 
props={'observable': '|Magnetization|', 'THERMALIZATION': 
10000.0, 'J': -1.0, ...}, 
x=[0] 
y=[0.00816759554762 +/- 7.41432666026e-05] 
props={'observable': 'Magnetization^2', 'THERMALIZATION': 
10000.0, 'J': -1.0, ...}] 
10 / 15
ALPS チュートリアル: Introduction to ALPS Python 
Loading simulation results 
データの構造 
シミュレーション結果を表すクラス 
DataSet: class 名 
x: plot 用のインデックス(最初はデフォルト値0 が入って 
いる) 
y: 物理量の平均値および標準誤差 
props: 物理量名およびパラメータなどがPython の辞書形式で 
入っている 
# 物理量の平均値と標準誤差を取り出してみます 
 data[0][0].y 
array([0.083339021352 +/- 0.00038780838614], dtype=object) 
 data[0][0].y.mean 
0.08333902135203504 
 data[0][0].y.error 
0.00038780838614 
11 / 15
ALPS チュートリアル: Introduction to ALPS Python 
Plotting results 
Plotting the results 
 plotdata = pyalps.collectXY(data,'T','|Magnetization|') 
 plotdata[0].x 
array([ 1.5, 2. , 2.5]) 
 plotdata[0].y 
array([0.986621683313 +/- 5.59763992999e-05, 
0.911889051072 +/- 0.000288443276697, 
0.605402476752 +/- 0.0013356753695], dtype=object) 
 plotdata[0].props 
{'observable': '|Magnetization|', '... 
data からpyalps.collectXY によりx 軸として'T', y 軸として 
'jMagnetizationj' を取り出しています. 
12 / 15

More Related Content

PDF
ALPSチュートリアル(4) Python入門
PDF
ALPSチュートリアル(3) アプリケーション実習
PDF
ALPSチュートリアル(1) ALPSの概要
PDF
ALPSチュートリアル(6) Matplotlib入門
PDF
ALPSチュートリアル(7) アプリケーションのALPS化
PDF
ALPSチュートリアル(2) ALPSのインストール
PDF
研究生のためのC++ no.7
PDF
Subprocess no susume
ALPSチュートリアル(4) Python入門
ALPSチュートリアル(3) アプリケーション実習
ALPSチュートリアル(1) ALPSの概要
ALPSチュートリアル(6) Matplotlib入門
ALPSチュートリアル(7) アプリケーションのALPS化
ALPSチュートリアル(2) ALPSのインストール
研究生のためのC++ no.7
Subprocess no susume

What's hot (20)

PPTX
Scalamacrosについて
PDF
Python で munin plugin を書いてみる
PPTX
R_note_ODE_ver1.0
PDF
Haskell で CLI
PPTX
pecl-AOPの紹介
KEY
Applicative functor
PPTX
前期講座09
PDF
データサイエンスワールドからC++を眺めてみる
KEY
ひのきのぼうだけで全クリ目指す
PDF
awk v.s. bashどっちが強い?@OSC2011Tokyo
PDF
PostgreSQL - C言語によるユーザ定義関数の作り方
PDF
Read egg oven
PDF
RのffでGLMしてみたけど...
PDF
PPTX
Node.js - sleep sort algorithm
PDF
SPL fukuokaphp_1
PDF
RのffとbigmemoryとRevoScaleRとを比較してみた
PDF
Ext.directことはじめ
PDF
Miyazaki.js vol.1 スコープの話
Scalamacrosについて
Python で munin plugin を書いてみる
R_note_ODE_ver1.0
Haskell で CLI
pecl-AOPの紹介
Applicative functor
前期講座09
データサイエンスワールドからC++を眺めてみる
ひのきのぼうだけで全クリ目指す
awk v.s. bashどっちが強い?@OSC2011Tokyo
PostgreSQL - C言語によるユーザ定義関数の作り方
Read egg oven
RのffでGLMしてみたけど...
Node.js - sleep sort algorithm
SPL fukuokaphp_1
RのffとbigmemoryとRevoScaleRとを比較してみた
Ext.directことはじめ
Miyazaki.js vol.1 スコープの話
Ad

Similar to ALPSチュートリアル(5) ALPS Python入門 (20)

PDF
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
PPTX
2019年度未踏: 開発者が行ったソースコード修正作業を学習し代行するボット-DevReplay-
PDF
Raspberry Pi Deep Learning Hand-on
PDF
Introduction to Numpy (and Python) [JPN]
KEY
Algebraic DP: 動的計画法を書きやすく
PDF
Azure Machine Learning getting started
PDF
Python 機械学習プログラミング データ分析ライブラリー解説編
PDF
JOI春季ステップアップセミナー 2021 講義スライド
PDF
ディープラーニングフレームワーク とChainerの実装
PDF
TensorFlowプログラミングと分類アルゴリズムの基礎
PPTX
0610 TECH & BRIDGE MEETING
PDF
第1回 Jubatusハンズオン
PDF
第1回 Jubatusハンズオン
PDF
A Machine Learning Framework for Programming by Example
PDF
PsychoPy Builder:Code Componentの使い方
PDF
Python for Data Anaysis第2回勉強会4,5章
PDF
Adding simpl GVN path into GHC
PDF
More modern gpu
PDF
LDA入門
PDF
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
2019年度未踏: 開発者が行ったソースコード修正作業を学習し代行するボット-DevReplay-
Raspberry Pi Deep Learning Hand-on
Introduction to Numpy (and Python) [JPN]
Algebraic DP: 動的計画法を書きやすく
Azure Machine Learning getting started
Python 機械学習プログラミング データ分析ライブラリー解説編
JOI春季ステップアップセミナー 2021 講義スライド
ディープラーニングフレームワーク とChainerの実装
TensorFlowプログラミングと分類アルゴリズムの基礎
0610 TECH & BRIDGE MEETING
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン
A Machine Learning Framework for Programming by Example
PsychoPy Builder:Code Componentの使い方
Python for Data Anaysis第2回勉強会4,5章
Adding simpl GVN path into GHC
More modern gpu
LDA入門
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Ad

More from Computational Materials Science Initiative (20)

PDF
MateriApps LIVE! の設定
PDF
How to setup MateriApps LIVE!
PDF
How to setup MateriApps LIVE!
PDF
PDF
MateriApps LIVE! の設定
PDF
How to setup MateriApps LIVE!
PDF
How to setup MateriApps LIVE!
PDF
MateriApps LIVE! の設定
PDF
MateriApps LIVE! の設定
PDF
How to setup MateriApps LIVE!
PDF
How to setup MateriApps LIVE!
PDF
MateriApps LIVE! の設定
PDF
How to setup MateriApps LIVE!
PDF
PDF
PDF
How to setup MateriApps LIVE!
PDF
PDF
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
PDF
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
PDF
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
MateriApps LIVE! の設定
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
MateriApps LIVE! の設定
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
MateriApps LIVE! の設定
MateriApps LIVE! の設定
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
MateriApps LIVE! の設定
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①

ALPSチュートリアル(5) ALPS Python入門

  • 1. ALPS チュートリアル: Introduction to ALPS Python ALPS チュートリアル: Introduction to ALPS Python CMSI ハンズオン ALPS Collaboration http://alps.comp-phys.org/ 2014-10-16 1 / 15
  • 2. ALPS チュートリアル: Introduction to ALPS Python Outline 1 ALPS python 2 Preparing simulation 3 Running simulation 4 Loading simulation results 5 Plotting results 6 Evaluating data 2 / 15
  • 3. ALPS チュートリアル: Introduction to ALPS Python ALPS python Launching Python ALPS をPython のモジュールとして利用することができます. その準備としてALPS Python へPATH を通す必要があります. phi 上でALPS Python へPATH を通すには次のコマンドを実行し てください. bash> source /opt/nano/alps/alpsvars-20121208-r6630.sh 自分でALPS をインストールした場合,まずALPS へPATH を通 してください.そこにalpspython というコマンドがインストール されているので,それを実行することでALPS Python へPATH が 通せます. bash> alpspython 3 / 15
  • 4. ALPS チュートリアル: Introduction to ALPS Python Preparing simulation Importing ALPS modules ALPS Python をPython のインタープリタから利用してみま しょう.できればiPython を使ってください. $ ipython >>> import pyalps なにもエラーが出なければこれで準備終了です. iPython の場合Tab 補完でpyalps のモジュールや関数などが 列挙できます. >>> al.[ここでTab] Display all 102 possibilities? (y or n) al.CycleColors al.CycleMarkers ... 4 / 15
  • 5. ALPS チュートリアル: Introduction to ALPS Python Preparing simulation Preparing parameter 1 回のシミュレーションに必要なパラメータセットを辞書型で与え ます. 温度T = 1:5; 2; 2:5 と変化させ3 回のシミュレーションを行う例 >>> parms = [] >>> for t in [1.5,2,2.5]: ... parms.append({'LATTICE': "square lattice", ... 'T': t, 'J': 1 , ... 'THERMALIZATION': 1000, 'SWEEPS': 100000, ... 'UPDATE': "cluster", 'MODEL': "Ising", ... 'L': 8}) >>> 辞書型の要素を3 つ持つリストparams ができます 5 / 15
  • 6. ALPS チュートリアル: Introduction to ALPS Python Preparing simulation Preparing input XML
  • 7. les パラメータからXML 形式の入力ファイルを作成します. >>> mkdir sim # シミュレーション用のディレクトリを作成し >>> cd sim # そこへ移動する >>> input_file = pyalps.writeInputFiles('parm1',parms) >>> print input_file # 入力ファイル名が返されている parm1.in.xml >>> ls # 作成されたファイルを確かめる. ALPS.xsl parm1.in.xml parm1.task1.in.xml parm1.task2.in.xml parm1 .task3.in.xml parm1.in.xml はシミュレーション全体の入力ファイルです parm1.task# .in.xml は各タスク毎の入力ファイルです 6 / 15
  • 8. ALPS チュートリアル: Introduction to ALPS Python Running simulation Running simulation on serial machine >>> pyalps.runApplication('spinmc', input_file,Tmin=5,writexml=True) spinmc parm1.in.xml --Tmin 5 --write-xml Generic classical Monte Carlo program using local or cluster updates ... Checkpointing Simulation 3 Finished with everything. (0, 'parm1.out.xml') 実行が終了するとparm1.out.xml, parm1.task1.out.h5, と いったファイルが出力されています. 7 / 15
  • 9. ALPS チュートリアル: Introduction to ALPS Python Running simulation Running simulation on parallel machine pyalps.runApplication('spinmc',input_file,Tmin=5,writexml= True,MPI=4) MPI=4 でMPI プロセス4 並列でシミュレーションを実行す ることを指示しています. 8 / 15
  • 10. ALPS チュートリアル: Introduction to ALPS Python Loading simulation results Getting result
  • 11. les result_files = pyalps.getResultFiles(prefix='parm1') print result_files ['./parm1.task2.out.xml', './parm1.task3.out.xml', './parm1. task1.out.xml'] カレントディレクトリ内からプレフィックスが'parm1' のファ イルを正規表現によるパターンマッチで探してファイル名を出 力します. result
  • 13. ALPS チュートリアル: Introduction to ALPS Python Loading simulation results Loading results 指定したファイル名のリストから,指定した物理量(複数可)を取 り出す data = pyalps.loadMeasurements(result_files,['|Magnetization| ','Magnetization^2']) data[0] # data の中身をみてみます [x=[0] y=[0.083339021352 +/- 0.00038780838614] props={'observable': '|Magnetization|', 'THERMALIZATION': 10000.0, 'J': -1.0, ...}, x=[0] y=[0.00816759554762 +/- 7.41432666026e-05] props={'observable': 'Magnetization^2', 'THERMALIZATION': 10000.0, 'J': -1.0, ...}] 10 / 15
  • 14. ALPS チュートリアル: Introduction to ALPS Python Loading simulation results データの構造 シミュレーション結果を表すクラス DataSet: class 名 x: plot 用のインデックス(最初はデフォルト値0 が入って いる) y: 物理量の平均値および標準誤差 props: 物理量名およびパラメータなどがPython の辞書形式で 入っている # 物理量の平均値と標準誤差を取り出してみます data[0][0].y array([0.083339021352 +/- 0.00038780838614], dtype=object) data[0][0].y.mean 0.08333902135203504 data[0][0].y.error 0.00038780838614 11 / 15
  • 15. ALPS チュートリアル: Introduction to ALPS Python Plotting results Plotting the results plotdata = pyalps.collectXY(data,'T','|Magnetization|') plotdata[0].x array([ 1.5, 2. , 2.5]) plotdata[0].y array([0.986621683313 +/- 5.59763992999e-05, 0.911889051072 +/- 0.000288443276697, 0.605402476752 +/- 0.0013356753695], dtype=object) plotdata[0].props {'observable': '|Magnetization|', '... data からpyalps.collectXY によりx 軸として'T', y 軸として 'jMagnetizationj' を取り出しています. 12 / 15
  • 16. ALPS チュートリアル: Introduction to ALPS Python Plotting results Plotting in Python using matplotlib pyalps.plot.plot(plotdata) # データをプロット. [matplotlib.lines.Line2D at 0x109425dd0] plt.xlim(0,3) # x 軸の範囲を設定 plt.ylim(0,1) # y 軸の範囲を設定 plt.title('Ising model') # 図のタイトル plt.savefig('ising.pdf') # ファイルへ出力 plt.show() # X11 などで画面に表示 1.0 0.8 0.6 0.4 0.2 0.0 0.5 1.0 1.5 2.0 2.5 3.0 T 0.0 |Magnetization| Ising model 13 / 15
  • 17. ALPS チュートリアル: Introduction to ALPS Python Plotting results Converting to other formats ほかのデータフォーマットに変換できます print pyalps.plot.convertToText(plotdata) print pyalps.plot.makeGnuplotPlot(plotdata) print pyalps.plot.makeGracePlot(plotdata) text 形式の出力例 # # X: T # Y: |Magnetization| 1.5 0.986496240665 +/- 2.82049446481e-05 2.0 0.912126100521 +/- 0.000350201474667 2.5 0.603552651599 +/- 0.00146115425377 14 / 15
  • 18. ALPS チュートリアル: Introduction to ALPS Python Evaluating data Example of evaluating data binder 比 m2 = jmj 2 の計算をしてみます binder = pyalps.DataSet() binder.props = pyalps.dict_intersect([d[0].props for d in data]) binder.x = [d[0].props['T'] for d in data] binder.y = [d[1].y[0]/(d[0].y[0]*d[0].y[0]) for d in data] print binder 空のデータセットを作ります 複数の辞書からkey:val ともに一致する項目を抜き出す データからx 軸となる'T' の数列をとりだす. d[0] からm2, d[1] からjmj を取り出してbinder 比を計算 15 / 15