「CTF補正」の版間の差分

提供: Eospedia
移動: 案内検索
(実行例)
(CTFのパラメータを決定するためには)
 
(2人の利用者による、間の22版が非表示)
行1: 行1:
 透過型電子顕微鏡画像は、通常、その撮影条件に応じて、画像が変調されて撮影されます。撮影された画像をそのまま解釈しようとすると問題が生じます。特に、[[コントラスト]]が低い生物試料では、[[デフォーカス量]]を大きくとって、[[コントラスト]]を増強しようとします。そのため、非常に大きな変調を受けます。
+
 透過型電子顕微鏡画像は、通常、その撮影条件に応じて、画像が変調されて撮影されます。撮影された画像をそのまま解釈しようとすると問題が生じます。特に、[[コントラスト]]が低い生物試料では、[[デフォーカス量]]を大きくとって、[[コントラスト]]([[位相コントラスト]])を増強しようとします。そのため、非常に大きな変調を受けます。
  
 
 実空間で考えると、観察像は、真の像の一つ一つの点がどのように広がるかを示す、点拡がり関数([[PSF]]: Point Spread Function)が各点毎に畳み込まれた(convolute)された画像になります。
 
 実空間で考えると、観察像は、真の像の一つ一つの点がどのように広がるかを示す、点拡がり関数([[PSF]]: Point Spread Function)が各点毎に畳み込まれた(convolute)された画像になります。
行59: 行59:
 
  $ ctfDisplay -i example.fft -o example.ctfinfo -Imin 0.01 -Imax 100 -Log
 
  $ ctfDisplay -i example.fft -o example.ctfinfo -Imin 0.01 -Imax 100 -Log
  
とすれば最初から設定できます。
+
とすれば最初から設定できます。<br>
 +
操作動画: [[:Media:ctfDisplay-0.mov|(.mov)]] [[:Media:ctfDisplay-0.mp4|(.mp4)]]<br>
 +
<br>
  
2.同様に自分が見たい範囲で、Rmax[/A]を設定して下さい。Rmax=0.1が1nm, Rmax=0.5が2A, Rmax=1が1Aを示しています。Rminはあまり変更する必要はありません。
+
2.同様に自分が見たい範囲で、Rmax[/A]を設定して下さい。Rmax=0.1が1nm, Rmax=0.5が2A, Rmax=1が1Aを示しています。Rminはあまり変更する必要はありません。<br>
 +
操作動画: [[:Media:ctfDisplay-2.mov|(.mov)]] [[:Media:ctfDisplay-2.mp4|(.mp4)]]<br>
 +
<br>
  
3.次に、ノイズのレベルを合わせます。この操作は、CTF補正そのものには通常は関係しませんが、CTFを決定する際に便利です。合わせるためのパラメータは、Inoise、MTF0もしくは、MTF1です。CCDやフィルムなどメディアに応じて、MTFの形がe指数関数型かローレンツ型を選択することができます。MTF0が指数関数型のパラメータ、MTF1がローレンツ型のパラメータです。
+
3.次に、ノイズのレベルを合わせます。この操作は、CTF補正そのものには通常は関係しませんが、CTFを決定する際に便利です。合わせるためのパラメータは、Inoise、MTF0もしくは、MTF1です。CCDやフィルムなどメディアに応じて、MTFの形がe指数関数型かローレンツ型を選択することができます。MTF0が指数関数型のパラメータ、MTF1がローレンツ型のパラメータです。<br>
  
4.シグナルのレベルを合わせます。まずは、Inoiseと同じ値をIsignalに設定して下さい。
+
※ 同じIが使われていますが、InoiseやIsignalは、表示されているI(Imin, Imaxなども含む。これはパワーで強度の2乗)と異なりますので注意して下さい。ちょうどルートをとったものだと考えると合わせることができます。
 +
 
 +
※ MTFは軸方向で異なる可能性があります。多くの場合は、ドリフトなどによるものです。現在のバージョンは異なるMTFには対応出来ていません。
 +
 
 +
<br>
 +
 
 +
4.シグナルのレベルを合わせます。まずは、Inoiseと同じ値をIsignalに設定して下さい。<br>
 +
操作動画(3, 4): [[:Media:ctfDisplay-3.mov|(.mov)]] [[:Media:ctfDisplay-3.mp4|(.mp4)]]<br>
 +
<br>
  
 
5.CTFのパラメータを設定します。
 
5.CTFのパラメータを設定します。
行77: 行89:
 
     Aiの値は、照射条件によって大きく変化します。撮影条件を決めるために重要なパラメータとも言えます。
 
     Aiの値は、照射条件によって大きく変化します。撮影条件を決めるために重要なパラメータとも言えます。
  
 5−4:分割数の設定:通常は変更する必要はありません。どうしてもSNが悪いときにこの値を下げてみて下さい。
+
 5−4:分割数の設定:通常は変更する必要はありません。どうしてもSNが悪いときにこの値を下げてみて下さい。<br>
 +
<br>
  
 
6.デフォーカスを決定していきます。
 
6.デフォーカスを決定していきます。
行88: 行101:
  
 
うまく設定できたときの画面の例が次の様になります。
 
うまく設定できたときの画面の例が次の様になります。
[[ファイル:ctfDisplay-example.png|center|840px]]
+
[[ファイル:ctfDisplay-example.png|center|840px]]<br>
 +
<br>
  
  
7.Saveボタンを押して保存します。([[Media:Outdata-ctfDisplay.ctfinfo.zip|出力されたCTF情報ファイル]])
+
7.Saveボタンを押して保存します。([[Media:Outdata-ctfDisplay.ctfinfo.zip|出力されたCTF情報ファイル]])<br>
 +
<br>
  
8.終了は、ウィンドウを閉じる、qのキーを押す、saveAndExit, Exitのボタンを押すのいずれかで実行できます。
+
8.終了は、ウィンドウを閉じる、qのキーを押す、saveAndExit, Exitのボタンを押すのいずれかで実行できます。<br>
 +
操作動画(5 ~ 8): [[:Media:ctfDisplay-4.mov|(.mov)]] [[:Media:ctfDisplay-4.mp4|(.mp4)]]<br>
 +
<br>
  
 
== CTFによる変調を補正するためには ==
 
== CTFによる変調を補正するためには ==
行317: 行334:
  
 
==== ファイル内容 ====
 
==== ファイル内容 ====
[[:Media:Makefile-CTFCorrection2.zip|こちらのMakefile]]を使用します。このファイルは例1のMakefileも使用します。例1のMakefileはMakefile.commonとリネームして同じディレクトリに置き、例2のMakefileは下記のように変更します。<br>
+
[[:Media:Makefile-CTFCorrection2.zip|こちらのMakefile]] を使用します。CTFCorrection/CTFCorrectionディレクトリ内で実行します。<br>
<pre>
+
#### INCLUDE ####
+
#-include ../CTFCorrection1/Makefile
+
-include Makefile.common
+
</pre>
+
<br>
+
  
 
==== 実行例 ====
 
==== 実行例 ====
 
<div>下記のコマンドを入力すると、元の画像ファイル(.inimrc)から[[mrcImageCTFObservation]]を使って、CTFのシミュレーション画像(.prectf)を作り、それに対してCTF補正を実施します。</div>
 
<div>下記のコマンドを入力すると、元の画像ファイル(.inimrc)から[[mrcImageCTFObservation]]を使って、CTFのシミュレーション画像(.prectf)を作り、それに対してCTF補正を実施します。</div>
 
<pre>
 
<pre>
make InitialCTFDataFromMRC
+
make all2
make ProcessForInput
+
make TIF2CTF
+
make Input.tiff
+
 
</pre>
 
</pre>
 
<br>
 
<br>
行374: 行382:
  
 
<pre>
 
<pre>
make InitialSiemensStar
+
make all2S
make ProcessForInput
+
make TIF2CTF
+
make Input.tiff
+
make DispCEN &
+
make DispCTF &
+
 
</pre>
 
</pre>
 
<br>
 
<br>
行537: 行540:
 
<tr>
 
<tr>
 
<td>
 
<td>
元画像
+
元画像(ノイズ無し)
 
</td>
 
</td>
 
<td>
 
<td>
CTF補正前(白黒反転)
+
ノイズを加えたCTF補正前(白黒反転)
 
</td>
 
</td>
 
<td>
 
<td>
行571: 行574:
 
<tr>
 
<tr>
 
<td>
 
<td>
元画像
+
元画像(ノイズ無し)
 
</td>
 
</td>
 
<td>
 
<td>
CTF補正前(白黒反転)
+
ノイズを加えたCTF補正前(白黒反転)
 
</td>
 
</td>
 
<td>
 
<td>
行580: 行583:
 
</td>
 
</td>
 
</table>
 
</table>
 +
<br>
 +
 +
==== NS比毎の影響 ====
 +
[[:Media:Makefile6.zip|こちらのMakefile]]を使用して、NS比が大きくなっていったときの画像の遷移を下記に示します。
 +
<table>
 +
<tr>
 +
<td><p align="Center">[[画像:CTFCorrection6-1.gif]]<br>
 +
補正前(NS 0.0 ~ 2.0)(+0.1毎)<br></p>
 +
</td>
 +
<td><p align="Center">[[画像:CTFCorrection6-2.gif]]<br>
 +
補正前FFT(NS 0.0 ~ 2.0)(+0.1毎)<br></p>
 +
</td>
 +
<td><p align="Center">[[画像:CTFCorrection6-3.gif]]<br>
 +
補正後(NS 0.0 ~ 2.0)(+0.1毎)<br></p>
 +
</td>
 +
<td><p align="Center">[[画像:Input-SiemensStar1.png]]<br>
 +
元画像<br></p>
 +
</td>
 +
</tr>
 +
</table>
 +
FFT画像を見ると、ノイズの影響により外側のデータが見えなくなっていくのが分かります。これは元画像が持つシグナルにて低周波成分は強度が強く、高周波成分は強度が弱いのに対し、ホワイトノイズは低周波成分でも高周波成分でも同じ強度を持っているので、混ざったときに本来の高周波成分が埋もれて見えにくくなっているためです。これにより、ノイズが大きいとCTF補正を掛けても、高周波成分のデータを元に戻すことが難しくなってしまうことが分かります。<br>
 +
<br>
 +
ノイズの有無における周波数成分の比較([[ctfDisplay]])<br>
 +
<table>
 +
<tr>
 +
<td><p align="Center">[[画像:CTFCorrection6-7.png]]<br>
 +
ノイズ無しの場合<br></p>
 +
</td>
 +
<td><p align="Center">[[画像:CTFCorrection6-8.png]]<br>
 +
ノイズ有り(NS=5.0)の場合<br></p>
 +
</td>
 +
</tr>
 +
</table>
 +
[[ctfDisplay]]にて周波数毎の強度の違いをみると、ノイズ無しのグラフに対して、ノイズ有りのグラフは全体的に底上げされているように見ることが出来ます。<br>
 
<br>
 
<br>
  
行712: 行749:
  
 
=== 例6 デフォーカスの異なる画像の平均化 ===
 
=== 例6 デフォーカスの異なる画像の平均化 ===
同一視野においてデフォーカスが異なる画像の平均化についての違いを見てみます。<br>
+
同一視野においてデフォーカスが異なる画像の平均化についての違いを見てみます。通常は[[mrcImageMultiCTFCompensation]]というコマンドを使用して、平均画像を作ります。このコマンドはCTF毎による重み付けをした平均をしているので、[[mrcImageAverage]]で単純に平均するよりも細部まで補間することが出来ます。<br>
 
<br>
 
<br>
  
行772: 行809:
 
<tr>
 
<tr>
 
<td><p align="Center">[[画像:CTFCorrection4-25.png]]<br>
 
<td><p align="Center">[[画像:CTFCorrection4-25.png]]<br>
[[mrcImageAverage]]<br></p>
+
[[mrcImageAverage]]による平均画像<br></p>
 
</td>
 
</td>
 
<td><p align="Center">[[画像:CTFCorrection4-26.png]]<br>
 
<td><p align="Center">[[画像:CTFCorrection4-26.png]]<br>
[[mrcImageMultiCTFCompensation]]<br></p>
+
[[mrcImageMultiCTFCompensation]]による平均画像<br></p>
 
</td>
 
</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
2つの画像を平均化することで灰色のリングの部分が補間されています。<br>
+
いずれの場合も平均化によって補間をすることができますが、[[mrcImageMultiCTFCompensation]]の方がより鮮明な画像にすることができます。<br>
 
<br>
 
<br>
  
行818: 行855:
 
<tr>
 
<tr>
 
<td><p align="Center">[[画像:CTFCorrection4-12.png]]<br>
 
<td><p align="Center">[[画像:CTFCorrection4-12.png]]<br>
[[mrcImageAverage]]<br></p>
+
[[mrcImageAverage]]による平均画像<br></p>
 
</td>
 
</td>
 
<td><p align="Center">[[画像:CTFCorrection4-27.png]]<br>
 
<td><p align="Center">[[画像:CTFCorrection4-27.png]]<br>
[[mrcImageMultiCTFCompensation]]<br></p>
+
[[mrcImageMultiCTFCompensation]]による平均画像<br></p>
 
</td>
 
</td>
 
</tr>
 
</tr>
行864: 行901:
 
<tr>
 
<tr>
 
<td><p align="Center">[[画像:CTFCorrection4-18.png]]<br>
 
<td><p align="Center">[[画像:CTFCorrection4-18.png]]<br>
[[mrcImageAverage]]<br></p>
+
[[mrcImageAverage]]による平均画像<br></p>
 
</td>
 
</td>
 
<td><p align="Center">[[画像:CTFCorrection4-28.png]]<br>
 
<td><p align="Center">[[画像:CTFCorrection4-28.png]]<br>
[[mrcImageMultiCTFCompensation]]<br></p>
+
[[mrcImageMultiCTFCompensation]]による平均画像<br></p>
 
</td>
 
</td>
 
</tr>
 
</tr>
行910: 行947:
 
<tr>
 
<tr>
 
<td><p align="Center">[[画像:CTFCorrection4-24.png]]<br>
 
<td><p align="Center">[[画像:CTFCorrection4-24.png]]<br>
[[mrcImageAverage]]<br></p>
+
[[mrcImageAverage]]による平均画像<br></p>
 
</td>
 
</td>
 
<td><p align="Center">[[画像:CTFCorrection4-29.png]]<br>
 
<td><p align="Center">[[画像:CTFCorrection4-29.png]]<br>
[[mrcImageMultiCTFCompensation]]<br></p>
+
[[mrcImageMultiCTFCompensation]]による平均画像<br></p>
 
</td>
 
</td>
 
</tr>
 
</tr>
行969: 行1,006:
 
</table>
 
</table>
 
補正画像同士を平均化することにより、右側の白い点や中下側の白点の構造が元画像により近くなっています。<br>
 
補正画像同士を平均化することにより、右側の白い点や中下側の白点の構造が元画像により近くなっています。<br>
 
=== 例8 デフォーカスの異なる画像の平均化3 ===
 
<br>
 
<br>
 
  
 
== その他 ==
 
== その他 ==

2015年10月11日 (日) 18:23時点における最新版

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

 実空間で考えると、観察像は、真の像の一つ一つの点がどのように広がるかを示す、点拡がり関数(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

とすれば最初から設定できます。
操作動画: (.mov) (.mp4)

2.同様に自分が見たい範囲で、Rmax[/A]を設定して下さい。Rmax=0.1が1nm, Rmax=0.5が2A, Rmax=1が1Aを示しています。Rminはあまり変更する必要はありません。
操作動画: (.mov) (.mp4)

3.次に、ノイズのレベルを合わせます。この操作は、CTF補正そのものには通常は関係しませんが、CTFを決定する際に便利です。合わせるためのパラメータは、Inoise、MTF0もしくは、MTF1です。CCDやフィルムなどメディアに応じて、MTFの形がe指数関数型かローレンツ型を選択することができます。MTF0が指数関数型のパラメータ、MTF1がローレンツ型のパラメータです。

※ 同じIが使われていますが、InoiseやIsignalは、表示されているI(Imin, Imaxなども含む。これはパワーで強度の2乗)と異なりますので注意して下さい。ちょうどルートをとったものだと考えると合わせることができます。

※ MTFは軸方向で異なる可能性があります。多くの場合は、ドリフトなどによるものです。現在のバージョンは異なるMTFには対応出来ていません。


4.シグナルのレベルを合わせます。まずは、Inoiseと同じ値をIsignalに設定して下さい。
操作動画(3, 4): (.mov) (.mp4)

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のボタンを押すのいずれかで実行できます。
操作動画(5 ~ 8): (.mov) (.mp4)

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補正に関する統合プロセス定義書 

ここではMakefileを用いて、前処理など一部の処理を自動化したCTF補正の例を挙げていきます。統合コマンド#CTFの補正ではここで使用しているMakefileなどをまとめてありますので、そちらもご覧下さい。

例1 Makefileを使ったCTF補正

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

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

ファイル内容

こちらのMakefile を使用します。CTFCorrection/CTFCorrectionディレクトリ内で実行します。

実行例

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


実行結果

Input-B120.png

CTF-Correction2-1.png

CTF-Correction2-2.png

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

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

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

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

例3 ジーメンススターでCTFの影響を確認する

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

実行例

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

make all2S


ジーメンススター(ステップ)

CTFCorrection3-1.png

CTFCorrection3-2.png

CTFCorrection3-3.png

元画像

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

同様のコマンドで実行

CTFCorrection3-4.png

CTFCorrection3-5.png

CTFCorrection3-6.png

元画像

CTF補正前(白黒反転)

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

サイン波の形状(通常撮影される画像の多く)の場合は補正前の灰色のリングや内側の白黒パターンは元に戻りません。

リニア(ステップ)

変更箇所

### For mrcImageSiemensStar
#SSTAR_SHAPE=0
SSTAR_SHAPE=2

同様のコマンドで実行

CTFCorrection3-7.png

CTFCorrection3-8.png

CTFCorrection3-9.png

元画像

CTF補正前(白黒反転)

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


リニア(Cos)

変更箇所

### For mrcImageSiemensStar
#SSTAR_SHAPE=0
SSTAR_SHAPE=3

同様のコマンドで実行

CTFCorrection3-10.png

CTFCorrection3-11.png

CTFCorrection3-12.png

元画像

CTF補正前(白黒反転)

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

例4 ノイズを含んだ画像でのCTFの影響

通常の画像ではノイズが含まれていますので、その場合でもCTF補正が出来るか実行してみます。

変更箇所

### For mrcImageNoiseAdd
#NSRATIO=0
NSRATIO=0.5

ジーメンススター(ステップ)

CTFCorrection6-1.png

CTFCorrection6-2.png

CTFCorrection6-3.png

元画像(ノイズ無し)

ノイズを加えたCTF補正前(白黒反転)

CTF補正後


ジーメンススター(Cos)

変更箇所

### For mrcImageSiemensStar
#SSTAR_SHAPE=0
SSTAR_SHAPE=1


CTFCorrection6-4.png

CTFCorrection6-5.png

CTFCorrection6-6.png

元画像(ノイズ無し)

ノイズを加えたCTF補正前(白黒反転)

CTF補正後


NS比毎の影響

こちらのMakefileを使用して、NS比が大きくなっていったときの画像の遷移を下記に示します。

CTFCorrection6-1.gif
補正前(NS 0.0 ~ 2.0)(+0.1毎)

CTFCorrection6-2.gif
補正前FFT(NS 0.0 ~ 2.0)(+0.1毎)

CTFCorrection6-3.gif
補正後(NS 0.0 ~ 2.0)(+0.1毎)

Input-SiemensStar1.png
元画像

FFT画像を見ると、ノイズの影響により外側のデータが見えなくなっていくのが分かります。これは元画像が持つシグナルにて低周波成分は強度が強く、高周波成分は強度が弱いのに対し、ホワイトノイズは低周波成分でも高周波成分でも同じ強度を持っているので、混ざったときに本来の高周波成分が埋もれて見えにくくなっているためです。これにより、ノイズが大きいとCTF補正を掛けても、高周波成分のデータを元に戻すことが難しくなってしまうことが分かります。

ノイズの有無における周波数成分の比較(ctfDisplay)

CTFCorrection6-7.png
ノイズ無しの場合

CTFCorrection6-8.png
ノイズ有り(NS=5.0)の場合

ctfDisplayにて周波数毎の強度の違いをみると、ノイズ無しのグラフに対して、ノイズ有りのグラフは全体的に底上げされているように見ることが出来ます。

例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補正を掛けたときのそれぞれの画像です。

CTFCorrection4-1.gif
補正前(df 0 ~ 54000)(+1000毎)

CTFCorrection4-2.gif
補正前FFT(df 0 ~ 54000)(+1000毎)

CTFCorrection4-3.gif
補正後(df 0 ~ 54000)(+1000毎)

Input-SiemensStar.png
元画像


ジーメンススター(Cos)

Makefile.common2での変更箇所

### For mrcImageSiemensStar
#SSTAR_SHAPE=0
SSTAR_SHAPE=1

同様のコマンドで実行

CTFCorrection4-4.gif
補正前(df 0 ~ 54000)(+1000毎)

CTFCorrection4-5.gif
補正前FFT(df 0 ~ 54000)(+1000毎)

CTFCorrection4-6.gif
補正後(df 0 ~ 54000)(+1000毎)

Input-SiemensStar1.png
元画像

デフォーカスを大きくするにつれて、CTF補正後の灰色のリングが広がっていき、これより内側(高周波成分)はぼやけて(灰色掛かっていて)、これより外側(低周波成分)はある程度まで鮮明(白黒はっきり)になっています。しかし、大きくしすぎると元画像のサイズよりも外の範囲にも白黒のパターン(偽画像)が生じてきています。FFT画像を見ると、デフォーカスが大きくなるにつれて高周波成分が失われていくことがよく分かります。

リニア(ステップ)

Makefile.common2での変更箇所

### For mrcImageSiemensStar
#SSTAR_SHAPE=0
SSTAR_SHAPE=2

同様のコマンドで実行

CTFCorrection4-7.gif
補正前(df 0 ~ 54000)(+1000毎)

CTFCorrection4-8.gif
補正前FFT(df 0 ~ 54000)(+1000毎)

CTFCorrection4-9.gif
補正後(df 0 ~ 54000)(+1000毎)

Input-SiemensStar2.png
元画像


リニア(Cos)

Makefile.common2での変更箇所

### For mrcImageSiemensStar
#SSTAR_SHAPE=0
SSTAR_SHAPE=3

同様のコマンドで実行

CTFCorrection4-10.gif
補正前(df 0 ~ 54000)(+1000毎)

CTFCorrection4-11.gif
補正前FFT(df 0 ~ 54000)(+1000毎)

CTFCorrection4-12.gif
補正後(df 0 ~ 54000)(+1000毎)

Input-SiemensStar3.png
元画像

同様にデフォーカスが大きくなるにつれて高周波成分が失われていくので、CTF補正を掛けても小さい模様は元に戻らなくなっていきます。

例6 デフォーカスの異なる画像の平均化

同一視野においてデフォーカスが異なる画像の平均化についての違いを見てみます。通常はmrcImageMultiCTFCompensationというコマンドを使用して、平均画像を作ります。このコマンドはCTF毎による重み付けをした平均をしているので、mrcImageAverageで単純に平均するよりも細部まで補間することが出来ます。

ファイル内容

こちらのMakefileを使用します。tutorial/CTFCorrection/CTFCorrection5/ディレクトリにて実行します。

実行例

下記のコマンドを実行すると、同じジーメンスターから異なるデフォーカスの画像を作成し、それぞれにCTF補正を掛けます。(それぞれについてこれまでと同様にctfDisplayが開きます)

make InitialSiemensStar
make ProcessForInput
make ProcessForInput2
make TIF2CTF2

この後に下記のコマンドを入力すると、補正済みの2つの画像に対する平均画像を出力します。

make ImageAverage

また、下記のコマンドでは複数画像に対してのCTF補正を行います。

make MULTICTF

下記のコマンドではCTF補正済みのファイルをtiff画像として出力します。

CTF2TIFF


ジーメンススター(ステップ)

CTFCorrection4-1.png
元画像



CTFCorrection4-2.png
補正前(df 27000)(白黒反転)

CTFCorrection4-3.png
補正前(df 9000)(白黒反転)

CTFCorrection4-4.png
補正後(df 27000)

CTFCorrection4-5.png
補正後(df 9000)

CTFCorrection4-25.png
mrcImageAverageによる平均画像

CTFCorrection4-26.png
mrcImageMultiCTFCompensationによる平均画像

いずれの場合も平均化によって補間をすることができますが、mrcImageMultiCTFCompensationの方がより鮮明な画像にすることができます。

ジーメンススター(Cos)

Makefileでの変更箇所

### For mrcImageSiemensStar
#SSTAR_SHAPE=0
SSTAR_SHAPE=1

同様のコマンドで実行

CTFCorrection4-7.png
元画像



CTFCorrection4-8.png
補正前(df 27000)(白黒反転)

CTFCorrection4-9.png
補正前(df 9000)(白黒反転)

CTFCorrection4-10.png
補正後(df 27000)

CTFCorrection4-11.png
補正後(df 9000)

CTFCorrection4-12.png
mrcImageAverageによる平均画像

CTFCorrection4-27.png
mrcImageMultiCTFCompensationによる平均画像

CTF補正画像を平均化することで、中間辺りまで白黒のパターンが鮮明になりました。

リニア(ステップ)

Makefile.common2での変更箇所

### For mrcImageSiemensStar
#SSTAR_SHAPE=0
SSTAR_SHAPE=2

同様のコマンドで実行

CTFCorrection4-13.png
元画像



CTFCorrection4-14.png
補正前(df 27000)(白黒反転)

CTFCorrection4-15.png
補正前(df 9000)(白黒反転)

CTFCorrection4-16.png
補正後(df 27000)

CTFCorrection4-17.png
補正後(df 9000)

CTFCorrection4-18.png
mrcImageAverageによる平均画像

CTFCorrection4-28.png
mrcImageMultiCTFCompensationによる平均画像

平均することで元画像により近くなっていることが分かります。

リニア(Cos)

Makefile.common2での変更箇所

### For mrcImageSiemensStar
#SSTAR_SHAPE=0
SSTAR_SHAPE=3

同様のコマンドで実行

CTFCorrection4-19.png
元画像



CTFCorrection4-20.png
補正前(df 27000)(白黒反転)

CTFCorrection4-21.png
補正前(df 9000)(白黒反転)

CTFCorrection4-22.png
補正後(df 27000)

CTFCorrection4-23.png
補正後(df 9000)

CTFCorrection4-24.png
mrcImageAverageによる平均画像

CTFCorrection4-29.png
mrcImageMultiCTFCompensationによる平均画像


例7 デフォーカスの異なる画像の平均化2

デフォーカスの違いによる比較を別のファイルでも試してみます。

実行例

例5で使用したMakefile、例2で使用した入力ファイル(Input.inimrcにリネーム)を使って下記のコマンドを実行します。

make InitialCTFDataFromMRC
make ProcessForInput
make ProcessForInput2
make TIF2CTF2
make Input.tiff
make Input-2.tiff
make ImageAverage

CTFCorrection5-1.png
元画像



CTFCorrection5-2.png
補正前(df 27000)(白黒反転)

CTFCorrection5-3.png
補正前(df 9000)(白黒反転)

CTFCorrection5-4.png
補正後(df 27000)

CTFCorrection5-5.png
補正後(df 9000)

CTFCorrection5-6.png
mrcImageAverage

CTFCorrection5-7.png
mrcImageMultiCTFCompensation

補正画像同士を平均化することにより、右側の白い点や中下側の白点の構造が元画像により近くなっています。

その他

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