1 FU チュートリア ル 第 17 回 CMSI 神戸ハンズオン 2014 年 8 月 18 日 - FU をベースにした実践的分子モデリングソフトプログラミング実 習 - 【プログラム】 1. 13:00-13:30 FU の概要 2. 13:30-16:30 wxPython プログラミング実習.

Slides:



Advertisements
Similar presentations
プラグイン作成講座 Control System Studio 3.0 Takashi Nakamoto
Advertisements

図示、可視化モジュール ~ pylab と numpy を ちょっと~. pylab とは? ・数学や統計的なグラフを生成するモ ジュール ・インストール pip や easy install からのインストールを推奨 →numpy モジュールなどの前提としている。 Anaconda の場合は標準.
Windows 環境から SAS を使う 長野 祐一郎 1. データのダウンロード 2. データの加工 3. プログラムの作成 4.TeraTerm によるプログラムの実行 5. 処理結果の確認 6.SAS のデータ処理を概観 今回の授業では、 Windows 環境で作成されたデータを.
InstallShieldLecture InstallShield でインストーラを作成する方法 ( 初級編 ) ソニーエンジニアリング 設計 3 部 1 課 齋藤佑輔.
1 Layout Utilities の紹介 Layout Utilities とは、お客様のプログラムに 流し込み印刷を簡単に組み込めるソフトウエア開発ツールです 無償 流し込み印刷の例.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
VO ツール解説(3) Specview 国立天文台・天文データセンター 小宮 悠. インストール ware/specview/download
T2V 技術 Web 製作ラボ 3/ hayashiLabo 2. T2V 技術 PC 操作 念のため・・・
P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title 年 2 月改訂.
BBT 大学 Ruby on Rails 開発環境セットアップマニュアル Mac 版 1.1 最終更新日: 2013/1/5.
Flash SWF ファイル書き換え PHP extension 2008 年 7 月 21 日 よや.
数学のかたち 数学解析の様々なツール GRAPSE編 Masashi Sanae.
OpenOffice.org 2.3の 紹介と今後の展開について
第5章 JMPのインストールと基本操作 廣野元久
BBT大学 Ruby on Rails開発環境セットアップマニュアル
応用コース:ワープロを活用する WORD2000 1回目 基礎コースの復習(第1章と付録) 2回目 文字の入力(第2章と第4章)
初年次セミナー 第13回 2次元グラフィックス(1).
PHP AV(Audio Visual) 拡張 クライアントサイド PHP アプリケーションPHP
実習1:コマンドシェルの使い方.
Cornell Spectrum Imagerの使い方
TeX で数式を書くための PowerPoint アドイン Ver (2011/06/26) Ver. 0.1 (2007/5/30)
FMO計算支援ソフトウェア”FU"の使い方
知能機械工学科 担当:長谷川晶一 TA:新・後藤・ナンバ
PHP AV(Audio Visual) 拡張 PHP asアプリケーション
デジタルコンテンツを 活用した授業作り ~プレゼン型のワンポイント教材作成 札幌新川高校 早苗雅史 3/Aug/2005.
Microsoft PowerPoint98 Netscape Communicator 4.06[ja]
オペレーティングシステムⅡ 第11回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト.
Java I 第2回 (4/18)
第3回 ファイルとフォルダ 伊藤 高廣 計算機リテラシーM 第3回 ファイルとフォルダ 伊藤 高廣
コンピュータリテラシー 第3回授業の復習 基本的なUNIXコマンド
デジタルポートフォリオ作成支援ツール PictFolio 使用マニュアル
プレゼンテーション用ソフトウェア Impress
PCの情報を得る - 「システム情報」 ①「スタート」→「すべてのプログラム」→「アクセサリ」→「システム ツール」→「システム情報」とクリックする。 ②左欄の項目を選択すると、右欄に情報が表示される。
TeX で数式を書くための PowerPoint アドイン Ver. 0.1 (2007/5/30)
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
アプレット (Applet)について.
AkaminePlayerについて 04a2049 中村まりえ.
e ポートフォリオ(Mahara)の使い方
プレゼンテーション用ソフトウェア Impress
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
F5 を押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
xxxxxx . yyy xxxxxx Linuxにおける情報管理 一般的なファイル UNIX における情報管理の単位 ファイルの種類を表す
TA 高田正法 B10 CPUを作る 2日目 SPIMのコンパイル TA 高田正法
Cygwin の install.
情報学部 プログラミング体験教室 (中級編)
スクリプト言語を用いたPHITSの連続実行
教師あり学習と ディープラーニング 金子邦彦.
プログラミング演習3 第2回 GUIの復習.
Titanium Studioを使った アプリ開発 Vol.1
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
九州大学キャンパスクラウド 利用法 情報ネットワーク特論 講義資料.
Office IME 2010 を使う.
図書館職員のための アプリケーション開発講習会
実行時情報に基づく OSカーネルのコンフィグ最小化
プログラミング演習3 第2回 GUIの復習.
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
デジタル画像とC言語.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
Java における 先進的リフレクション技術
第12回授業(12/18)の目標 ANOVA検定の実習 WEB を用いたANOVA検定と、授業で行った検定結果の正誤の確認方法(宿題)
統計ソフトウエアRの基礎.
高度プログラミング演習 (01).
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
TeX で数式を書くための PowerPoint アドイン Ver. 0.1 (2007/5/30)
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
TeX で数式を書くための PowerPoint アドイン Ver. 0.1 (2007/5/30)
pp-9. Python のモジュール、パッケージ
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
7-Zipのインストール (Windows 10)
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
Presentation transcript:

1 FU チュートリア ル 第 17 回 CMSI 神戸ハンズオン 2014 年 8 月 18 日 - FU をベースにした実践的分子モデリングソフトプログラミング実 習 - 【プログラム】 1. 13:00-13:30 FU の概要 2. 13:30-16:30 wxPython プログラミング実習 1) ウィンドウの作成 2) 分子構造データファイルの読み込み 3) OpenGL による分子模型の描画 4) マウス event の取得と分子模型の回転 (随時休憩を挟む) 3. 16:30-17:00 FU プログラムの改変・機能追加 4. 17:00-17:30 質疑・応答 神戸大学・北浦和夫

2 京コンピュータのような高性能コンピュータが利用可能になり、 巨大分子や膨大な数の小・中型の分子の量子化学計算が可能にな った。これに伴い、構造モデルの作成、入力データの作成や結果 のグラフ化を効率よく行える支援プログラムの必要性が高まって いる。確立した計算法によるルーチンワークの場合は別にして、 新しいことに挑戦する場合、既成の計算支援プログラムには必要 な機能が無い、あるいは、できるとしても、面倒な操作が必要な ことが多い。将来に向けて、大規模計算を支援する GUI プログラ ムをみんなで育てていくことが重要だと考える。各自・各グルー プが取得した計算ノウハウを計算支援プログラムの形で蓄積し相 互利用できるようになれば、計算化学の活用がいっそう促進され ると期待される。 計算化学者こそが先端的研究を通じて貴重なノウハウを取得し ているはずであるが、自ら GUI プログラムを作成するのは障壁が 高いと思われる。本講習会では、 FU をベースにして、各自が独自 の計算支援ソフトを開発する際の踏み台として使える分子モデリ ングソフトのプロトタイプを作成する。 なお、講師は python や GUI プログラミングの初心者であり、高 度な技術は伝授できないことをあらかじめお断りしておく(何よ りもすぐに研究に役立つことを優先する)。 本講習会の目的

3 FU の概要 FU は、 fumodel,fuplot の 2 つのプログラムからなる 1. fumodel: タンパク質の構造モデルと FMO 計算のた めの入力データの作成を支援するソフトウェア。 TINKER と GAMESS の実行機能もある。 2. fuplot : FMO 計算の結果をグラフにするソフトウ ェア。 (後述する開発版には、上記に加えて futools (コンソ ールアプリケーション)が含まれる) 3. これらの使い方については、 'fu user's guide.pdf' を 参照してください

4 FU の modules 1. python プログラム fuconst.py... global 定数 fuctrl.py... 入力処理ルーチン fulib.py... global 関数 fugraph.py... 棒グラフ class 、タイルグラフ class fumodel.py... fumodel の main プログラム fumole.py... fuMole class 、 Atom calss fupanel.py... 各種パネル類の class fuplot.py... fuplot の main プログラム fuview.py... OpenGL 描画ルーチン 2. Fortran プログラム fuflib.f, fmopdb.f, fmopdb-sub.f 3.script フォルダに拡張機能プログラムがある。 gamess-assist.py, tinker-optimize.py, rms-fit.py など

5 python による GUI プログラミングの開発 環境 1. python の各種 GUI ツールについては、 を参照されたい。 2. 本講習会では、 wxPython(2.8) を用いる。ドキュメントは、 を参照する。 3. 本講習会は、 wxPython の開発環境を含んだ FU を用て実習を行うが、本 格的にプログラミングを行うには次の site-pakages を install されたい (実習テ キスト参照)。 python2.7, numpy, scipy, wxPython, PyOpenGL, matplotlib, psutil 4. 公開版は Windows 版( 32bit mode) のみであるが、開発版 ( 後述)では Mac OSX 10.9 と Debian(64bit mode) でも動く。 5. 講師は、統合開発環境として Windows7 と Mac OSX 10.9 ともに、 Eclipse+PyDev を用いている。これは以下のサイトからダウンロード できる。 Pydev は Eclipse の ’Help'-'Install New Software' メニューで を install する。

6 実習要領 まず、 USB メモリ内の fu-tutorial-18Aug2014 フォルダにあ る mymodel.py ファイルと example フォルダを、事前準備 で作った ”c: ¥ fu-23Dec2013” フォルダにコピーする。 ついで、実習テキストに従って、 1) ウィンドウの作成 2) メニューの作成 3) 分子構造データファイル( PDB 形式)の読み込 みと OpenGL による分子模型の描画 4) マウス event の取得と分子模型の回転 の順番でコードを作成・追加し、分子モデリングソフトの プロトタイプを作りあげる。 * FU 開発版をご希望の方は、 fu-18Aug2014-dev.zip をコピ ーしてください。

7 プログラミングの準備 1. まず、 fu-23Dec2013 フォルダーにある fumodel.exe を起動する。本実習では fumodel のメインウィンドウは 不要なので、 PyCrust ウインドウから、 >>> fum.frame.Hide() と入力してメインウィンドウを隠す。 そして、 change directory コマンドで mymodel.py がある directry をカレントにしておく( pwd, ls, cd などのコマ ンドが使える)。 2. PyCrust は、 wxPython に含まれる python の shell であ る。ここから、 python の命令を実行して会話的にプロ グラムを開発・実行できる。

8 Step0: ウインドウの作成 1. エディタで mymodel.py を開いて、ソースコードを 読む。 2. PyCrust から mymodel.py を実行する。 3. wx Frame とは? ( サイト 3 ) にアクセスして、 'Frame' で検索し、 wx.Frame の項目の window style, event handling, methods の説明を読む。

9 Step1: Frame に Menu と Statusbar を付ける 1. エディタで mymodel.py を開いて、実習テキストの黒 太字のコードを追加し、 mymodel-1.py として保存する。 2. PyCrust から mymodel-1.py を実行する。 3. StatusBar について 4. Menu について ('Menu' で検索し、 wx.Menu の項目を読 む) menuitem1 = wx.Menu() menuitem2 = wx.Menu() menubar = wx.MenuBar() menubar.Append(menuitem1,"Files") menubar.Append(menuitem2,"Edit") self.SetMenuBar(menubar) のように書く。 5. 本講習では、メニュー項目の追加・削除などが簡単に できる fumodel の fuMenu class を用いる。 ( ソースコードを参照)

10 Step2: 分子構造データの読み込みと OpenGL での分子模型の描画コードの追 加 1. エディタで mymodel-1.py を開いて、実習テキストの 黒太字のコードを追加し、 mymodel-2.py として保存する。 2. PyCrust から mymodel-2.py を実行する。 3. File 名の取得について (wx.FileDialog の説明を読む ) wcard='pdb file(*.pdb;*.ent)|*.pdb;*.ent' dlg=wx.FileDialog(self,"Open file...", os.getcwd(),style=wx.OPEN,wildcard=wcard) if dlg.ShowModal() == wx.ID_OK: filename=dlg.GetPath() でファイラーからファイル名を取得できる( mymodel- 1.py の OpenFile method )。

11 Step2: 続き 4. glCanvas について( wx.glvcanvas.GLCanvas の説明 を読む) size=self.GetClientSize() w=size.width; h=size.height attribList = (wx.glcanvas.WX_GL_RGBA, # RGBA wx.glcanvas.WX_GL_DOUBLEBUFFER, # Double Buffered wx.glcanvas.WX_GL_DEPTH_SIZE,32) # 32 bit canvas=wx.glcanvas.GLCanvas(self,-1,pos=(-1,-1), size=(w,h),attribList=attribList) で Frame に glcanvas が配置できる。 カラーコード RGBA : [R,G,B,A] 。 それぞれ 0 - 1 ( Windows の RGB は 0 - 255 )。 A は透明度。

12 Step2: 続き 5. OpenGL による描画について ① fuview.py モジュールのソースコードを参照。 ② fuview には以下の図形の描画ルーチンがある。 ・ DrawAtom ・・・原子(円または球) ・ DrawBonds ・・・結合(線または棒) ・ DrawChainTube ・・・ペプチド鎖( spline fit に よる曲線の チューブ表示) ・ DrawArrow ・・・矢印 (FU の script ‘draw_pmi_vector.py’ を参照) ・ DrawSphere ・・・球 ・ DrawLabel,DrawText2,DrawText3 ・・・文字列 ③ それぞれ、事前に対応する method (原子を描く場合 は、 SetDrawAtomData または SetDrawAtomList 。前者は 描画データをオブジェクトで、後者は List で渡す場合に用 いる)を用いて描画データをセットしてから、 OnDraw method で描画する。

13 Step3: マウス event 、ウインドウサイズの 変更 event の取得と処理コードを追加す る 1. エディタで mymodel-2.py を開いて、実習テキストの 黒太字のコードを追加し、 mymodel-3.py として保存する。 2. PyCrust から mymodel-3.py を実行する。 3. マウス event の取得( wx.MouseEvent の説明を読む) self.canvas.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown) self.canvas.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp) self.canvas.Bind(wx.EVT_MOTION, self.OnMouseMove) self.canvas.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel) 4. ウインドウサイズ変更 event の取得 self.canvas.Bind(wx.EVT_SIZE,self.OnResize)

14 Step3: 続き 1. 実習テキスト 16 ページの、「⑥ ここで、 PyCrust から attribute を変更したり、 method を実行してみよう。」の 項への追加。 PyCrust から、 >>> for atom in mdl.mole.mol: >>> atom.color[3]=0.5 と入力し、透明度を default の 1.0 (不透明)から 0.5 に変更 する。 >>> mdl.DrawMol(True) で再描画すると半透明になる。 CPK モデルにするとよく 分かる。

15 Widgets の種類 ( 使い方はソースプログラムま たはサイト 1,2,3 を参照) gamess-assist.py(FU の script) のウィンドウ f upanel.py の TreeSelector_Frm class のウィンドウ wx.TreeCtrl wx.StaticText wx.TextCtrl wx.Button wx.ComboBox wx.SpinCtrl wx.StaticLine wx.CheckBox wx.RadioButton

16 Widgets の Panel への配置について 1. FU では、 widget の位置を明示的に指定して配置している。 example フ ォルダにある widget-1.py 参照。 (w,h)=self.GetClientSize() panel=wx.Panel(self,wx.ID_ANY,pos=(-1,-1),size=(w,h)) # put buttons on the panel button1=wx.Button(panel,wx.ID_ANY,"Button1",pos=(20,20),size=(100,40)) button2=wx.Button(panel,wx.ID_ANY,"Button2",pos=(40,60),size=(100,40)) wx.Panel と wx.Button についてはサイト 1 または 3 参照のこと。 2. 一般的には、 BoxSizer を用いて配置する。 example フォルダにある widget-2.py 参 照。 (w,h)=self.GetClientSize() panel=wx.Panel(self,wx.ID_ANY) #,pos=(-1,-1),size=(w,h)) # put buttons on the panel sizer=wx.BoxSizer(wx.VERTICAL) button1=wx.Button(panel,wx.ID_ANY,"Button1",size=(100,40)) button2=wx.Button(panel,wx.ID_ANY,"Button2",size=(100,40)) sizer.Add(button1,flag=wx.LEFT|wx.TOP,border=20) sizer.Add(button2,flag=wx.LEFT,border=40) panel.SetSizer(sizer) wx.BoxSizer についてはサイト 1 または 3 参照のこと。

17 FU の機能拡張: script について 1. 起動時設定 scripy’fumodelset.py' で script メニューに登 録して Menu から ptython プログラムを起動できる( FU の script フィルダにソースプログラムを格納しておく)。 ・初期設定 scrip 'fumodelset.py' の script menu の設定例 ## Add "Script" menu on main window. f # format: [ ['script file name','comment',checkable],...] fum.scriptmenu1=('Script', (# This line indicates begin of data! ('gamess_assist.py','gamess input asist script',False), ('tinker_optimize.py','tinker optimization',False), ('','',False), ('orientate_h-o-bond.py','orientate H-O bonds to make...

18 FU の機能拡張: script の例 1. gamess-assist.py または tinker-optimize.py gamess-assist.py は GAMESS-FMO の入力データを作成 して、実行する script 。 tinker-optimize.py は TINKER で構 造最適化を行う script 。いろんな MO や MM 計算支援のプロ グラムを作成する際にこれらの script ( python プログラ ム)が参考になるだろう。 2. 外部プログラムの実行( thread の生成)について fupanel.py モジュールの ExecProg_Frm class を使うと簡 便に外部 python プログラムを実行できる。使用例は、 gamess-assist.py スクリプトの ExecuteGAMESS method 、 または tinker-optimize.py スクリプトの ExecTinkerOptimize method を参照されたい。

19 1. 追加された機能 : cube data の描画が可能 2. 修正部分 1) fuview module の fuView class に DrawPolygons method を追加 2) fucube.py module を追加 3) Fortran module (fucubelib) を追加(ソースコードは src/f90 フォルダにある)。 Fortran module が import できない 場合は python コードが使われるので非常に遅く実用的では ない。 3.使い方については、「 draw-cube-data スクリプトの使 方.pdf 」 を参照のこと。 4. この機能を含めた次期バージョンは本年末ごろに公開予 定。 5. 現開発版は、未整理のためソースコードがぐちゃぐちゃ である が、それでよければ希望者に配布する。 FU 開発版 (fu-18Aug2014-dev) について

20 FU の Mac OSX10.9 での動作について 1. FU 開発版 (fu-18Aug2014-dev) は、一部の機能( "Edit"- "Copy bitmap") を除いて Mac OSX10.9 と Debian で動作する。 2. ただし、 stand-alone で動くパッケージは未作成なので、 python の開発環境を install しておく必要がある。 3. 開発環境を構築した Mac で、 shell から、 > python fumodel.py を実行する。または、 py2app を用いて Mac のアプリケ ーション fumodel.app を作成して実行する。 4. 開発環境の詳細については、開発版の "doc" フォルダ にあ る 「 MacOSX での動作環境. pdf」を参照されたい。

21 おわり に ・本講習会にご参加いただきましてありがとうござい ました。 ・ FU が何らかの形で皆様の研究のお役に立つことを願 っています。