忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

Silverlightで細胞の分化をシミュレート(ブーリアンネットワーク)

細胞の状態のシミュレーター

Silverlightで ブーリアンネットワークというもののシミュレーターを作ってみました。
これは細胞の状態の単純化されたシミュレーションです。



このページを開くとすると模様が現れます。
(現れない場合は[新規作成]を押してください。最初の状態はランダムに決まるので、模様が生まれない場合があるのです)

その模様が一種類の細胞に相当します。
ある模様は皮膚の細胞かもしれませんし、別の模様は神経の細胞かもしれません。

模様は周期的です。
短い目で見ればある細胞の内部状態は変動しています。
しかし長い目で見れば変わりません。
たとえば皮膚を作る細胞がいきなり神経細胞に変わったりはしないのです。

青で縁どられている四角形をクリックしてみてください(一番上です)。
するとその場所の黒と白が反転します。
結果、次の2つのうちどちらかが起こります。

1.模様が一時的にかき乱されるが、次第に元の模様に戻っていく。
2.模様がかき乱され、以後全く別の模様になる。

1が何を意味しているかというと、細胞の自己復元機能のようなものです。
2は、細胞の分化(ES細胞が皮膚や神経の細胞に変わるようなこと)を意味しています。

場合によっては2は起こりにくいかもしれません。
その時は[新規作成]で別のネットワークにするか、複数の四角形を同時にクリックしてみてください(ポーズボタンは右下です)

ブーリアンネットワークとは

人間の細胞にはいろいろな種類があります。
皮膚の細胞、内臓の細胞、骨の細胞、さまざまです。
それらは内部の状態が違っています。

内部の状態が違うのは違うタンパク質が作られているから。
そしてタンパク質を作り出すのは遺伝子です。
遺伝子が、細胞をいろいろな種類にわけているのです。

普通私たちプログラマは状態の遷移をStateパターンなんかを使って実装しますが、細胞は違います。
無数の遺伝子がお互いをスイッチONしたりスイッチOFFしたりして状態が決まります。

遺伝子はタンパク質を作り出すだけが能ではありません。
他の遺伝子が「オン」になるかどうかを調節したりもするのです。
オンになった遺伝子は効力を発揮し、タンパク質を作ったり、あるいは別の遺伝子のオンオフを替えたりします。
遺伝子の集まり=ゲノムは状態を制御するネットワークなのです。

複雑系の研究者スチュアート・カウフマンがその著書の中で次のようにモデル化したのを紹介しています:
(彼の言ったままではありませんがだいたいそういうことです)

「ひとつの遺伝子をboolとする。そしてその状態は、以前の自分や他の遺伝子の状態によって決まる」

遺伝子の調節ネットワークを、相互作用するboolのネットワークとしてみたのです。
具体的には遺伝子a、遺伝子b, 遺伝子cがあったとすると:

a = and(b, c)
b = xor(c, a)
c = or(a, b)

というような具合です。(右辺は直前の状態)
ここではandやxorやorなどと言っていますが、実際には16種類のブール関数何でもかまいません。
2つのboolから一つのboolを導き出すやり方は全部で16種類ありますからね。

(厳密には16である必要すらありません。
2つより多い数の遺伝子の情報をとって次の状態を計算してはなぜいけないのでしょうか?
残念ながら、3つ以上の遺伝子の情報を取るとまずいことになる理由があります。
どうも数を増やすと振る舞いがカオスになりやすいのです。
秩序がなくなってしまうのです。
(逆に数を2より減らすと動きが凍り付いてしまいます。おもしろくありません)
そういうわけで、2つの遺伝子にのみ依存するようにここではプログラムしました)

遺伝子一つ一つをboolに見立て、次々と状態をアップデートしていくのがブーリアンネットワークです。
これは上で述べたように、細胞の恒常性(ちょっとばかり状態が変わっても、元の状態に戻ろうとする力)、分化(細胞が別のタイプに変わること)のような現象が現れます。

なお、このネットワークは幾つかの安定した状態を取りますが、それはだいたい√遺伝子数 です。
このシミュレーターでは最初10個の遺伝子ですが、つまり大体3つの状態を取るはずだ、ということです。

ちなみに人間の遺伝子の数は約2万2000個。
平方根をとると148です。
実際の人間の細胞の種類はたしか2百数十種類です。
完全に一致とは言えませんが、オーダーはだいたい合っているようですね。
ちょっと多めになっているのは自然淘汰の力でしょう。
本来作れる状態よりちょっと多めに状態を作り出せるよう、遺伝子が調節されているものと思われます。
たとえば動物なんかだとひとつの遺伝子が複数の形態を取ることがあるようです。


おまけ

プロジェクトファイルです。

























































拍手[0回]

PR