Difference between revisions of "Tutorials:Code-04 Vistrails Package simple/ja"

From ALPS
Jump to: navigation, search
(Created page with "{{Languages|Tutorials:Code-04_Vistrails_Package_simple}} <!--In this tutorial we will use our Ising example to illustrate how one can create a Vistrails package. Go to your vis…")
 
m (Text replace - "http://alps.comp-phys.org/static/tutorials2.1.0" to "http://alps.comp-phys.org/static/tutorials2.2.0")
 
(3 intermediate revisions by 2 users not shown)
Line 7: Line 7:
 
  cd $HOME/.vistrails/userpackages
 
  cd $HOME/.vistrails/userpackages
  
<!--and copy the contents of the directory [http://alps.comp-phys.org/static/tutorials2.0.0/code-04-vistrails-simple-package/ising-package ising-package] into it. Then add your python.py file from the [http://alps.comp-phys.org/mediawiki/index.php/Tutorials:Code-01_Python Code-01 Tutorial] tutorial.-->
+
こちら[http://alps.comp-phys.org/static/tutorials2.2.0/code-04-vistrails-simple-package/ising-package ising-package]の中身をここにコピーしてください。そして、python.pyファイルを追加してください[http://alps.comp-phys.org/mediawiki/index.php/Tutorials:Code-01_Python Code-01 Tutorial]。
こちら[http://alps.comp-phys.org/static/tutorials2.0.0/code-04-vistrails-simple-package/ising-package ising-package]の中身をここにコピーしてください。そして、python.pyファイルを追加してください[http://alps.comp-phys.org/mediawiki/index.php/Tutorials:Code-01_Python Code-01 Tutorial]。
 
 
 
<!--By doing so we have derived "IsingSimulation" from a Vistrails Module class and specified the input ports for our input parameters as well the output port for our result file.
 
If you now open your Vistrails application, choose "Preferences" from the Menu and go to "Module Packages". You will find a Package called "isingpackage", which you can enable. You can now start incorporating your own Module in a Vistrail! See [http://alps.comp-phys.org/static/tutorials2.0.0/code-04-vistrails-simple-package/simple_package.vt simple_package.vt] as an example.-->
 
  
 +
Vistrailsモジュールから"IsingSimulation"を選択し、入出力ファイルの設定をおこないます。Vistrailsアプリケーションを実行し"Preferences"を選択し、"Module Packages"に行ってください。"singpackage"と呼ばれるパッケージを探してください。また、Vistrailに独自のモジュールを組み込んで使用することが可能です。[http://alps.comp-phys.org/static/tutorials2.2.0/code-04-vistrails-simple-package/simple_package.vt simple_package.vt]を例として参照してください。
  
 
== 詳細 ==
 
== 詳細 ==
Line 39: Line 36:
 
=== モジュールの登録 ===
 
=== モジュールの登録 ===
  
<!--We will now go through the definition of the IsingSimulation module.-->
 
 
イジングシミュレーションモジュールについて説明します。
 
イジングシミュレーションモジュールについて説明します。
  
Line 47: Line 43:
 
  basic = core.modules.basic_modules
 
  basic = core.modules.basic_modules
  
<!--These lines import some of the relevant packages from Vistrails. In particular, we import all the basic modules of Vistrails, such as Integer, List, etc., into the namespace basic. These can be used to define input and output ports of our custom module.-->
 
 
これらの行はVistrailsからいくつかの必要なパッケージをインポートしています。特に、名前空間にInteger,ListといったVistrailsの基本的なモジュールすべてをインポートしています。ユーザが入力、出力ポートを定義するのに用いられます。
 
これらの行はVistrailsからいくつかの必要なパッケージをインポートしています。特に、名前空間にInteger,ListといったVistrailsの基本的なモジュールすべてをインポートしています。ユーザが入力、出力ポートを定義するのに用いられます。
  
<!--All Vistrails modules must, directly or indirectly, be derived from the class Module. In our example, we derive directly from Module:
 
class IsingSimulation(Module):-->
 
 
すべてのVistrailsモジュールは直接的、間接的にクラスモジュールから派生されます。次の例では、IsingSimulationクラスから直接派生されます。
 
すべてのVistrailsモジュールは直接的、間接的にクラスモジュールから派生されます。次の例では、IsingSimulationクラスから直接派生されます。
 
<!--Also, all modules must contain
 
* a method compute(self), which is called on execution of the workflow,
 
* a definition of input and output ports in the static variables _input_ports and _output_ports. These should be lists of tuples with the first element being the name of the port and the second element being a list that defines properties of the port, such as types.-->
 
  
 
* ワークフローの実行時に呼び出される自動計算メソッド
 
* ワークフローの実行時に呼び出される自動計算メソッド
 
* 静的変数_input_ports,_output_portsでの入力、出力ポートの定義、
 
* 静的変数_input_ports,_output_portsでの入力、出力ポートの定義、
  
<!--Below is the definition of the compute() method for our example:-->
 
 
次に示すのが、compute()メソッドの定義です。
 
次に示すのが、compute()メソッドの定義です。
 +
 
     def compute(self):  
 
     def compute(self):  
 
         result_file = self.interpreter.filePool.create_file(suffix='.h5')
 
         result_file = self.interpreter.filePool.create_file(suffix='.h5')
Line 74: Line 63:
 
         self.setResult('result_file', result_file)   
 
         self.setResult('result_file', result_file)   
 
   
 
   
<!--In our example, the input ports should define the system size L, the inverse temperature beta, and the number of sweeps N. The output is an HDF5 file containing the results of the simulation. In this example, we only set the type of the output port, so that the second element in the tuples is a list of length one containing the name of a Vistrails module.-->
 
 
この例では、入力ポートはシステムサイズL、逆温度ベータ、掃引回数Nを定義しています。出力はHDF5ファイルで、計算結果を格納しています。次の例では、出力ポートのタイプのみを設定しています。
 
この例では、入力ポートはシステムサイズL、逆温度ベータ、掃引回数Nを定義しています。出力はHDF5ファイルで、計算結果を格納しています。次の例では、出力ポートのタイプのみを設定しています。
 +
 
     _input_ports = [('L', [basic.Integer]),
 
     _input_ports = [('L', [basic.Integer]),
 
                     ('beta', [basic.Float]), ('N', [basic.Integer])]
 
                     ('beta', [basic.Float]), ('N', [basic.Integer])]
Line 81: Line 70:
  
  
<!--To access the input and output ports from the module, the getInputFromPort() and setResult() methods of Module should be used. Note that while the ports have to be declared with a type that has to be a valid Module class, due to weak typing in Python any type can be stored into or read from ports.-->
 
 
モジュールから入力、出力ポートにアクセスするために、モジュールのgetInputFromPort()、setResult()メソッドが使用されます。
 
モジュールから入力、出力ポートにアクセスするために、モジュールのgetInputFromPort()、setResult()メソッドが使用されます。
  

Latest revision as of 23:11, 28 September 2013

このチュートリアルでは、どのように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]