OSDN Git Service

Merge branch 'master' of git.sourceforge.jp:/gitroot/eos/base
[eos/hostdependX86LINUX64.git] / include / mrcRefUtil.h
1 #ifndef MRC_REFUTIL_H
2 #define MRC_REFUTIL_H
3 /* type definition */
4
5 /* struct begin */
6 typedef double mrcRefDegCoordinate; 
7
8 typedef struct {
9   mrcRefDegCoordinate ip;
10   mrcRefDegCoordinate iw;
11   mrcRefDegCoordinate ia;
12   mrcRefDegCoordinate dp;
13   mrcRefDegCoordinate dw;
14   mrcRefDegCoordinate da;
15   mrcRefDegCoordinate wp;
16   mrcRefDegCoordinate ww;
17   mrcRefDegCoordinate wa;
18 } mrcRefHeader;
19
20 typedef struct {
21   mrcRefDegCoordinate ip;
22   mrcRefDegCoordinate iw;
23   mrcRefDegCoordinate ia;
24   mrcRefDegCoordinate dp;
25   mrcRefDegCoordinate dw;
26   mrcRefDegCoordinate da;
27   mrcRefDegCoordinate wp;
28   mrcRefDegCoordinate ww;
29   mrcRefDegCoordinate wa;
30   int mode;
31 } mrcRefCorHeader;
32
33 #define mrcRefHeaderNumber 9;
34
35 typedef struct {
36   mrcRefDegCoordinate ip;
37   mrcRefDegCoordinate iw;
38   mrcRefDegCoordinate ia;
39   mrcRefDegCoordinate dp;
40   mrcRefDegCoordinate dw;
41   mrcRefDegCoordinate da;
42   mrcRefDegCoordinate wp;
43   mrcRefDegCoordinate ww;
44   mrcRefDegCoordinate wa;
45   double sy;
46   double ey;
47   double refsize;
48   int inverse;
49 } mrcpwzCorHeader;
50
51 /* struct end */
52
53 /* prototype begin */
54 /* macros */
55 #define surplus(a,b) (((a)/(b) > 0)?((a)-floor((a)/(b))*(b) ):((a)-floor((a)/(b)+1)*(b)))
56 #define NormalDegree(p) (((p) > 0)?( ( surplus( ( (p)+180 ) ,360 )) - 180 ):( (surplus(((p)-180),360)) +180 ))
57  
58 /* prototype */
59
60 /* in mrcRefUtil.c */
61
62 /* For General */
63 void lRandShuffle(void);
64
65 /* For mrcImage Operation */
66 double lmrcImageZ1Normalization(mrcImage* in ,int z);
67 double lmrcImageNormalization(mrcImage* in ,int mode);
68 void lmrcImageRectangleGet(mrcImage* out ,mrcImage* in ,int blx ,int bly ,int trx ,int try );
69 void llmrcImageAdd(mrcImage* in1 ,mrcImage* in2);
70 void llmrcImageSub(mrcImage*out ,mrcImage* in1 ,mrcImage* in2);
71 void lmrcImageMultiplyingbyMrc(mrcImage* out ,mrcImage* in1 ,mrcImage* in2);
72 void lmrcImageFTSetbyRArray(mrcImage* infft ,double** filterval ,int mode);
73 double lmrcImageFTDataSetByRArray(double X ,double Y ,double Z ,double** filterval ,int mode);
74 void lmrcImageMagnificationChange(mrcImage* out, mrcImage* in, double ratio);
75 void lmrcImageCenterGet(mrcImage* out ,mrcImage* in ,int Nx ,int Ny ,int Nz ,float Cx ,float Cy ,float Cz ,int mode);
76 void lmrcImageMultiplysingbyFile(mrcImage* in1 ,mrcImage* in2);
77
78 /* For mrcImage Statics */
79 double lmrcImageStandardDeviation(mrcImage* in);
80
81 /* For Projection */
82 void lmrcRefFilamentProjction(mrcImage* out, mrcImage* in, mrcRefDegCoordinate phi ,mrcRefDegCoordinate omega ,mrcRefDegCoordinate alpha ,int sizex ,int sizey );
83 void lvec3mul(double* out ,double x ,double* in );
84 void lvec3add(double* out ,double* in1 ,double* in2);
85 void lvec3sub(double* out ,double* in1 ,double* in2);
86 void lmrcPixelLiGet(mrcImage* mrc,
87                     mrcImageParaTypeReal x,
88                     mrcImageParaTypeReal y,
89                     mrcImageParaTypeReal z,
90                     double* data,
91                     mrcPixelDataType mode,
92                     mrcPixelDataHowToGet how);
93 void lestimateradian(mrcRefDegCoordinate* lradian);
94
95 /* For Reference file Operation */
96 void lmrc3DZ1Clear(mrcImage* in ,int z);
97 void lmrcRefHeaderSet(mrcImage* out ,mrcRefHeader* in);
98 void lmrcRefHeaderGet(mrcRefHeader* out ,mrcImage* in);
99 void lmrc3DZ1ImgPut(mrcImage* out ,mrcImage* in ,int z);
100 void lmrc3DZ1ImgGet(mrcImage* out ,mrcImage* in ,int z); 
101 void lmrc3DZ1FtPut(mrcImage* out ,mrcImage* in ,int Z);
102 void lmrc3DZ1FtGet(mrcImage* out ,mrcImage* in ,int Z);
103 double lmrcRef2DImgCorrelation(mrcImage* in1 ,mrcImage* in2 );
104 void lmrcRefNormalization(mrcImage* in);
105 int lmrcRefGetzCordinate(mrcRefDegCoordinate phi ,mrcRefDegCoordinate omega ,mrcRefDegCoordinate alpha ,mrcRefHeader* header);
106 void lmrcRefGetdegreeCoordinate(mrcRefDegCoordinate* phi ,mrcRefDegCoordinate* omega ,mrcRefDegCoordinate* alpha ,int z ,mrcRefHeader* header);
107
108 /* For Reference statics */
109 double lmrcRefSqrAverageZ1(mrcImage* in ,int z);
110 double lmrcRefSqrAverage(mrcImage* in);
111 double lmrcRefStandardDeviation(mrcImage* in);
112 double lmrcRefVariationZ1(mrcImage* in ,int z);
113
114
115 /* For Reference Correlation File Operation */
116 void lmrcRefCorHeaderSet(mrcImage* out ,mrcRefCorHeader* in);
117 void lmrcRefCorHeaderGet(mrcRefCorHeader* out ,mrcImage* in);
118 double lmrcRefCorrelationGet(mrcImage* in ,mrcRefDegCoordinate p1 ,mrcRefDegCoordinate w1 ,mrcRefDegCoordinate a1 ,mrcRefDegCoordinate p2 ,mrcRefDegCoordinate w2 ,mrcRefDegCoordinate a2 ,mrcRefCorHeader* header);
119 int lmrcRefCorrelationGetCordinate(mrcRefDegCoordinate phi ,mrcRefDegCoordinate omega ,mrcRefDegCoordinate alpha ,mrcRefCorHeader* header );
120 void lmrcRefCorrelationGetRefxCordinate(mrcRefDegCoordinate* phi ,mrcRefDegCoordinate* omega ,mrcRefDegCoordinate* alpha ,int x ,mrcImage* in ,mrcRefCorHeader* header);
121 void lmrcRefCorrelationGetRefyCordinate(mrcRefDegCoordinate* phi ,mrcRefDegCoordinate* omega ,mrcRefDegCoordinate* alpha ,int y ,mrcImage* in ,mrcRefCorHeader* header);
122
123 /* For pwz correlation file operation */
124 void lmrcpwzCorHeaderSet(mrcImage* out ,mrcpwzCorHeader* in);
125 void lmrcpwzCorHeaderGet(mrcpwzCorHeader* out ,mrcImage* in);
126
127
128 /* in lmrcImageROInotChangeHeaderLength.c */
129
130 extern double lbilinearInterpolation(double* image,
131                        unsigned long nx, unsigned long ny,
132                        double x, double y);
133
134 extern double lcubicConvolutionInterpolation(double* image, 
135                                 unsigned long nx, unsigned long ny, 
136                                 double x, double y);
137 extern double lpolyNominalInterpolation(double* image, 
138                                 unsigned long nx, unsigned long ny, 
139                                 double x, double y);
140 extern void lpolyInitMatrix(double matrix[6][6], int m, int n);
141 extern void lpolyInitVector(double vec[6], int m, int n, double* image, int nx, int ny);
142 extern int lpolySolveMatrix(double matrix[6][6], double vec[6], double coefficient[6]);
143
144
145 /* in mrcImageUtilityforVariance.c */
146 void lmrcImageFilteringbyFileForVariance(mrcImage* out ,mrcImage* in ,double** filterval ,int mode);
147
148 /* in lmrcImageCorrelationinSpace.c */
149 double lmrcImageCorrelationinSpace(mrcImage* in,mrcImage* ref,int mode);
150 /* prototype end */
151
152 # endif /* MRC_REFUTIL_H */
153
154
155
156
157
158
159
160
161
162