• R/O
  • HTTP
  • SSH
  • HTTPS

base: Commit

This repository is a base of Eos.


Commit MetaInfo

Revisioncade8e66ce4fafc8e2833d9d2071ae0dda23bb4a (tree)
Time2016-11-04 21:27:55
Author久永浩司 <hisanagakouji@hisa...>
Commiter久永浩司

Log Message

modified ctfforbayes.c

Change Summary

Incremental Difference

--- a/include/ctffuncforbayes.h
+++ b/include/ctffuncforbayes.h
@@ -27,7 +27,7 @@ typedef struct ctfforbayes{
2727 float rmax;
2828 float rmin;
2929 float* I;
30- float** Ii;
30+ float* Ii;
3131 } ctfforbayes;
3232
3333 typedef enum intensityforbayesMode{
@@ -37,10 +37,10 @@ typedef enum intensityforbayesMode{
3737
3838
3939 typedef struct intensityforbayes{
40- float** normI;
41- float** logI;
42- float** normII;
43- float** logII;
40+ float* normI;
41+ float* logI;
42+ float* normII;
43+ float* logII;
4444
4545 intensityforbayesMode mode;
4646
@@ -86,19 +86,22 @@ extern "C" {
8686 /* prototype begin */
8787 /*ctfforbayes.c*/
8888 extern void ctfforbayesInit(FILE* fpt, ctfforbayes* ctf, int mode);
89-extern void intensityforbayesInit(intensityforbayes* intensity, int filenum, int Inum, int mode);
90-extern void intensitySet(ctfforbayes* ctf, intensityforbayes intensity, int count, int mode);
89+extern void intensityforbayesInit(intensityforbayes* intensity,int Inum, int mode);
90+extern void intensitySet(ctfforbayes* ctf, intensityforbayes* intensity, int mode);
9191 extern void spatialfrequencyRead(FILE* fpt, ctfforbayes* ctf, float rmax, float rmin, int mode);
9292 extern void intensityRead(char* filename, intensityforbayes* intensity, int count, int mode);
9393
94-extern void ctfFunctionforbayes(ctfforbayes* ctf, intensityforbayes* intensity, eosBayesDistribution* d, ctfInfo* info, int numLikelihood, int count, int mode);
94+extern void ctfFunctionforbayes(ctfforbayes* ctf, intensityforbayes* intensity, eosBayes* d, ctfInfo* info, defocuslikelihoodforbayes* l, int count, int mode);
9595 extern float MTFFunctionforbayes(float R, float m, int mode);
9696 extern float ctfforbayesIntensityCalculation(float* parameter, float R, ctfInfo* info, int mode);
97+extern void ctfforbayesFree(ctfforbayes* ctf, intensityforbayes* intensity, defocuslikelihoodforbayes* likedihood);
98+
9799
98100 /*defocuslikelihood.c*/
99101 extern void defocusLikelihoodInit(defocuslikelihoodforbayes* l, eosBayes d, int mode);
100-extern void defocusLikelihood(defocuslikelihoodforbayes* l, ctfforbayes ctf, eosBayes* d, int count, int mode);
101-extern void ctfforBayesDifferenceCalculation(defocuslikelihoodforbayes* l, ctfforbayes ctf, eosBayesDistribution* d, int numLikelihood, int count, int mode);
102+extern void ctfforbayesXofLikelihoodCalculation(defocuslikelihoodforbayes* l, ctfforbayes* ctf, eosBayes* d, int* L, int count, int mode);
103+extern void defocusLikelihood(defocuslikelihoodforbayes* l, ctfforbayes* ctf, eosBayes* d, int count, int mode);
104+extern void ctfforBayesDifferenceCalculation(defocuslikelihoodforbayes* l, ctfforbayes* ctf, eosBayesDistribution* d, int numLikelihood, int* L, int count, int mode);
102105 extern void ctfforBayesMeanCalculation(defocuslikelihoodforbayes* l, eosBayesDistribution* d, int numLikelihood, int count, int mode);
103106 extern void defocusLikelihoodCalculationLorentz(defocuslikelihoodforbayes* l, eosBayesDistribution* d, int numLikelihood, int count, int mode);
104107
--- a/include/eosBayes.h
+++ b/include/eosBayes.h
@@ -88,6 +88,7 @@ extern void eosBayesRead(FILE* fpt, eosBayes* d, int mode);
8888 /* eosBayesParameterOfMaxPosterior.c*/
8989 extern void eosBayesParameterOfMaxPosteriorGet(eosBayesDistribution* d, int nunDistribution, int mode);
9090
91+extern void eosBayesFree(eosBayes* d);
9192
9293
9394 #endif /* EOS_BAYES_H */
--- a/src/Objects/DataManip/ctfInfo/src/ctfforbayes.c
+++ b/src/Objects/DataManip/ctfInfo/src/ctfforbayes.c
@@ -45,24 +45,18 @@ void ctfforbayesInit(FILE* fpt, ctfforbayes* ctf, int mode){
4545 }
4646
4747
48-void intensityforbayesInit(intensityforbayes* intensity, int filenum, int Inum, int mode){
48+void intensityforbayesInit(intensityforbayes* intensity, int Inum, int mode){
4949
50- int i;
5150
52- intensity->normI = (float**)malloc(sizeof(float*)*filenum);
53- intensity->logI = (float**)malloc(sizeof(float*)*filenum);
51+ intensity->normI = (float*)malloc(sizeof(float)*Inum);
52+ intensity->logI = (float*)malloc(sizeof(float)*Inum);
5453
55- for(i=0;i<filenum;i++){
56- intensity->normI[i] = (float*)malloc(sizeof(float)*Inum);
57- intensity->logI[i] = (float*)malloc(sizeof(float)*Inum);
58- }
59-
60- intensity->normII = (float**)malloc(sizeof(float*)*Inum);
61- intensity->logII = (float**)malloc(sizeof(float*)*Inum);
54+ intensity->normII = (float*)malloc(sizeof(float)*Inum);
55+ intensity->logII = (float*)malloc(sizeof(float)*Inum);
6256
6357 intensity->mode = 0;
6458
65- DEBUGPRINT2("Intensityinit finitsh! filenum:%d Inum:%d\n",filenum,Inum);
59+ DEBUGPRINT1("Intensityinit finitsh! Inum:%d\n",Inum);
6660
6761 }
6862
@@ -99,8 +93,8 @@ void intensityRead(char* filename, intensityforbayes* intensity, int count, int
9993
10094 i=0;
10195 while(NULL != __getStringData(s,"In IntensityRead",fin,stdout,3)){
102- intensity->normI[count][i] = atof(s);
103- intensity->logI[count][i] = log(intensity->normI[count][i]);
96+ intensity->normI[i] = atof(s);
97+ intensity->logI[i] = log(intensity->normI[i]);
10498 i++;
10599 }
106100
@@ -111,22 +105,22 @@ void intensityRead(char* filename, intensityforbayes* intensity, int count, int
111105 }
112106
113107
114-void intensitySet(ctfforbayes* ctf, intensityforbayes intensity, int count, int mode){
108+void intensitySet(ctfforbayes* ctf, intensityforbayes* intensity, int mode){
115109
116- switch(intensity.mode){
110+ switch(intensity->mode){
117111
118112 case normal:
119113 /*Normal*/
120- DEBUGPRINT("----Intensity mode Normal----\n");
121- ctf->I = intensity.normI[count];
122- ctf->Ii = intensity.normII;
114+ //DEBUGPRINT("----Intensity mode Normal----\n");
115+ ctf->I = intensity->normI;
116+ ctf->Ii = intensity->normII;
123117 break;
124118
125119 case logarithm:
126120 /*Log*/
127- DEBUGPRINT("----Intensity mode Log----\n");
128- ctf->I = intensity.logI[count];
129- ctf->Ii = intensity.logII;
121+ //DEBUGPRINT("----Intensity mode Log----\n");
122+ ctf->I = intensity->logI;
123+ ctf->Ii = intensity->logII;
130124 break;
131125
132126 default:
@@ -140,7 +134,7 @@ void intensitySet(ctfforbayes* ctf, intensityforbayes intensity, int count, int
140134
141135
142136
143-void ctfFunctionforbayes(ctfforbayes* ctf, intensityforbayes* intensity, eosBayesDistribution* d, ctfInfo* info, int numLikelihood, int count, int mode){
137+void ctfFunctionforbayes(ctfforbayes* ctf, intensityforbayes* intensity, eosBayes* d, ctfInfo* info, defocuslikelihoodforbayes* l, int count, int mode){
144138
145139 float* parameter;
146140 int* L;
@@ -154,46 +148,50 @@ void ctfFunctionforbayes(ctfforbayes* ctf, intensityforbayes* intensity, eosBaye
154148
155149 DEBUGPRINT("In ctf\n");
156150
157- parameter = (float*)malloc(sizeof(float)*numLikelihood);
151+ parameter = (float*)malloc(sizeof(float)*d->numLikelihood);
158152
159153 length = 1;
160- for(i=0;i<numLikelihood;i++){
161- length *= d[i].n;
154+ for(i=0;i<d->numLikelihood;i++){
155+ length *= d->likelihood[i].n;
162156 }
163157
164158 //DEBUGPRINT("L malloc\n");
165159
166- L = (int *)malloc(sizeof(int)*numLikelihood);
160+ L = (int *)malloc(sizeof(int)*d->numLikelihood);
167161
168162 //DEBUGPRINT("L malloc\n");
169-
170- for(i=0;i<ctf->n;i++){
171- intensity->normII[i] = (float *)malloc(sizeof(float)*length);
172- intensity->logII[i] = (float *)malloc(sizeof(float)*length);
173- //DEBUGPRINT("Ii malloc\n");
174163
175- for(j=0;j<length;j++){
176164
177- eosBayesloop(d,L,numLikelihood,j);
178-
179- //DEBUGPRINT3("%d:%d:%d\n",L[0],L[1],L[2]);
180- /*
181- info->defocus = d[0].min+(d[0].delta*L[0]);
182- S = d[1].min+(d[1].delta*L[1]);
183- N = d[2].min+(d[2].delta*L[2]);
184- */
185-
186- for(k=0;k<numLikelihood;k++){
187- parameter[k] = d[k].value[L[k]];
188- }
165+ for(i=0;i<d->numLikelihood;i++){
166+ l->width[i] = 0;
167+ for(j=0;j<d->likelihood[i].n;j++){
168+ l->x[i][j] = 0;
169+ }
170+ }
189171
190- intensity->normII[i][j] = ctfforbayesIntensityCalculation(parameter,ctf->R[i],info,mode);
191- intensity->logII[i][j] = log(intensity->normII[i][j]);
192172
173+ DEBUGPRINT("likelihood culcuration start\n");
174+ for(i=0;i<length;i++){
175+ eosBayesloop(d->likelihood,L,d->numLikelihood,i);
176+ for(k=0;k<d->numLikelihood;k++){
177+ parameter[k] = d->likelihood[k].value[L[k]];
178+ }
179+ //DEBUGPRINT3("%d:%d:%d\n",L[0],L[1],L[2]);
180+ for(j=0;j<ctf->n;j++){
181+ intensity->normII[j] = ctfforbayesIntensityCalculation(parameter,ctf->R[j],info,mode);
182+ intensity->logII[j] = log(intensity->normII[j]);
193183 }
194184
185+ intensitySet(ctf,intensity,0);
186+ ctfforbayesXofLikelihoodCalculation(l,ctf,d,L,0,0);
187+
195188 }
196189
190+ defocusLikelihood(l,ctf,d,i,0);
191+
192+ DEBUGPRINT("likelihood culcuration end\n");
193+ LikelihoodChangeCheck(d,i,0);
194+
197195 free(parameter);
198196 free(L);
199197
@@ -231,11 +229,31 @@ float ctfforbayesIntensityCalculation(float* parameter, float R, ctfInfo* info,
231229 float A;
232230 float B;
233231 float m;
232+ int mode2;
233+
234+ mode2 = 1;
234235
235236 info->defocus = parameter[0];
236237 S = parameter[1];
237238 N = parameter[2];
238- m = parameter[4];
239+
240+ switch(mode2){
241+
242+ case 0:
243+
244+ m = 7.8;
245+ //m = 0;
246+ break;
247+
248+ case 1:
249+ m = parameter[4];
250+ break;
251+
252+ default:
253+ fprintf(stderr,"\n");
254+ break;
255+
256+ }
239257
240258 CTF = ctfFunction(info, R, 0);
241259 MTF = MTFFunctionforbayes(R, m, 0);
@@ -269,3 +287,20 @@ float ctfforbayesIntensityCalculation(float* parameter, float R, ctfInfo* info,
269287 return (CTF*CTF*A+B)*MTF;
270288
271289 }
290+
291+
292+void ctfforbayesFree(ctfforbayes* ctf, intensityforbayes* intensity, defocuslikelihoodforbayes* likedihood){
293+
294+ DEBUGPRINT("In ctfforbayesfree\n");
295+
296+ free(ctf->R);
297+
298+ free(intensity->normI);
299+ free(intensity->logI);
300+
301+ free(intensity->normII);
302+ free(intensity->logII);
303+
304+ DEBUGPRINT("compreated ctfforbayesfree\n");
305+
306+}
--- a/src/Objects/DataManip/ctfInfo/src/ctfforbayescheck.c
+++ b/src/Objects/DataManip/ctfInfo/src/ctfforbayescheck.c
@@ -103,7 +103,7 @@ void ctfforbayescheckintensity(ctfforbayes ctf, eosBayesDistribution* d, int num
103103 }
104104 fprintf(fpt,"# d:%f A:%f B:%f\n",d[0].value[L[0]],d[1].value[L[1]],d[2].value[L[2]]);
105105 for(j=0;j<ctf.n;j++){
106- fprintf(fpt,"%f %f %f %f\n",ctf.R[j],ctf.I[j],ctf.Ii[j][i],ctf.I[j]-ctf.Ii[j][i]);
106+ fprintf(fpt,"%f %f %f %f\n",ctf.R[j],ctf.I[j],ctf.Ii[j],ctf.I[j]-ctf.Ii[j]);
107107 }
108108 fprintf(fpt,"\n");
109109 fclose(fpt);
@@ -123,7 +123,7 @@ void ctfforbayescheckintensity(ctfforbayes ctf, eosBayesDistribution* d, int num
123123 }
124124 fprintf(fpt,"# d:%f A:%f B:%f k:%f\n",d[0].value[L[0]],d[1].value[L[1]],d[2].value[L[2]],d[3].value[L[3]]);
125125 for(j=0;j<ctf.n;j++){
126- fprintf(fpt,"%f %f %f %f\n",ctf.R[j],ctf.I[j],ctf.Ii[j][i],ctf.I[j]-ctf.Ii[j][i]);
126+ fprintf(fpt,"%f %f %f %f\n",ctf.R[j],ctf.I[j],ctf.Ii[j],ctf.I[j]-ctf.Ii[j]);
127127 }
128128 fprintf(fpt,"\n");
129129 fclose(fpt);
--- a/src/Objects/DataManip/ctfInfo/src/ctffuncforbayes.h
+++ b/src/Objects/DataManip/ctfInfo/src/ctffuncforbayes.h
@@ -27,7 +27,7 @@ typedef struct ctfforbayes{
2727 float rmax;
2828 float rmin;
2929 float* I;
30- float** Ii;
30+ float* Ii;
3131 } ctfforbayes;
3232
3333 typedef enum intensityforbayesMode{
@@ -37,10 +37,10 @@ typedef enum intensityforbayesMode{
3737
3838
3939 typedef struct intensityforbayes{
40- float** normI;
41- float** logI;
42- float** normII;
43- float** logII;
40+ float* normI;
41+ float* logI;
42+ float* normII;
43+ float* logII;
4444
4545 intensityforbayesMode mode;
4646
@@ -86,19 +86,22 @@ extern "C" {
8686 /* prototype begin */
8787 /*ctfforbayes.c*/
8888 extern void ctfforbayesInit(FILE* fpt, ctfforbayes* ctf, int mode);
89-extern void intensityforbayesInit(intensityforbayes* intensity, int filenum, int Inum, int mode);
90-extern void intensitySet(ctfforbayes* ctf, intensityforbayes intensity, int count, int mode);
89+extern void intensityforbayesInit(intensityforbayes* intensity,int Inum, int mode);
90+extern void intensitySet(ctfforbayes* ctf, intensityforbayes* intensity, int mode);
9191 extern void spatialfrequencyRead(FILE* fpt, ctfforbayes* ctf, float rmax, float rmin, int mode);
9292 extern void intensityRead(char* filename, intensityforbayes* intensity, int count, int mode);
9393
94-extern void ctfFunctionforbayes(ctfforbayes* ctf, intensityforbayes* intensity, eosBayesDistribution* d, ctfInfo* info, int numLikelihood, int count, int mode);
94+extern void ctfFunctionforbayes(ctfforbayes* ctf, intensityforbayes* intensity, eosBayes* d, ctfInfo* info, defocuslikelihoodforbayes* l, int count, int mode);
9595 extern float MTFFunctionforbayes(float R, float m, int mode);
9696 extern float ctfforbayesIntensityCalculation(float* parameter, float R, ctfInfo* info, int mode);
97+extern void ctfforbayesFree(ctfforbayes* ctf, intensityforbayes* intensity, defocuslikelihoodforbayes* likedihood);
98+
9799
98100 /*defocuslikelihood.c*/
99101 extern void defocusLikelihoodInit(defocuslikelihoodforbayes* l, eosBayes d, int mode);
100-extern void defocusLikelihood(defocuslikelihoodforbayes* l, ctfforbayes ctf, eosBayes* d, int count, int mode);
101-extern void ctfforBayesDifferenceCalculation(defocuslikelihoodforbayes* l, ctfforbayes ctf, eosBayesDistribution* d, int numLikelihood, int count, int mode);
102+extern void ctfforbayesXofLikelihoodCalculation(defocuslikelihoodforbayes* l, ctfforbayes* ctf, eosBayes* d, int* L, int count, int mode);
103+extern void defocusLikelihood(defocuslikelihoodforbayes* l, ctfforbayes* ctf, eosBayes* d, int count, int mode);
104+extern void ctfforBayesDifferenceCalculation(defocuslikelihoodforbayes* l, ctfforbayes* ctf, eosBayesDistribution* d, int numLikelihood, int* L, int count, int mode);
102105 extern void ctfforBayesMeanCalculation(defocuslikelihoodforbayes* l, eosBayesDistribution* d, int numLikelihood, int count, int mode);
103106 extern void defocusLikelihoodCalculationLorentz(defocuslikelihoodforbayes* l, eosBayesDistribution* d, int numLikelihood, int count, int mode);
104107
--- a/src/Objects/DataManip/ctfInfo/src/defocuslikelihood.c
+++ b/src/Objects/DataManip/ctfInfo/src/defocuslikelihood.c
@@ -21,7 +21,7 @@ static char __sccs_id[] = "%Z%defocuslikelihood ver%I%; Date:%D% %Z%";
2121 #include "./ctffuncforbayes.h"
2222
2323
24-#define DEBUG
24+#undef DEBUG
2525 #undef DEBUG2
2626 #include "genUtil.h"
2727 #include "String.h"
@@ -48,27 +48,16 @@ void defocusLikelihoodInit(defocuslikelihoodforbayes* l, eosBayes d, int mode){
4848 }
4949
5050
51+void ctfforbayesXofLikelihoodCalculation(defocuslikelihoodforbayes* l, ctfforbayes* ctf, eosBayes* d, int* L, int count, int mode){
5152
52-void defocusLikelihood(defocuslikelihoodforbayes* l, ctfforbayes ctf, eosBayes* d, int count, int mode){
5353
54- int i;
55- int j;
56-
57-
58- DEBUGPRINT("In defocuslikelihood\n");
59-
60- for(i=0;i<d->numLikelihood;i++){
61- l->width[i] = 0;
62- for(j=0;j<d->likelihood[i].n;j++){
63- l->x[i][j] = 0;
64- }
65- }
54+ DEBUGPRINT("In ctfforbayesXofLikelihoodCaluculation\n");
6655
6756 switch(l->mode0){
6857
6958 case difference:
7059 DEBUGPRINT("xmode is difference\n");
71- ctfforBayesDifferenceCalculation(l,ctf,d->likelihood,d->numLikelihood,count,mode);
60+ ctfforBayesDifferenceCalculation(l,ctf,d->likelihood,d->numLikelihood,L,count,mode);
7261 break;
7362
7463 case correlation:
@@ -83,7 +72,13 @@ void defocusLikelihood(defocuslikelihoodforbayes* l, ctfforbayes ctf, eosBayes*
8372 break;
8473
8574 }
75+}
76+
77+
8678
79+void defocusLikelihood(defocuslikelihoodforbayes* l, ctfforbayes* ctf, eosBayes* d, int count, int mode){
80+
81+ DEBUGPRINT("In defocuslikelihood\n");
8782
8883 switch(l->mode1){
8984
@@ -123,36 +118,22 @@ void defocusLikelihood(defocuslikelihoodforbayes* l, ctfforbayes ctf, eosBayes*
123118
124119
125120
126-void ctfforBayesDifferenceCalculation(defocuslikelihoodforbayes* l, ctfforbayes ctf, eosBayesDistribution* d, int numLikelihood, int count, int mode){
121+void ctfforBayesDifferenceCalculation(defocuslikelihoodforbayes* l, ctfforbayes* ctf, eosBayesDistribution* d, int numLikelihood, int* L, int count, int mode){
127122
128123 float difference;
129124 int length;
130- int* L;
131125
132126 int i;
133- int j;
134-
135127
136128 DEBUGPRINT("In ctfforBayesDifferenceCaluculation\n");
137129
138130
139- length = 1;
140- for(i=0;i<numLikelihood;i++){
141- length *= d[i].n;
142- }
143- L = (int*)malloc(sizeof(int)*numLikelihood);
144- DEBUGPRINT("L malloc\n");
145-
146-
147- DEBUGPRINT("difference caluculattion start\n")
148- for(i=0;i<length;i++){
149- eosBayesloop(d,L,numLikelihood,i);
150-
131+ DEBUGPRINT("difference caluculattion start\n");
151132
152133 difference = 0;
153- for(j=0;j<ctf.n;j++){
154- if((ctf.rmin<=ctf.R[j]) && (ctf.R[j]<=ctf.rmax)){
155- difference += (ctf.I[j]-ctf.Ii[j][i])*(ctf.I[j]-ctf.Ii[j][i]);
134+ for(i=0;i<ctf->n;i++){
135+ if((ctf->rmin<=ctf->R[i]) && (ctf->R[i]<=ctf->rmax)){
136+ difference += (ctf->I[i]-ctf->Ii[i])*(ctf->I[i]-ctf->Ii[i]);
156137 }
157138 }
158139
@@ -160,20 +141,12 @@ void ctfforBayesDifferenceCalculation(defocuslikelihoodforbayes* l, ctfforbayes
160141 DEBUGPRINT3("L[0]:%d L[1]:%d L[2]:%d\n",L[0],L[1],L[2]);
161142 #endif
162143
163- for(j=0;j<numLikelihood;j++){
164- l->x[j][L[j]] += difference;
144+ for(i=0;i<numLikelihood;i++){
145+ l->x[i][L[i]] += difference;
165146 }
166147
167148
168- }
169- DEBUGPRINT("difference caluculattion stop\n")
170-
171-#ifdef DEBUG2
172- ctfforbayescheckdifference("difference",l,d,numLikelihood,count,0);
173-#endif
174-
175-
176- free(L);
149+ DEBUGPRINT("difference caluculattion stop\n");
177150
178151
179152 }
@@ -211,7 +184,7 @@ void defocusLikelihoodCalculationLorentz(defocuslikelihoodforbayes* l, eosBayesD
211184 DEBUGPRINT("In defocuslikelihoodcaluculationLorentz \n");
212185
213186 sum = (float*)malloc(sizeof(float)*numLikelihood);
214-
187+
215188 DEBUGPRINT("sum malloc\n");
216189 for(i=0;i<numLikelihood;i++){
217190 sum[i] = 0;
@@ -243,7 +216,7 @@ void defocusLikelihoodCalculationLorentz(defocuslikelihoodforbayes* l, eosBayesD
243216 }
244217 }
245218
246- DEBUGPRINT("free\n");
219+ DEBUGPRINT("sum free\n");
247220 free(sum);
248221
249222 }
--- a/src/Objects/General/eosBayes/doc/eosBayes.html
+++ b/src/Objects/General/eosBayes/doc/eosBayes.html
@@ -99,6 +99,7 @@ extern void eosBayesRead(FILE* fpt, eosBayes* d, int mode);
9999 /* eosBayesParameterOfMaxPosterior.c*/
100100 extern void eosBayesParameterOfMaxPosteriorGet(eosBayesDistribution* d, int nunDistribution, int mode);
101101
102+extern void eosBayesFree(eosBayes* d);
102103
103104
104105 #endif /* EOS_BAYES_H */
--- a/src/Objects/General/eosBayes/inc/eosBayes.h
+++ b/src/Objects/General/eosBayes/inc/eosBayes.h
@@ -88,6 +88,7 @@ extern void eosBayesRead(FILE* fpt, eosBayes* d, int mode);
8888 /* eosBayesParameterOfMaxPosterior.c*/
8989 extern void eosBayesParameterOfMaxPosteriorGet(eosBayesDistribution* d, int nunDistribution, int mode);
9090
91+extern void eosBayesFree(eosBayes* d);
9192
9293
9394 #endif /* EOS_BAYES_H */
--- /dev/null
+++ b/src/Objects/General/eosBayes/src/eosBayesFree.c
@@ -0,0 +1,41 @@
1+/*
2+# %M% %Y% %I%
3+# The latest update : %G% at %U%
4+#
5+#%Z% eosBayesFree ver %I%
6+#%Z% Created by
7+#%Z%
8+#%Z% Usage : eosBayesFree
9+#%Z% Attention
10+#%Z%
11+*/
12+static char __sccs_id[] = "%Z%eosBayesFree ver%I%; Date:%D% %Z%";
13+
14+#include <stdio.h>
15+#include <string.h>
16+#include <stdlib.h>
17+#include "../inc/eosBayes.h"
18+#define DEBUG
19+#include "genUtil.h"
20+
21+
22+void eosBayesFree(eosBayes* d){
23+
24+ DEBUGPRINT("In eosBayesFree\n");
25+
26+ free(d->prior->value);
27+ free(d->prior->prob);
28+
29+ free(d->posterior->value);
30+ free(d->posterior->prob);
31+
32+ free(d->likelihood->value);
33+ free(d->likelihood->prob);
34+
35+ free(d->prior);
36+ free(d->posterior);
37+ free(d->likelihood);
38+
39+ DEBUGPRINT("Compreated eosBayesFree\n");
40+
41+}
--- /dev/null
+++ b/src/Objects/General/eosBayes/src/eosBayesFree.c~
@@ -0,0 +1,30 @@
1+/*
2+# %M% %Y% %I%
3+# The latest update : %G% at %U%
4+#
5+#%Z% eosBayesFree ver %I%
6+#%Z% Created by
7+#%Z%
8+#%Z% Usage : eosBayesFree
9+#%Z% Attention
10+#%Z%
11+*/
12+static char __sccs_id[] = "%Z%eosBayesFree ver%I%; Date:%D% %Z%";
13+
14+
15+void eosBayesFree(eosBayes* d){
16+
17+ free(d->prior->value);
18+ free(d->prior->prob);
19+
20+ free(d->posterior->value);
21+ free(d->posterior->prob);
22+
23+ free(d->likelihood->value);
24+ free(d->likelihood->prob);
25+
26+ free(d->prior);
27+ free(d->posterior);
28+ free(d->likelihood);
29+
30+}
--- a/src/Tools/ctfInfo/ctfDeterminationByBayes/src/ctfDeterminationByBayes.c
+++ b/src/Tools/ctfInfo/ctfDeterminationByBayes/src/ctfDeterminationByBayes.c
@@ -46,6 +46,7 @@ main(int argc, char* argv[])
4646 eosBayesDistributionInfo llinfo;
4747
4848 eosBayes out;
49+
4950 ctfforbayes ctf;
5051 intensityforbayes intensity;
5152 defocuslikelihoodforbayes likelihood;
@@ -69,16 +70,13 @@ main(int argc, char* argv[])
6970
7071 /*For CTF and intensity*/
7172 ctfforbayesInit(info.fptIn2,&ctf,0);
72- intensityforbayesInit(&intensity,info.flagIn4,ctf.n,0);
73+ intensityforbayesInit(&intensity,ctf.n,0);
7374 spatialfrequencyRead(info.fptIn2,&ctf,info.rmax,info.rmin,0);
74- for(i=0;i<info.flagIn4;i++){
75- intensityRead(info.In4[i],&intensity,i,0);
76- }
7775 ctfInfoRead(info.fptIn3,&ctfinfo,"",0);
78- DEBUGPRINT4("kV:%f Cs:%f Ain:%f ctfMode:%ld\n",ctfinfo.kV,ctfinfo.Cs,ctfinfo.Ain,ctfinfo.mode);
76+ DEBUGPRINT5("kV:%f Cs:%f Ain:%f Cc:%f ctfMode:%ld\n",ctfinfo.kV,ctfinfo.Cs,ctfinfo.Ain,ctfinfo.Cc,ctfinfo.mode);
7977 DEBUGPRINT1("flagIn4:%ld\n",info.flagIn4);
80- DEBUGPRINT("ctf start\n");
81- ctfFunctionforbayes(&ctf, &intensity,out.likelihood,&ctfinfo,out.numLikelihood,0,1);
78+
79+
8280
8381 /*For likelihood*/
8482 defocusLikelihoodInit(&likelihood,out,0);
@@ -86,20 +84,14 @@ main(int argc, char* argv[])
8684 /*defocus estimation*/
8785 for(i=0;i<info.flagIn4;i++){
8886
89- DEBUGPRINT("set intensity\n");
90- intensitySet(&ctf,intensity,i,0);
91-
92-
93- DEBUGPRINT("likelihood start\n");
94- defocusLikelihood(&likelihood,ctf,&out,i,0);
95- LikelihoodChangeCheck(&out,i,0);
96-
87+ intensityRead(info.In4[i],&intensity,i,0);
88+ DEBUGPRINT("ctf start\n");
89+ ctfFunctionforbayes(&ctf, &intensity,&out,&ctfinfo,&likelihood,0,1);
9790
9891 DEBUGPRINT("estimate start\n");
9992 eosBayesEstimation(&out,0);
10093 DistributionChangeCheck(&out,1);
10194
102-
10395 DEBUGPRINT("change start\n");
10496 eosBayesPosteriortoPrior(&out,0);
10597
@@ -110,6 +102,9 @@ main(int argc, char* argv[])
110102
111103 eosBayesPriorWrite(info.fptOut,&out,0);
112104
105+ ctfforbayesFree(&ctf,&intensity,&likelihood);
106+ eosBayesFree(&out);
107+
113108 exit(EXIT_SUCCESS);
114109 }
115110
Show on old repository browser