Tutorials:Code-04 Vistrails Package simple/ja

From ALPS
Revision as of 07:41, 16 March 2012 by Kota (talk | contribs)

Jump to: navigation, search

このチュートリアルでは、どのようにVistrailsパッケージを生成するのか、イジングモデルを用いて説明します。vistrailsのuserpackagesディレクトリに移動してください。

cd $HOME/.vistrails/userpackages

こちらising-packageの中身をここにコピーしてください。そして、python.pyファイルを追加してくださいCode-01 Tutorial

Vistrailsモジュールから"IsingSimulation"を選択し、入出力ファイルの設定をおこないます。Vistrailsアプリケーションを実行し"Preferences"を選択し、"Module Packages"に行ってください。"singpackage"と呼ばれるパッケージを探してください。また、Vistrailに独自のモジュールを組み込んで使用することが可能です。simple_package.vtを例として参照してください。

詳細

  • __init__.pyはパッケージの宣言(名前、識別子、バージョン)と依存関係の定義をおこないます。
  • init.pyはパッケージを初期化します。モジュールの登録などをおこないます。

2つの定義ファイルを持つために、パッケージはリロードすることが可能です。もしすべての初期化が__init__.pyでおこなわれるのであれば、最初のインスタンス化の後、パッケージはリロードできなくなります。

パッケージの宣言

パッケージは__init_.pyファイルで宣言されます。宣言は、すべて文字列で、識別子、バージョン、および名前が含まれています。package_dependencies()は依存関係を決める識別名のリストを返します。

identifier = 'org.comp-phys.ising'
version = '2.0.0'
name = 'ALPS Ising tutorial'

def package_dependencies():
  return []

モジュールの登録

イジングシミュレーションモジュールについて説明します。

from core.modules.vistrails_module import Module
import core.modules.basic_modules
import ising
basic = core.modules.basic_modules

これらの行はVistrailsからいくつかの必要なパッケージをインポートしています。特に、名前空間にInteger,ListといったVistrailsの基本的なモジュールすべてをインポートしています。ユーザが入力、出力ポートを定義するのに用いられます。

すべてのVistrailsモジュールは直接的、間接的にクラスモジュールから派生されます。次の例では、IsingSimulationクラスから直接派生されます。


  • ワークフローの実行時に呼び出される自動計算メソッド
  • 静的変数_input_ports,_output_portsでの入力、出力ポートの定義、

次に示すのが、compute()メソッドの定義です。

   def compute(self): 
       result_file = self.interpreter.filePool.create_file(suffix='.h5')
       L = self.getInputFromPort('L')
       beta = self.getInputFromPort('beta')
       N = self.getInputFromPort('N')
       sim = ising.Simulation(beta,L)
       sim.run(N/2,N)
       sim.save(result_file.name)
       
       self.setResult('result_file', result_file)  

この例では、入力ポートはシステムサイズL、逆温度ベータ、掃引回数Nを定義しています。出力はHDF5ファイルで、計算結果を格納しています。次の例では、出力ポートのタイプのみを設定しています。

   _input_ports = [('L', [basic.Integer]),
                    ('beta', [basic.Float]), ('N', [basic.Integer])]
   _output_ports = [('result_file', [basic.File])] 


モジュールから入力、出力ポートにアクセスするために、モジュールのgetInputFromPort()、setResult()メソッドが使用されます。

モジュールの登録

Vistrailsで最も簡単なモジュール登録方法は、init.pyファイルのグローバル変数_modulesに次のように指定してください。

_modules = [IsingSimulation]