「CTF補正」の版間の差分
(→例6 デフォーカスの異なる画像の平均化) |
(→例6 デフォーカスの異なる画像の平均化) |
||
行729: | 行729: | ||
この後に下記のコマンドを入力すると、補正済みの2つの画像に対する平均画像を出力します。<br> | この後に下記のコマンドを入力すると、補正済みの2つの画像に対する平均画像を出力します。<br> | ||
− | |||
<pre> | <pre> | ||
make ImageAverage | make ImageAverage | ||
</pre> | </pre> | ||
+ | また、下記のコマンドでは複数画像に対してのCTF補正を行います。<br> | ||
+ | <pre> | ||
+ | make MULTICTF | ||
+ | </pre> | ||
+ | 下記のコマンドではCTF補正済みのファイルをtiff画像として出力します。<br> | ||
+ | <pre> | ||
+ | CTF2TIFF | ||
+ | </pre> | ||
+ | <br> | ||
===== ジーメンススター(ステップ) ===== | ===== ジーメンススター(ステップ) ===== |
2014年9月22日 (月) 02:14時点における版
透過型電子顕微鏡画像は、通常、その撮影条件に応じて、画像が変調されて撮影されます。撮影された画像をそのまま解釈しようとすると問題が生じます。特に、コントラストが低い生物試料では、デフォーカス量を大きくとって、コントラストを増強しようとします。そのため、非常に大きな変調を受けます。
実空間で考えると、観察像は、真の像の一つ一つの点がどのように広がるかを示す、点拡がり関数(PSF: Point Spread Function)が各点毎に畳み込まれた(convolute)された画像になります。
一方で、逆空間(フーリエ空間)では、観察像のフーリエ変換は、この点拡がり関数のフーリエ変換されたものであるコントラスト伝達関数(CTF: Contrast Transfer Function)が、真の画像に積となったものとなります。
ここでは、Eosを使って、CTFの影響がどのように出るかを計算しながら、透過型電子顕微鏡の画像の意味を理解しながら、コントラストの補正を行う方法について、まとめておきます。
また、こちらにCTF関連の資料を挙げておりますので、こちらの方もご覧下さい。
電子顕微鏡画像のもつ特徴とその画像処理(PDF)
電子顕微鏡画像のDigital画像処理v2.2(PDF)
目次
CTFによる変調を受けた画像を得るためには
Eosでは、真の画像がどのように変調を受けるかをシミュレートするためのツールがいくつか有ります。 画像に対して、CTFの影響をみるためのツールが、mrcImageCTFObservationです。このプログラムを使って、画像変調をかけてみましょう。example-002.mrcをダウンロードして利用してみましょう。
$ mrcImageCTFObservation -i example-002.mrc -o example-002.prectf -kV 200 -Cs 1.2 -df 30000 -A 0.1 -Ain 0.3 -ctfMode 33 $ Display2 -i example-002.mrc & $ Display2 -i example-002.mrc -Inverse &
また、CTF関数そのものをインタラクティブに観察するには、ctfDisplayというツールがあります。このツールは、CTF関数そのものを決定するためのインタラクティブなツールでも有ります。
$ mrcImageFFT -i example-000.mrc -o example-000.fft $ ctfDisplay -i example-000.fft -o example-000.ctfinfo
CTFのパラメータを決定するためには
Eosでは、自動的にCTFパラメータ(デフォーカス量)を決定するプログラムctfDetermineがあります。SNが十分に高く、トーンリングと呼ばれるコントラストが0の領域が明確に現れた場合には、決定することができます。こちらは、現在は、非点に対応できていません。 cryo-EMのデータなどで、コントラストが低い場合、SN比が悪い場合、また、自動決定したデフォーカス量等を確認する意味でも、ctfDisplayというツールを使います。
ここでは、配付したデータを利用してCTFパラメータを、ctfDisplayを用いて決定してみましょう。 まず、一番単純な方法を実行してみましょう。最初に画像ファイルをmrcImageFFTを用いてフーリエ変換し、その後、ctfDisplayを使って、デフォーカス値などを決定します。
$ mrcImageFFT -i example.mrc -o example.fft $ ctfDisplay -i example.fft -o example.ctfinfo
決定したCTFのパラメータは、example.ctfinfoというファイルの中に格納されています。 このファイルを使って、次にCTFの補正を行うことになります。
以下に、このctfDisplayの簡単な使い方を示します。 データはこちら(メディア:example.mrc, メディア:example.fft)からダウンロードしてみて下さい。
$ ctfDisplay -i example.fft -o example.ctfinfo
とすると実行することが出来ます。.ctfinfoのファイルは、指定されない場合も自動的に設定され、存在している場合には、そのデータを読み込んできます。その結果、下記のようなウィンドウが開きます。
この中で、左側の画面がフーリエ変換したスペクトラムを、まん中が、そのスペクトラムを角度方向に平均したもの、右がCTFのための各種パラメータになっています。
下記の手順で、CTF関数を見積もります。
1.スペクトラムがでるようにImin/Imaxを調整します。Logのボタンをおしたほうが見つかりやすいことが多いです。よくわからなかったら、Imin=0.00001, Imax=100000 とし、Logボタンを押せば、どこかに青色のスペクトラムが現れると思います。あとは、そのスペクトラムの範囲をよく見て設定して下さい。最初から分かっているときには、起動時に
$ ctfDisplay -i example.fft -o example.ctfinfo -Imin 0.01 -Imax 100 -Log
とすれば最初から設定できます。
2.同様に自分が見たい範囲で、Rmax[/A]を設定して下さい。Rmax=0.1が1nm, Rmax=0.5が2A, Rmax=1が1Aを示しています。Rminはあまり変更する必要はありません。
3.次に、ノイズのレベルを合わせます。この操作は、CTF補正そのものには通常は関係しませんが、CTFを決定する際に便利です。合わせるためのパラメータは、Inoise、MTF0もしくは、MTF1です。CCDやフィルムなどメディアに応じて、MTFの形がe指数関数型かローレンツ型を選択することができます。MTF0が指数関数型のパラメータ、MTF1がローレンツ型のパラメータです。
4.シグナルのレベルを合わせます。まずは、Inoiseと同じ値をIsignalに設定して下さい。
5.CTFのパラメータを設定します。
5−1:加速電圧[kV]の設定
5−2:球面収差係数 Cs[mm], 色収差係数 Cc[mm]の設定
5−3:照射半角であるAi[mrad]の設定(LaB6で0.15-0.45程度、サーマルフィールドでは0.03-0.05程度、コールドフィールドでは0.02-0.04程度が目安です。条件によって異なります。)
Aiの値は、照射条件によって大きく変化します。撮影条件を決めるために重要なパラメータとも言えます。
5−4:分割数の設定:通常は変更する必要はありません。どうしてもSNが悪いときにこの値を下げてみて下さい。
6.デフォーカスを決定していきます。
6−1 トーンリングが楕円になっている場合には、楕円の長軸と短軸にそれぞれ0軸、1軸のそれぞれが合うように、AxisFor0の角度を設定して下さい。長軸と短軸はどちらが0軸でも問題ありません。うまく軸があった時が、一番シグナル(青い線)の凹凸がはっきりします。
6−2 窪み(トーンリング)の所に、CTF関数(赤い線)の谷がくるようにデフォーカスの値をdefocus0/defocus1のそれぞれを変更して下さい。
6−3 Isignal/Ai/defocusをうまく合わせると第一トーンリングの所の形がよく説明できます。
うまく設定できたときの画面の例が次の様になります。
7.Saveボタンを押して保存します。(出力されたCTF情報ファイル)
8.終了は、ウィンドウを閉じる、qのキーを押す、saveAndExit, Exitのボタンを押すのいずれかで実行できます。
CTFによる変調を補正するためには
Eosでは、CTFによる変調を補正するためには、mrcImageCTFCompensation、あるいは、mrcImageMultiCTFCompensationのいずれかを使います。前者は、一枚の画像のCTF補正を行う場合、後者は同一視野の二枚以上の画像(デフォーカスシリーズ)のCTF補正を行う場合に利用します。
mrcImageCTFCompensationでは、ctfDisplayから出力されたCTFに関する情報から、CTFの補正を行います。
$ mrcImageCTFCompensation -i example.fft -o example.ctf -info2 example.ctfinfo -m 1
とすることで、CTFのうち、位相の補正のみを行うことが出来ます。
mrcImageMultiCTFCompensationを利用する場合には、重ね合わせる画像同士の位置合わせ(アラインメント)を行っておく必要があります。その場合の精度をあげるためには、それぞれの画像の位相補正を終えたものをもちいる方が好ましいと思います。
このチュートリアルの例(example.mrc)では、クラミドモナス鞭毛の切片像に関して、CTFによる変調をかけた画像を示します。全体像は、黒白がひっくり返っただけですが、詳細に観察し、タンパク質分子(外腕ダイニン)の形を観察すると、ずいぶんと形や位置が異なっていることが分かります。
画像は、Display2で観察してみましょう。
$ Display2 -i example.ctf -Inverse & $ Display2 -i example.mrc &
両者を比較すると、全体の構造がそれほど大きく変わっている訳ではありませんが、ナノメータオーダーの構造が大きく異なっていることが分かります。つまり、細胞全体の構造を観察する分には、CTF補正は特に必要有りませんが、タンパク質レベルの構造を議論するためにはどうしても補正が必要であるのです。
CTF補正に関する統合プロセス定義書
ここではMakefileを用いて、前処理など一部の処理を自動化したCTF補正の例を挙げていきます。統合コマンド#CTFの補正ではここで使用しているMakefileなどをまとめてありますので、そちらもご覧下さい。
例1 Makefileを使ったCTF補正
普段は、もう少し画像の前処理を実施しています。下記に、非常に一般的なCTF補正の際にもちいるMakefileの例を示しています。
$ make
とうつと、実行のためのヘルプファイルが出力されています。
$ make TIF2CTF
とうつことで、実行したディレクトリの中にある、.tifというサフィックスのついたファイルが全てCTF補正されます。途中で、ctfDisplayを使った、インタラクティブなCTFの決定・確認のステップがあります。したがって、全自動タイプの定義書ではありません。
ファイル内容
.SUFFIXES: .tif .mrc .cen .nor .fft .ctfinfoauto \ .ctfinfo .ctf .ctfps -include TIFS -include MRCS -include CENS -include NORS -include FFTS -include CTFAutoList -include CTFInfoList -include CTFS # # Setting Parameter # [A/pixel] RESOLUTION=3.80 # JOB Number JN=-j 4 ##################### Help:: @echo "----- How To Use -----" @echo "1. Prepare files(xxxx.tif) to be analyzed." @echo "2. make TIF2CTF" @echo "" @echo "--- Special Target ---" @echo "make DispCEN" @echo "make DispCTF" @echo "make PrintCTF" @echo "" @echo "--- Current Parameter ---" @echo "RESOLUTION: $(RESOLUTION) [A/pixel]" @echo "Job number for make: $(JN)" mrc: $(TIFS:.tif=.mrc) cen: $(MRCS:.mrc=.cen) nor: $(CENS:.cen=.nor) fft: $(NORS:.nor=.fft) ctfinfoauto: $(FFTS:.fft=.ctfinfoauto) ctfinfo: $(CTFAutoList:.ctfinfoauto=.ctfinfo) ctf: $(CTFInfoList:.ctfinfo=.ctf) ctfps: $(CTFInfoList:.ctfinfo=.ctfps) TIF2CTF:: make TIFS; make $(JN) mrc; make MRCS; make $(JN) cen; make CENS; make $(JN) nor; make NORS; make $(JN) fft; make FFTS; make $(JN) ctfinfoauto; make CTFAutoList; make ctfinfo; make CTFInfoList; make $(JN) ctf; make CTFS TIFS:: echo "TIFS=\\" > TIFS ls -1 *.tif | sed s/tif/tif\\\\/ >> TIFS echo "" >> TIFS MRCS:: echo "MRCS=\\" > MRCS ls -1 *.mrc | sed s/mrc/mrc\\\\/ >> MRCS echo "" >> MRCS CENS:: echo "CENS=\\" > CENS ls -1 *.cen | sed s/cen/cen\\\\/ >> CENS echo "" >> CENS NORS:: echo "NORS=\\" > NORS ls -1 *.nor | sed s/nor/nor\\\\/ >> NORS echo "" >> NORS FFTS:: echo "FFTS=\\" > FFTS ls -1 *.fft | sed s/fft/fft\\\\/ >> FFTS echo "" >> FFTS CTFAutoList:: echo "CTFAutoList=\\" > CTFAutoList ls -1 *.ctfinfoauto | sed s/ctfinfoauto/ctfinfoauto\\\\/ >> CTFAutoList echo "" >> CTFAutoList CTFInfoList:: echo "CTFInfoList=\\" > CTFInfoList ls -1 *.ctfinfo | sed s/ctfinfo/ctfinfo\\\\/ >> CTFInfoList echo "" >> CTFInfoList CTFS:: echo "CTFS=\\" > CTFS ls -1 *.ctf | sed s/ctf/ctf\\\\/ >> CTFS echo "" >> CTFS .tif.mrc: tiff2mrc -i $*.tif -o $*.mrc -r $(RESOLUTION) -m 0 .mrc.cen: mrcImageCenterGet -i $*.mrc -o $*.cen -Nx 1000 -Ny 1000 DispCEN: for i in $(CENS) ;\ do \ echo $$i;\ Display2 -i $$i;\ done .cen.nor: mrcImageAbnormalValueRemove -i $*.cen -o $*.nor -u 65535 16384 -m 1 .nor.fft: mrcImageFFT -i $*.nor -o $*.fft .fft.ctfinfoauto: ctfDetermine -i $*.fft -o $*.ctfinfoauto -D 50000 -m 128 \ -CutLow 0.025 -CutHigh 0.15 -d 3 -Cc 0.7 -Cs 2.1 .ctfinfoauto.ctfinfo: if [ ! -f $*.ctfinfo ] ; then \ if [ -f default.ctfinfo ] ; then \ cat default.ctfinfo >> $*.ctfinfo ; \ else \ cat $*.ctfinfoauto >> $*.ctfinfo ; \ fi \ fi ctfDisplay -i $*.fft mv $@ $@.tmp grep .: $@.tmp > $@ awk '!/.ctfinfo/ {print $$0}' $@ > default.ctfinfo .ctfinfo.ctf: mv $*.ctfinfo $*.ctfinfo.tmp2 grep .: $*.ctfinfo.tmp2 > $*.ctfinfo mrcImageCTFCompensation -i $*.fft -info2 $*.ctfinfo -o $*.ctf -m 1 .ctf.ctfps: mrcImagePrint -i $*.ctf -o $*.ctfps -I -A -m 17 -S 0.08 DispCTF: for i in $(CTFS) ;\ do \ echo $$i;\ Display2 -i $$i -Inverse;\ done PrintCTF: for i in $(CTFS) ;\ do \ echo $$i;\ if [ -f $$i ] ; then \ make `basename $$i .ctf`.ctfps; \ fi \ done
実行例
make TIF2CTF make DispCEN & make DispCTF &
例2 Makefileを使ったCTF補正2
別の画像を入力ファイルとしたCTF補正の例を示します。
ファイル内容
こちらのMakefileを使用します。このファイルは例1のMakefileも使用します。例1のMakefileはMakefile.commonとリネームして同じディレクトリに置き、例2のMakefileは下記のように変更します。
#### INCLUDE #### #-include ../CTFCorrection1/Makefile -include Makefile.common
実行例
make InitialCTFDataFromMRC make ProcessForInput make TIF2CTF make Input.tiff
実行結果
元画像ファイル |
CTF補正前 |
CTF補正後 |
デフォーカスが合ってくると、細部が実際の画像に近づいていき、正しい画像の解釈を行いやすくなります。上記に関して例えば、元画像のタンパク質の右下部には3つの白い点があります。これがCTF補正前では消えて(灰色に塗りつぶされて)しまっていますが、補正後では点として現れています。さらに元画像の中央部には黒い穴がありますが、これもCTF補正前では白く消えてしまっていて、補正すると現れるようになっています。
例3 ジーメンススターでCTFの影響を確認する
ジーメンススターを使用するとCTF補正による変化が顕著に現れるので、分解能がどこまで良くなっているかが観察しやすいです。ジーメンススターはmrcImageSiemensStarから作ることが出来ます。
実行例
例2で使用したMakefileを使用して、下記のコマンドを入力するとジーメンススターについてCTF補正を行い、その前後を観察することが出来ます。
make InitialSiemensStar make ProcessForInput make TIF2CTF make Input.tiff make DispCEN & make DispCTF &
ジーメンススター(ステップ)
元画像 |
CTF補正前(白黒反転) |
CTF補正後(使用したCTF補正情報) |
CTFの補正前では半径44ピクセル程度の灰色のリングができており、その内と外で白黒のパターンが異なります。(内側のパターンが反転している)補正後では白黒のパターンが元に戻り、半径12ピクセル程度の灰色のリングになっています。これらの画像のLengthは1.72[Å/Pixel]ですので、26Å → 7Å程度に分解能が改善されたことが分かります。但し、26Å付近や7Å内側でも白黒のパターンが見えるようにはなっていますが、これは元の画像がサイン波でない(ステップ)ために高周波成分が回復したためです。
また、下記のようにオプション(mrcImageSiemensStar(-Shape))を変更することで、Cos型のジーメンススターやリニアの画像でもCTF補正の前後を観察することが出来ます。
ジーメンススター(Cos)
変更箇所
### For mrcImageSiemensStar #SSTAR_SHAPE=0 SSTAR_SHAPE=1
同様のコマンドで実行
元画像 |
CTF補正前(白黒反転) |
CTF補正後(使用したCTF補正情報) |
サイン波の形状(通常撮影される画像の多く)の場合は補正前の灰色のリングや内側の白黒パターンは元に戻りません。
リニア(ステップ)
変更箇所
### For mrcImageSiemensStar #SSTAR_SHAPE=0 SSTAR_SHAPE=2
同様のコマンドで実行
元画像 |
CTF補正前(白黒反転) |
CTF補正後(使用したCTF補正情報) |
リニア(Cos)
変更箇所
### For mrcImageSiemensStar #SSTAR_SHAPE=0 SSTAR_SHAPE=3
同様のコマンドで実行
元画像 |
CTF補正前(白黒反転) |
CTF補正後(使用したCTF補正情報) |
例4 ノイズを含んだ画像でのCTFの影響
通常の画像ではノイズが含まれていますので、その場合でもCTF補正が出来るか実行してみます。
変更箇所
### For mrcImageNoiseAdd #NSRATIO=0 NSRATIO=0.5
ジーメンススター(ステップ)
元画像 |
CTF補正前(白黒反転) |
CTF補正後 |
ジーメンススター(Cos)
変更箇所
### For mrcImageSiemensStar #SSTAR_SHAPE=0 SSTAR_SHAPE=1
元画像 |
CTF補正前(白黒反転) |
CTF補正後 |
例5 デフォーカス毎の画像の違い
同一視野においてデフォーカスが異なる画像についての違いを見てみます。
実行例
デフォーカスを徐々に増加させたときの画像の違いを見てみます。基本的に大まかな形は低周波成分に、細かい白黒パターンがはっきり区別できる点は高周波成分に対応しています。これに着目しながら違いを見てみます。
ファイル内容
こちらのMakefileとこちらのMakefileを使用します。このファイルは例1および例2のMakefileも使用します。例1はMakefile.common、例2はMakefile.common2(内容は例2と同じ)とそれぞれリネームして同じディレクトリに置き、例5のMakefileは下記のように変更します。
#### INCLUDE #### #-include ../../TIPS/LoopCommand/Makefile.config #-include ../CTFCorrection2/Makefile -include Makefile.config -include Makefile.common2
下記のコマンドにより0 ~ 54000でデフォーカスを変更した画像の生成からCTF補正までを行います。
make all4
ジーメンススター(ステップ)
デフォーカスの値を0 ~ 54000でとって、CTF, FFT, CTF補正を掛けたときのそれぞれの画像です。
ジーメンススター(Cos)
Makefile.common2での変更箇所
### For mrcImageSiemensStar #SSTAR_SHAPE=0 SSTAR_SHAPE=1
同様のコマンドで実行
デフォーカスを大きくするにつれて、CTF補正後の灰色のリングが広がっていき、これより内側(高周波成分)はぼやけて(灰色掛かっていて)、これより外側(低周波成分)はある程度まで鮮明(白黒はっきり)になっています。しかし、大きくしすぎると元画像のサイズよりも外の範囲にも白黒のパターン(偽画像)が生じてきています。FFT画像を見ると、デフォーカスが大きくなるにつれて高周波成分が失われていくことがよく分かります。
リニア(ステップ)
Makefile.common2での変更箇所
### For mrcImageSiemensStar #SSTAR_SHAPE=0 SSTAR_SHAPE=2
同様のコマンドで実行
リニア(Cos)
Makefile.common2での変更箇所
### For mrcImageSiemensStar #SSTAR_SHAPE=0 SSTAR_SHAPE=3
同様のコマンドで実行
同様にデフォーカスが大きくなるにつれて高周波成分が失われていくので、CTF補正を掛けても小さい模様は元に戻らなくなっていきます。
例6 デフォーカスの異なる画像の平均化
同一視野においてデフォーカスが異なる画像の平均化についての違いを見てみます。
ファイル内容
こちらのMakefileを使用します。tutorial/CTFCorrection/CTFCorrection5/ディレクトリにて実行します。
実行例
下記のコマンドを実行すると、同じジーメンスターから異なるデフォーカスの画像を作成し、それぞれにCTF補正を掛けます。(それぞれについてこれまでと同様にctfDisplayが開きます)
make InitialSiemensStar make ProcessForInput make ProcessForInput2 make TIF2CTF2
この後に下記のコマンドを入力すると、補正済みの2つの画像に対する平均画像を出力します。
make ImageAverage
また、下記のコマンドでは複数画像に対してのCTF補正を行います。
make MULTICTF
下記のコマンドではCTF補正済みのファイルをtiff画像として出力します。
CTF2TIFF
ジーメンススター(ステップ)
|
|
2つの画像を平均化することで灰色のリングの部分が補間されています。
ジーメンススター(Cos)
Makefile.common2での変更箇所
### For mrcImageSiemensStar #SSTAR_SHAPE=0 SSTAR_SHAPE=1
同様のコマンドで実行
CTF補正画像を平均化することで、中間辺りまで白黒のパターンが鮮明になりました。
リニア(ステップ)
Makefile.common2での変更箇所
### For mrcImageSiemensStar #SSTAR_SHAPE=0 SSTAR_SHAPE=2
同様のコマンドで実行
平均することで元画像により近くなっていることが分かります。
リニア(Cos)
Makefile.common2での変更箇所
### For mrcImageSiemensStar #SSTAR_SHAPE=0 SSTAR_SHAPE=3
同様のコマンドで実行
例7 デフォーカスの異なる画像の平均化2
デフォーカスの違いによる比較を別のファイルでも試してみます。
実行例
例5で使用したMakefile、例2で使用した入力ファイル(Input.inimrcにリネーム)を使って下記のコマンドを実行します。
make InitialCTFDataFromMRC make ProcessForInput make ProcessForInput2 make TIF2CTF2 make Input.tiff make Input-2.tiff make ImageAverage
補正画像同士を平均化することにより、右側の白い点や中下側の白点の構造が元画像により近くなっています。
例8 デフォーカスの異なる画像の平均化3
その他
Eos以外にも複数のCTF補正のプログラムがあります。下記にリストしておきます。