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