lctfDetermination(API)

提供: Eospedia
移動: 案内検索

DataManip/ctfInfo/src/lctfDeterminationCTF推定のためのAPIで、ctfDetermineにて使用しています。

定数

構造体

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);

条件に振幅コントラスト(0.05 ~ 1.00 (+0.01))を加える

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

envelopeの推定

推定したenvelopeをresへ出力

extern void EnvelopeDetermine(ctfInfo* res, mrcImage* mrc, ctfInfo* ini,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);