「lmrcImageClusterAnalysis(API)」の版間の差分
提供: Eospedia
(→API) |
|||
| 行60: | 行60: | ||
float lmrcImageClusterAnalysisByIteration(int* group, mrcImage* in, int clusternum, int N, int mode); | float lmrcImageClusterAnalysisByIteration(int* group, mrcImage* in, int clusternum, int N, int mode); | ||
| + | === ファイル入出力 === | ||
| + | ログの書き出し | ||
void lmrcImageClusterAnalysisDistanceToLog(FILE* fpt, int n, int m, int prevM, int prevN, float distance); | void lmrcImageClusterAnalysisDistanceToLog(FILE* fpt, int n, int m, int prevM, int prevN, float distance); | ||
| + | ログの読み込み | ||
void lmrcImageClusterAnalysisDistanceFromLog(int* skip, float* distance, FILE* fpt); | void lmrcImageClusterAnalysisDistanceFromLog(int* skip, float* distance, FILE* fpt); | ||
2015年3月3日 (火) 01:28時点における版
DataManip/mrcImage/src/lmrcImageClusterAnalysisはmrcImageClusterAnalysisのためのAPI です。
定数
構造体
typedef enum lmrcImageClusterAnalysisMode {
lmrcImageClusterAnalysisModeCorrelation = 0,
lmrcImageClusterAnalysisModeEuclidDistance = 1,
lmrcImageClusterAnalysisModeWardMethod = 2,
lmrcImageClusterAnalysisModeWardMethodLinearCorrelation = 3,
lmrcImageClusterAnalysisModeLinearCorrelation = 4
} lmrcImageClusterAnalysisMode;
#ifdef GLOBAL_DECLARATION
char* lmrcImageClusterAnalysisModeMessage[] = {
"By Correlation",
"By Euclid Distance",
"By Ward Method (default) : Euclid Length (no rotation) or its square (rotation)",
"By Ward Method using Linear Correlation : (1 - Correlation)/(1 + Correlation)",
"By Linear Correlation : (1 - Correlation)/(1 + Correlation)",
NULL
};
#endif
typedef struct lmrcImageClusterAnalysisInfo {
lmrcImageClusterAnalysisMode mode; /* ClusterAnalysisMode */
int flagIteration; /* */
int flagAutoRotation;
char** filename; /* filename */
int correlationMode; /* correlationMode */
mrcImage* averagedImage;
lmrcImageAutoRotationCorrelationInfo arInitial;
int flagPVM;
int flagLogIn;
FILE* fptLogIn;
int previousFileNumber;
int flagLog;
FILE* fptLog; /* All Log */
int flagLog2;
FILE* fptLog2; /* Cluster Node Log */
/* Output */
float** Distance;
} lmrcImageClusterAnalysisInfo;
API
void lmrcImageClusterAnalysis(int* group, mrcImage* in, int finalclusternum, int N, lmrcImageClusterAnalysisInfo* linfo); void lmrcImageClusterMerge(mrcImage* in1, mrcImage* in2, int* index, int* averagednum, int m, int n, int* N); float lmrcImageDistanceCalc(mrcImage* in1, mrcImage* in2, int mode); float lmrcImageDistanceCalcByWardMethod(mrcImage* in1, mrcImage* in2, int num1, int num2, int mode);
float lmrcImageDistanceCalcWithAutoRotation(mrcImage* out, mrcImage* cor, mrcImage* in1, mrcImage* in2, lmrcImageAutoRotationCorrelationInfo* linfo, int lmode, int mode); float lmrcImageDistanceCalcByWardMethodWithAutoRotation(mrcImage* out, mrcImage* cor, mrcImage* in1, mrcImage* in2, int num1, int num2, lmrcImageAutoRotationCorrelationInfo* linfo, int lmode, int mode);
float lmrcImageClusterAnalysisByIteration(int* group, mrcImage* in, int clusternum, int N, int mode);
ファイル入出力
ログの書き出し
void lmrcImageClusterAnalysisDistanceToLog(FILE* fpt, int n, int m, int prevM, int prevN, float distance);
ログの読み込み
void lmrcImageClusterAnalysisDistanceFromLog(int* skip, float* distance, FILE* fpt);