「lFETOrientationSearchByAnnealing(API)」の版間の差分
提供: Eospedia
(→API) |
|||
行61: | 行61: | ||
<br> | <br> | ||
− | + | === パラメータの設定 === | |
+ | inに使用するパラメータのメモリ確保をします。(nはFETファイル数) | ||
extern void lFETsimultaneousMinimizationDataSetMemoryAllocate(lFETsimultaneousMinimizationDataSet* in, int n, int mode); | extern void lFETsimultaneousMinimizationDataSetMemoryAllocate(lFETsimultaneousMinimizationDataSet* in, int n, int mode); | ||
<br> | <br> | ||
行88: | 行89: | ||
<br> | <br> | ||
+ | === simultaneousMinimization === | ||
in->cUs, in->dUsからLを算出し、in->cU, in->dUへ格納します。 | in->cUs, in->dUsからLを算出し、in->cU, in->dUへ格納します。 | ||
extern void lFETsimultaneousMinimizationLcalculate(lFETsimultaneousMinimizationDataSet* in, int mode); | extern void lFETsimultaneousMinimizationLcalculate(lFETsimultaneousMinimizationDataSet* in, int mode); |
2015年3月24日 (火) 08:24時点における最新版
DataManip/transform/src/lFETOrientationSearchByAnnealingはFETOrientationSearchByAnnealingのための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);