単粒子解析

提供: Eospedia
2014年6月23日 (月) 05:07時点におけるKinoshita (トーク | 投稿記録)による版

移動: 案内検索

単粒子解析法とは、Single Particle Analysis(SPA)の日本語訳である。単粒子とは、画像中の粒子(対象)が元来、2次元的にもしくは3次元的に同じ形をしていることを仮定して、その2次元、3次元構造解析を行う画像処理法のひとつである。

目次

2次元単粒子解析

 2次元単粒子解析とは、2次元で得られている電子顕微鏡投影像を分類し、それぞれを平均し、構造の違いを論じるための解析方法を指します。

クラスター解析

 複数の電子顕微鏡画像についてデータが近いもの同士でグループ分けしていき、階層構造を作成して画像を分類します。さらに分類した画像同士の平均画像を作成することにより、SN比を上げることができます。平均画像は主に角度決定するときの参照ファイル、あるいは粒子の動きを観察するための画像として使用します。

実行例1

入力ファイル

Input-Cluster-2dSet.png


前処理として以下のコマンドを使用します。

mrcImagePad
mrcImageLowPassFilter
mrcImageShrink

前処理後

Input1-Cluster-2dSet.png


mrcImageClusterAnalysisを使ってクラスター解析を行います。

         1          0         40         40         99.2851
         2          0         40         40         90.0657
         2          1         40         40         75.2851
         3          0         40         40         82.6412
         3          1         40         40         87.9777

-中略-

         3          2          3          2         442.652
         1          0          3          0         373.403
         2          0          3          0         630.906
         2          1          3          0         349.983
         1          0          2          1         562.309


clusterShowを使って、解析結果をファイルリストで出力します。

121p-shift-rot000.mrc-rot000.pad 0 590.000000 83.277847 
121p-shift-rot000.mrc-rot090.pad 3 580.000000 83.277847 
121p-shift-rot000.mrc-rot030.pad 1 570.000000 87.326599 
121p-shift-rot000.mrc-rot060.pad 2 560.000000 87.326599 
121p-shift-rot000.mrc-rot120.pad 4 550.000000 79.850204 

-中略-

121p-shift-rot045.mrc-rot000.pad 10 240.000000 80.898613 
121p-shift-rot045.mrc-rot270.pad 19 230.000000 80.898613 
121p-shift-rot045.mrc-rot060.pad 12 220.000000 80.506714 
121p-shift-rot045.mrc-rot240.pad 18 210.000000 78.504913 
121p-shift-rot045.mrc-rot030.pad 11 200.000000 68.052155 
121p-shift-rot000.mrc-rot000.pad.avg 0 590.000000 83.277847 0 0
121p-shift-rot000.mrc-rot090.pad.avg 3 580.000000 83.277847 0 0
121p-shift-rot000.mrc-rot030.pad.avg 1 570.000000 87.326599 0 0
121p-shift-rot000.mrc-rot060.pad.avg 2 560.000000 87.326599 0 0
121p-shift-rot000.mrc-rot120.pad.avg 4 550.000000 79.850204 0 0

-中略-

121p-shift-rot045.mrc-rot000.pad.avg 10 240.000000 80.898613 0 0
121p-shift-rot045.mrc-rot270.pad.avg 19 230.000000 80.898613 0 0
121p-shift-rot045.mrc-rot060.pad.avg 12 220.000000 80.506714 0 0
121p-shift-rot045.mrc-rot240.pad.avg 18 210.000000 78.504913 0 0
121p-shift-rot045.mrc-rot030.pad.avg 11 200.000000 68.052155 0 0


樹形図(PSファイル)

Outdata-Cluster.png

クラスター解析結果の樹形図はPSファイルとして出力されます。


mrcImageMontageCreateを使って、ソート順に表示します。

-OL

Outdata-Cluster-OL.png
-AL
Outdata-Cluster-AL.png


こちらのMakefileを使って、以下のコマンドを入力するとこれまでの一連のコマンドが実行できます。

make Init
make ALLROIS
make Pad
make Log
make LogPS


3次元単粒子解析

 元々の粒子の構造が3次元的に単一であることを仮定して、2次元の粒子画像群から3次元構造を再構成する画像処理法を指します。その手順は、下記のようになります。

ROI(粒子画像の抽出)

電子顕微鏡画像の前処理

 まず、電子顕微鏡画像から粒子画像を抽出しやすくするために画像に合った補正を行います。


CTF補正
 画像の明暗を調節したい場合にはCTF補正を掛けて、コントラスト比を調整します。
以下の流れでCTF補正を行います。


電子顕微鏡画像(2D)

↓ A: mrcImageFFT

電子顕微鏡画像(2DFFT)

↓ B: ctfDisplay

電子顕微鏡画像(2DFFT) + CTF情報(ASCII)

↓ C: mrcImageCTFCompensation

CTF補正済み画像(2D)


Input-121p-shiftr-ctf.png

最小

最大
平均値
標準偏差

標準誤差

-1066.31 (69, 47, 0)

489.111 (58, 48, 0)
0.247522
88.9735

0.347553


コマンドA: mrcImageFFT -i Input-121p-shiftr-ctf.2d -o Input-121p-shiftr-ctf.2dfft
コマンドAの出力画像

Input-121p-shiftr-ctf-fft.png
mrcFFTExpression(m=1)にて表示

最小

最大
平均値
標準偏差

標準誤差

0.129048 (255, 128, 0)

772.6 (142, 252, 0)
72.4855
51.7996

0.202342


コマンドB: ctfDisplay -i Input-121p-shiftr-ctf.2dfft -o Input-121p-shiftr-ctf.ctfinfo
ctfDisplay0.png

実行直後

> ctfDisplay1.png

lmax=400でトーンリングが見える

> ctfDisplay2.png

Rmax=0.08で拡大表示する

> ctfDisplay3.png

谷に線を合わせる(Defoucus=27000)

今回はノイズ比を1と考え、Isignalの値をInoiseの値に合わせます。
最後にInfoのSaveボタンでCTF情報ファイルを保存します。(保存した出力データ)


コマンドC: mrcImageCTFCompensation -i Input-121p-shiftr-ctf.2dfft -o Input-121p-shiftr.2d -info2 Input-121p-shiftr-ctf.ctfinfo
コマンドCの出力画像
Input-121p-shiftr.png

最小

最大
平均値
標準偏差

標準誤差

-461.072 (75, 56, 0)

1206.48 (16, 58, 0)
-0.247522
88.9734

0.347553


ローパスフィルタ
 mrcImageLowPassFilterを使用し高周波数成分を落とすと、画像が見えやすくなる場合もあります。


実行例1
Input-121p-hpfn.png

最小

最大
平均値
標準偏差

標準誤差

-357.864 (132, 55, 0)

636.92 (226, 152, 0)
-0.110347
87.6551

0.342403


コマンド: mrcImageLowPassFilter -i Input-121p-shiftr-hpfn.2d -o Output-121p-shiftr-lpfn.2d -m 3 -hvp 0.1


出力画像
Output-121p-shiftr-lpfn.png

最小

最大
平均値
標準偏差

標準誤差

-141.562 (111, 125, 0)

324.213 (233, 153, 0)
-0.110346
36.3984

0.142181


実行例2
Input-121p-water.png

最小

最大
平均値
標準偏差

標準誤差

37 (55, 59, 0)

77 (56, 46, 0)
60.0624
4.56632

0.0713488


実行例1と同様のコマンドで実行


出力画像
Output-121p-water-lpf.png

最小

最大
平均値
標準偏差

標準誤差

49.2681 (55, 59, 0)

68.8195 (29, 35, 0)
60.0623
2.47312

0.0386425


スムージング
Input-121p-water.png

最小

最大
平均値
標準偏差

標準誤差

37 (55, 59, 0)

77 (56, 46, 0)
60.0624
4.56632

0.0713488


コマンド: mrcImageSmoothing -i Input-121p-water.2d -o Output-121p-smoothing.2d -m 1


出力画像
Output-121p-water-smt.png

最小

最大
平均値
標準偏差

標準誤差

52 (56, 60, 0)

69 (29, 34, 0)
60.1317
2.51206

0.0392509


電子顕微鏡画像から粒子画像の抽出

 Display2を使用して、粒子部分をROIファイルとして切り出します。


Input-121p-shiftr.png

最小

最大
平均値
標準偏差

標準誤差

-461.072 (75, 56, 0)

1206.48 (16, 58, 0)
-0.247522
88.9734

0.347553


コマンド: Display2 -i Input-121p-shiftr.2d
View-Display2.png

実行直後



> View1-Display2.png

mrcImage InfoのMax, Minの値を、
Display2 InfoのHigh, Lowに設定すると、
観察しやすい画像として表示される
今回はHigh=1207, Low=-462に設定

> View2-Display2.png

切り出したい範囲を囲む
ROI->Createにて操作


View3-Display2.png

複数囲む場合はROI->MultiROIにチェック



切り出したい範囲を囲み終えたら、ROI->ROIInfoからroiinfo画面を開き、
下部のExtractボタンを押すと、ROIファイルが作成されます。


出力したROIファイルの画像

Input-121p-shiftr-roi.png
0000.roi

最小

最大
平均値
標準偏差

標準誤差

-461.072 (17, 21, 0)

1098.8 (10, 13, 0)
28.9941
317.641

13.5938

Input-121p-shiftr-roi1.png
0001.roi

最小

最大
平均値
標準偏差

標準誤差

-394.013 (18, 10, 0)

1206.48 (14, 12, 0)
18.3544
299.042

12.5036

Input-121p-shiftr-roi2.png
0002.roi

最小

最大
平均値
標準偏差

標準誤差

-418.302 (17, 6, 0)

1107.53 (14, 10, 0)
20.3934
302.756

12.8861


参照画像の作成

参照画像の準備(mrcImageModelCreate, pdb2mrc etc.)

 ここでは3次元再構成に必要な3次元モデルデータ(参照画像)を用意する方法を記述します。


PDBファイルから参照像を作成する場合
 概形が分かっている場合はその形に近いmrcファイルあるいはPDBファイルを用意します。
PDBファイルの場合はpdb2mrcを使用して、mrcに変換します。


121p-shift-PDB.png

重心

最大半径

最大半径(座標)

3.012034e-03 -4.102425e-03 7.530045e-04

3.286664e+01

24.77 23.85 28.04


コマンド: pdb2mrc -i 121p-shift.pdb -o 121p-shift.ref3d -nx 64 -ny 64 -nz 64 -Sx -80 -Sy -80 -Sz -80 -dx 2.5 -dy 2.5 -dz 2.5 -m 1


もしくはこちらのMakefileからpdb2mrcを実行することもできます。
設定項目(今回は変更の必要はありません)
###
### Initial model from PDB
###
REFSOURCE=121p-shift
DELTA=2.5
SIZE_X=64
SIZE_Y=64
SIZE_Z=64
START_X=`awk 'BEGIN { print -1*$(DELTA)*$(SIZE_X)/2}'`
START_Y=`awk 'BEGIN { print -1*$(DELTA)*$(SIZE_Y)/2}'`
START_Z=`awk 'BEGIN { print -1*$(DELTA)*$(SIZE_Z)/2}'`
make InitialModelと入力すれば参照画像が作成されます。


121p-shift.png
xy平面

121p-shift1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

0 (0, 0, 0)

22320.6 (34, 39, 32)
42.1608
615.001

1.20117


楕円体を参照像とする場合
 概形が分からない場合はmrcImageModelCreateにて仮の3次元モデルデータを作成し、参照画像とします。今回は粒子を対象としているので、楕円体として参照画像を作成します。


コマンド mrcImageModelCreate -o Model-ellipsoidal.ref3d -m 7 -nx 20 -ny 20 -nz 20 -lx 1 -ly 1 -lz 1


Model-ellipsoidal.png
xy平面

Model-ellipsoidal1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

0 (0, 0, 0)

2 (10, 10, 1)
0.38865
0.608959

0.00680837


3次元再構成

 3次元再構成を行うためには多くの参照投影像が必要になりますので、Makefileを使用することをお薦めします。

ROIファイル(.roi)および参照画像(.ref3d)がある場合はこちらのMakefileにて、make Allと入力すれば、3次元再構成を1ターン分行い、3次元再構成されたファイル(.3d)が作成されます。

以降の項目では3次元再構成に至るまでの各処理をEosコマンドMakefileのコマンドと対応させながら、実行例を記述していきます。


参照画像から2次元の参照投影像のセットを生成

 mrc3Dto2Dを使用して、2次元の参照投影像を作成します。


メルカトル図法
 オプションm=0(デフォルト)の場合は角度の組み合わせ全てについて2D投影を行います。
121p-shift.ref3d を元に参照投影像121p-shift.ref2dを作成する場合(y軸, 軸周りに0度 ~ 360度の範囲で30度刻み)


121p-shift.png
xy平面

121p-shift1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

0 (0, 0, 0)

22320.6 (34, 39, 32)
42.1608
615.001

1.20117


コマンド: mrc3Dto2D -i 121p-shift.ref3d -o 121p-shift.ref2d -EulerMode YOYS -InterpolationMode 2 -Rot2 0 359 30 -Rot1 0 359 30 -Rot3 0 0 30 -m 0


既存のMakefileを利用する場合は以下の設定を確認します。
今回はファイル名のみ変更しています。
# Ref File Name
INITIAL=121p-shift

#
# Search Area for 3D
#
ROTMODE=YOYS

#
# Search Area for 3D
#
ROTMODE=YOYS
# Rot1
ROT1MIN=0
ROT1MAX=359
ROT1D=30
nRot1=6

# Rot2
ROT2MIN=0
ROT2MAX=359
ROT2D=30
nRot2=6

# Rot3
ROT3MIN=0
ROT3MAX=0
ROT3D=30
nRot3=1
make *.ref2dと入力すれば全ての.ref3dファイルについて参照投影像(.ref2d)が作成されます。


121p-shift2d.png
z=0

121p-shift2d1.png
z=1

121p-shift2d2.png
z=2

121p-shift2d3.png
z=168

サイズ

最小
最大
平均値
標準偏差

標準誤差

( 64, 64, 169)

-76.7146 (32, 41, 138)
2557.54 (35, 32, 131)
42.1574
207.727

0.249672


モルワイデ図法
 オプションm=1の場合は3次元像の緯度が大きくなる毎に経度の刻み幅を減らすモルワイデ図法で投影します。


コマンド: mrc3Dto2D -i 121p-shift.ref3d -o 121p-shift.ref2d -EulerMode YOYS -InterpolationMode 2 -Rot2 0 359 30 -Rot1 0 359 30 -Rot3 0 0 30 -m 1


Makefileの変更箇所
.ref3d.ref2d:
	#mrc3Dto2D -i $(TARGET).ref3d -o $(TARGET).ref2d -EulerMode $(ROTMODE) -InterpolationMode 2 -Rot2 $(ROT2MIN) $(ROT2MAX) $(ROT2D) -Rot1 $(ROT1MIN) $(ROT1MAX) $(ROT1D) -Rot3 $(ROT3MIN) $(ROT3MAX) $(ROT3D) -m 0
	mrc3Dto2D -i $(TARGET).ref3d -o $(TARGET).ref2d -EulerMode $(ROTMODE) -InterpolationMode 2 -Rot2 $(ROT2MIN) $(ROT2MAX) $(ROT2D) -Rot1 $(ROT1MIN) $(ROT1MAX) $(ROT1D) -Rot3 $(ROT3MIN) $(ROT3MAX) $(ROT3D) -m 1


121p-shift2d1-0.png
z=0

121p-shift2d1-1.png
z=1

121p-shift2d1-2.png
z=2

121p-shift2d1-3.png
z=98

サイズ

最小
最大
平均値
標準偏差

標準誤差

( 64, 64, 99)

-96.877 (33, 22, 81)
2729.79 (32, 32, 46)
42.1673
208.082

0.326766


粒子画像の再調整

 参照投影像が用意できたら、粒子画像と参照投影像を比較しやすくするための処理を行います。


窓関数を掛ける
窓関数を掛けて、切り出した粒子画像の端のノイズを除去します。


Input-121p-shiftr-roi.png

最小

最大
平均値
標準偏差

標準誤差

-461.072 (17, 21, 0)

1098.8 (10, 13, 0)
28.9941
317.641

13.5938


今回は横:90%, 縦95%の窓関数を掛けます。
コマンド: mrcImageWindowing -i Input-121p-shiftr.2d-0000.roi -o Input-121p-shiftr.2d-0000.mask -W 0.1 0.0 0.05 0.0 -m 18


Input-121p-shiftr-mask.png

最小

最大
平均値
標準偏差

標準誤差

-461.072 (17, 21, 0)

1098.8 (10, 13, 0)
49.6982
307.622

13.165


パディング
粒子画像のサイズを参照投影像のサイズに合わせます。
Input-121p-shiftr-mask.png

最小

最大
平均値
標準偏差

標準誤差

-461.072 (17, 21, 0)

1098.8 (10, 13, 0)
49.6982
307.622

13.165


今回はサイズを64x64にします。
コマンド: mrcImagePad -i Input-121p-shiftr.2d-0000.mask -o Input-121p-shiftr.2d-0000.pad -W 64 -H 64


Input-121p-shiftr-pad.png

最小

最大
平均値
標準偏差

標準誤差

-510.77 (39, 40, 0)

1049.1 (32, 32, 0)
2.21189e-07
112.314

1.7549


Makefileを利用する場合はこちらの設定を確認します。
# Pad size for 2D 
PAD_W=64
PAD_H=64
make ROIs, make padの順に入力すれば、全て.roiファイルに窓関数、パディングの処理を行った.padファイルが作成されます。


最も類似度(相関値)の高い参照投影像の角度を粒子画像の投影角として決定

 mrcImageAutoRotationCorrelationを使用して粒子画像の投影角を決定します。


Input-121p-shiftr-pad.png

最小

最大
平均値
標準偏差

標準誤差

-510.77 (39, 40, 0)

1049.1 (32, 32, 0)
2.21189e-07
112.314

1.7549


121p-shift2d.png
z=0

121p-shift2d1.png
z=1

121p-shift2d2.png
z=2

121p-shift2d3.png
z=168

サイズ

最小
最大
平均値
標準偏差

標準誤差

( 64, 64, 169)

-76.7146 (32, 41, 138)
2557.54 (35, 32, 131)
42.1574
207.727

0.249672


コマンド: mrcImageAutoRotationCorrelation -i Input-121p-shiftr.2d-0000.pad -r 121p-shift.ref2d -O Input-121p-shiftr.2d-0000.corinfo -fit Input-121p-shiftr.2d-0000.fit -n 12 -m 18 -range 0 359 -Iter 2 -Rot2 12 -Rot1 12 -Rot3 12


Makefileを利用する場合はこちらの設定を確認します。
# For 2D 
STEP=12
ROTMIN=0
ROTMAX=359
nROT=`echo "" | awk 'BEGIN {printf 360 / $(STEP)}'`
make PADs, make corinfoの順に入力すれば、全て.padファイルについて角度情報ファイル(.corinfo)および角度決定後の画像ファイル(.fit)が作成されます。


-O の出力結果
0:                        YOYS        0.000000        0.000000        0.000000 :     1737.870605 theta      179.499994 at        2.000000        1.000000 onMap        0.000000        0.000000 Input-121p-shiftr.2d-0000.pad Cor        0.689801

1:                        YOYS        0.000000       30.000001        0.000000 :     1731.543091 theta      284.208488 at        1.000000        1.000000 onMap        0.000000        0.083333 Input-121p-shiftr.2d-0000.pad Cor        0.695427

2:                        YOYS        0.000000       60.000002        0.000000 :     3307.848633 theta      281.216811 at        1.000000        1.000000 onMap        0.000000        0.166667 Input-121p-shiftr.2d-0000.pad Cor        0.797129

3:                        YOYS        0.000000       90.000003        0.000000 :     1742.967407 theta       26.925002 at        0.000000        1.000000 onMap        0.000000        0.250000 Input-121p-shiftr.2d-0000.pad Cor        0.711250

4:                        YOYS        0.000000      120.000003        0.000000 :     1774.003418 theta       29.916669 at        0.000000        1.000000 onMap        0.000000        0.333333 Input-121p-shiftr.2d-0000.pad Cor        0.706876

-中略-

164:                        YOYS      360.000010      240.000007        0.000000 :     1713.460815 theta       89.749970 at        1.000000       63.000000 onMap        0.000000        0.666667 Input-121p-shiftr.2d-0000.pad Cor        0.691559

165:                        YOYS      360.000010      270.000001        0.000000 :     1856.687744 theta      239.333326 at        0.000000        1.000000 onMap        0.000000        0.750000 Input-121p-shiftr.2d-0000.pad Cor        0.723829

166:                        YOYS      360.000010      299.999995        0.000000 :     1759.510742 theta      236.341675 at        0.000000        1.000000 onMap        0.000000        0.833333 Input-121p-shiftr.2d-0000.pad Cor        0.720541

167:                        YOYS      360.000010      329.999989        0.000000 :     1599.635254 theta      299.166657 at       63.000000        0.000000 onMap        0.000000        0.916667 Input-121p-shiftr.2d-0000.pad Cor        0.689916

168:                        YOYS      360.000010      360.000010        0.000000 :     1737.870850 theta      179.499994 at        2.000000        1.000000 onMap        0.000000        1.000000 Input-121p-shiftr.2d-0000.pad Cor        0.689801


Input-121p-shiftr-fit.png

最小

最大
平均値
標準偏差

標準誤差

-447.493 (25, 39, 0)

1062.05 (35, 31, 0)
-0.00489992
112.736

1.76149


さらに出力ファイル(-O)からmrc2Dto3Dで使用するファイルを作成する必要があります。
ファイル作成にはこちらのMakefileを利用することをお薦めします。


make CORINFOs, make 3dinfoの順に入力すると、全ての.corinfoファイルから相関値が最大のデータを取り出しmrc2Dto3D用に変換したデータ(.3dinfo)が作成されます。


出力データ(.3dinfo)
Input-121p-shiftr.2d-0000.fit YOYS 360.000010 60.000002 0.000000 3307.848633


続いてmake 3DINFOs, make 3dlstの順に入力すると、全ての.3dinfoファイルを1つのファイルにまとめたデータ(.3dlst)が作成されます。このファイルがmrc2Dto3D(-I)の入力ファイルとして使用できます。


出力データ(.3dlst)
121p-shift-noise-0-120-0.fit YOYS 0.000000 120.000003 0.000000 2823731.500000
121p-shift-noise-0-180-0.fit YOYS 0.000000 180.000005 0.000000 2663069.500000
121p-shift-noise-0-0-0.fit YOYS 0.000000 360.000010 0.000000 2594591.000000
121p-shift-noise-0-240-0.fit YOYS 0.000000 240.000007 0.000000 2708659.750000
121p-shift-noise-0-60-0.fit YOYS 0.000000 60.000002 0.000000 2704966.750000
121p-shift-noise-0-300-0.fit YOYS 0.000000 299.999995 0.000000 2807886.500000
121p-shift-noise-120-0-0.fit YOYS 120.000003 0.000000 0.000000 2935737.500000

-中略-

121p-shift-noise-300-240-0.fit YOYS 299.999995 240.000007 0.000000 2922086.000000
121p-shift-noise-60-0-0.fit YOYS 60.000002 0.000000 0.000000 2554428.000000
121p-shift-noise-60-120-0.fit YOYS 60.000002 120.000003 0.000000 2777184.000000
121p-shift-noise-60-180-0.fit YOYS 60.000002 180.000005 0.000000 2574856.750000
121p-shift-noise-60-60-0.fit YOYS 60.000002 60.000002 0.000000 2717428.500000
121p-shift-noise-60-300-0.fit YOYS 60.000002 299.999995 0.000000 2771646.500000
121p-shift-noise-60-240-0.fit YOYS 60.000002 240.000007 0.000000 2691474.000000


3次元像を再構成する

 mrc2Dto3Dを使用して3次元像を再構成します。


作成例1
121p-shift-noise-0-120-0.fit YOYS 0.000000 120.000003 0.000000 2823731.500000
121p-shift-noise-0-180-0.fit YOYS 0.000000 180.000005 0.000000 2663069.500000
121p-shift-noise-0-0-0.fit YOYS 0.000000 360.000010 0.000000 2594591.000000
121p-shift-noise-0-240-0.fit YOYS 0.000000 240.000007 0.000000 2708659.750000
121p-shift-noise-0-60-0.fit YOYS 0.000000 60.000002 0.000000 2704966.750000
121p-shift-noise-0-300-0.fit YOYS 0.000000 299.999995 0.000000 2807886.500000
121p-shift-noise-120-0-0.fit YOYS 120.000003 0.000000 0.000000 2935737.500000

-中略-

121p-shift-noise-300-240-0.fit YOYS 299.999995 240.000007 0.000000 2922086.000000
121p-shift-noise-60-0-0.fit YOYS 60.000002 0.000000 0.000000 2554428.000000
121p-shift-noise-60-120-0.fit YOYS 60.000002 120.000003 0.000000 2777184.000000
121p-shift-noise-60-180-0.fit YOYS 60.000002 180.000005 0.000000 2574856.750000
121p-shift-noise-60-60-0.fit YOYS 60.000002 60.000002 0.000000 2717428.500000
121p-shift-noise-60-300-0.fit YOYS 60.000002 299.999995 0.000000 2771646.500000
121p-shift-noise-60-240-0.fit YOYS 60.000002 240.000007 0.000000 2691474.000000


入力ファイルの画像(一部)

121p-shift-noise-fit.png
121p-shift-noise-0-0-0.fit

121p-shift-noise-fit1.png
121p-shift-noise-0-60-0.fit

121p-shift-noise-fit2.png
121p-shift-noise-0-120-0.fit

121p-shift-noise-fit3.png
121p-shift-noise-0-180-0.fit


コマンド: mrc2Dto3D -I 121p-shift.3dlst -O 121p-shift.3d -InterpolationMode 2 -Double -CounterThreshold 0.5 -m 1 -WeightMode 2


Makefileを利用する場合はmake 3DLIST, make 3dの順に入力すれば、全て.3dlstファイルについて3次元画像ファイル(.3d)が作成されます。


121p-shift-3d.png
xy平面

121p-shift-3d1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-6849.61 (11, 31, 32)

9844.57 (33, 28, 30)
16.1946
1511.61

2.95236

入力データの角度に偏りがある場合、ぼやけた3次元像ができることもあります。
今回は入力ファイルの角度刻みが各60°ずつですので、90°回転した方向からはぼやけてしまっています。


作成例2 (テストデータ数を変更して実行)
テストデータ数を角度刻み数と同じ分だけ用意してMakefileを使用します。


変更箇所: テストデータの作成間隔を刻み幅と同じ値に変更
TestDataNoise::
	@for (( rot1 = $(ROT1MIN); rot1 <= $(ROT1MAX); rot1 += $(ROT1D) )) \
	do \
	for (( rot2 = $(ROT2MIN); rot2 <= $(ROT2MAX); rot2 += $(ROT2D) )) \
入力データを参照画像(3D)から始め(Initial.3dにリネーム)、以下のコマンドを入力し、3次元再構成まで行います。
make First
make TestDataNoise
make All


121p-shift-3d2.png
xy平面

121p-shift-3d3.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-3203.31 (28, 28, 37)

13153.5 (31, 31, 28)
14.7861
555.637

1.08523

角度30°ずつの画像で作成すると90°の方向も見えやすくなりました。


作成例3 (角度刻み幅を変更して実行)
角度刻み幅15°に変更してMakefileを使用します。


変更箇所
ROT1D=15
nRot1=24

ROT2D=15
nRot2=24

STEP=24
コマンドは作成例2と同様で実行


出力ファイルの画像

121p-shift-3d4.png
xy平面

121p-shift-3d5.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-2955.91 (27, 32, 39)

12347.2 (31, 31, 28)
15.0729
483.66

0.944648

角度15°ずつの場合はさらに鮮明になります。


作成例4 (PDBファイルを変更し、作成例1と同様に実行)
別のPDBファイルを使った参照画像(initial.3dにリネーム)を使用して、作成例1と同様のパターンで実行します。


Input-1VOM.png
xy平面

Input1-1VOM.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

0 (0, 0, 0)

3398.12 (23, 55, 41)
72.129
294.805

0.368507


変更箇所
### Initial model from PDB
###
REFSOURCE=1VOM

# Target structure name
TARGET=1VOM

# Pad size for 2D 
PAD_W=100
PAD_H=100
コマンドは作成例2と同様で実行


出力ファイルの画像

1VOM-3d.png
xy平面

1VOM-3d1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-1193.06 (38, 0, 34)

1730.23 (38, 41, 72)
13.4482
217.59

0.21759

作成例1の結果と同様にyz平面の画像がぼやけています。


作成例5 (作成例4からテストデータを増やして実行)
作成例4からの変更箇所
TestDataNoise::
	@for (( rot1 = $(ROT1MIN); rot1 <= $(ROT1MAX); rot1 += $(ROT1D) )) \
	do \
	for (( rot2 = $(ROT2MIN); rot2 <= $(ROT2MAX); rot2 += $(ROT2D) )) \


出力ファイルの画像

1VOM-1-3d.png
xy平面

1VOM-1-3d1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-1196.97 (37, 0, 41)

2064.29 (37, 38, 29)
13.4287
210.902

0.210902

データ量が増えたので、yz平面も補間できました。


作成例6 (ラドン変換)
 mrc2Dto3D以外にラドン変換を利用して3次元再構成をすることもできます。


入力ファイルの画像(一部)

121p-shift-noise-fit.png
121p-shift-noise-0-0-0.fit

121p-shift-noise-fit1.png
121p-shift-noise-0-60-0.fit

121p-shift-noise-fit2.png
121p-shift-noise-0-120-0.fit

121p-shift-noise-fit3.png
121p-shift-noise-0-180-0.fit


Media:Makefile-Radon.zipを使います。
コマンド
make IN_3D_LIST
make sino
make 3DRadon


出力ファイルの画像

121p-radon3d.png
xy平面

121p-radon3d1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-254462 (63, 57, 63)

4.17039e+06 (31, 32, 32)
308433
466586

911.3


作成例7 (ラドン変換2)
 作成例6から設定を変更してラドン変換を行います。


変更箇所
.3dradon.3d:
#	mrcImageInverseRadonTransform -i $*.3dradon -o $*.3d -bpm $(RBP_MODE);
	mrcImageInverseRadonTransform -i $*.3dradon -o $*.3d -bpm $(RBP_MODE) -bpm 4 -Rmin 0.0 -Rmax 0.025;


出力ファイルの画像

121p-1radon3d.png
xy平面

121p-1radon3d1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-132085 (36, 32, 24)

313263 (35, 32, 33)
356.579
26886.9

52.5134

xy平面が見えるようになりました。


3次元像の分解能・質の確認

フーリエシェル相関
実行例1
(.3dlst)を分割して、別々に作成した3次元像についてフーリエシェル相関を使用した比較を行います。

入力ファイル1(-i1)の画像(Media:121p-shift.3dlst.zipの奇数行目のみで3次元像を作成)

121p-shift-3d-1.png
xy平面

121p-shift-3d1-1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-2284.26 (21, 34, 32)

7073.81 (32, 31, 28)
14.5713
490.485

0.957978


入力ファイル2(-i2)の画像(Media:121p-shift.3dlst.zipの偶数行目のみで3次元像を作成)

121p-shift-3d-2.png
xy平面

121p-shift-3d1-2.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-2821.77 (48, 2, 26)

7828.59 (31, 31, 31)
15.1938
501.463

0.97942


コマンド: mrcImageFourierShellCorrelation -i1 121p-shift-1.3d -i2 121p-shift-2.3d


出力結果
0.000000 1.000000 1 
0.006250 0.989451 13 
0.012500 0.765751 37 
0.018750 0.724093 57 
0.025000 0.509790 121 
0.031250 0.595041 189 
0.037500 0.249055 245 
0.043750 0.201907 321 
0.050000 0.450095 405 
0.056250 0.290857 605 
0.062500 0.398243 653 
0.068750 0.354419 765 
0.075000 0.348684 941 
0.081250 0.386710 1133 
0.087500 0.394123 1293 
0.093750 0.334787 1353 
0.100000 0.350660 1725 

-中略-

0.325000 0.167641 122 
0.331250 0.169556 102 
0.337500 -0.013454 38 
0.343750 -0.560236 6 
各周波数毎の相関値が観察できます。
今回は相関値0.5を基準とすれば周波数0.031250[1/Å]付近までのデータが有効であると考えられ、分解能が32[Å]であると判断できます。
※ 0.05[1/Å]付近で相関値が高くなっていますが、これは使用した角度データが60°刻みで粗いため、2つの画像で含まれる粒子データ量の割合が周波数によって異なるためです。
Fig-FOM1.pngFig-FOM2.png


周波数の幅を広く(2倍)取った場合
コマンド: mrcImageFourierShellCorrelation -i1 121p-shift-1.3d -i2 121p-shift-2.3d -d 1.25e-2


0.000000 1.000000 1 
0.012500 0.822323 58 
0.025000 0.679142 223 
0.037500 0.320513 478 
0.050000 0.326283 866 
0.062500 0.372212 1333 
0.075000 0.363840 1851 
0.087500 0.378167 2602 
0.100000 0.350047 3237 

-中略-

0.325000 0.124741 280 
0.337500 -0.036125 84 
0.350000 -1.000000 1 
0.05[1/Å]付近の相関値が低くなりました。


実行例2(ノイズ無しのデータ)
ノイズを無しにして実行例1と同じ組み合わせ、同じコマンドで実行します。
入力ファイル1(-i1)の画像

121p-shift-3d-5.png
xy平面

121p-shift-3d1-5.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-2268.94 (61, 28, 16)

7168.45 (32, 31, 28)
14.623
448.776

0.876516


入力ファイル2(-i2)の画像

121p-shift-3d-6.png
xy平面

121p-shift-3d1-6.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-2686.55 (48, 2, 26)

7439.83 (31, 31, 31)
15.115
457.972

0.894476


出力結果
0.000000 1.000000 1 
0.006250 0.990356 13 
0.012500 0.764878 37 
0.018750 0.726560 57 
0.025000 0.510301 121 
0.031250 0.594142 189 
0.037500 0.250462 245 
0.043750 0.217542 321 
0.050000 0.463959 405 
0.056250 0.311018 605 
0.062500 0.445881 653 
0.068750 0.379366 765 
0.075000 0.371647 941 
0.081250 0.417536 1133 
0.087500 0.431795 1293 
0.093750 0.421246 1353 
0.100000 0.408097 1725 

-中略-

0.325000 0.053261 122 
0.331250 0.047103 102 
0.337500 0.183973 38 
0.343750 -0.178682 6 
ノイズ無しの場合、相関値が全体的に高くなります。


実行例3(ノイズ無し、1軸、単純逆投影)
実行例2の条件に加えて、1軸で単純逆投影した3次元像同士で相関値を見てみます。
入力ファイル1(-i1)の画像

121p-shift-3d-s2.png
xy平面

121p-shift-3d1-s2.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-56.3686 (13, 33, 32)

1660.77 (30, 31, 31)
47.9368
119.172

0.232757


入力ファイル2(-i2)の画像

121p-shift-3d-s1.png
xy平面

121p-shift-3d1-s1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-31.296 (50, 2, 16)

1728.22 (31, 31, 31)
47.9549
126.801

0.247658


出力結果
0.000000 1.000000 1 
0.006250 0.897277 13 
0.012500 0.751387 37 
0.018750 0.539286 57 
0.025000 0.557268 121 
0.031250 0.484304 189 
0.037500 0.203936 245 
0.043750 0.361753 321 
0.050000 0.389617 405 
0.056250 0.341257 605 
0.062500 0.284129 653 
0.068750 0.439640 765 
0.075000 0.371620 941 
0.081250 0.444694 1133 
0.087500 0.405355 1293 
0.093750 0.280151 1353 
0.100000 0.392380 1725 

-中略-

0.325000 0.049507 122 
0.331250 0.420605 102 
0.337500 0.405722 38 
0.343750 0.320780 6 

相関値が徐々に減少するデータが得られ、実行例1、2に比べてシンプルになりました。

実行例4(サイズ変更)
実行例1のデータをパディングでサイズ変更し、同じコマンドで実行します。
入力ファイル1(-i1)の画像

121p-shift-3d-1p.png
xy平面

121p-shift-3d1-1p.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-2063.55 (32, 26, 21)

7073.81 (20, 19, 16)
118.203
718.111

2.83858


入力ファイル2(-i2)の画像

121p-shift-3d-2p.png
xy平面

121p-shift-3d1-2p.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-2348.84 (32, 11, 14)

7828.59 (19, 19, 19)
112.176
724.952

2.86562


出力結果
0.000000 1.000000 1 
0.010000 0.950381 13 
0.020000 0.915184 37 
0.030000 0.579132 57 
0.040000 0.542596 121 
0.050000 0.554290 189 
0.060000 0.483626 245 
0.070000 0.570390 321 
0.080000 0.546605 405 
0.090000 0.502031 605 
0.100000 0.513241 653 
0.110000 0.510585 765 
0.120000 0.506603 941 
0.130000 0.463857 1133 
0.140000 0.433665 1293 
0.150000 0.379408 1353 
0.160000 0.261836 1725 
0.170000 0.272471 1917 
0.180000 0.220786 2141 
0.190000 0.095691 2237 
0.200000 0.135210 2495 

-中略-

0.320000 -0.052608 107 
0.330000 -0.287293 33 
0.340000 -0.261199 10 
0.350000 -1.000000 1 
相関値0.5を基準とすれば0.05[1/Å]で分解能は20[Å]となりますが、0.060000[1/Å]の相関値を許容すれば、
0.12[1/Å]までとして、分解能を8.3[Å]と考えられます。


実行例5(組み合わせを変更)
実行例1にて角度の組み合わせを変えて、同じコマンドで実行します。
入力ファイル1(-i1)の画像(ファイル:121p-shift.3dlst.zipの第2軸60x2n°のみで3次元像を作成)

121p-shift-3d-3.png
xy平面

121p-shift-3d1-3.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-2123.89 (37, 39, 32)

7304.58 (32, 31, 28)
14.8745
477.13

0.931894


入力ファイル2(-i2)の画像(ファイル:121p-shift.3dlst.zipの第2軸60x(2n+1)°のみで3次元像を作成)

121p-shift-3d-4.png
xy平面

121p-shift-3d1-4.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-2084.54 (41, 30, 30)

7772.35 (31, 31, 31)
14.8906
475.908

0.929507


出力結果
0.000000 1.000000 1 
0.006250 0.999612 13 
0.012500 0.999746 37 
0.018750 0.999239 57 
0.025000 0.997605 121 
0.031250 0.994594 189 
0.037500 0.978055 245 
0.043750 0.965901 321 
0.050000 0.965457 405 
0.056250 0.934140 605 
0.062500 0.905267 653 
0.068750 0.888274 765 
0.075000 0.900884 941 
0.081250 0.897323 1133 
0.087500 0.834834 1293 
0.093750 0.807904 1353 
0.100000 0.761212 1725 
0.106250 0.726165 1917 
0.112500 0.697379 2141 
0.118750 0.653729 2237 
0.125000 0.625764 2573 
0.131250 0.574149 2929 
0.137500 0.541115 3061 
0.143750 0.554302 3373 
0.150000 0.512534 3637 
0.156250 0.521077 4101 
0.162500 0.539936 4385 
0.168750 0.494051 4613 
0.175000 0.466709 5073 
0.181250 0.461219 5361 
0.187500 0.453959 5713 
0.193750 0.056334 6169 
0.200000 0.022271 6285 

-中略-

0.318750 -0.010797 242 
0.325000 -0.038431 122 
0.331250 -0.042839 102 
0.337500 0.150436 38 
0.343750 0.229217 6 
周波数0.162500[1/Å]まで相関値0.5を上回っているので、分解能が6.2[Å]であると判断します。
上記の組み合わせでは出来上がった3次元像同士がかなり近いものであることが分かります。


実行例6(ノイズ無しのデータ2)
ノイズを無しにして実行例4と同じ組み合わせ、同じコマンドで実行します。
入力ファイル1(-i1)の画像

121p-shift-3d-7.png
xy平面

121p-shift-3d1-7.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-1987.69 (33, 16, 32)

7384.87 (38, 33, 33)
14.869
427.036

0.834054


入力ファイル2(-i2)の画像

121p-shift-3d-8.png
xy平面

121p-shift-3d1-8.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-1987.97 (33, 16, 32)

7382.54 (38, 33, 33)
14.869
427.057

0.834097


出力結果
0.000000 1.000000 1 
0.006250 0.999993 13 
0.012500 0.999988 37 
0.018750 0.999935 57 
0.025000 0.999881 121 
0.031250 0.999710 189 
0.037500 0.999213 245 
0.043750 0.999239 321 
0.050000 0.999609 405 
0.056250 0.999581 605 
0.062500 0.999644 653 
0.068750 0.999753 765 
0.075000 0.999802 941 
0.081250 0.999861 1133 
0.087500 0.999876 1293 
0.093750 0.999912 1353 
0.100000 0.999920 1725 
0.106250 0.999922 1917 
0.112500 0.999956 2141 
0.118750 0.999893 2237 
0.125000 0.999881 2573 
0.131250 0.999857 2929 
0.137500 0.999872 3061 
0.143750 0.999881 3373 
0.150000 0.999928 3637 
0.156250 0.999965 4101 
0.162500 0.999961 4385 
0.168750 0.999995 4613 
0.175000 0.999998 5073 
0.181250 0.999998 5361 
0.187500 0.999988 5713 
0.193750 0.107706 6169 
0.200000 -0.020195 6285 

-中略-

0.325000 0.046650 122 
0.331250 0.047681 102 
0.337500 -0.032594 38 
0.343750 -0.495508 6 
ノイズ無しの場合は相関値がほとんど1に近い値となります。


実行例7(データ数を増やした場合)
データ数を増やして3次元像(ノイズ有り)を作り、同じコマンドで実行します。
入力ファイル1(-i1)の画像

121p-shift-3d-9.png
xy平面

121p-shift-3d1-9.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-2997.82 (8, 12, 19)

12023.9 (31, 31, 28)
14.745
539.012

1.05276


入力ファイル2(-i2)の画像

121p-shift-3d-10.png
xy平面

121p-shift-3d1-10.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

-3052.44 (34, 34, 25)

11672.4 (31, 31, 28)
14.8271
527.599

1.03047


出力結果
0.000000 1.000000 1 
0.006250 0.999177 13 
0.012500 0.988864 37 
0.018750 0.984902 57 
0.025000 0.953270 121 
0.031250 0.942360 189 
0.037500 0.907998 245 
0.043750 0.893182 321 
0.050000 0.919577 405 
0.056250 0.822941 605 
0.062500 0.820877 653 
0.068750 0.797056 765 
0.075000 0.788068 941 
0.081250 0.765067 1133 
0.087500 0.703449 1293 
0.093750 0.683254 1353 
0.100000 0.655836 1725 
0.106250 0.666758 1917 
0.112500 0.610469 2141 
0.118750 0.607556 2237 
0.125000 0.572677 2573 
0.131250 0.549092 2929 
0.137500 0.507201 3061 
0.143750 0.467578 3373 
0.150000 0.435820 3637 
0.156250 0.471540 4101 
0.162500 0.471371 4385 
0.168750 0.505103 4613 
0.175000 0.456427 5073 
0.181250 0.460768 5361 
0.187500 0.453957 5713 
0.193750 0.494946 6169 
0.200000 0.030314 6285 
0.206250 0.007321 6468 

-中略-

0.325000 0.082301 122 
0.331250 -0.089649 102 
0.337500 -0.450711 38 
0.343750 0.206614 6 
データ量が増えれば、3次元像の質が良くなり高分解能な像を得ることができます。


実行例8(元PDBファイルを使用)
元PDBファイルから作成した参照画像にそれぞれノイズを加えて、実行します。


コマンド:
mrcImageNoiseAdd -i 121p-shift.ref3d -o Input1.3d -NS 1
mrcImageNoiseAdd -i 121p-shift.ref3d -o Input2.3d -NS 1
mrcImageFourierShellCorrelation -i1 Input1.3d -i2 Input2.3d


出力結果
0.000000 1.000000 1 
0.006250 0.968859 13 
0.012500 0.945843 37 
0.018750 0.893456 57 
0.025000 0.718383 121 
0.031250 0.338452 189 
0.037500 0.220720 245 
0.043750 0.173959 321 
0.050000 0.220791 405 
0.056250 0.067855 605 
0.062500 0.079261 653 
出力結果よりこのデータの分解能は40[Å]であるといえます。


FOMの計算
mrcImageFOMCalcを用いてFOMを計算します。各入力ファイルはFFTファイルなので、予めmrcImageFFTにて変換しておきます。


実行例1
入力ファイル1(-i)の画像

121p-shift-1-3dfft.png
mrcFFTExpression(m=1)で表示

最小

最大
平均値
標準偏差

標準誤差

0 (58, 11, 1)

20560.1 (33, 63, 1)
133.578
500.738

0.978004


入力ファイル2(-r)の画像

121p-shift-2-3dfft.png
mrcFFTExpression(m=1)で表示

最小

最大
平均値
標準偏差

標準誤差

0 (58, 7, 1)

20155.7 (34, 63, 62)
134.415
509.291

0.99471


コマンド: mrcImageFOMCalc -i1 121p-shift-1.3dfft -i2 121p-shift-2.3dfft -dR 0.006250


出力結果
##Sector index     0/    1        0.00       90.00       90.00
##      minR<        <=maxR           FOM           Num          XMax       Scaling
   0.0000e+00    6.2500e-03        0.8941            12    4.0774e+03    1.0000e+00
   6.2500e-03    1.2500e-02        0.7619            28    2.0580e+03    1.0000e+00
   1.2500e-02    1.8750e-02        0.7323            72    5.9033e+02    1.0000e+00
   1.8750e-02    2.5000e-02        0.6918           100    3.3402e+03    1.0000e+00
   2.5000e-02    3.1250e-02           nan           180    1.6649e+03    1.0000e+00
   3.1250e-02    3.7500e-02           nan           256    8.5474e+02    1.0000e+00
   3.7500e-02    4.3750e-02        0.5614           268    2.7986e+02    1.0000e+00
   4.3750e-02    5.0000e-02        0.5787           456    6.8568e+02    1.0000e+00
   5.0000e-02    5.6250e-02        0.5522           568    5.4674e+02    1.0000e+00
   5.6250e-02    6.2500e-02        0.5323           648    1.3708e+03    1.0000e+00
   6.2500e-02    6.8750e-02           nan           796    1.2311e+03    1.0000e+00
   6.8750e-02    7.5000e-02           nan           888    1.9878e+03    1.0000e+00
   7.5000e-02    8.1250e-02           nan          1144    1.9348e+03    1.0000e+00
   8.1250e-02    8.7500e-02           nan          1264    1.7693e+03    1.0000e+00
   8.7500e-02    9.3750e-02           nan          1452    1.1612e+04    1.0000e+00
   9.3750e-02    1.0000e-01           nan          1648    6.6062e+03    1.0000e+00
各周波数毎のFOMが出力されます。この場合の分解能は2.5000e-02[1/Å]から40[Å]となります。
-i のデータから振幅0の値を検出した場合はFOMはエラーとなります。


さらにSector毎のFOMを出力したい場合は-nSを使用します。
コマンド: mrcImageFOMCalc -i1 121p-shift-1.3dfft -i2 121p-shift-2.3dfft -dR 0.006250 -nS 2
出力結果
##Sector index     0/    2        0.00       45.00       45.00
##      minR<        <=maxR           FOM           Num          XMax       Scaling
   0.0000e+00    6.2500e-03        0.8481             8    4.0774e+03    1.0000e+00
   6.2500e-03    1.2500e-02        0.7645            24    2.0580e+03    1.0000e+00
   1.2500e-02    1.8750e-02        0.7503            56    5.9033e+02    1.0000e+00
   1.8750e-02    2.5000e-02        0.6469            68    3.3402e+03    1.0000e+00
   2.5000e-02    3.1250e-02           nan           124    1.6649e+03    1.0000e+00
   3.1250e-02    3.7500e-02           nan           188    8.5474e+02    1.0000e+00
   3.7500e-02    4.3750e-02        0.5261           184    2.7986e+02    1.0000e+00
   4.3750e-02    5.0000e-02        0.5638           332    6.8568e+02    1.0000e+00
   5.0000e-02    5.6250e-02        0.5289           400    5.4674e+02    1.0000e+00
   5.6250e-02    6.2500e-02        0.5044           456    1.3708e+03    1.0000e+00
   6.2500e-02    6.8750e-02           nan           564    1.2311e+03    1.0000e+00
   6.8750e-02    7.5000e-02           nan           640    1.9878e+03    1.0000e+00
   7.5000e-02    8.1250e-02           nan           796    1.9348e+03    1.0000e+00
   8.1250e-02    8.7500e-02           nan           888    1.7693e+03    1.0000e+00
   8.7500e-02    9.3750e-02           nan          1036    1.1612e+04    1.0000e+00
   9.3750e-02    1.0000e-01           nan          1160    6.6062e+03    1.0000e+00
##Sector index     1/    2       45.00       90.00       45.00
##      minR<        <=maxR           FOM           Num          XMax       Scaling
   0.0000e+00    6.2500e-03        0.9862             4    4.0774e+03    1.0000e+00
   6.2500e-03    1.2500e-02        0.7461             4    2.0580e+03    1.0000e+00
   1.2500e-02    1.8750e-02        0.6692            16    5.9033e+02    1.0000e+00
   1.8750e-02    2.5000e-02        0.7873            32    3.3402e+03    1.0000e+00
   2.5000e-02    3.1250e-02        0.6751            56    1.6649e+03    1.0000e+00
   3.1250e-02    3.7500e-02        0.6751            68    8.5474e+02    1.0000e+00
   3.7500e-02    4.3750e-02        0.6389            84    2.7986e+02    1.0000e+00
   4.3750e-02    5.0000e-02        0.6187           124    6.8568e+02    1.0000e+00
   5.0000e-02    5.6250e-02        0.6075           168    5.4674e+02    1.0000e+00
   5.6250e-02    6.2500e-02        0.5986           192    1.3708e+03    1.0000e+00
   6.2500e-02    6.8750e-02        0.6178           232    1.2311e+03    1.0000e+00
   6.8750e-02    7.5000e-02        0.6274           248    1.9878e+03    1.0000e+00
   7.5000e-02    8.1250e-02        0.5538           348    1.9348e+03    1.0000e+00
   8.1250e-02    8.7500e-02        0.5277           376    1.7693e+03    1.0000e+00
   8.7500e-02    9.3750e-02        0.5013           416    1.1612e+04    1.0000e+00
   9.3750e-02    1.0000e-01        0.4690           488    6.6062e+03    1.0000e+00
実行例2(ノイズ無しデータ)
ノイズ無しのデータを使用し、実行例1と同じコマンドで実行します
入力ファイル1(-i)の画像

121p-shift-5-3dfft.png
mrcFFTExpression(m=1)で表示

最小

最大
平均値
標準偏差

標準誤差

0 (56, 51, 0)

20588.5 (33, 63, 1)
116.462
464.422

0.907075


入力ファイル2(-r)の画像

121p-shift-6-3dfft.png
mrcFFTExpression(m=1)で表示

最小

最大
平均値
標準偏差

標準誤差

0 (39, 53, 1)

20086.5 (34, 63, 62)
115.283
471.146

0.920207


出力結果
##Sector index     0/    1        0.00       90.00       90.00
##      minR<        <=maxR           FOM           Num          XMax       Scaling
   0.0000e+00    6.2500e-03        0.8951            12    1.1528e+04    1.0000e+00
   6.2500e-03    1.2500e-02        0.7611            28    4.4962e+04    1.0000e+00
   1.2500e-02    1.8750e-02        0.7301            72    7.1173e+02    1.0000e+00
   1.8750e-02    2.5000e-02        0.6882           100    1.2338e+04    1.0000e+00
   2.5000e-02    3.1250e-02        0.6636           180    4.1844e+03    1.0000e+00
   3.1250e-02    3.7500e-02        0.6210           256    9.0759e+02    1.0000e+00
   3.7500e-02    4.3750e-02        0.5745           268    5.8970e+03    1.0000e+00
   4.3750e-02    5.0000e-02        0.5966           456    1.1883e+03    1.0000e+00
   5.0000e-02    5.6250e-02        0.5715           568    1.5978e+04    1.0000e+00
   5.6250e-02    6.2500e-02           nan           648    4.6943e+04    1.0000e+00
   6.2500e-02    6.8750e-02           nan           796    1.8246e+03    1.0000e+00
   6.8750e-02    7.5000e-02           nan           888    4.2966e+04    1.0000e+00
   7.5000e-02    8.1250e-02           nan          1144    2.7414e+05    1.0000e+00
   8.1250e-02    8.7500e-02           nan          1264    1.6437e+04    1.0000e+00
   8.7500e-02    9.3750e-02           nan          1452    6.9815e+03    1.0000e+00
   9.3750e-02    1.0000e-01           nan          1648    1.5821e+03    1.0000e+00


実行例3(データ量を増やして実行)
データ数を増やして3次元像(ノイズ有り)を作り、同じコマンドで実行します。
入力ファイル1(-i)の画像

121p-shift-9-3dfft.png
mrcFFTExpression(m=1)で表示

最小

最大
平均値
標準偏差

標準誤差

0 (53, 42, 9)

18662.1 (34, 63, 62)
244.337
516.318

1.00843


入力ファイル2(-r)の画像

121p-shift-10-3dfft.png
mrcFFTExpression(m=1)で表示

最小

最大
平均値
標準偏差

標準誤差

0 (55, 42, 1)

17705.3 (34, 63, 62)
243.474
503.237

0.982885


出力結果
sumPP is zero
##Sector index     0/    1        0.00       90.00       90.00
##      minR<        <=maxR           FOM           Num          XMax       Scaling
   0.0000e+00    6.2500e-03        0.9995            12    6.7197e+04    1.0000e+00
   6.2500e-03    1.2500e-02        0.9956            28    6.4271e+04    1.0000e+00
   1.2500e-02    1.8750e-02        0.9879            72    3.6622e+04    1.0000e+00
   1.8750e-02    2.5000e-02        0.9638           100    2.5987e+03    1.0000e+00
   2.5000e-02    3.1250e-02        0.9237           180    1.2138e+05    1.0000e+00
   3.1250e-02    3.7500e-02        0.8821           256    3.1826e+03    1.0000e+00
   3.7500e-02    4.3750e-02        0.8832           268    3.2913e+03    1.0000e+00
   4.3750e-02    5.0000e-02        0.8996           456    1.0771e+04    1.0000e+00
   5.0000e-02    5.6250e-02        0.8496           568    1.5466e+06    1.0000e+00
   5.6250e-02    6.2500e-02        0.8071           648    1.7452e+03    1.0000e+00
   6.2500e-02    6.8750e-02        0.8160           796    1.6423e+03    1.0000e+00
   6.8750e-02    7.5000e-02        0.7958           888    3.8389e+03    1.0000e+00
   7.5000e-02    8.1250e-02        0.7879          1144    5.5127e+04    1.0000e+00
   8.1250e-02    8.7500e-02        0.7522          1264    3.2747e+03    1.0000e+00
   8.7500e-02    9.3750e-02        0.7434          1452    5.9965e+03    1.0000e+00
   9.3750e-02    1.0000e-01        0.7422          1648    6.1985e+03    1.0000e+00
データ量を増やすことにより分解能が良くなりました。


繰り返し(精密化)

 出来上がった3次元像は参照像に依存してしまうので、参照像に近い構造になってしまうことが多いです。そこで、再構成した3次元像を新たな参照像として、再び3次元再構成を行います。
こちらのMakefileを使用する場合、make Again, make Allと入力すると3次元像(.3d)及び角度情報(.3dlst)のバックアップを残して3次元再構成を繰り返すことができます。


実行例1
第1軸のみの回転で繰り返したときの画像、角度の推移を観察します。
入力ファイルの画像(Initial.3dにリネーム)

1WDC-shift2-3d.png
xy平面

1WDC-shift2-3d2.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

0 (0, 0, 0)

20844.4 (39, 19, 34)
83.2308
875.193

1.70936


参照ファイルの画像(1WDC.ref3dにリネーム)

1B7T-shift1-3d.png
xy平面

1B7T-shift1-3d2.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

0 (0, 0, 0)

18763.4 (19, 21, 15)
174.181
1064.33

2.07878


変更箇所
TARGET=1WDC

ROTMODE=XEYS

ROT1MIN=0
ROT1MAX=0
ROT1D=30
nRot1=1

ROT2MIN=0
ROT2MAX=355
ROT2D=5
nRot2=72

STEP=72
ROTMIN=0
ROTMAX=355

REFSOURCE=1WDC



TestDataNoise::
	@for (( rot1 = $(ROT1MIN); rot1 <= $(ROT1MAX); rot1 += $(ROT1D) )) \
	do \
	for (( rot2 = $(ROT2MIN); rot2 <= $(ROT2MAX); rot2 += $(ROT2D) )) \


コマンド
make TestDataNoise
make First
make All

(以下繰り返し)
make Again
make All


実行結果
今回は6回目で角度情報が決定しました。

1回目(角度情報)

1WDC.3d-1.png
xy平面
1WDC.3d1-1.png

yz平面

2回目(角度情報)

1WDC.3d-2.png
xy平面
1WDC.3d1-2.png

yz平面

3回目(角度情報)

1WDC.3d-3.png
xy平面
1WDC.3d1-3.png

yz平面

...

...
...
...

...

6回目(角度情報)

1WDC.3d-6.png
xy平面
1WDC.3d1-6.png

yz平面

6回目の角度情報
1WDC-noise-0-0-0.fit XEYS 0.000000 169.999993 0.000000 0.204436
1WDC-noise-0-10-0.fit XEYS 0.000000 169.999993 0.000000 0.202885
1WDC-noise-0-100-0.fit XEYS 0.000000 169.999993 0.000000 0.196383
1WDC-noise-0-105-0.fit XEYS 0.000000 169.999993 0.000000 0.194253
1WDC-noise-0-110-0.fit XEYS 0.000000 169.999993 0.000000 0.197796
1WDC-noise-0-115-0.fit XEYS 0.000000 169.999993 0.000000 0.197182
1WDC-noise-0-120-0.fit XEYS 0.000000 169.999993 0.000000 0.192074
1WDC-noise-0-125-0.fit XEYS 0.000000 169.999993 0.000000 0.196743
1WDC-noise-0-130-0.fit XEYS 0.000000 169.999993 0.000000 0.191466
1WDC-noise-0-135-0.fit XEYS 0.000000 169.999993 0.000000 0.185385
1WDC-noise-0-140-0.fit XEYS 0.000000 169.999993 0.000000 0.179466
1WDC-noise-0-145-0.fit XEYS 0.000000 350.000012 0.000000 0.184249

-中略-

1WDC-noise-0-5-0.fit XEYS 0.000000 169.999993 0.000000 0.201237
1WDC-noise-0-50-0.fit XEYS 0.000000 169.999993 0.000000 0.190248
1WDC-noise-0-55-0.fit XEYS 0.000000 169.999993 0.000000 0.190123
1WDC-noise-0-60-0.fit XEYS 0.000000 169.999993 0.000000 0.189149
1WDC-noise-0-65-0.fit XEYS 0.000000 169.999993 0.000000 0.191615
1WDC-noise-0-70-0.fit XEYS 0.000000 169.999993 0.000000 0.193579
1WDC-noise-0-75-0.fit XEYS 0.000000 169.999993 0.000000 0.188802
1WDC-noise-0-80-0.fit XEYS 0.000000 169.999993 0.000000 0.192261
1WDC-noise-0-85-0.fit XEYS 0.000000 169.999993 0.000000 0.192167
1WDC-noise-0-90-0.fit XEYS 0.000000 169.999993 0.000000 0.194931
1WDC-noise-0-95-0.fit XEYS 0.000000 169.999993 0.000000 0.194167
今回は角度情報が偏ってしまいました。
これは向きによって長さが違う粒子は角度によって投影像の厚みが違うので、相関値が高くなる向きと低くなる向きがあるためです。


実行例2(楕円体を参照像にする)
実行例1は角度情報が偏ってしまったので、角度別で相関値を正規化して角度情報を得るようにします。


入力ファイルの画像(一部)
1WDC-Set0.png


こちらのMakefileを使用します。
最初の参照像である楕円体の長さを取得するためにこちらのPDBファイル(Target.pdbにリネーム)を使用します。
make First
と入力すると楕円体が作成されます。

Input-Ellipsoid0.png
xy平面

Input1-Ellipsoid0.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

0.00770151 (27, 51, 0)

9.92683 (13, 24, 9)
1.82197
1.94418

0.0120094


参照像の用意をして、下記のコマンドを繰り返します。
make All
make Again


実行結果(縦: xy, yz, zx平面)(横: 繰り返し順)
Outdata-Reconstrucion1.png


7回目の角度情報
Data-0-0-10.norfit YOYR 0.000000 0.000000 149.999997 2.237630
Data-0-0-0.norfit YOYR 0.000000 0.000000 149.999997 2.603800
Data-0-0-100.norfit YOYR 0.000000 0.000000 339.999987 2.882700
Data-0-0-105.norfit YOYR 0.000000 0.000000 339.999987 2.906500
Data-0-0-110.norfit YOYR 0.000000 0.000000 339.999987 2.558120
Data-0-0-115.norfit YOYR 0.000000 0.000000 339.999987 2.102240
Data-0-0-120.norfit YOYR 0.000000 0.000000 39.999999 2.515330
Data-0-0-125.norfit YOYR 0.000000 0.000000 39.999999 3.052590
Data-0-0-130.norfit YOYR 0.000000 0.000000 39.999999 3.240480
Data-0-0-140.norfit YOYR 0.000000 0.000000 275.000000 2.969560
Data-0-0-135.norfit YOYR 0.000000 0.000000 39.999999 3.002060
Data-0-0-145.norfit YOYR 0.000000 0.000000 275.000000 2.868580

-中略-

Data-0-0-5.norfit YOYR 0.000000 0.000000 149.999997 2.591590
Data-0-0-50.norfit YOYR 0.000000 0.000000 284.999998 2.511880
Data-0-0-55.norfit YOYR 0.000000 0.000000 284.999998 2.581110
Data-0-0-65.norfit YOYR 0.000000 0.000000 284.999998 2.083320
Data-0-0-60.norfit YOYR 0.000000 0.000000 284.999998 2.423660
Data-0-0-70.norfit YOYR 0.000000 0.000000 260.000003 2.223190
Data-0-0-75.norfit YOYR 0.000000 0.000000 260.000003 2.507520
Data-0-0-80.norfit YOYR 0.000000 0.000000 260.000003 2.575850
Data-0-0-85.norfit YOYR 0.000000 0.000000 260.000003 2.356030
Data-0-0-95.norfit YOYR 0.000000 0.000000 339.999987 2.496800
Data-0-0-90.norfit YOYR 0.000000 0.000000 260.000003 1.878290
今回は角度の偏りが改善されました。


さらに繰り返し処理を続けるかどうかを判断します。判断要素の一つとして2つの3次元像間の差異であるRMSDを算出する方法があります。


再構成されたファイル同士のRMSD
1回目と2回目、2回目と3回目のように前のファイルとのRMSDを比較します。このデータが0に近づいている場合は繰り返し処理によってある3次元像に向かって収束していくと判断することができます。
RMSD: 1.942014
RMSD: 0.054352
RMSD: 0.038838
RMSD: 0.036579
RMSD: 0.027828
RMSD: 0.026776
RMSD: 0.021007
3次元像が収束していくことが分かります。


元データとのRMSD
3次元像の概形が予め分かっている場合はその3次元像とのRMSDを比較することで、予想される形に近づいているかどうかが分かります。
今回はPDBファイルから画像を作成しているので、元になったPDBファイルとのRMSDを確認します。
RMSD: 0.144895
RMSD: 0.145131
RMSD: 0.145345
RMSD: 0.145317
RMSD: 0.145371
RMSD: 0.145374
RMSD: 0.145376
結果より元のデータから離れた位置に収束していくことが分かります。


以上により、繰り返しを続けると収束はするが収束値が参照像から遠い位置になってしまうことが分かりました。


実行例3(2軸回転)
回転軸を2軸にした画像データについて繰り返します。


入力ファイルの画像(一部)
1WDC-Set.png


こちらのMakefileを使用します。
最初の参照像である楕円体の長さを取得するためにこちらのPDBファイル(Target.pdbにリネーム)を使用します。
make First
と入力すると楕円体が作成されます。

Input-Ellipsoid1.png
xy平面

Input1-Ellipsoid1.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

5.26918e-11 (0, 0, 0)

9.87982 (9, 13, 25)
0.244852
0.897645

0.00544959


参照像の用意をして、下記のコマンドを繰り返します。
make All
make Again


実行結果(縦: xy, yz, zx平面)(横: 繰り返し順)
Outdata-Reconstrucion2.png


角度データ(5回目)
Data-0-0-0.norfit YOYR 0.000000 209.999999 90.000003 1.288430
Data-0-0-30.norfit YOYR 0.000000 209.999999 90.000003 1.227120
Data-0-0-60.norfit YOYR 0.000000 209.999999 90.000003 0.842155
Data-0-0-90.norfit YOYR 0.000000 209.999999 90.000003 0.876048
Data-0-0-120.norfit YOYR 0.000000 209.999999 120.000003 0.855616
Data-0-0-150.norfit YOYR 0.000000 149.999997 270.000001 1.232650
Data-0-0-180.norfit YOYR 0.000000 149.999997 270.000001 1.286790
Data-0-0-210.norfit YOYR 0.000000 149.999997 270.000001 1.220710
Data-0-0-240.norfit YOYR 0.000000 149.999997 270.000001 0.835667
Data-0-0-270.norfit YOYR 0.000000 149.999997 270.000001 0.874323
Data-0-0-300.norfit YOYR 0.000000 149.999997 299.999995 0.853243
Data-0-0-330.norfit YOYR 0.000000 209.999999 90.000003 1.239060
Data-0-30-0.norfit YOYR 0.000000 209.999999 120.000003 0.407938
Data-0-30-30.norfit YOYR 0.000000 209.999999 90.000003 0.838108
Data-0-30-60.norfit YOYR 0.000000 30.000001 240.000007 0.836116
Data-0-30-90.norfit YOYR 0.000000 209.999999 90.000003 0.470647


繰り返しを行った3次元像にてRMSDを確認します。
再構成されたファイル同士の差
RMSD: 0.247035
RMSD: 0.069998
RMSD: 0.075812
RMSD: 0.041058
RMSD: 0.020464
RMSD: 0.000000
今回は5回目で3次元像が収束することが分かりました。


元データとの差
RMSD: 0.070851
RMSD: 0.115529
RMSD: 0.117830
RMSD: 0.118311
RMSD: 0.118537
RMSD: 0.118537
元データからは離れてしまいました。


実行例4
データ数を増やして繰り返し処理を行ってみます。


入力ファイルの画像(一部)
1WDC-Set3.png


参照ファイルの画像

Input-Ellipsoid0.png
xy平面

Input1-Ellipsoid0.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

0.00770151 (27, 51, 0)

9.92683 (13, 24, 9)
1.82197
1.94418

0.0120094


こちらのMakefileを使用してmake First入力後、下記のコマンドを繰り返します。
make All
make Again


実行結果(縦: xy, yz, zx平面)(横: 繰り返し順)
Outdata-Reconstrucion3.png


角度データ(8回目)
Target-30-0-0.norfit XEYS 0.000000 0.000000 0.000000 1.777800
Target-30-100-0.norfit XEYS 15.000000 79.999998 0.000000 1.566880
Target-30-160-0.norfit XEYS 15.000000 159.999995 0.000000 1.850150
Target-30-140-0.norfit XEYS 15.000000 159.999995 0.000000 1.861180
Target-30-120-0.norfit XEYS 15.000000 159.999995 0.000000 1.606530
Target-30-200-0.norfit XEYS 15.000000 200.000001 0.000000 1.294580
Target-30-20-0.norfit XEYS 0.000000 0.000000 0.000000 1.609950
Target-30-180-0.norfit XEYS 15.000000 159.999995 0.000000 1.669100
Target-30-220-0.norfit XEYS 15.000000 200.000001 0.000000 1.376640
Target-30-240-0.norfit XEYS 15.000000 200.000001 0.000000 1.267100


繰り返しを行った3次元像にてRMSDを確認します。
再構成されたファイル同士の差
RMSD: 1.493058
RMSD: 0.033468
RMSD: 0.032110
RMSD: 0.027513
RMSD: 0.019014
RMSD: 0.011571
RMSD: 0.010530
RMSD: 0.007969
RMSD: 0.000001
8回目で収束しました。


元データとの差
RMSD: 0.076360
RMSD: 0.074938
RMSD: 0.076552
RMSD: 0.078143
RMSD: 0.078635
RMSD: 0.078915
RMSD: 0.078392
RMSD: 0.078505
RMSD: 0.078505
実行例3よりも元データに近づきました。


しかし、角度情報にまだ偏りがあるためある方向からの画像はぼやけたままです。
Outdata-Reconstrucion3-1.png
XEYR 45 45 0から見た画像


Fig-Correlation.png


実行例5
実行例4の同じデータで3次元再構成時にランダムに1割の画像を除いて、繰り返し処理を行います。


実行結果(縦: xy, yz, zx平面)(横: 繰り返し順)
Outdata-Reconstrucion5.png


角度データ(X回目)


再構成されたファイル同士の差


元データとの差


実行例6
実行例4の同じデータで3次元再構成時に1割の画像をランダムに決定した角度と相関値の高い方を選んで、繰り返し処理を行います。


実行結果(縦: xy, yz, zx平面)(横: 繰り返し順)
Outdata-Reconstrucion6.png


角度データ(X回目)


再構成されたファイル同士の差


元データとの差


実行例7
別の画像データで繰り返し処理を行ってみます。


入力ファイルの画像(一部)
1VOM-noise-Set.png


参照ファイルの画像(Target.ref3dにリネーム)

Input-Ellipsoid.png
xy平面

Input1-Ellipsoid.png
yz平面

最小

最大
平均値
標準偏差

標準誤差

0 (0, 0, 0)

2 (30, 35, 4)
0.385386
0.60603

0.0010455


こちらのMakefileを使用して、下記のコマンドを繰り返します。
make All
make Again


実行結果(縦: xy, yz, zx平面)(横: 繰り返し順)


角度データ(1回目)


角度データ(2回目)


角度データ(3回目)


角度データ(X回目)