「lctfDetermination(API)」の版間の差分

提供: Eospedia
移動: 案内検索
(メイン)
(フィッティング法)
行84: 行84:
 
==== フィッティング法 ====
 
==== フィッティング法 ====
 
  extern void lctfDeterminationbyFittingMethods(ctfInfo* res, ctfInfo* var, mrcImage* mrc, ctfInfo* ini, long mode);
 
  extern void lctfDeterminationbyFittingMethods(ctfInfo* res, ctfInfo* var, mrcImage* mrc, ctfInfo* ini, long mode);
 +
 
  extern void angularDistributionFunctionOfSignalAndNoise(float x, float p[], float* y, float dyda[], int na);
 
  extern void angularDistributionFunctionOfSignalAndNoise(float x, float p[], float* y, float dyda[], int na);
 +
入力: x, p<br>
 +
出力: y, dyda<br>
 +
<br>
 +
p, dydaの要素は例えば下記のようなctfinfoのメンバに対応している。
 +
<table border="1">
 +
<tr>
 +
<th>No.</th>
 +
<th>対応しているctfInfoメンバ</th>
 +
</tr>
 +
<tr>
 +
<td>1</td>
 +
<td>I0</td>
 +
</tr>
 +
<tr>
 +
<td>2</td>
 +
<td>defocus</td>
 +
</tr>
 +
<tr>
 +
<td>3</td>
 +
<td>Cs</td>
 +
</tr>
 +
<tr>
 +
<td>4</td>
 +
<td>ratioOfAmpToPhase</td>
 +
</tr>
 +
<tr>
 +
<td>5</td>
 +
<td>Ain</td>
 +
</tr>
 +
<tr>
 +
<td>6</td>
 +
<td>Cc</td>
 +
</tr>
 +
<tr>
 +
<td>7</td>
 +
<td>dE</td>
 +
</tr>
 +
<tr>
 +
<td>8</td>
 +
<td>BofVibration</td>
 +
</tr>
 +
<tr>
 +
<td>9</td>
 +
<td>WhiteNoise</td>
 +
</tr>
 +
<tr>
 +
<td>10</td>
 +
<td>WhiteNoise2</td>
 +
</tr>
 +
<tr>
 +
<td>11</td>
 +
<td>BofMTF</td>
 +
</tr>
 +
<tr>
 +
<td>12</td>
 +
<td>MolecEnv</td>
 +
</tr>
 +
<tr>
 +
<td>13</td>
 +
<td>kV</td>
 +
</tr>
 +
<tr>
 +
<td>14</td>
 +
<td>(定数)511*1e3</td>
 +
</tr>
 +
<tr>
 +
<td>15</td>
 +
<td>(関数)wavelengthOfElectron(ini->kV*1e3)</td>
 +
</tr>
 +
<tr>
 +
<td>16</td>
 +
<td>Magnification</td>
 +
</tr>
 +
</table>
  
 
==== 差分法 ====
 
==== 差分法 ====

2014年9月30日 (火) 06:29時点における版

DataManip/ctfInfo/src/lctfDeterminationctfDetermineのためのAPI です。

定数

構造体

typedef struct lctfDetermineInfo {
	ctfInfo initial;

	long    ThonRing; 	
	/* For Astigmatism */
	int     flagAstigmatism;
	int    section;

	int    degree;
	double step;
	double max;
	double min;
	float  firstRingDefocus;
	float  IntensityMin;
	float  IntensityMax;
	float* noise;
} lctfDetermineInfo;

API

CTFの推定

メイン

mode(0x000000F0でマスク)によった方法でCTFの推定を行います。
基本的に関数を呼び出すときのmodeは0x0000000Fでマスクをして使用しています。
現在のctfDetermineではこのAPIを使用せずに他のAPIを直接呼ぶようになっています。

extern void lctfDetermine(ctfInfo* result, ctfInfo* var, mrcImage* mrc, lctfDetermineInfo* linfo, long mode);
mode(& 0x000000F0) 使用関数
0 lctfDeterminationbyMinMaxMethods
16 lctfDeterminationbyFittingMethods
32 lctfDeterminationbyDifferentialMethods
64 lctfDeterminationbyCovarianceMethods
96 lctfDeterminationbyMixMethods
128 lctfDeterminationbyMinSquareMethods
160, 161, 163(0x0000000Fのマスクでも判定) lctfDeterminationbyMinSquareMethods

EnvelopeDetermine

167(0x0000000Fのマスクでも判定) lctfDeterminationbyMinSquareMethodsWithAcomp
176 lmrcFSInfoScatteringAngularDistributionAverageSection

lctfDeterminationbyMinSquareMethods
lctfDeterminationByTangent
lastigmatismDetection


ミニマックス法

extern void lctfDeterminationbyMinMaxMethods(ctfInfo* res, mrcImage* mrc, ctfInfo* ini, long mode);

フィッティング法

extern void lctfDeterminationbyFittingMethods(ctfInfo* res, ctfInfo* var, mrcImage* mrc, ctfInfo* ini, long mode);
extern void angularDistributionFunctionOfSignalAndNoise(float x, float p[], float* y, float dyda[], int na);

入力: x, p
出力: y, dyda

p, dydaの要素は例えば下記のようなctfinfoのメンバに対応している。

No. 対応しているctfInfoメンバ
1 I0
2 defocus
3 Cs
4 ratioOfAmpToPhase
5 Ain
6 Cc
7 dE
8 BofVibration
9 WhiteNoise
10 WhiteNoise2
11 BofMTF
12 MolecEnv
13 kV
14 (定数)511*1e3
15 (関数)wavelengthOfElectron(ini->kV*1e3)
16 Magnification

差分法

extern void lctfDeterminationbyDifferentialMethods(ctfInfo* res, mrcImage* mrc, ctfInfo* ini,long* ThonRing, long mode);

共分散法

extern void lctfDeterminationbyCovarianceMethods(ctfInfo* res, mrcImage* mrc, ctfInfo* ini,long* ThonRing, long mode);

差分法+共分散法

extern void lctfDeterminationbyMixMethods(ctfInfo* res, mrcImage* mrc, ctfInfo* ini, long* ThonRing,long mode);

最小二乗法

extern void lctfDeterminationbyMinSquareMethods(ctfInfo* res, mrcImage* mrc, ctfInfo* ini,long* ThonRing,lctfDetermineInfo* linfo,floatVector* defocus,floatVector* Eres ,long mode);


extern void EnvelopeDetermine(ctfInfo* res, mrcImage* mrc, ctfInfo* ini,lctfDetermineInfo* linfo,floatVector* defocus,floatVector* Eres, long mode);
extern void lctfDeterminationbyMinSquareMethodsWithAcomp(ctfInfo* res, mrcImage* mrc, ctfInfo* ini,long* ThonRing,lctfDetermineInfo* linfo,floatVector* defocus,floatVector* Eres ,long mode);
extern double lctfDeterminationByTangent(ctfInfo* res, mrcImage* mrc, ctfInfo* ini,lctfDetermineInfo* linfo,floatVector* defocus,floatVector* Eres, long mode);

ヘルプ

modeの説明を出力します。

extern void lctfDtermmineUsage(FILE* fpt);