生物化学実験法 ImageJ実習 2016/4/18(月)、4/25(月)
担当:豊島 有、飯野
雄一
時間:13:00-16:40
実習手順書
【概要】
ImageJによる画像処理の方法を学ぶ。いくつかのサンプル画像に対し、手動による画像操作を行った後、それをマクロで自動化してみる。
サンプルとして各ステップの作成ファイル、結果の例がリンクしてある。途中でつまずいたら、その後の演習のためにサンプルファイルからスタートして構いません。
0)環境設定
【ImageJのインストール】
ECCにはImageJがインストールされていません。以下からいずれかを選んで、各自ダウンロードしてください。
・ij150-win-java8.zip
(Windows向け。この演習資料のwebサイトにつながるため高速。)
・bundled
with 64-bit Java 1.8.0_77 (70MB) (Windows向け。ImageJの配布サイト経由のため低速。)
・ImageJの配布サイト
(Mac, Linuxなど向け。)
zipファイルがダウンロードされたら、右クリックして「すべて展開」します。ImageJフォルダ内のプログラムファイル(ij.jar)をダブルクリックすると起動します。
<注意>ImageJは日本語対応していないので、作業フォルダおよびその上位のフォルダの名前に日本語やスペースが含まれていると一部のプラグインでファイルにアクセスできなくなるようです。作業フォルダ設定の際には注意して下さい。
1)電気泳動のバンドの計測
1−1)個々のバンドの定量
・ImageJのFile>Open Samplesで"Gel"を選んでゲルのサンプル画像を表示する。
・画像にマウスを合わせて、バンドの濃度値を見てみる。バンドのないところのほうが値が高いので、バンドの濃さと定量結果が逆にならないように、Edit>Invert (Ctrl+Shift+I)で画像を反転させる。
・長方形選択枠でバンドを一本ずつ囲みRoi ManagerにAdd (Ctrl+T)していく。あらかじめAnalyze>Tools からROI Managerを起動しておき、Show Allにチェックを入れておくとよい。バックグラウンドも計測することを忘れないように。(スライド14-17)
・Roi ManagerのMeasureで、各バンドの濃度を定量する。Roi ManagerのDeselectで選択枠を選ばない状態にしてからMeasureを押すと、全ての選択枠について定量結果が得られる。
・ResultsウィンドウからFile>Save asで測定結果を保存できます。
1−2)濃度プロファイルの表示
・ライン選択枠または長方形選択枠で領域を選び、直線方向の濃度変化をPlot Profileで表示させる。長方形セレクションで選択して縦に測る場合はAltを押しながらPlot Profile (Ctrl+Alt+K)。(スライド18)
2)動画のシュードカラー表示
ASER_GCaMP.tifは線虫のカルシウムイメージングの結果で、神経細胞一個が輝度を変化させる。この画像ファイルはマルチページtiffファイルであり、一定の時間間隔でCCDカメラで撮影したモノクロ画像が一つにまとめられている。
2−1)まず、ASER_GCaMP.tifをダウンロードし、ImageJから開く。スタック画像となる。画像の枚数、解像度(縦横のピクセル数)、ビット数を確認する(スライド5、6)。
2−2)動画として再生してみる。(スライド9)
2−3)輝度変化が分かりにくいので、これをシュードカラー画像にしてみる。Image>Lookup Tablesで濃度に応じた色をつける。おすすめはroyalなど。(Image>Color>Display LUTsでLookup Tableの一覧が色で表示される)。(スライド8)
2−4)Image>Adjust>Brightness/Contrast (Ctrl+Shift+C)で輝度の表示範囲を変化させてみる。(スライド13)
2−5)1枚目だけを複製してみる。Image>Duplicate (Ctrl+Shift+D)で、Range:の欄に1-1と入力してOKを押す。(スライド10)
2−6)複製した画像をRGB画像に変換してみる。Image>Type>RGB Colorをクリック。(スライド7)
2−6)変換した画像を保存してみる。File>Save As>Tiff…として、保存先を指定する。(スライド10)
3)明暗のある画像のフィルタ処理
フィルタリングには、画像の局所的な特徴を強調する処理や、全体の明るさの差をなくす処理など、さまざまあり、画像解析の重要な部分を占める。ここでは光ムラの除去の方法を練習する。(スライド25−27)
3-1) AmNaive12.bmpを開く。これは多くの線虫が化学走性行動を行っているプレートを一定時間間隔で撮影した画像AmNaive.tifのうち一枚である。一匹ずつの線虫の位置を自動記録したい。まず一枚の画像を使ってこれを行う(プレート面上の細かいごみは除去できないので気にしなくてよい)。
3-2) まずは、まるいプレート部分を認識させる。これにはImage>Adjust>Thresholdで閾値を設定し、閾値より暗い部分として認識する(スライド19,21,22)。閾値が設定された状態で、Analyze>Analyze Particlesを行って選択枠として抽出する。このとき、
l 適切なサイズ範囲(例えば300000
- Infinity)を指定しておくと余計な選択枠を抽出せずに済む。
l Include Holesを選択しておくと、穴(線虫)が埋められた丸いプレート部分が認識される。
l Add to Managerを選択しておくと、抽出された選択枠がRoi Managerへ登録される。
クリックして丸いプレート部分を選択し、Edit>Clear Outsideにより周りの画像を消してしまう。
3-3) 線虫を認識させたいが、このままでは光ムラがありうまく認識できない。ThresholdやPlot Profileにより、プレート面に光ムラがあることを確認する。
3-4) Image>Duplicate (Ctrl+Shift+D)で画像を複製してから、光ムラをなくすためのフィルタリング処理をいろいろ行ってみる。どうすればバックグランド画像またはバックグランドが除けた画像を得ることができるか。解答例として、半径10ピクセルのMedianフィルター(Process>Filters>Median)により、線虫が消えたバックグラウンドだけの画像が得られる。
3−4)Process>Image
Calculatorでもとの画像からバックグラウンド画像を差し引き(Subtract)する。これにより、バックグラウンドのムラのない線虫の画像が得られる。(スライド28、29)
4)粒子計測
バックグランド除去に引き続き、線虫を認識して数えたい。Image>Adjust>Thresholdで線虫が認識される適当な閾値を決める(Dark backgroundにチェックが必要かもしれないので注意)。Set MeasurementでAreaとcentroidを選択しておく(スライド21)。その後Analyze
Particleを行うが、この際Display ResultsとClear Resultsにチェックを入れておくことと、Sizeの上限下限の設定に注意する。Sizeの上限下限を適切に設定できると線虫がうまく認識され、数と位置(重心のx座標、y座標)がResultから読み取れる。プレートの中央から右側の線虫と左側の線虫の数の比率はいくらか。x座標がプレートの中心((700, 500)あたり)のx座標より大きいか小さいかで判断できるはず。Resultsを保存し(Excel形式で保存したければResults>Optionsで.xlsとしておく)、Excelで開くことにより計算できる。(スライド23)
5)タンパク質の局在の定量
例として、PiwiタンパクおよびZucchiniタンパクの、細胞質と核への局在を定量する。個々の細胞を認識するのは難しいので、今回は複数の細胞をまとめて扱う。
5-1)PiwiZucdelNlightB.tif(DAPIによる核染色)を開き、核を認識させる。適切なThresholdとサイズを設定してAnalyze Particlesを行う。このときに、"Show"のプルダウンより"Masks"を表示させる設定にしておく。
5-2) 作成されたマスク画像を選び、Edit>Selection>Create Selectionを行って、核の輪郭にあたる選択枠を作成する。Edit>Selection>Add to Manager
(Ctrl+T)として、選択枠をROIとしてROI Managerに登録する。複数の細胞の核が1つのROIとして扱われていることに注意してほしい。
5-3) PiwiZucdelNlightW.tif (微分干渉画像) を開き、細胞全体を認識させる。細胞は輝度が高くないので、そのままでは検出しにくいが、細胞の内部は輝度にばらつきがある。このばらつきを抽出するためにProcess>Find Edgesを行う。(スライド26)
5-4) 核のときと同様に、適切なThresholdとサイズを設定してAnalyze Particlesを行うと、細胞全体(細胞質+核)のマスク画像が得られる。マスク画像はこのままだと穴が開いているので、例えばProcess>Binary>Dilateを2回かけてマスクを膨張させ、穴をふさいでから、Process>Binary>Erodeを2回かけてマスクの膨張を打ち消すとよい(スライド20)。あるいはこちらのマスク画像を代わりに使っても良い。
5-6) 5-2と同様に、マスク画像から選択枠を作成し、ROIとしてROI
Managerに登録する。
5-7) PiwiZucdelNlightG.tif
(Piwi蛋白質を抗体染色したもの) を開く。Set
MeasurementでAreaとIntegrated Density (IntDen、総輝度値)を選択しておく。Roi
Managerで核のROIを選び、Measureボタンを押して、核の領域を定量する。同様に細胞全体のROIを選んでMeasureボタンを押して細胞全体の領域を定量する。
5-8) 5-7の結果から、核と細胞質の平均輝度の比 (局在の比率) を計算する。平均輝度はIntegrated Density / Areaで求められる。細胞質の総輝度値や面積は核と細胞質の値から計算する必要があります。
5-9) PiwiZucdelNlightR.tif(N端欠失型Zucchini蛋白質の抗体染色)についても5-7と同様に操作し、核と細胞質の平均輝度の比を計算する。
(オプション) 局在の比率は見た目と一致するだろうか? 一致しないとしたらそれはなぜか? 解決するにはどうしたら良いだろうか。
6)マクロの自動記録
ImageJでは一連の操作をマクロプログラムで記述することができる。さらに、手動で行った操作を自動記録するという優れた機能が備わっている。(スライド35)
1〜5)で行った操作のいずれでもよいので、マクロの自動記録の機能を利用してマクロを作成し、走らせてみる。(スライド36、37)
この時点ではプログラムの意味がすべてわかる必要はない。また、すべての操作がマクロで再現できるとは限らないので完璧を目指さないように。
7)マクロ作成の第一歩:カウンタの記入
手作業では困難な繰り返し操作はマクロでやらせるのがよい。マクロプログラミングができるようになるとImageJの応用範囲が格段に広がるであろう。マクロプログラミングの練習の第一歩として、タイムラプス画像にタイムスタンプをつけてみよう。
ASER_GCaMP.tifの画面の左上隅に、スライス番号が表示されるようにしてみる(時刻だとやや難しいので)。動画として再生するとそれにつれて番号がカウントアップされるはず。
☆
ASER_GCaMP.tifを開き、そのウィンドウを選択した状態でマクロを走らせることにする。Plugin>New>Macroで入力ウィンドウを開き、プログラムを記入していく。プログラムは以下のステップを実行するものにする。(スライド38)
i) 1枚目のスライス、2枚目のスライス、、、、と順に処理する。そのためにfor文を用い、処理中のスライス番号をiとする。全スライスの枚数は既定変数nSlicesで与えられる。(スライド40、42、47)
ii) i枚目のスライスを表示させる。setSliceを使う。
iii) 表示されている画像に文字を記入する。drawStringを使う。記入する文字はスライス番号そのものである。(スライド64、65)
iv) 次のスライスに進む。これを最後まで繰り返して終わり。
☆
ASER_GCaMP.tifの画像ウィンドウを選択した後に作成したマクロを走らせれば一瞬でスライス番号が全スライスに記入されるはず。作品を保存したければ別名で保存。
☆ フォントやフォントサイズはsetFont、文字の色はsetForegroundColorで設定できる。(スライド63)
サンプルマクロ TimeStamp.txt
(参考)フォントの見本として文字記入マクロのサンプルがImageJフォルダ内のmacrosフォルダにTextDemo.txtまたはFonts.txtとして準備されているのでPlugins>Macros>Runで走らせてみると同時に、Plugins>Macros>Editでプログラムの内容を見てみるとよい。
8)動画の作成
次に簡単なアニメを作る。
縦50ピクセル横512ピクセルの黒バックのRGB画像を作成し、ボールが移動するアニメを作成する。下図は2)のカルシウムイメージングの際に与えた化学刺激のプロファイルである。100枚目のスライスで還流液の濃度を50mMから25mMに変えている。下図の黄色の部分は説明のためのものなので実際は表示しない。白い文字と線は動かず、緑のボールが白い線に沿って動くアニメを作成する。200ピクセルがスライス100枚分であることに注意。(注:この実験では本当は200枚目のスライスで再度50mMに戻しているが、簡単のためこれは無視する。余裕があれば正しいプロファイルを描かせてみるとよい。)
i) まず一枚の画像として、緑のボールが左端に位置している図を描いてみる。(スライド64、65)
サンプルマクロ SaltProfile1.txt
ii) 次に241スライスからなるスタックを作りスライス毎にボールの位置を変えていく。ボールの位置をどう計算するかがポイント。(スライド41、42)
サンプルマクロ SaltProfile2.txt
タイムラプス画像ASER_GCaMP.tifの画像領域を下に拡大し、上と同じアニメを追加する。
サンプルマクロ SaltProfile3.txt
サンプルムービー ASER_GCaMP_profiled.tif
(以下はオプション;時間が余ったらやってみてください。)
9)プレゼン用の動画の作成
次に細胞内シグナル伝達のプレゼンテーションのための簡単なアニメ画像を作ってみる。パワーポイントファイルDemoSlide.pptxを開く。一枚目のスライドの矢印で表された核への移動を表現するため、STAT二量体が回転しながら核にはいる動画を作ってみる。まず以下9-1〜9-5を手動で行う。
9-1) PowerPoint上で、2枚目と3枚目のスライドをbmp形式で保存する(別名で保存→ファイルの種類をbmpにする)。
9-2) スライドのbmpをImageJで開く。
9-3) 3枚目のスライドの画像のSTAT二量体を真円の選択枠で囲み(シフトを押しながらドラッグ)、Ctrl+Cでコピーしておく。
9-4) 2枚目のスライドの画像を選択し、Edit>Selection>Restore Selectionで選択枠を表示させ、好きな場所までドラッグする。選択枠が表示された状態でCtrl+Vを押すと、STAT2量体がペーストされる。
9-5) 選択枠を表示した状態でImage>Transform>Rotate...から、STAT2量体を回転させる。
<演習> スライド2枚目の画像を多数複製してスタック画像とし、上記の基本操作によって各スライスにSTAT二量体を少しずつ位置と回転角を変えて貼り付けていけばアニメができる。手作業では大変なのでマクロを組んでこのアニメを作り、AVI形式で保存する。
サンプルマクロ StatAnimation.txt
サンプルムービー StatAnimation.avi
10)3D画像および4D画像の扱い
― 共焦点顕微鏡のタイムラプス4D画像
―
共焦点顕微鏡で線虫の頭部神経を撮影した3D画像を開く。
緑色のチャンネルが一部の感覚神経を脂溶性蛍光色素で染めたもの、赤色のチャンネルがすべての神経に蛍光蛋白質NLS-mCherryを発現させたものである。焦点面(z)を変えながら、緑色蛍光、赤色蛍光、明視野の画像を撮っていったものである。
l Image>Color>Channels Tool
(Ctrl+Shift+Z)で3つのチャンネルを同時に表示してみる(スライド7)。
l Image>Stacks>Z Projectで全スライスを1枚に投射した画像を作ってみる。(スライド32)
l Image>Stacks>3D Projectで回転させた画像を作ってみる。
l スライド70を参考に、3D
Viewerプラグイン(http://3dviewer.neurofly.de/)をダウンロードする(別途java3d https://java3d.java.net/binary-builds.html
が必要な場合がある)。ImageJを再起動し、3D画像を開き直したあと、Plugins>3D Viewer を実行すると、3D表示ができる。明視野のチャンネルを非表示にし、他のチャンネルを明るめに表示しておくときれいな3D表示が得られる。
Bio-Formatsプラグイン (http://downloads.openmicroscopy.org/bio-formats/5.1.0/)をダウンロードする。以下のサンプル画像がハイパースタックとして読み込める(スライド32、33、68)。
これらはライカ共焦点顕微鏡で焦点(Z軸)を変えながら一定時間ごとに(T軸)取り込んだ4D(xyzt)の単色画像(ライカのlifフォーマット)である。Bio-Formatsで読み込むとハイパースタックとなり、特定のTとZの画像を選んで表示することができる。
10-1) スライス画像ではほとんど何も見えないので、Image>Stacks>Z Project から、Z軸に投射した画像(T軸スタック)を作ってみる。
10-2) 特定のTを選び、立体的に回転した画像を作ってみる。
10-3) Plugins>3D Viewer を実行すると、4D表示ができる。LUTは色調の変わるもの(royalなど)を使用し、明るめに表示させておくとよい。
10-4) MetaMorph (顕微鏡用の画像取得・解析ソフト) のスタック画像も取り込めることを確認する。
必要に応じ、gcy5NaCl.tif、dat1food.tif、gcy5-YC2.12.tifもお使い下さい。
11)蛍光強度の定量
― 線虫のタイムラプスカルシウムイメージング画像の定量 ―
カルシウムイメージングの画像ASER_GCaMP.tifでは、神経細胞の輝度がその神経のカルシウムレベルを反映する。これを数値化してみよう。実際にはもっと複雑な処理が必要だが、まずはImageJの初歩的な使い方でこれを行ってみる。
11−1)ASER_GCaMP.tifを開き、これをコピーした画像を作成する。
11−2)このままでは輝度にノイズがあって処理がしにくいので、コピーした方の画像に対してProcess>Filters>Gaussian Blurでスムージングを行う。
11−3)次に、1枚目の画像および細胞の輝度が上昇したときの画像(101枚目あたり)でThresholdを行ってみる。オートで行うが、Default以外にもいろいろな種類があるので、どれを使ったらうまく目的の細胞が囲めるかを調べる。Stack Histogramにチェックを入れたときと入れないときとでどう動作が異なるか。
11−4)Analyze
Particlesを行う。囲われた面積と、合計ピクセル値の値が計算されるようにしておく。スライス一枚だけ処理するのと全スタックを処理するのとどちらがいいかを考えてみる。
11−5)以上の操作をマクロで行えるようにプログラムを書いてみる。
11−6)別の画像ASER_GCaMP_7.tifでもやってみる。
細胞体部分の動きに伴ってトラッキングしながら蛍光強度を定量するマクロを紹介する。線虫が動くので、ROIを移動しながらROIの中の蛍光強度の総和を測定する。ROIの中の明るい部分の重心の位置を基準として、それとの相対位置を保つようにROIを移動して定量している。
サンプルマクロ Roi_tracking.txt
12)課題
本演習の修了認定のために、課題を出します。内容は進みぐあいをみて最終日に決定します。
【画像提供】
PiwiZucdelNlight.tif 生物化学科 塩見研究室 石津大嗣氏
ASER_GCaMP.tif、ASER_GCaMP_7.tif 生物化学科 飯野研究室 佐藤博文氏
gcy5NaCl.lif,
dat1food.lif, gcy5-YC2.12.stk 生物化学科 飯野研究室 富岡征大氏
IsmC_DiRx63water13.tif 生物化学科 飯野研究室 金森真奈美氏
これらの方々に感謝致します。