「CTF補正」の版間の差分

提供: Eospedia
移動: 案内検索
(CTFによる変調を補正するためには)
(CTFのパラメータを決定するためには)
行16: 行16:
  
 
== CTFのパラメータを決定するためには ==
 
== CTFのパラメータを決定するためには ==
 Eosでは、自動的にCTFパラメータ(デフォーカス量)を決定するプログラム[[ctfDetemine]]があります。SNが十分に高く、トーンリングと呼ばれるコントラストが0の領域が明確に現れた場合には、決定することができます。こちらは、現在は、非点に対応できていません。
+
 Eosでは、自動的に[[CTF]]パラメータ(デフォーカス量)を決定するプログラム[[ctfDetemine]]があります。SNが十分に高く、トーンリングと呼ばれるコントラストが0の領域が明確に現れた場合には、決定することができます。こちらは、現在は、非点に対応できていません。
 
 
 
 
 
 cryo-EMのデータなどで、コントラストが低い場合、SN比が悪い場合、また、自動決定したデフォーカス量等を確認する意味でも、[[ctfDisplay]]というツールを使います。
 
 cryo-EMのデータなどで、コントラストが低い場合、SN比が悪い場合、また、自動決定したデフォーカス量等を確認する意味でも、[[ctfDisplay]]というツールを使います。
  
 データを利用してCTFパラメータを決定してみましょう。
+
 ここでは、配付したデータを利用してCTFパラメータを、[[ctfDisplay]]を用いて決定してみましょう。
 +
まず、一番単純な方法を実行してみましょう。最初に画像ファイルを[[mrcImageFFT]]を用いてフーリエ変換し、その後、[[ctfDisplay]]を使って、デフォーカス値などを決定します。
  
 +
$ mrcImageFFT -i example.mrc -o example.fft
 +
$ ctfDisplay -i example.fft -o example.ctfinfo
 +
 +
決定した[[CTF]]のパラメータは、example.ctfinfoというファイルの中に格納されています。
 +
このファイルを使って、次にCTFの補正を行うことになります。
 +
 +
 普段は、もう少し画像の前処理を実施しています。下記に、非常に一般的な[[CTF補正]]の際にもちいる[[Makefile]]の例を示しています。
 +
 +
<pre>
 +
.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
 +
</pre>
  
 
== CTFによる変調を補正するためには ==
 
== CTFによる変調を補正するためには ==

2012年9月21日 (金) 10:18時点における版

透過型電子顕微鏡画像は、通常、その撮影条件に応じて、画像が変調されて撮影されます。撮影された画像をそのまま解釈しようとすると問題が生じます。特に、コントラストが低い生物試料では、デフォーカス量を大きくとって、コントラストを増強しようとします。そのため、非常に大きな変調を受けます。  実空間で考えると、観察像は、真の像の一つ一つの点がどのように広がるかを示す、点拡がり関数(PSF: Point Spread Function)が各点毎に畳み込まれた(convolute)された画像になります。  一方で、逆空間(フーリエ空間)では、観察像のフーリエ変換は、この点拡がり関数のフーリエ変換されたものであるコントラスト伝達関数(CTF: Contrast Transfer Function)が、真の画像に積となったものとなります。  ここでは、Eosを使って、CTFの影響がどのように出るかを計算しながら、透過型電子顕微鏡の画像の意味を理解しながら、コントラストの補正を行う方法について、まとめておきます。


CTFによる変調を受けた画像を得るためには

 Eosでは、真の画像がどのように変調を受けるかをシミュレートするためのツールがいくつか有ります。  画像に対して、CTFの影響をみるためのツールが、mrcImageCTFCompensationです。このプログラムを使って、画像変調をかけてみましょう。  また、CTF関数そのものをインタラクティブに観察するには、ctfDisplayというツールがあります。このツールは、CTF関数そのものを決定するためのインタラクティブなツールでも有ります。  

CTFのパラメータを決定するためには

 Eosでは、自動的にCTFパラメータ(デフォーカス量)を決定するプログラムctfDetemineがあります。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の補正を行うことになります。

 普段は、もう少し画像の前処理を実施しています。下記に、非常に一般的な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

CTFによる変調を補正するためには

 Eosでは、CTFによる変調を補正するためには、mrcImageCTFCompensation、あるいは、mrcImageCMultiCTFCompensationのいずれかを使います。前者は、一枚の画像のCTF補正を行う場合、後者は同一視野の二枚以上の画像(デフォーカスシリーズ)のCTF補正を行う場合に利用します。

 mrcImageCTFCompensationでは、ctfDisplayから出力されたCTFに関する情報から、CTFの補正を行います。

 mrcImageMultiCTFCompensationを利用する場合には、重ね合わせる画像同士の位置合わせ(アラインメント)を行っておく必要があります。その場合の精度をあげるためには、それぞれの画像の位相補正を終えたものをもちいる方が好ましいと思います。

 クラミドモナス鞭毛の切片像に関して、CTFによる変調をかけた画像を示します。全体像は、黒白がひっくり返っただけですが、詳細に観察し、タンパク質分子(外腕ダイニン)の形を観察すると、ずいぶんと形や位置が異なっていることが分かります。

 画像は、Display2で観察してみましょう。