1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PURE system simulatorをOctaveで動かす方法

Last updated at Posted at 2020-03-24

#目的
PURE system simulator1$^{,}$2$^{,}$3は、タンパク質合成反応に関わる241分子種が示す濃度変化を、実験結果と整合性がある形で観測できるシミュレーターである。そんな素晴らしいPURE system simulatorであるが、現在のところ、Matlab(有料)でしか動かない仕様である。Matlabのライセンスは高い。ちょっとシミュレーションに興味があるが、Matlabを買う程ではないなという人はたくさんいる(はず)。そんな人たちのために、MatlabではなくフリーソフトウェアのOctaveでPURE system simulatorを動かす方法をここに載せておきます。4

#Octaveでのシミュレーション結果
Matsuura et al., (2017), PNASのFig. 2b2と同じ結果が得られました。
untitled.gif

#やり方

  1. Octaveをインストール
  2. PURE system simulatorに置かれているサンプルプログラムSimulate_fMGG_synthesis.zipを落としてきて適当なディレクトリに入れる。
  3. fMGG_synthesis_Sample.m中の下記の行を変更
  4. (Option)fMGG_synthesis_Sample.m中のグラフィックパラメータを変更。サンプルプログラムはプロットのデフォルト表示範囲が論文のFig. 2bと同じになっていない。論文と同じグラフを描きたい場合は、axis([10^(-4) 10^3 10^(-10) 10^5]);axis([10^(-4) 10^3 10^(-6) 10^4]);に変更する必要がある。
  5. 関数ファイルfMGG_synthesis.m中の下記の行を変更

###fMGG_synthesis_Sample.m内の変更部位
####27,28行目 変更前

27: non_negative = 1:length(initial_values);
28: ode_opt = odeset('NonNegative', non_negative,'RelTol', 1e-3, 'AbsTol',1e-9);

####27,28行目 変更後

lsode_options('relative tolerance', 1e-3);
lsode_options('absolute tolerance',1e-9);
lsode_options('integration method', 'stiff');

####33行目 変更前

33: [t x] = ode15s(model_h, t,initial_values(:,1), ode_opt); 

####33行目 変更後

x = lsode(model_h, initial_values(:,3), t);

###fMGG_synthesis.m内の変更部位
####2674,2675行目 変更前

2674: time = varargin{1};
2675: state = varargin{2};

####2674,2675行目 変更後

time = varargin{2};
state = varargin{1};

#解説
Matlabではstiffな常微分方程式のソルバーとしてode15sが使われるが、Octaveではlsodeが使われる。やっていることは変わらないのだが、引数の渡し方や処理の仕方が少し違うのでMatlabからOctaveへ移植する際にはその変更が必要となる。まず、ode15sでは、optionを引数として渡すことができるのだが(28行目)、lsodeではそれができないので、lsode_optionsを使って事前に宣言することとなる。さらに、ode15s では(function, t, x0)とする引数の順番が、lsode では(function, x0, t)となる。また、返される値は、xの時間変化を示す配列のみである。2674,2675行目のvarargin は、fMGG_synthesisに渡した引数を個別に呼び出す関数である。varargin{1}となっていれば、関数fMGG_synthesisに渡した1番目の引数という意味である。その引数の順番が、ode15slsodeでは、異なるためにここの順番を入れ替える必要があると考えられえる

  1. Reaction dynamics analysis of a reconstituted Escherichia coli protein translation system by computational modeling. Matsuura, T. et al., (2017), PNAS

  2. タンパク質合成反応を解析する大規模全成分計算機シミュレーターを開発ーリソウ 2

  3. PURE system simulator

  4. 残念ながら、Matlabだと数秒で終わるシミュレーションがOctaveだとどうしても時間がかかります。大体20分ぐらい。仕様の問題なのか自分の変更方法が悪いのか誰か分かったら教えて欲しいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?