6 typedef double mrcRefDegCoordinate;
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;
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;
33 #define mrcRefHeaderNumber 9;
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;
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 ))
63 void lRandShuffle(void);
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);
78 /* For mrcImage Statics */
79 double lmrcImageStandardDeviation(mrcImage* in);
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,
91 mrcPixelDataType mode,
92 mrcPixelDataHowToGet how);
93 void lestimateradian(mrcRefDegCoordinate* lradian);
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);
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);
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);
123 /* For pwz correlation file operation */
124 void lmrcpwzCorHeaderSet(mrcImage* out ,mrcpwzCorHeader* in);
125 void lmrcpwzCorHeaderGet(mrcpwzCorHeader* out ,mrcImage* in);
128 /* in lmrcImageROInotChangeHeaderLength.c */
130 extern double lbilinearInterpolation(double* image,
131 unsigned long nx, unsigned long ny,
134 extern double lcubicConvolutionInterpolation(double* image,
135 unsigned long nx, unsigned long ny,
137 extern double lpolyNominalInterpolation(double* image,
138 unsigned long nx, unsigned long ny,
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]);
145 /* in mrcImageUtilityforVariance.c */
146 void lmrcImageFilteringbyFileForVariance(mrcImage* out ,mrcImage* in ,double** filterval ,int mode);
148 /* in lmrcImageCorrelationinSpace.c */
149 double lmrcImageCorrelationinSpace(mrcImage* in,mrcImage* ref,int mode);
152 # endif /* MRC_REFUTIL_H */