バイオ系だけどプログラミング始めました

ImageJ (Fiji)の使い方や Python でのプログラミングなどを、主にバイオ系の研究者・大学院生向けに書いていこうと思います。

ブログの目次

このブログについて

ImageJ
ImageJ の画像解析について解説
ImageJ + Python
Python

タンパク質の進化と温度の話 [今年読んだ一番好きな論文2017]

今年読んだ一番好きな論文2017にエントリーしたので、論文紹介の記事をブログに書いてみようと思います。

adventar.org

このブログで論文紹介もしたいなあと思っていたんですけど、就活と研究で色々忙しくって書けてなかったのでこれを機にもうちょっと書きたいです。

ブログではImageJのこととかPythonのこととか書いていますが、僕の専門はタンパク質とかなので、紹介するのもタンパク質のお話になります。 さて、今回紹介したいのは、この論文です。

Evolutionary drivers of thermoadaptation in enzyme catalysis

Science 20 Jan 2017:
Vol. 355, Issue 6322, pp. 289-294
DOI: 10.1126/science.aah3717
science.sciencemag.org

進化の歴史で起きた、酵素の温度への適応進化を調べた論文です。

とのことです。ケミさんありがとうございます!以下にリンクを張りました。

https://t.co/wiei6aADUp

酵素・タンパク質・進化についての説明

生物が専門じゃない人向けの説明です。高校の化学が分かれば大丈夫な感じで書きます。知ってる人は読み飛ばして大丈夫です。

まず、「酵素」というのはタンパク質の一種で生体内で触媒として働くものを指します。ある反応 A->B みたいな反応速度を上げたり、高エネルギー状態な結合の分解と共役することでエネルギー的に不利な反応を進行させたりします。生体内で、外部から取り込んだ分子を分解してエネルギーを取り出したり、生体を構成する分子に変換する化学反応を進める、分子機械として酵素は働いています。

f:id:shatoshi:20171212172822j:plain

CC 表示 4.0 国際 著作権者「David S. Goodsell and RCSB PDB

タンパク質は20種類のアミノ酸が並んだ一本の鎖状の分子です。その20種類のアミノ酸は、正・負の電荷をもつもの、親水性のもの、疎水性のもの、大きいもの小さいものなど様々ありその性質により一本の鎖がある立体構造に折りたたまれます。この構造と性質を両方調べることでタンパク質の働く仕組みを明らかにすることができます。 そしてこの20種類あるアミノ酸のつながり方はDNAの配列によって決まります。進化において、ある要因によりこのDNAの配列が変化して作られるタンパク質の配列が変わり、たまたまその配列の変化が生存に有利なときに環境中にその配列を持った生物が生き残って繁栄する・・・というのが要因の一つとなっています。

温度と進化と原始の生物

地球には70度とかそれ以上の環境で生育する好熱菌と呼ばれる微生物たちが結構います。ふつうタンパク質は高温環境下にさらすと失活するのですが(生卵をゆでると固まってゆで卵になるイメージ)、好熱菌は熱に安定なタンパク質を作ります。生物が誕生したてのころの初期の生物はこういった好熱菌に近い姿だったと考えられています。 それらの根拠として

  • いくつかの生物種の16Sリボソームの配列を比較して、進化の系統樹を描くと好熱菌がかなり根元の方で初期に枝分かれをしている。

  • 初期の地球には光合成をする生物はおらず、初期の生物はエネルギー元として海底の熱水噴出孔から出る還元性の物質からエネルギーを得ていたと推測されているため。

などが挙げられます。他にも色々あります。厚い環境下で生息していた先祖が常温・低温に適応して、今日のように常温にすむ生物が増えたのだと考えられています。

[参考] http://www.sbj.or.jp/wp-content/uploads/file/sbj/9011/9011_tokushu_3.pdf

https://www.jstage.jst.go.jp/article/bss/19/4/19_4_268/_pdf

今回紹介する論文は、現存する生物のタンパク質の配列を比較し先祖の生物の酵素を再構成して、その性質をめちゃくちゃ詳細に解析してタンパク質の進化を調べたというものです。

図とかは本文の方を参照していください。ちょっと用意する余裕がありませんでした。

論文の内容

  • 著者らはまずフィルミクテス門のある酵素アミノ酸配列比較し、8種類の先祖のタンパク質のアミノ酸配列を予測しました(Fig 2 A)。この論文では、ADP2分子をATP+AMPに変換する Adenylate kinase (https://www.wikiwand.com/en/Adenylate_kinase)を研究対象としています(Fig 1 D)。この酵素は生物種間で保存されており、かつ詳細な反応ステップが分かっているからです。こういった先祖のタンパク質の配列を再構成する解析というのは結構よく行われています。 http://www.pnas.org/content/110/27/11067.full

  • そして、予測した祖先の配列のタンパク質を作るDNAを合成して再現して、大腸菌を遺伝子操作してタンパク質を作らせて精製しました。先祖型酵素を8種類、現存する生物種について5種類を精製して実験しています。すごいな。

  • 次に先祖の酵素と現存する生物の活性を温度を変えて測定してます。そして、最も先祖な酵素(ANC1)の立体構造を決定してます(Fig 1 C)。

  • 得られた結果ですが、最も先祖の酵素は高温でも活性を保っていて、いくつかの salt bridge が重要である(Fig 2 B, C, D)ことが分かりました。ANC1とANC2は高温での活性が高いものの、活性の温度依存性が非常に強く、低温での活性が低くなっていました。

  • 祖先からの酵素活性の温度依存性の変化をたどっていくと、少し後の時代の酵素(ACN3)において低温での活性が高くなっていることがわかりました。もう少しあとの時代の酵素は、低温での活性は高かったけど高温での活性が落ちていました。そして、Eyring Plotをしてみると、ANC1、ANC2では直線的でないプロットでしたが、ANC3では直線的でした。このことは、ANC1, ANC2において変性もしくは可逆的な不活化の可能性が考えられました。

  • 詳しく調べると、温度に依存して律速段階が変化していることが分かりました(Fig 1 D, Fig 4 A-D)。当初は仮説として、活性化エネルギーのエントロピー項・エンタルピー項が変化することで低温に適応したと予測していた(Fig 1, A, B)けども実際は異なっていました。

  • 高温で安定だけど低温で活性が低かった酵素ANC1が進化して、低温でも活性が高く高温でも安定な酵素ANC3になって、時代が進むにつれ低温へ適応しANC6や枯草菌の酵素のように高温での活性がだんだんと低くなっていくという進化の道筋が描けました(Fig 4 F, 下にイメージ図を載せます)。 このことは、これまで色々予測されてきた生物の進化の過程と一致するような結果でした。

f:id:shatoshi:20171212173412p:plain

個人的に面白いと思った点。

  • 高温での安定性と活性の高さはトレードオフではなく、高温でも低温でも活性が高かった酵素ANC3があったというのが面白かったです。好熱菌の酵素は低温での活性が低いものが多くて安定性と活性はトレードオフなんじゃないかとか思われていたりそることもあるのですがそうじゃない例が見つかりました。

  • 論文のストーリーが面白くて、得られた結果とは異なる仮説を最初に論文で説明(Fig 1 A, B)してて、実はそうでは無かった、という展開をしているのが良かったです。実際所の著者たちの作業仮説がどうだったのかも気になりますが。

  • 実験量ヤバいんです13種類の酵素を精製して、どのように活性が変化したかを調べるために色々な実験を行っていますし、立体構造も決めてるし・・・。そしてANC3で活性の変化した理由を、詳細な酵素反応動力学的な解析で明らかにしています。

  • こういう構造を調べたり活性を測ったりしてビックジャーナルに載る研究って、ハイインパクト(生物学的・医学的に)な対象を調べて・・・っていうのが多いイメージがあるのですが(個人の偏見です)、こういうベーシックで詳細な酵素反応動力学的な解析を行うことで、Scienceに載るような面白い仕事をできるっていいなあと思いました。

以上、今年読んだ一番好きな論文の話でした。それでは皆さま良いお年を。

10分でできる ImageJ 自動化

目次

  • 目次
  • この記事について
  • マクロの記録と実行
  • フォルダの中の画像に対して同じ処理をする
  • 簡単に解説

この記事について

この記事では、細かい仕組みなどは脇に置いといて ImageJ での解析のついて記述します。主に ImageJ のマクロと PythonJython)で書いていきます。解析の自動化の便利さを知ってプログラミングに足を踏み入れるきっかけになれば幸いです。

解析の例として、いつもと同じで芸がないですが米粒のカウントを例にして説明します。

続きを読む

バイオ系だけどまずはプログラムを動かしてみよう

目次

この記事について

この記事では、Python のプログラムを書いて、動作させる所までを解説します。

Python の説明とインストールについてはこちらの記事を読んでください。

バイオ系だけど Python を始めよう - バイオ系だけどプログラミング始めました

本記事では、ImageJ + Jython の記事で書いたのとは少し異なる種類の Python を用います。ImageJ Fiji + Python で画像解析プログラムを書こう(前編) - バイオ系だけどプログラミング始めました 詳しくはここを参考にしてください。

本記事は、上記の二つのリンクの記事を読んで Python(Anaconda)をインストール済みで、ある程度 Python の使い方や性質を知っている前提で書いています。先にそちらを読まれることをお勧めします。

続きを読む

ImageJ Fiji + Python で画像解析プログラムを書こう(後編)

目次

  • 目次
  • 後編について
  • 8. モジュールのインポート
  • 9. 画像データを扱う imagePlus
    • 練習問題
  • 10. ImageJ の機能を活用する
  • 11. 例1. 砂嵐のような画像を作る
  • 12. 例2. 米粒のカウントを複数の 画像に対して自動で行う

後編について

さて、これまで前編と中編では Python の基本について書いてきましたが、いよいよ ImageJ の機能を使いこなして解析の自動化などに関係することを書いていこうと思います。前編と中編の記事はこちら。

satoshithermophilus.hatenablog.com

satoshithermophilus.hatenablog.com

続きを読む

ランダムな砂嵐画像を作る ImageJ + Python のプログラム

目次

  • 目次
  • ランダムな砂嵐画像を作るプログラムのコード
  • コードの解説
    • random ライブラリ
    • ByteProcessor
    • IntByteConverter
    • コードの流れ
  • 実行例
  • 追記 6/27
  • 動画ver
    • 実行例
    • 動画ver 解説

ランダムな砂嵐画像を作るプログラムのコード

ImageJ + Python のプログラミングの例として書いてみました。 解説はまた今度書きます。しかし、そこまで長くないので、分からないモジュールや機能を調べてみてどのように動いているのか理解してみたり、いろんな数字を変化させて遊んでみるといいと思います。

6/27にコードの解説を追記しました。 知識的には、ImageJ Fiji + Python で画像解析プログラムを書こう(後編) - バイオ系だけどプログラミング始めましたまでを読んでいる前提で書いています。

続きを読む

ImageJ + Python の活用例:自動米粒解析プログラム

目次

  • 目次
  • 米粒自動解析プログラムの概要
  • コード
  • 練習問題

米粒自動解析プログラムの概要

satoshithermophilus.hatenablog.com

上の記事で解説した米粒の解析を自動化した Jython script です。

  1. フォルダを選ぶダイアログを開き、

  2. フォルダ内の tif 画像をすべて読み込み上記の記事で解説したのと同様の解析をし、

  3. 米粒の数を表示して、二値化画像と米の Roi と解析結果を保存する。

というプログラムになります。

続きを読む

ImageJ Fiji + Python で画像解析プログラムを書こう(中編)

目次

  • 目次
  • 前回の記事
  • ImageJ で Python を動かそう の続き
    • 3. 文字列
      • 練習問題 1
    • 4. リスト
    • 5. 繰り返し(for)
    • 6. 条件分岐(if)
      • 練習問題2
    • 7. 関数の定義
    • まとめ
      • まとめの練習問題
    • 次の記事

前回の記事

satoshithermophilus.hatenablog.com

ImageJ で Python を動かそう の続き

前回の記事もそうですが、書いてあるプログラムを自身で打ち込んで(書き写して)実行してみることをお勧めします。結構、打ち間違ってエラーが出たりしますが、どこが間違っているかはエラーメッセージを読めばわかるようになっています。プログラムを書くというのは、機械が理解できる言語を決まった文法にしたがって記述するということになります。言ってみれば外国語を勉強してしゃべるのと同じようなもんです。そんなに気負わずに楽しくやってみてください。もしも、プログラムが動かなかったり、エラーが出たりしたらコメントなどで気軽に相談してください。

3. 文字列

Python では文字列の操作が結構簡単にできます。文字列の扱いができると色々と便利です。例えば、ある名前のファイルだけ解析するとか、実行結果を文字で出力したりとか、解析結果を保存するファイル名を工夫したりとか・・・。普通に文字列を解析することもあるかもしれません。では文字列の操作を説明します。

Python ではダブルクオーテーション""もしくはクオーテーション''で囲むことで文字を表します。Hello World! を print() で表示したときに""で囲っていたことを思い出してください。文字列は「+」で結合することができます。

text1 = "Hello"
text2 = "World!"
text3 = text1 + text2
print(text3)

f:id:shatoshi:20170614153811j:plain

続きを読む

画像データの基本

目次

  • 目次
  • そもそも画像データってなんなのさ?
  • カラー画像
  • 画像データの種類

 

そもそも画像データってなんなのさ?

 とりあえず下の絵を見てください。

f:id:shatoshi:20170609122144j:plain

左のウィンドウがお米の写真(EMBL の Sample 画像、EMBL > Samples > rice.tiff で開ける)で、右のウィンドウがお米の写真の青い枠で囲ったところを拡大したものになります。この右の拡大した図をみればわかるように、画像データは小さな四角ピクセル・pixel と言います)から成ります。

ImgeJ のメインウィンドウの下を見ると、x = 2, y = 3, Value = 118と表示されています。これは、一番左上のピクセル(0,0)から数えて右に2番目、下に3つ目のピクセル(カーソルの示す場所)の値が118であることを表しています。

続きを読む

ImageJ Fiji + Python で画像解析プログラムを書こう(前編)

目次

  • 目次
  • ImageJ と Python
  • ImageJ で動かす Python の特徴(この項目は意味が分からなければ読み飛ばしてもかまいません)
  • ImageJ で Python を動かそう

ImageJ と Python

ImageJ Fiji には画像解析のためのプラグインのほかに、スクリプトを書くためのエディターと実行するための機能が付属しています。ImageJ のスクリプトは幾つかのプログラミング言語や元々の ImageJ のマクロを用いて記述でき、その中に Python (厳密に言うと Java 上で実装された Python なので Jython になります)が含まれています。ImageJ 上での Python のエディターと実行のための機能は元々の ImageJ は付属していないため、Python を ImageJ で動かすためには Fiji をインストールする必要があります。Fiji のインストールはこちら。 satoshithermophilus.hatenablog.com

例えば、別の記事で書いた米粒のカウントを、自動で行うプログラムをこんな感じに書くことができます。米粒画像がたくさんあっても一瞬で解析を完了できます。

satoshithermophilus.hatenablog.com

Python は初心者向けの言語で、行いたい処理を短い行数で書くことができ、読みやすいコードが書けるのが特徴です。プログラミングをしたことのない人でもとっつきやすい言語です。Python でプログラムが書けるようになると、画像処理の他にも様々な計算や統計処理、機械学習なども気軽に試すことができるようになります。一石二鳥です。

バイオ系だけど Python を始めよう - バイオ系だけどプログラミング始めました

続きを読む