lFETOrientationSearchByAnnealing(API)

提供: Eospedia
2015年3月24日 (火) 08:24時点におけるKinoshita (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

DataManip/transform/src/lFETOrientationSearchByAnnealingFETOrientationSearchByAnnealingのためのAPI です。

定数

構造体

typedef struct lFETOrientationSearchByAnnealingInfo{
	mrcImage* InMS;
	FILE* InFL;
	FILE* InML;
	int fnum;
	int flagInML;
	double ITemp;
	int as1;
	double as2;
	int as3;
	FILE* Out;
	int mode;
}lFETOrientationSearchByAnnealingInfo;
typedef struct lFETsimultaneousMinimizationDataSet{
	mrcImage* map;
	int dImage;
	unsigned* sflag; 
	double* cAngle[3];  //3 means euler angle set
	double dAngle[3];   //
	int** cPos[3];      //3  x, y, z
	int* dPos[3];       // 
	double** cUs;
	double* dUs;
	double cU;
	double dU;
	double* cUt;
	lCommonLineCalculationInfo* clc;
	int n, z;
	int mode;
}lFETsimultaneousMinimizationDataSet;
typedef struct lFETOrientationSearchByAnnealingDataSet{
	int fnum;
	mrcImage* FETs;
	mrcImage* maps; 
	double** angles;
	double** CPVtable;
	int current;
	double angle[3];
	double* CPVtemp;
	int mode;
}lFETOrientationSearchByAnnealingDataSet;

API

角度探索

焼きなまし法

焼きなまし法による角度探索を行います。(繰り返し数: 10×100)

extern void lFETOrientationSearchByAnnealing(lFETOrientationSearchByAnnealingInfo info, int mode);

FETOrientationSearchByAnnealingでは現実装においては下記のlFETOrientationSearchByRigidSubsetCoreを使用しています。

RigidSubsetCore

extern void lFETOrientationSearchByRigidSubsetCore(lFETOrientationSearchByAnnealingInfo info, int mode);
extern void lFETOrientationSearchByRigidSubsetCore_Search(lFETsimultaneousMinimizationDataSet* , int );


パラメータの設定

inに使用するパラメータのメモリ確保をします。(nはFETファイル数)

extern void lFETsimultaneousMinimizationDataSetMemoryAllocate(lFETsimultaneousMinimizationDataSet* in, int n, int mode);


inに使用するパラメータをランダムに設定します。

extern void lFETsimultaneousMinimizationRandomParaSet(lFETsimultaneousMinimizationDataSet* in, int mode);

modeによりパラメータの設定方法を選択できます。

mode 設定方法
0 初期パラメータの設定
1 generate difference on minimization process: completely random(in->dImageに乱数が格納される)
それ以外 generate difference on minimization process


simultaneousMinimization

in->cUs, in->dUsからLを算出し、in->cU, in->dUへ格納します。

extern void lFETsimultaneousMinimizationLcalculate(lFETsimultaneousMinimizationDataSet* in, int mode);

modeにより算出方法を選択できます。

mode 算出方法
0 cUsの組み合わせによる総和をcUへ格納
1 上記に加え、dUsとcUsのin->dImage成分との差異をdUへ格納


in->dAngle, in->dPos, in->dUs, in->dImageからin->cAngle, in->cPos, in->cUsの更新を行います。

extern void lFETsimultaneousMinimizationOverWrite(lFETsimultaneousMinimizationDataSet* in, int mode);