「lctfDetermination(API)」の版間の差分
提供: Eospedia
(→最小二乗法) |
|||
| (同じ利用者による、間の2版が非表示) | |||
| 行85: | 行85: | ||
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> | 入力: x, p<br> | ||
| 行175: | 行175: | ||
extern void lctfDeterminationbyMinSquareMethods(ctfInfo* res, mrcImage* mrc, ctfInfo* ini,long* ThonRing,lctfDetermineInfo* linfo,floatVector* defocus,floatVector* Eres ,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); | extern void lctfDeterminationbyMinSquareMethodsWithAcomp(ctfInfo* res, mrcImage* mrc, ctfInfo* ini,long* ThonRing,lctfDetermineInfo* linfo,floatVector* defocus,floatVector* Eres ,long mode); | ||
| 行182: | 行182: | ||
extern void EnvelopeDetermine(ctfInfo* res, mrcImage* mrc, ctfInfo* ini,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 double lctfDeterminationByTangent(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); | ||
2014年10月1日 (水) 07:16時点における最新版
DataManip/ctfInfo/src/lctfDeterminationはCTF推定のための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 |
ミニマックス法
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);