3 <H2>Information from source codes</H2>
6 ../src/clusterLogAnalysis.c:
8 ../src/clusterLogInit.c:
10 ../src/clusterLogRead.c:
12 ../src/clusterLogUtil.c:
14 ../src/clusterLogWrite.c:
24 #define CLUSTERLOG_BINARY_FILENAME_FORMAT "%s.%08d.%08d.%08d"
25 #define CLUSTERLOG_BINARY_NO_CALCULATION_VALUE (-9999)
29 typedef int clusterTypeInteger;
30 typedef double clusterTypeReal;
32 typedef float clusterTypeReal;
33 typedef short clusterTypeInteger;
35 typedef struct clusterLogOneRecord clusterLogOneRecord;
36 struct clusterLogOneRecord {
37 /* Information of this log line in the logfile */
38 clusterTypeInteger N; /* Current N (shrinked array): Definition: N > M */
39 clusterTypeInteger M; /* Current M : */
40 clusterTypeInteger prevN; /* prevN: N: the nearest pair in the below layer */
41 clusterTypeInteger prevM; /* prevM: M: */
42 clusterTypeReal distance; /* Distance between N and M */
44 /* Original File Number */
45 clusterTypeInteger originalN;
46 clusterTypeInteger originalM;
48 /* File Number within the below layer */
49 clusterTypeInteger firstN;
50 clusterTypeInteger firstM;
52 clusterLogOneRecord* belowLayerStart;
53 clusterLogOneRecord* belowLayer;
54 clusterLogOneRecord* belowLayerEnd;
57 clusterLogOneRecord* upperLayer;
60 clusterLogOneRecord* belowLayerForN;
61 clusterLogOneRecord* belowLayerForM;
63 /* Including the below layer */
64 clusterTypeInteger clusterSize; /* File Number of the cluster */
67 clusterTypeInteger clusterNumber; /* Cluster Numer of this layer */
68 /* Set the number of the cluster where this log line attributes in a function of clusterLogClusterNumberSet or Set2 */
70 clusterLogOneRecord* prev; /* previous record */
71 clusterLogOneRecord* next; /* Next record */
74 typedef struct clusterLog {
75 clusterLogOneRecord* top;
76 clusterLogOneRecord* current;
77 clusterLogOneRecord* bottom;
80 typedef struct clusterLog2OneRecord clusterLog2OneRecord;
82 struct clusterLog2OneRecord {
83 // LogFile Information
85 clusterTypeInteger M; // N > M: merge N to M
86 clusterTypeReal distance;
87 clusterTypeReal linearCorrelation;
90 clusterTypeInteger clusterNumber; // Cluster Number
92 clusterLog2OneRecord* prev;
93 clusterLog2OneRecord* next;
96 typedef struct clusterLog2 {
97 clusterLog2OneRecord* top;
98 clusterLog2OneRecord* current;
99 clusterLog2OneRecord* bottom;
102 typedef struct clusterTreeInfo clusterTreeInfo;
103 struct clusterTreeInfo {
104 clusterTypeReal posX;
105 clusterTypeReal posY;
106 clusterTypeReal ShoulderScale;
107 clusterTypeReal ArmScale;
109 clusterTypeReal ArmOffset;
111 clusterTypeInteger flagLog;
112 clusterTypeInteger flagScaling;
116 clusterTypeReal* InPosY;
117 clusterTypeReal* InPosX;
118 clusterTypeInteger argc;
120 clusterTypeInteger* clusterSize;
121 clusterTypeInteger* clusterNumber;
123 clusterTypeInteger currentNo;
125 clusterTypeInteger flagFPTTreeInfo;
131 /* prototype begin */
136 /* in clusterLogRead.c */
137 extern clusterLogOneRecord* clusterLogRead(clusterLog* cluster, FILE* fpt, int mode);
138 extern clusterLog* clusterLogReadAll(clusterLog* cluster, FILE* fpt, int mode);
139 extern clusterLog2OneRecord* clusterLog2Read(clusterLog2* cluster, FILE* fpt, int mode);
140 extern clusterLog2* clusterLog2ReadAll(clusterLog2* cluster, FILE* fpt, int mode);
141 extern clusterLogOneRecord* clusterLogReadBinary(clusterLog* cluster, clusterTypeInteger* prevN, clusterTypeInteger* prevM, char* filename, int mode);
142 extern clusterLog* clusterLogReadAllBinary(clusterLog* cluster, char* basename, int mode);
144 extern clusterLogOneRecord* clusterLogWriteAllBinary(clusterLog* cluster, char* basename, int mode);
145 extern clusterLogOneRecord* clusterLogWrite(clusterLog* cluster, FILE* fpt, int mode);
146 extern clusterLogOneRecord* clusterLogWriteOneRecord(clusterLogOneRecord* cluster, FILE* fpt, int mode);
147 extern clusterLogOneRecord* clusterLogWriteAll(clusterLog* cluster, FILE* fpt, int mode);
148 extern clusterLogOneRecord* clusterLogWriteClusterOnly(clusterLog* cluster, FILE* fpt, int mode);
149 extern void clusterLogWritePS(clusterLog* cluster, clusterTreeInfo* linfo, FILE* fpt, int mode);
151 /* in clusterLogUtil.c */
152 extern void clusterLogClusterInformationSet(clusterLog* cluster, clusterTypeInteger lastNum, int mode);
154 extern void clusterLogClusterNumberSet(clusterLogOneRecord* bottom, clusterTypeInteger lastClusterNum, int mode);
155 extern void clusterLogClusterNumberSetForLog2(clusterLog* cluster, clusterTypeInteger lastClusterNum, int mode);
156 extern void clusterLogClusterNumberSet2(clusterLog* top, clusterTypeInteger firstClusterNum, int mode);
158 extern clusterLogOneRecord* clusterLogGetDistance(clusterLog* cluster, clusterTypeInteger N, clusterTypeInteger M, clusterTypeInteger clusterNum, clusterTypeReal* data);
160 extern void clusterLogBelowLayerPointerSet(clusterLog* cluster, int mode);
161 extern clusterLogOneRecord* clusterLogBottomGet(clusterLog* cluster, int mode);
162 extern int clusterLogClusterSizeGet(clusterLogOneRecord* cluster, int mode);
163 extern void clusterLogClusterSizeSet(clusterLog* cluster, int mode);
164 extern void clusterLogBottomSet(clusterLog* cluster, int mode);
165 extern clusterLog* clusterLogTransformLog2ToLog(clusterLog2* cluster2, clusterTypeInteger lastNum, int mode);
167 /* in clusterLogInit.c */
168 extern clusterLog* clusterLogInit(clusterLog * cluster, int mode);
169 extern clusterLog2* clusterLog2Init(clusterLog2 * cluster, int mode);
170 extern clusterLogOneRecord* clusterLogInitOneRecord(clusterLogOneRecord * cluster, int mode);
171 extern clusterLog2OneRecord* clusterLog2InitOneRecord(clusterLog2OneRecord * cluster, int mode);