「CTF補正」の版間の差分

提供: Eospedia
移動: 案内検索
(例4)
(例4)
行410: 行410:
 
<br>
 
<br>
  
==== ファイル内容 ====
 
 
==== ファイル内容 ====
 
==== ファイル内容 ====
 
[[:Media:Makefile-CTFCorrection3.zip|こちらのMakefile]]を使用します。このファイルは例1および例2のMakefileも使用します。例1はMakefile.common、例2はMakefile.common2(内容は例2と同じ)とそれぞれリネームして同じディレクトリに置き、例4のMakefileは下記のように変更します。<br>
 
[[:Media:Makefile-CTFCorrection3.zip|こちらのMakefile]]を使用します。このファイルは例1および例2のMakefileも使用します。例1はMakefile.common、例2はMakefile.common2(内容は例2と同じ)とそれぞれリネームして同じディレクトリに置き、例4のMakefileは下記のように変更します。<br>

2014年9月10日 (水) 06:25時点における版

 透過型電子顕微鏡画像は、通常、その撮影条件に応じて、画像が変調されて撮影されます。撮影された画像をそのまま解釈しようとすると問題が生じます。特に、コントラストが低い生物試料では、デフォーカス量を大きくとって、コントラストを増強しようとします。そのため、非常に大きな変調を受けます。

 実空間で考えると、観察像は、真の像の一つ一つの点がどのように広がるかを示す、点拡がり関数(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のファイルは、指定されない場合も自動的に設定され、存在している場合には、そのデータを読み込んできます。その結果、下記のようなウィンドウが開きます。

ctfDisplay-startup.png

この中で、左側の画面がフーリエ変換したスペクトラムを、まん中が、そのスペクトラムを角度方向に平均したもの、右が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をうまく合わせると第一トーンリングの所の形がよく説明できます。

うまく設定できたときの画面の例が次の様になります。

ctfDisplay-example.png


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補正は特に必要有りませんが、タンパク質レベルの構造を議論するためにはどうしても補正が必要であるのです。

Display2を使ったCTF補正前後での画像の比較
CTFCorrection1.png


CTF補正に関する統合プロセス定義書 

例1

 普段は、もう少し画像の前処理を実施しています。下記に、非常に一般的なCTF補正の際にもちいるMakefileの例を示しています。

$ make

とうつと、実行のためのヘルプファイルが出力されています。

$ make TIF2CTF

とうつことで、実行したディレクトリの中にある、.tifというサフィックスのついたファイルが全てCTF補正されます。途中で、ctfDisplayを使った、インタラクティブなCTFの決定・確認のステップがあります。したがって、全自動タイプの定義書ではありません。

ファイル内容

CTF補正用のMakefile

.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

実行例

DispCEN, DispCTFを使うと、それぞれCTF補正前(中心部を切り出したもの)と補正後を見ることが出来ます。
コマンド例
make TIF2CTF
make DispCEN &
make DispCTF &
実行後(Display2が開く)

CTFCorrection.png

補正前と補正後の比較が出来ます。


例2

別の画像を入力ファイルとしたCTF補正の例を示します。

ファイル内容

こちらのMakefileを使用します。このファイルは例1のMakefileも使用します。例1のMakefileはMakefile.commonとリネームして同じディレクトリに置き、例2のMakefileは下記のように変更します。

#### INCLUDE ####
#-include ../CTFCorrection1/Makefile
-include Makefile.common


実行例

下記のコマンドを入力すると、元の画像ファイル(.inimrc)からCTFのシミュレーション画像(.prectf)を作り、それに対してCTF補正を実施します。
make InitialCTFDataFromMRC
make ProcessForInput
make TIF2CTF
make Input.tiff


実行結果

Input-B120.png

CTF-Correction2-1.png

CTF-Correction2-2.png

元画像ファイル
(Input.inimrcにリネーム)

CTF補正前
(Input.prectfにリネーム)
画像の白黒を反転して表示

CTF補正後
(Input.ctfにリネーム)

デフォーカスが合ってくると、細部が実際の画像に近づいていき、正しい画像の解釈を行いやすくなります。上記に関して例えば、元画像のタンパク質の右下部には3つの白い点があります。これがCTF補正前では消えて(灰色に塗りつぶされて)しまっていますが、補正後では点として現れています。さらに元画像の中央部には黒い穴がありますが、これもCTF補正前では白く消えてしまっていて、補正すると現れるようになっています。

例3

CTF補正によって分解能がどこまで良くなるかを観察するにはジーメンススターを使用するとその変化が顕著に現れます。

実行例

例2で使用したMakefileを使用して、下記のコマンドを入力するとジーメンススターについてCTF補正を行い、その前後を観察することが出来ます。

make InitialSiemensStar
make ProcessForInput
make TIF2CTF
make Input.tiff
make DispCEN &
make DispCTF &


CTFCorrection3-1.png

CTFCorrection3-2.png

CTFCorrection3-3.png

元画像

CTF補正前(白黒反転)

CTF補正後(使用したCTF補正情報)

CTF補正後の画像では、中心から12ピクセル程度に灰色の円ができています。この画像のLengthは1.72[Å/Pixel]ですので、20Å程度の分解能になっていることが分かります。

例4

同一視野においてデフォーカスが異なる画像についての違いを見てみます。

ファイル内容

こちらのMakefileを使用します。このファイルは例1および例2のMakefileも使用します。例1はMakefile.common、例2はMakefile.common2(内容は例2と同じ)とそれぞれリネームして同じディレクトリに置き、例4のMakefileは下記のように変更します。

#### INCLUDE ####
#-include ../CTFCorrection1/Makefile
#-include ../CTFCorrection2/Makefile
#-include Makefile.common
-include Makefile.common2


実行例

その他

Eos以外にも複数のCTF補正のプログラムがあります。下記にリストしておきます。