「lFETOrientationSearchByAnnealing(API)」の版間の差分
提供: Eospedia
		
		
		
|  (ページの作成:「DataManip/transform/src/'''lFETOrientationSearchByAnnealing'''はFETOrientationSearchByAnnealingのためのAPI です。  == 定数 ==  == 構造体 ==  typedef stru...」) | |||
| 行49: | 行49: | ||
| == API == | == API == | ||
| + | === 角度探索 === | ||
| + | ==== 焼きなまし法 ==== | ||
| + | 焼きなまし法による角度探索を行います。(繰り返し数: 10×100) | ||
|   extern void lFETOrientationSearchByAnnealing(lFETOrientationSearchByAnnealingInfo info, int mode); |   extern void lFETOrientationSearchByAnnealing(lFETOrientationSearchByAnnealingInfo info, int mode); | ||
| + | [[FETOrientationSearchByAnnealing]]では現実装においては下記のlFETOrientationSearchByRigidSubsetCoreを使用しています。<br> | ||
| + | <br> | ||
| + | |||
| + | ==== RigidSubsetCore ==== | ||
|   extern void lFETOrientationSearchByRigidSubsetCore(lFETOrientationSearchByAnnealingInfo info, int mode); |   extern void lFETOrientationSearchByRigidSubsetCore(lFETOrientationSearchByAnnealingInfo info, int mode); | ||
|   extern void lFETOrientationSearchByRigidSubsetCore_Search(lFETsimultaneousMinimizationDataSet* , int ); |   extern void lFETOrientationSearchByRigidSubsetCore_Search(lFETsimultaneousMinimizationDataSet* , int ); | ||
| + | <br> | ||
| + | |||
| + | inに使用するメモリを確保します。(nはFETファイル数) | ||
|   extern void lFETsimultaneousMinimizationDataSetMemoryAllocate(lFETsimultaneousMinimizationDataSet* in, int n, int mode); |   extern void lFETsimultaneousMinimizationDataSetMemoryAllocate(lFETsimultaneousMinimizationDataSet* in, int n, int mode); | ||
| + | <br> | ||
| + | |||
| + | inに使用するパラメータをランダムに設定します。 | ||
|   extern void lFETsimultaneousMinimizationRandomParaSet(lFETsimultaneousMinimizationDataSet* in, int mode); |   extern void lFETsimultaneousMinimizationRandomParaSet(lFETsimultaneousMinimizationDataSet* in, int mode); | ||
| + | modeによりパラメータの設定方法を選択できます。 | ||
| + | <table border=1> | ||
| + | 	<tr> | ||
| + | 		<th>mode</th> | ||
| + | 		<th>設定方法</th> | ||
| + | 	</tr> | ||
| + | 	<tr> | ||
| + | 		<td>0</td> | ||
| + | 		<td>初期パラメータの設定</td> | ||
| + | 	</tr> | ||
| + | 	<tr> | ||
| + | 		<td>1</td> | ||
| + | 		<td>generate difference on minimization process: completely random(in->dImageに乱数が格納される)</td> | ||
| + | 	</tr> | ||
| + | 	<tr> | ||
| + | 		<td>それ以外</td> | ||
| + | 		<td>generate difference on minimization process</td> | ||
| + | 	</tr> | ||
| + | </table> | ||
| + | <br> | ||
| + | |||
| + | in->cUs, in->dUsからLを算出し、in->cU, in->dUへ格納します。 | ||
|   extern void lFETsimultaneousMinimizationLcalculate(lFETsimultaneousMinimizationDataSet* in, int mode); |   extern void lFETsimultaneousMinimizationLcalculate(lFETsimultaneousMinimizationDataSet* in, int mode); | ||
| + | modeにより算出方法を選択できます。 | ||
| + | <table border=1> | ||
| + | 	<tr> | ||
| + | 		<th>mode</th> | ||
| + | 		<th>算出方法</th> | ||
| + | 	</tr> | ||
| + | 	<tr> | ||
| + | 		<td>0</td> | ||
| + | 		<td>cUsの組み合わせによる総和をcUへ格納</td> | ||
| + | 	</tr> | ||
| + | 	<tr> | ||
| + | 		<td>1</td> | ||
| + | 		<td>上記に加え、dUsとcUsのin->dImage成分との差異をdUへ格納</td> | ||
| + | 	</tr> | ||
| + | </table> | ||
| + | <br> | ||
| + | |||
| + | in->dAngle, in->dPos, in->dUs, in->dImageからin->cAngle, in->cPos, in->cUsの更新を行います。 | ||
|   extern void lFETsimultaneousMinimizationOverWrite(lFETsimultaneousMinimizationDataSet* in, int mode); |   extern void lFETsimultaneousMinimizationOverWrite(lFETsimultaneousMinimizationDataSet* in, int mode); | ||
| + | <br> | ||
2015年3月24日 (火) 08:22時点における版
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 | 
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);
