> | E-CELL2 User's Manual |  | 4章 E-CELL2ルールファイルの作成 [ 1章 : 2章 : 3章 : 5章 ][ トップ ]

> INDEX

> 1 はじめに 2 スプレッドシートの記述 2.1 見出し語について 2.2 Systemパート FQEN,FQPN 2.3 Substanceパート Fix機能 2.4 Reactorパート 2.5 Includeパート 3 スプレッドシートの保存と変換 3.1 スプレッドシートの保存 3.2 erファイルへの変換

> 1 はじめに

> > 本章は、2章3節``E-CELL2の操作方法''を補完するためのリファレンスである。 この章の説明を読む前に、必ず2章3節を熟読されたい。 ルールファイルとは、目的のシミュレーションをE-CEll2で実行するための情報を 入力するデータファイルを指す。このファイルには、酵素なども含む全ての物質が記載され、これらの物質の 相互関係（反応）や、体積などの環境設定が記述されている。さらに、計算に用いる積分方式の指定も ルールファイルで行うことができる。ユーザーが定義できるファイルには、ルールファイルの他にReactorが あり、これは第3章で詳しく述べる。Reactorは反応速度式をもったプログラムで、ルールファイルの指定に より物質などの量をその式に従って変化させる。
> > ルールファイルには、
> > - ssファイル
> > - erファイル
> > - eriファイル
> > の3つがあり、ルールファイルの作成はスプレッドシートに書き込む方法か、erファイルを直接書く方法のどちらかで記述できる。
> > スプレッドシートによるルールファイルの作成には汎用のスプレッドシートソフトウェアを用いるため、視覚的に理解しやすく、比較的簡単に記述できることが利点である。一方、erファイルはテキストファイルとして記述されるため、マクロを使って簡単に操作することが可能である。これらはいずれも、最終的にE-CELL2 Systemに読み込まれる形であるeriファイルに変換される（スプレッドシートの場合は一度、erファイルに変換されてからeriファイルに変換される）。
> > ルールファイルはシミュレーションを行うモデル環境に関する定義を行うSystemパートと、物質に関する定義を行う Substanceパート、反応や相互作用に関する定義を行うReactorパート、他のルールファイル（erファイル）を読み込む際に用いるIncludeパートからなっている。これらはひとまとまりに記述する必要はなく、ユーザーがわかりやすい任意の順序で記述することができる。この章ではスプレッドシートを用いたルールファイルの作成について解説する（erファイルの仕様については、章末を参照）。

> 2 スプレッドシートの記述

> > ここではルールファイルの記述について実例を示しながら、見出し行と呼ばれるパートを区分する行と4つのパートを解説する。
> > なお、スプレッドシートの各カラムの記述の中に、
> > - タブ
> > - クォーテーション
> > - ダブルクォーテーション
> > を用いることは禁止されている。
> > これらの記号は項目を分ける際にスプレッドシートソフトウエアによって使用されるため、これらが項目中に存在すると適正なeriファイルが作成できない。

> 2.1 見出し語について

> > スプレッドシートでは、記述するパートごとに見出しをつける必要がある。これらの見出し語が入っている行をそれぞれの パートの「見出し行」とよび、パートが変わるごとに各パートの先頭行として記述されなければならない。図で、青く色付けされた行が見出し行である。見出し語は、大文字と小文字の区別をせず、見出し語がどの順序で並んでいてもかまわない。また、各見出し行の最後の列にはmemoという見出し語をつけたすことができ、memoの列に書かれた情報はeriファイルに出力されることはない。

> 図1 見出し語
> 2.2 Systemパート

> > シミュレーションを行うには、シミュレーションシステムの構造と環境の設定 をしなければならない。それを行うのがSystemパートである。シミュレーショ ンが行われる場所（`System`）やその体積の定義をSystemパートで行う。
> > 見出し語は下表の通りである。

> 見出し語 | 意味 | 省略時のデフォルト
> Type | [System] | 省略不可
> Class | シミュレーションを行う`System`の種類を指定 | 省略不可
> Path | `System`の階層構造の中でどの場所に位置するかを指定 | 省略不可
> ID | 指定した`System`のID | 省略不可
> Name | 指定した`System`の名称 | ID
> Inside | 膜の内側を指定(膜構造を表す`System`でのみ使用) | 入力が必要な`System`については省略不可
> Outside | 膜の外側を指定(膜構造を表す`System`でのみ使用) | 入力が必要な`System`については省略不可
> Volumeindex | 体積(Volume)を表す`Reactor`を指定 | 体積(Volume)が必要な`System`では省略不可

> 表4-1 Systemパート見出し語一覧
> 図2 Systemパート [Type列、Class列]

> > Type列には[System]と記入する。Class列では、シミュレーション中で使用する`System`（場所）の種類（Class）を定義する。Cell,Environment,Cytoplasm,MembraneをClass としてここで定義することができる。これら全てのClassは、`Substance` や `Reactor`、体積を扱うことができるが、EnvironmentとMembraneについては下位に `System` を作ることができない。各Classの意味は以下の通りである。

> Class | Substance | Reactor | 体積 | 下位のSystem
> Cell | ○ | ○ | ○ | ○
> Environment | ○ | ○ | ○ | ×
> Cytoplasm | ○ | ○ | ○ | ○
> Membrane | ○ | ○ | ○ | ×

> 表4-2 Classの種類
> 図3 Systemパート [path列]

> > 定義した`System`（場所）において、その`System`が階層構造の どこにあるかを Path列で指定する。つまり、`System`の住所のようなものである。 PathはE-CELL2 Systemに組み込まれた最上位の`System`で ある、RootSystem（ / ）で始まり、 それ以下はユーザによって定義される。
> > Pathは「/system1/system2/system3」のように「/」で区切って表記され、IDの上位`System` までを全て書き込む。なお、このPathの記載は省略することができない。また、大文字と小文字は区別されるので 注意すること。

> FQEN、FQPN

> > FQEN(FullyQualifiedEntryName)は`System`や、`Substance`、`Reactor`などの階層構造における位置を示すための記述法で、「/system0/system1/system2:ID」のようにPathとIDを「:」を用いて組み合わせる。例えば、Pathが「/CELL/CYTOPLASM」、IDが「ATP」である場合、FQENは「/CELL/CYTOPLASM:ATP」となる。
> > また、FQENでは`System`や、`Substance`、`Reactor`の区別がつかない。このような情報を含んだ表現がFQPNである。FQPNは、[Type]：[FQEN]で表す。先ほどのATPを用いた例では、「Substance:/CELL/CYTOPLASM:ATP」と表されることになる。これらは全て大文字と小文字が区別されるので注意すること。

> 図4 Systemパート [ID列、Name列]

> > IDは、E-CELL2シミュレーションソフトウェア内の処理番号に相当する。 このため、一つの`System`内に同一のIDが存在することはできない。同じIDをいる場合、Warningメッセージが表示されて先に定義されたIDが採用される。また、IDは大文字、小文字を区別するので注意しなければならない。
> > このID列には定義した`System`（場所）のIDを,Nameには、定義した`System`の名称を記入する。

> 図5 Systemパート [Inside列、Outside列]

> > inside/outside列は、その行で定義しているClass（`System`の種類）がMembrane（膜）であるとき、膜の内側もしくは外側にある`System`を示すのに用いる。
> > 現在の E-CELL2 Systemではこの情報を用いた処理を行っていないが、今後、アクセスできる `System` を限定したりする処理を加える予定である。例では、MEMBRANEという`System`がCYTOPLASMとENVIRONMENTに挟まれた膜であることを示している。

> 図6 Systemパート [VolumeIndex列]

> > E-CELL2 System では、`System`の体積を `Reactor`を用いて表現する。`System`の VolumenIndex として `Reactor`の FQEN を指定すると、その `Reactor`の activity の値が体積 (単位:[L])として解釈される。`System` の VolumenIndex を指定した場合、その FQEN に相当する `Reactor`を Reactorパートで定義しなければならない。 `System`は体積を指定しない場合もありうる。 例えば、上図のように Membrane は体積を定義していない。ただし、`Reactor`が物質の濃度を用いて計算を行なう場合や、Substance パートで物質の濃度(Conc)を指定する場合、濃度 を分子数に変換する際に体積の値が必要である。これらの場合には その物質が存在している `System`の VolumeIndex は必ず指定する必要がある。

> 2.3 Substanceパート

> > シミュレーションに関わる全ての物質（`Substance`)は、ルールファイル内で定義される必要がある。それらの物質の定義を記述するのがSubstanceパートである。
> > Substanceパートの見出し語は下表の通りである。

> 見出し語 | 意味 | 省略時のデフォルト
> Type | [Substance] | 省略不可
> Class | 通常は[Substance]。省略してもよい。 | 省略不可
> Path | `Substance`のある場所(`System`) | 省略不可
> ID | 指定した`Substance`のID | 省略不可
> Name | 指定した`Substance`の名称 | ID
> Qty | `Substance`の個数(分子数)の初期値(Concとは両立しない) | 0
> Conc | `Substance`の濃度M(mol/l)の初期値(Qtyとは両立しない) | Qty
> Arg_tag | `Substance`の小数部分の累積方法を指定したい場合 [Accumulator] | 省略可
> Arg_coeff | `Substance`の小数部分の累積方法を選択 | Arg_tag がある場合 省略不可

> 表4-3 Substanceパート見出し語一覧
> 図7 Substanceパート [Type列、Class列]

> > Type列には「Substance」と入れる。 Class列では、各行に入っているものの型を記入する。Substanceパートでは、Class（種類）として指定できるのは今のところ`Substance` のみとなっている。従って、Class列にはSubstanceと入力する。ここを省略すると、Substanceが自動的に入力される。

> 図8 Substanceパート [path列]

> > Path列では、物質が存在する場所（`System`）を指定する。Pathの記述法はSystemパートのPath列と同様に「/system1/system2/system3」のように「/」で区切って入力する。なお、同じID,Nameを持つ物質でも、異なる `System` を指定していればE-CELL2 Systemでは違う `Substance` として認識されるため、注意が必要である。大文字と小文字は区別されるので注意すること。

> 図9 Substanceパート [ID列、Name列]

> > `Substance`のIDとNameを記入する。 IDでは、大文字と小文字の区別が行われるので注意が必要である。

> 図10 Substanceパート [QTY列]

> > Qtyは、ユーザーが定義した体積における物質の個数（分子数）の初期値を表している。Concとは両立せず、両方記述されている場合はWarningメッセージが出てQtyの値が採用される。また、どちらの数値も入力されていない時は、Qty=0として計算される。また、そのQtyの値を反応によって増減させる必要がないとき、Fix機能によって値を固定することができる（Fix機能については後の項を参照）。

> 図11 Substanceパート [Conc列]

> > ConcにはM (mol/l)を単位とした物質の濃度を入力する。erファイルをeriファイルに変換する際に、Systemパートで指定した体積を表す `Reactor`のint_actで指定した体積と E-CELL2 System内のアボガドロ定数（6.0221367e23）で分子数に変換される。Qtyとは両立せず、Concに何も入っていない場合は、Qtyの値がeriファイルに出力される。また、Conc値を記載したにも関わらず、Systemパートで物質が存在するシステムの体積の定義（VolumeIndex）がない場合はVolume=0で処理されるので注意が必要である。ここでも、Fix機能を使って値を固定することが可能である。

> Fix機能
> 図12 Fix機能

> > Fix機能とは、指定された Substance行の物質を `Reactor` による増減の影響を受けないようにして、入力したQtyまたはConcの値を保つ機能である。Fix 指定するには、維持したい値が記載してあるQty、または、Concのすぐ下の行に「Fix」と記入する。

> 図13 Substanceパート [Arg_tag列]

> > Accumulatorとは、小数部分の累積方法を表現したものである。 Arg_tag に「Accumulator」と記入することにより、Substanceの小数部分の 累積方法を指定することが可能になる。累積方法の具体的な選択肢は次の Arg_coeff の節で挙げる。ただし、各物質ごとに異なる累積方法を指定 する場合、計算精度は未保証である。

> 図14 Substanceパート [Arg_coeff列]

> > Arg_coeff では、 Substance の累積方法をカプセル化 した Accumulator クラスを選択して記入する。以下に、その選択肢 を示す。

> Accumulator クラス | 小数部分の累積方法
> ReserveAccumulator | 整数部分と小数部分を別々に記憶する。 値を使う場合には、整数部分だけが使われる。 値を更新する場合には、変化量の小数部分を積み立て、 積み立て量が1.0以上になると、整数部に繰り上げる。 例を示す。
> 変化量 | 整数部分 | 小数部分
> 初期値 | 0 | 0
> 0.8 | 0 | 0.8
> 0.8 | 1 | 0.6
> 0.8 | 2 | 0.4
> SimpleAccumulator | 実数をそのままの値で計算する。 精度はi386版で10進18桁、alpha版で10進15桁である。
> RoundDownAccumulator | 小数点以下を切り捨て計算する。
> RoundOffAccmulator | 小数点第一位を四捨五入して計算する。
> MonteCarloAccumulator | 整数部分と小数部分を分け、 小数部分を確率として乱数で切り上げまたは切り捨てる。 例えば、変化量が3.4ならば、0.6の確率で3変化し、 0.4の確率で4変化する。

> 2.4 Reactorパート

> > Substanceパートで定義した物質を用いた反応や、物質間相互作用、さらに体積などの環境変数を扱う式の指定を行う部分がReactorパートである。Reacterパートでは、反応速度式(Reacter)を指定し、反応に関わる `Substance` を指定して、それらの化学量論的記述を行う。
> > Reacter行の見出し語は下表の通りである。

> 見出し語 | 意味 | 省略時のデフォルト
> Type | [Reactor] | 省略不可
> Class | `Reactor`(反応速度式）を指定 | 省略不可
> Path | 反応が起こる場所（`System`） | 省略不可
> ID | 反応のID | 省略不可
> Name | 反応の名称 | ID
> init_act | ReactorActivityの初期値 | 特別な場合（VolumeIndex に指定した場合など）を除き省略可
> S_ID | 反応基質（Substrate）のID | 省略不可
> S_Path | Substrateの存在している場所（`System`） | Path
> S_Coeff | Substrateの化学量論的係数 | 1
> P_ID | 反応生成物（Product)のID | 省略不可
> P_Path | Productの存在している場所（`System`) | Path
> P_Coeff | Productの化学量論的係数 | 1
> C_ID | 反応触媒（Catalyst)のID | 省略不可
> C_Path | Catalystの存在する場所（`System`) | Path
> arg_tag | `Reactor`の定数名（反応速度式が使用する定数名） | 入力が必要な`Reactor`については省略不可
> arg_coeff | 定数名に対応する定数の値。 | arg_tagを入力した`Reactor`については省略不可
> E_ID | 反応に影響を与える物質（Effector) | 指定する必要がなければ省略可
> E_Path | Effectorのある場所（`System`) | Path
> E_Coeff | Effectroのとる係数 （内容は`Reactor`ごとに異なる） | 1

> 表4-4 Reactorパート見出し語一覧
> 図15 Reactorパート [Type列、Class列]

> > `Reactor`の種類（Class: 反応速度式）はclass列で指定する。この列では、指定したい`Reactor`を「○○Reactor」という形で記入する。この例では,MichaelisMenten式に基づいた反応速度式を用いているため、「Michaelis○○Reactor」が使われている。例中の下図は、体積をもつ`Reactor`を宣言している。その他の標準添付されている`Reactor`がどの反応速度式を表しているかは、巻末のスペックシートに記載してある。また、大文字と小文字は区別されるので区別する。反応、または相互作用のIDをID列に記入する。大文字、小文字は区別されるので注意すること。

> 図16 Reactorパート [path列]

> > Path列では反応や相互作用の起こる`System`（場所）のPathを入力する。Pathの入力法はSystemパートや、SubstanceパートのPath列と同じである。この例では、「/CELL/CYTOPLASM」で反応が起こっていることがわかる。大文字と小文字は区別されるので注意すること。

> 図17 Reactorパート [ID列、Name列]

> > Name列には反応または相互作用の名称を記入する。ここになにも記載されていない場合は、IDに記入されている情報がeriファイルに出力される。体積をもつ`Reactor`（下2段）については、それが体積であることが分かるようなNameをつけておくことが望ましい（図を参照）。 また、psterior Reactor を指定する場合は ID を「!」で始まるものにする 必要がある（詳しくは第3章を参照）。ただし FluxReactor 系など、通常の Reactor の ID を「!」で始まるものにした場合、その動作は無保証であるため 注意が必要である。

> 図18 Reactorパート [init_act列]

> > シミュレーションが１ステップ進むごとに計算される Reactor の activity は、 シミュレーション開始時に Reactor の activity が必要な場合は 初期activity を設定しなければならない。 init_act列は、その値を入力するために用意されている。SystemパートでVolumeIndexに記載した`Reactor`を定義する場合、Reactorパートでinit_act列の値を必ず入力しなければならない。このinit_actはE-CELL2 Systemが計算を開始する以前に`Reactor`のactivityを参照しなければならないときに初期値として入力される。この値がない場合は、シミュレーションを開始した一番最初のstepで体積を用いる全計算にVolume=0が代入され、結果としてシミュレーションができない。例では`System`の体積を示す`Reactor`の ConstantPameterReactor でその体積の初期値を定義している。

> 図19 Reactorパート [S_ID列、S_path列、S_Coeff列]

> > S_IDではSubstrate（基質）のIDをS_PathではSubstrateが存在している`System`（場所）のPathを指定する。この反応では、CYTOPLASMに存在しているATPとGlcがSubstrateとして反応に関わっている。S_Coeffには、Substrateの化学量論的係数を記入する。

> 図20 Reactorパート [P_ID列、P_path列、P_Coeff列]

> > P_IDにはProduct（生成物）となる物質のIDを、P_PathではProductが存在している`System`（場所）のPathを指定する。ここでは、ProductとなるADPとG6PがCYTOPLASMに存在していることを示している。P_Coeffには、Productの化学量論的係数を入力する。

> 図21 Reactorパート [C_ID列、C_path列]

> > C_IDには反応において実際にSubstarateやProductに対してCatalyst(触媒)となって作用するもののIDを記入する。C_PathではCatalystの存在する`System`（場所）のPathを指定する。通常、このCatalystの ID, Path は、特に理由がない限りは反応の ID, Path と同一になる。

> 図22 Reactorパート [Arg_tag列、Arg_coeff列]

> > arg_tag列では`Reactor`で使用する定数名、つまり反応速度式が使用する定数を入力する。この定数名は、`Reactor`ごとに決まっているものである、上の図、下から 2 つめのReactor例では、MichaelisUniUniReactorを反応速度式としているので、arg_tagは「KcF,KmS」になっている（標準添付されている`Reactor`がどのような定数を必要としているかは巻末のスペックシートを参照）。複数ある場合は、次の行に記述し、この場合、追加した行には他の項目について記述する必要はない（図を参照）。また、この列も大文字、小文字が区別されるので注意すること。体積を表すために用いる標準添付のConstantParameterReactor(体積計算用の`Reactor`）の場合は、ここに「Value」と記入する（例中、下の図）。
> > arg_tagのすぐとなりにarg_coeffを記入する。arg_coeffには、arg_tagに対応する定数の値が入り、さきほどの例ではMichaelisUniUniReactorが使用する「KcF,KmS」の値が入っている。体積を表すために用いる標準添付のConstantParameterReactorの場合は、ここに`System`の体積を記入する（図参照）。E-CELL2 Systemでは 最初の1ステップ（１計算時間幅）のみ init_act に記載された体積で計算され、以後のステップは`Reactor`の示す値で計算される（ConstantParameterReactorではValueの値）。

> > このほか、 SubstrateやProductのように`Reactor`による量的な増減は受けないが、反応速度に関わってこれに影響を与えるものをEffectorとして定義することができる。E_IDにはEffectorとして指定したい`Substance`のIDを、E_PathではそのEffectorの存在する`System`（場所）をPathで指定する。E_CoeffはEffectorの係数を表すが、実際に入力されるべき内容は`Reactor`ごとに自由に決められるので、その`Reactor`の仕様書を参照すること。

> 2.5 Includeパート
> 図23 Includeパート

> > スプレッドシートにIncludeパートを記述することで、指定したerファイルを挿入することが可能である。 このIncludeパートは、他のパート同様、ルールファイル中のどの場所にいくつあってもかまわない。 いくつかのルールファイルに共通した行などを別のerファイルとして記述し、出力されるeriファイル （E-CELL2に読み込まれる最終形式のデータファイル）にその記述を組み込みたい 場合などに有用である。シミュレーションに必要な全ての情報をスプレッドシートに書き込んであり、 他のファイルの読み込みを必要としない場合は、このIncludeパートの記述は省略する。 Includeパートでその別ファイルを指定すれば、その情報はeriファイルに組み込まれて出力される。 Includeパートの見出し語はType,Filenameである。Typeには[Include]と記入し、Filenameには 読み込みたいファイル名を指定する。例では``sample.er''というファイルを読み込んでいる。

> 3 スプレッドシートの保存と変換
> 3.1 スプレッドシートの保存

> > E-CELL2 Systemに読み込まれるルールファイルフォーマットであるeriファイルに変換するには、 変換ソフトウェアが認識することのできる形であるTAB区切りのテキストファイルで保存する必要がある。このようなタブ区切りの テキストを作成する場合は、EXCEL等のソフトウェアを使用するのが便利である。タブ区切りテキストのサンプルは、``standard\SAMPLE'' 以下にある、``.txt''拡張子のファイルを参照されたい。標準的なインストールでは、このディレクトリは``C:\E-CELL2\standard\SAMPLE'' になり、Cygwin上では``/cygdrive/c/E-CELL2/standard/SAMPLE''として認識される。 ルールファイル作成支援のためのソフトウェアは、``tools\rule''というディレクトリに格納されている。``C:\E-CELL2\tools\rule''が 標準的なインストールを行った場合のディレクトリ・パスで、Cygwin上では``/cygdrive/c/E-CELL2/tools/rule''として認識される。 Perlを利用することになるので、Cygwin上での作業を前提としている。

> 3.2 erファイルへの変換

> > E-CELL2 Systemでシミュレーションを行うには、ss2er.plというスプレッドシートをerファイルへ変換するソフトウェアと、erファイルを実行形式のeriファイルへ変換するer2eriという変換ソフトウェアの2つを利用して、 eriファイルに変換する。スプレッドシートはss2erが解析可能なTAB区切りのテキストファイルで保存する。ここでは、保存するディレクトリを、デフォルトの設定でインストールした場合の``C:\E-CELL2\tools\rule''を想定している。 このディレクトリは、Cygwin上では``/cygdrive/c/E-CELL2/tools/rule''となる。保存したら、``cd''コマンドを使用してこのディレクトリに移動し、以下の操作を実行する。 勿論、erファイルをエディタ等で直接記述しても良いわけだが、上級者向けの内容であるので、本マニュアル中では詳述しない。erファイルを直接記述したい場合は、各自``sample.er''等の例を解読されたい。
> > `% ./ss2er.pl < filename.txt > filename.er`
> > と入力する。この操作により、スプレッドシートファイルからルールファイル(拡張子は``.er''にすること)が生成される。
> > erファイルを直接書く場合は上述の作業は省略される。次に、erファイルをE-CELL2 Systemが読み込む最終形式のファイルであるeriファイルに、 er2eri.shを用いて変換する。
> > 変換は、
> > `% ./er2eri.sh filename
> > と入力することによって実行される。このとき、拡張子``.er''を除いて指定することに注意しなければならない。 このバッチファイルを実行すると、拡張子``.eri''を持つルールインターメディエイトファイルが生成する。 GUI版では、ControlPanelの[File]メニューから[Load Rule]を選択することで、``.eri''ファイルを読み込む ためのファイル選択ウィンドウが開く。E-CELL2を起動するには、本章2.1節を参照されたい。
> > `

> | E-CELL2 User's Manual Last Update $Date: 2002/07/16 16:45:42 $. Copyright: Keio University and Mitsui Knowledge Industry Co., Ltd. 2002 |  | 4章 E-CELL2ルールファイルの作成 [ 1章 : 2章 : 3章 : 5章 ][ トップ ]