いますぐ始める数理生命科学 - MATLABプログラミングからシミュレーションまで -

いますぐ始める数理生命科学 - MATLABプログラミングからシミュレーションまで -

プログラミング初学者が数理生命科学の手法を理解,実践するためのわかりやすい入門書

  • 口絵
ジャンル
発行年月日
2021/01/08
判型
A5
ページ数
256ページ
ISBN
978-4-339-06762-0
いますぐ始める数理生命科学 - MATLABプログラミングからシミュレーションまで -
在庫あり
2営業日以内に出荷致します。

定価

3,960(本体3,600円+税)

カートに入れる

電子版を購入

購入案内

  • 内容紹介
  • まえがき
  • 目次
  • レビュー
  • 著者紹介
  • 書籍紹介・書評掲載情報
  • 広告掲載情報

本書は、1冊でプログラミングと数理生物学の両方を学習し、初心者が最短距離で生命現象のシミュレーションを習得することを目指します

<数理生命科学とは?>
 生命科学の諸分野において数理モデリング、数値シミュレーション、画像解析などの数理・情報系の知識や技術が必要となる場面が増えています。物理や工学の分野では、対象とする現象を数式に置き換えた数理モデルを用いることで、新たな現象を予測したり、現象の背景にあるメカニズムを明らかにする手法が一般的です。生命科学の分野でも数理モデルを取り入れた数理生物学が注目されています。ですが、数理モデルによる予測を実験的に検証することで、生命科学を本質的に推進する様な、真の融合研究はいまだに困難です。数理生命科学とは数理生物学とほぼ同じ意味ですが、数理科学と生命科学の融合研究の発展を願い、本書のタイトルを「いますぐ始める数理生命科学」としました。

<こんな方にお勧め>
 数理科学と生命科学の融合研究のためには、コンピュータープログラミングが非常に重要です。多くの生命科学研究者や学生の方々は、数理生命科学が重要だと認識はしていても、プログラミングの教育を受ける機会がなかったり、苦手意識のせいでなかなか始められないという場合が多いと思われます。しかし、最近のコロナ禍の状況は、家でもどこでもできるプログラミングを習得する良い機会です。本書では、数理科学や情報科学のバックグラウンドが無くても生命現象のシミュレーションが出来るようになることを第一の目的としていますし、伝染病の数理モデルというタイムリーな話題をはじめ、幅広い生命現象を扱っています。この本をきっかけとして、数理生命科学にチャレンジしてみてください。

<書籍の特徴>
 多くの数理生物学の書籍において、様々な数理モデルの生物学的な意義や数学的な性質が解説されています。ですが、数理モデルに使われている数式を具体的にどうやってコンピューター上で扱えば良いのか、どうやってシミュレーションしたら良いのかについてはほとんど説明されていないことが多いと思います。それは、コンピュータープログラミング、さらにプログラム中で数式を取り扱う方法を説明するだけで、非常に大変だからです。ですから、プログラミングの経験の無い方が生命現象のシミュレーションをしたいと思ったら、プログラミングと数理生物学の両方を学習する必要があるのです。
 本書は1冊でプログラミングと数理生物学の両方を学習できるという特徴を持っています。1・2章ではMATLABによるプログラミングの基礎、3・4章では様々な数理モデルによる生命現象のシミュレーションについて解説しています。また、1・2章では3・4章で重要となる考え方に絞って重点的に解説していますし、3・4章では数学的な厳密性よりも直感的・視覚的な説明を心がけています。初心者が効率良く、最短距離で生命現象のシミュレーションを習得できるよう工夫しているのです。まさに、これ一冊でいますぐ数理生命科学を始めることができるのです。

はじめに

分子生物学,発生生物学,細胞生物学,神経科学などの生命科学の諸分野において,データの統計解析のみならず数理モデリング,数値シミュレーション,画像解析などの数理・情報系の知識や技術が必要となる場面が増えています。物理や工学の分野では,対象とする現象を微分方程式に置き換えた数理モデルを用いることで,新たな現象を予測したり,現象の背景にあるメカニズムを明らかにする手法が一般的ですが,生命科学の分野でも,数理モデルを取り入れた数理生物学が注目されています。

このような研究を理解し,推進するためには,コンピューターのプログラミングを習得する必要がありますが,多くの生命科学研究者や学生の方々はそのような教育を受ける機会がなかったり,苦手意識のせいでなかなか始められないという場合が多いと思われます。筆者自身は生命科学者で,プログラミングは趣味としてやっていた程度ですが,最近のプログラミング言語は非常に扱いやすく,またコンピューターも高性能になっているので,素人でも実用的なプログラムを作成できるようになっています。シミュレーションを行うということは,微分方程式を解くプログラムを作成するということとほぼ同じ意味にな
りますが,そのためには,本来,きちんと数学を学ぶ必要があります。ですが,プログラミングと数学を両方学ぶのは非常に大変ですので,本書では数学の詳細はできるだけ割愛し,プログラミングができるようになることを第一の目的としています。高校レベルの数学と物理の知識はあったほうがよいですが,最近では高校で習わなくなった行列や微分方程式については,必要に応じて解説しています。

世の中にはさまざまなプログラミング言語が存在しますが,中でも本書ではMathWorks社が販売しているMATLABを取り扱います。ただ,プログラム言語というのはどれも基本的な考え方は似通っていて,一つの言語を習得すれば他の言語を扱うのはそれほど難しいことではありません。もちろん言語によってそれぞれ特徴があり,MATLABの場合は行列の扱いが得意であることが大きな利点です。データのグラフ化が簡単なので,たった1行の命令で見栄えのよいグラフを作成することができます。また,ツールボックスと呼ばれるオプションを入手することで,ディープラーニングのような人工知能の技術も簡単に取り入れられます。MATLABは有料であり,せっかく作ったプログラムでも,MATLABがインストールされたコンピューターでないと使うことができないという問題点はありますが,アカデミック価格や学生価格であればかなり入手しやすくなっていますし,MATLAB Homeと呼ばれる安価なホームライセンスも用意されています。また,1か月間であれば無料の試用版を使うこともできますし,GNU Octave(以後Octaveと呼びます)というMATLABと互換性のあるプログラミング言語であれば,無料でダウンロードすることができます。

少しでも興味を持たれた方は,ご自分のコンピューターにMATLABもしくはOctaveをインストールし,いますぐ始めてみてはいかがでしょうか?少し難しく感じられることもあるかもしれませんが,意外とこんなに単純なものなんだ,と思ってもらえればそれだけでも大きな一歩です。数理系の発表を聞いても物怖じせずに内容を理解できるようになるかもしれません。本書のカバーする範囲は限られていますが,これをきっかけに,より専門的なスキルを身に付けていただければ,それが近い将来,生命科学の進歩につながると期待しています。チャレンジしていただければ幸いです。

なお,本書の執筆にあたっては以下多数の方々からさまざまなコメントをいただき,何とか完成にこぎつけました。この場を借りて感謝申し上げます。

北海道大学 長山雅晴先生,はこだて未来大学 田中吉太郎先生,秋田大学 山崎正和先生,鮎川友紀先生,新潟大学 杉江淳先生,産業技術総合研究所 古藤日子先生,東京大学 多羽田哲也先生,三浦正幸先生,樫尾宗志朗先生,早稲田大学 花嶋かりな先生,京都大学 井垣達吏先生,和田弥生さん,吉田大祐さん,大阪大学 近藤滋先生,稲木美紀子先生,基礎生物学研究所 小山宏史先生,沖縄科学技術大学院大学 清水一道さん,Goethe-Universität Frankfur 青木一郎さん,金沢大学 向田直史先生,井上啓先生,三枝理博先生,津野祐輔先生,瓜生耕一郎先生,当研究室大学院生 友水豪志さん,内藤寿稀さん,MathWorks社 吉田幸恵さん,林涼子さん,沖田芳雄さん,村松未輝雄さん,廣田康二さん,井上道雄さん,大開孝文さん,菱田寛之さん

すべてのコメントに十分に対応できたかはわかりませんが,できるだけ読みやすく,実用的で,かつこれからの数理生物学に少しでも貢献できる内容にするよう努力したつもりです。また,出版にあたってコロナ社にはたいへんお世話になりました。この場を借りて御礼申し上げます。

2020年11月
佐藤純

1.準備運動
1.1 プログラミングとは
1.2 インストール
1.3 関数電卓として使ってみる
 1.3.1 コマンドウィンドウ内での計算
 1.3.2 関数の計算
 1.3.3 逆関数の計算
1.4 変数
 1.4.1 変数とは
 1.4.2 変数の名前
1.5 ベクトル
 1.5.1 ベクトルとは
 1.5.2 ベクトルの要素を操作する
1.6 ベクトルを使ったグラフの描画
 1.6.1 plotを使ってみる
 1.6.2 plotの応用
1.7 行列
 1.7.1 行列を定義する
 1.7.2 行列の大きさ
1.8 行列の計算
 1.8.1 行列の和と積
 1.8.2 アダマール積

2.MATLABプログラミング入門
2.1 スクリプト
 2.1.1 スクリプトを作る
 2.1.2 グラフを描くスクリプトを作る
2.2 円とらせん
 2.2.1 極座標を使って円とらせんを描く
 2.2.2 円とらせんを描く応用編
2.3 for文
 2.3.1 for文でループを作る
 2.3.2 for文のネスト
2.4 数値の整数化
2.5 数値の文字化
2.6 数値と文字が混在した文章
2.7 while文
2.8 じゃんけんとif/switch文
 2.8.1 if文による条件判定
 2.8.2 switch文による条件判定
2.9 関数
 2.9.1 じゃんけんを判定する関数
 2.9.2 スクリプト内に関数を配置する
2.10 2次元画像の扱い
 2.10.1 imagescによる画像表示
 2.10.2 2次元パターンを作り出す
2.11 アニメーション
 2.11.1 plotのアニメーション
 2.11.2 imagescのアニメーション
 2.11.3 ムービーファイルの保存
コラム1 デバッグについて
2.12 グラデーションリング
 2.12.1 グラデーションリングを描く
 2.12.2 グラデーションリングを回転させる
コラム2 よくあるバグその1:打ち間違い

3.生命現象の時間変化をシミュレーションする
3.1 微分方程式を解く
3.2 蛋白質の合成と分解
 3.2.1 オイラー法による微分方程式の解法
 3.2.2 厳密解との比較
コラム3 よくあるバグその2:文法エラー
3.3 造血幹細胞の数理モデル
 3.3.1 造血幹細胞の数理モデルその1
 3.3.2 造血幹細胞の数理モデルその2
 3.3.3 ロジスティック方程式
3.4 糖代謝の数理モデル
コラム4 よくあるバグその3:数値や文字の扱いが不適切
3.5 伝染病の数理モデル
 3.5.1 SIRモデル
 3.5.2 複数のパラメーターの結果を比較する
 3.5.3 基本再生産数R0を導入する
3.6 ロトカ・ヴォルテラモデル
 3.6.1 オイラー法を用いた数値計算
 3.6.2 ode45を用いた数値計算
コラム5 ブレークポイントの設定

4.生命現象の時間・空間変化をシミュレーションする
4.1 拡散性物質による空間パターン形成の時間変化
4.2 拡散方程式の直観的な説明
4.3 拡散方程式の計算
 4.3.1 拡散の数値計算アルゴリズム
 4.3.2 for文を用いた拡散の計算
 4.3.3 del2を用いた拡散の計算
 4.3.4 行列を用いた拡散の高速計算
コラム6 よくあるバグその4:アルゴリズムがおかしい
4.4 モルフォゲンによるパターン形成
4.5 ショウジョウバエ翅のパターン形成
 4.5.1 Dppの拡散の計算
 4.5.2 Dppの標的遺伝子の発現
4.6 ショウジョウバエ脚のパターン形成
 4.6.1 DppとWgによるDll遺伝子の発現制御
 4.6.2 活性化型Dpp受容体の効果
コラム7 よくあるバグその5:数学的な問題
4.7 チューリングモデル
 4.7.1 活性化因子と抑制因子からなる反応拡散方程式
 4.7.2 濃度の上限を設定する
 4.7.3 if文を使わずに濃度の上限を設定する
 4.7.4 チューリングパターン
コラム8 パラメーターの設定
4.8 心臓拍動のシミュレーション
 4.8.1 フィッツヒュー・南雲方程式
 4.8.2 フィッツヒュー・南雲方程式に拡散を加える
 4.8.3 不整脈の数値シミュレーション
 4.8.4 心臓拍動のメカニズム
コラム9 dtとdxの値
4.9 「分化の波」の数理モデル
 4.9.1 分化の波,proneuralwave
 4.9.2 EGFとAS-Cからなる2変数モデル
 4.9.3 NotchとDeltaを加えた4変数モデル
 4.9.4 EGF変異体における波の消失
 4.9.5 Notch変異体における波の加速のメカニズム
 4.9.6 なぜゴマシオにならないのか?
コラム10 数式のデザイン

付録
引用・参考文献
おわりに
索引

読者モニターレビュー【soy様(研究職)】

本書は,
 前半部分:MATLABでのプログラミングに必要な基本事項
 後半部分:分子レベル~生物集団レベルと徐々に規模を拡大しながら様々な生命科学現象のシュミレーションモデルの学習
という流れで構成されています。

基本的な用語や関数を,図を用いながら丁寧に解説されていること,またシュミレーションモデルでは一つ一つの構文が何の意味を持っているのかコメントが振られていることもあり,ある程度の基礎的知識を習得しつつ,シュミレーションモデルの作成を実践しながら学ぶことができます。

そのため,もちろん数学的な基礎知識は必要になってきますが,プログラミング初心者も比較的取り組みやすい構成になっており,これからシュミレーションモデルの作成を取り組んでみたい方にはおすすめです。

読者モニターレビュー【vestigial様(IT業界)】

私はPython等他の言語の経験ありMATLABの経験はなし。農学部で生物も多少は学んだことがあるが,数学は苦手で数理生命科学は学んでいないという立場ですので,その立場から感想を書かせていただきます。

1章から2章にかけては丁寧にMATLABの文法や特徴の説明がなされる。プログラム経験者は最初から写経するように一つ一つコードを打ち込んで学んで行って欲しいが,経験者はベクトル,行列のところまでは読み飛ばして行っても構わないと思う。ただし,1.8.2項のアダマール積の概念とその記述方法については,学校で習う行列の積と異なる上,後に出てくるのでコードの書き方も含め見落とさずに学習する必要がある。

MATLABは他の言語と比べるとベクトルや行列を非常に簡潔に書くことが出来,グラフを図示する機能までimport文やクラスやオブジェクトの概念を学ばずに扱うことができるため,Python等他の言語よりも数理生命科学のツールとしては有効だと感じた。また,3章以降で出てくるが,微分方程式も直接的に記述できる点はやはり技術・科学計算の分野向けの面目躍如だと思う。

2章まではプログラマなら理解できる内容かと思うが3章以降は一気に難易度が上り,微分方程式を扱う事になる理系大学学部以降の難易度になる(本書を手に取る人間は初めからこの層だとは思うが)。これ以降はモデルの概念の説明をよく理解して読み進めないとコードも理解できない。

3.3節の造血幹細胞の数理モデルはパラメータ数も多くロジスティクス方程式まで考慮すると数式が難しくなるので3.4節の血糖値の数理モデルから先に読んだ方が理解はしやすいと思う。3.5節は今皆が興味のある伝染病の数理モデルのため非常に興味深かった。性質の未知な病原体でもこのような数理モデルを使えば感染動態が予測できるということで,数理生物学は現在,全人口からすると一部の人だけが理解している分野だが,この状況下では必須教養なのかもしれない。また,テレビで繰り返し言われている感染症予防もこの数理モデルの結果と同じで,このような数理モデルから導き出された結論だという事がわかる。

4章の拡散のコーディングについて,初めに概念を説明し,自分でコーディングをした後にMATLABの関数を説明するという流れは良いと思います。ただ,4章以降の内容は理解が追い付きませんでした。生物の複雑な模様も単純なルールで生成することが出来るという話は聞いていたので,もう少し読み込んでここも理解したいと思います。

まとめ
MATLABの基本から始め,数理モデルのコーディングまで必要十分な分量でまとまっている。ただ,大学以降の数学の理解がある前提となっているのでその点は注意されたい。

佐藤 純

佐藤 純(サトウ マコト)

 私は大学に入った頃は数学やコンピューターに興味を持っていましたが、だんだんと生物に興味が移り、ショウジョウバエを用いた発生生物学、分子生物学の研究を専門とするようになりました。当初は数学やコンピューターを生物学に活かしたいと妄想していましたが、本格的な異分野融合研究に携わる機会は無く、基本的にはオーソドックスな生命科学の研究者だったと思います。ところが、40才を過ぎてから、本書でも取り扱うproneural waveと呼ばれる現象についての数理モデルを扱うようになったのです。20年くらいのブランクがありましたが、その間の技術の進歩は目を見張るものがあり、本書でも扱うMATLABを使えば、手軽にコンピューターシミュレーションを行うことが出来る、ということに気づきました。今では数理モデルと生命科学実験を組み合わせた異分野融合の研究スタイルがすっかり身についたと感じています。

 生命科学はまだまだこれからも発展する学問分野だと思いますが、数学や情報科学を融合させる技術を持っていれば、その中でも際だった活躍をすることができるでしょう。そのためには、コンピューターのプログラミングを習得する必要がありますが,多くの生命科学研究者や学生の方々にとってはどうやって始めたら良いのか、そのきっかけがわからないかも知れません。本書では、数学や情報科学のバックグラウンドがほとんどなくても生命現象のシミュレーションが出来るようになることを第一の目的としています。高校レベルの数学と物理の知識があれば十分です。コンピューターシミュレーションでしたら家でもどこでもできますので、コロナ禍の状況において学習する内容としては打ってつけです。また、本書では伝染病の数理モデルというタイムリーな話題をはじめ、様々な生命現象を扱っています。この本をきっかけとして、是非数理生命科学にチャレンジしてみてください。

「生物の科学 遺伝」(2021年5月発行号(75-3)) 掲載日:2021/05/13
生物関連書籍の「新刊一覧」にてご掲載いただきました。

掲載日:2022/12/13

日本生物物理学会誌「生物物理」Vol. 62 No. 6

掲載日:2021/12/27

「生物工学会誌」2021年12月号広告

掲載日:2021/10/18

「数理科学」2021年11月号広告

掲載日:2021/05/06

計算工学会誌「計算工学」Vol.26 No.2

掲載日:2021/04/16

月刊「化学」2021年5月号広告

掲載日:2021/04/08

「数学セミナー」2021年5月号広告

掲載日:2021/02/17

「現代化学」2021年3月号広告

掲載日:2021/01/19

「数理科学」2021年2月号広告