OSDN Git Service

new file: bin/mrc2mrc
[eos/hostdependX86LINUX64.git] / src / Objects / General / Cluster / doc / Cluster.html
1 <HR>
2 <A NAME="Information">
3 <H2>Information from source codes</H2>
4 </A>
5 <PRE>
6 ../src/clusterLogAnalysis.c:
7
8 ../src/clusterLogInit.c:
9
10 ../src/clusterLogRead.c:
11
12 ../src/clusterLogUtil.c:
13
14 ../src/clusterLogWrite.c:
15 </PRE>
16 <HR>
17 <A NAME="include">
18 <H2>Cluster.h</H2>
19 </A>
20 <PRE>
21 #ifndef CLUSTER_H
22 #define CLUSTER_H
23
24 #define CLUSTERLOG_BINARY_FILENAME_FORMAT      "%s.%08d.%08d.%08d"
25 #define CLUSTERLOG_BINARY_NO_CALCULATION_VALUE (-9999)
26
27 /* struct begin */
28 /*
29 typedef int     clusterTypeInteger;
30 typedef double  clusterTypeReal;
31 */
32 typedef float clusterTypeReal;
33 typedef short clusterTypeInteger;
34
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 */
43
44                 /* Original File Number */
45                 clusterTypeInteger originalN;
46                 clusterTypeInteger originalM;
47
48                 /* File Number within the below layer */
49                 clusterTypeInteger firstN;
50                 clusterTypeInteger firstM;
51
52                 clusterLogOneRecord* belowLayerStart;
53                 clusterLogOneRecord* belowLayer;
54                 clusterLogOneRecord* belowLayerEnd;
55
56                 /* Upper Layer */
57                 clusterLogOneRecord* upperLayer;
58
59                 /* Below Layer */
60                 clusterLogOneRecord* belowLayerForN;
61                 clusterLogOneRecord* belowLayerForM;
62
63                 /* Including the below layer */
64                 clusterTypeInteger   clusterSize;          /* File Number of the cluster */
65
66                 /* This Layer */
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 */ 
69
70         clusterLogOneRecord* prev; /* previous record */
71         clusterLogOneRecord* next; /* Next record */
72 };
73
74 typedef struct clusterLog {
75         clusterLogOneRecord* top;
76         clusterLogOneRecord* current;
77                 clusterLogOneRecord* bottom;
78 } clusterLog;
79
80 typedef struct clusterLog2OneRecord clusterLog2OneRecord;
81
82 struct clusterLog2OneRecord {
83         // LogFile Information 
84         clusterTypeInteger N; 
85         clusterTypeInteger M; // N > M: merge N to M
86         clusterTypeReal    distance;
87         clusterTypeReal    linearCorrelation; 
88
89         // After reading
90         clusterTypeInteger clusterNumber; // Cluster Number
91
92         clusterLog2OneRecord* prev;
93         clusterLog2OneRecord* next;
94 };
95
96 typedef struct clusterLog2 {
97         clusterLog2OneRecord* top;
98         clusterLog2OneRecord* current;
99                 clusterLog2OneRecord* bottom;
100 } clusterLog2;
101
102 typedef struct clusterTreeInfo clusterTreeInfo;
103 struct clusterTreeInfo {
104         clusterTypeReal posX;
105         clusterTypeReal posY;
106         clusterTypeReal ShoulderScale;  
107         clusterTypeReal ArmScale;  
108
109         clusterTypeReal ArmOffset;
110
111         clusterTypeInteger flagLog;
112         clusterTypeInteger flagScaling;
113
114         char** In;
115         char** argv;
116         clusterTypeReal* InPosY;
117         clusterTypeReal* InPosX;
118         clusterTypeInteger argc;
119
120         clusterTypeInteger*    clusterSize;     
121         clusterTypeInteger*    clusterNumber;
122
123         clusterTypeInteger      currentNo;
124
125         clusterTypeInteger flagFPTTreeInfo;
126         FILE* fptTreeInfo;
127 };
128
129 /* struct end */
130
131 /* prototype begin */
132 #ifdef __cplusplus
133 extern "C" {
134 #endif
135
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);
143
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);
150
151 /* in clusterLogUtil.c */
152 extern void clusterLogClusterInformationSet(clusterLog* cluster, clusterTypeInteger lastNum, int mode);
153
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); 
157
158 extern clusterLogOneRecord* clusterLogGetDistance(clusterLog* cluster, clusterTypeInteger N, clusterTypeInteger M, clusterTypeInteger clusterNum, clusterTypeReal* data);
159
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);
166
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); 
172
173 #ifdef __cplusplus
174 };
175 #endif
176 /* prototype end */
177
178 #endif
179 </PRE>