extern void intensityRead(char* filename, intensityforbayes* intensity, int count, int mode);
extern void ctfFunctionforbayes(ctfforbayes* ctf, intensityforbayes* intensity, eosBayes* d, ctfInfo* info, defocuslikelihoodforbayes* l, int count, int mode);
-extern float MTFFunctionforbayes(float R, float m, int mode);
extern float ctfforbayesIntensityCalculation(float* parameter, float R, ctfInfo* info, int MTFmode, int Ainmode, int mode);
extern void ctfforbayesFree(ctfforbayes* ctf, intensityforbayes* intensity, defocuslikelihoodforbayes* likedihood, int numLikelihood);
break;
}
}
- DEBUGPRINT2("Env(MTF) : %e at %e\n", Env1, R);
- if(1==info->flagSampling) {
+
Env1 *= ctfFunctionSampling(R*1e-10, info->NyquistFrequency, mode);
}
return Env1;
ctf->MolecEnv = stringGetNthRealData(s, 2, ": ,\t");
SBREAK;
}
+ SCASE("NyquistFrequency") {
+ ctf->NyquistFrequency= stringGetNthRealData(s, 2, ": ,\t");
+ SBREAK;
+ }
+ SCASE("flagAliasing") {
+ ctf->flagAliasing = stringGetNthIntegerData(s, 2, ": ,\t");
+ SBREAK;
+ }
+ SCASE("flagSampling") {
+ ctf->flagSampling = stringGetNthIntegerData(s, 2, ": ,\t");
+ SBREAK;
+ }
SCASE("MET-File") {
if(ctf->flagMolecEnvTable==1) {
FILE* fpt;
fprintf(fpt, "%sflagSN2: %15d \n", head, ctf.flagWhiteNoise2);
fprintf(fpt, "%sSN2: %15.6g\n", head, ctf.WhiteNoise2);
fprintf(fpt, "%sInoise2: %15.6g\n", head, ctf.I0*ctf.WhiteNoise2);
+ fprintf(fpt, "%sNyquistFrequency: %15.6g\n", head, ctf.NyquistFrequency);
+ fprintf(fpt, "%sflagAliasing: %15d\n", head, ctf.flagAliasing);
+ fprintf(fpt, "%sflagSampling: %15d\n", head, ctf.flagSampling);
fprintf(fpt, "%sflagMolecEnvTable: %15d\n", head, ctf.flagMolecEnvTable);
switch(ctf.flagMolecEnvTable) {
case 0: { /* No Table */
}
-float MTFFunctionforbayes(float R, float m, int mode){
-
- float MTF;
-
- MTF = 0;
-
- switch(mode){
-
- case 0:
- MTF = exp(-(m*R));
- break;
-
- default:
- fprintf(stderr,"\n");
- break;
-
- }
-
- return MTF;
-
-}
-
-
float ctfforbayesIntensityCalculation(float* parameter, float R, ctfInfo* info, int MTFmode, int Ainmode, int mode){
float S;
float MTF;
float A;
float B;
-// float m;
-
-// m = 0;
A = 0;
B = 0;
k = 0;
info->defocus = parameter[0];
- S = parameter[1];
- N = parameter[2];
+ info->I0 = parameter[1];
+ info->WhiteNoise = parameter[2]/parameter[1];
switch(MTFmode){
break;
}
-
- CTF = ctfFunction(info, R, 0);
- MTF = ctfMTFFunction(info, R, 0);
- //MTF = MTFFunctionforbayes(R, m, 0);
- //DEBUGPRINT1("MTF:%f\n",MTF);
-
-
+// CTF = ctfFunction(info, R, 0);
+// MTF = ctfMTFFunction(info, R, 0);
+
/*value check*/
switch(mode){
case 0:
//DEBUGPRINT("----ctfmode 0----\n");
- A = S;
+ // A = S*S;
+ A = ctfSignalPowerFunction(info,R,0);
break;
case 1:
//DEBUGPRINT("----ctfmode 1----\n");
- //k = d[3].min+(d[3].delta*L[3]);
k = parameter[3];
- A = S*S*exp(-2*(k*k)*(R*R));
+ info->MolecEnv = 0;
+ //A = S*S*exp(-2*(k*k)*(R*R));
+ A = ctfSignalPowerFunction(info,R,0)*exp(-2*(k*k)*(R*R));
break;
default:
}
- B = N*N;
+ B = ctfNoisePowerFunction(info,R,0);
// fprintf(stderr,"R:%f,p[1]:%f,p[2]%f,p[3]:%f,p[4]:%f,MTF:%f\n",R,info->defocus,S,N,k,m);
- return (CTF*CTF*A+B)*MTF*MTF;
+ return A+B;
}
extern void intensityRead(char* filename, intensityforbayes* intensity, int count, int mode);
extern void ctfFunctionforbayes(ctfforbayes* ctf, intensityforbayes* intensity, eosBayes* d, ctfInfo* info, defocuslikelihoodforbayes* l, int count, int mode);
-extern float MTFFunctionforbayes(float R, float m, int mode);
extern float ctfforbayesIntensityCalculation(float* parameter, float R, ctfInfo* info, int MTFmode, int Ainmode, int mode);
extern void ctfforbayesFree(ctfforbayes* ctf, intensityforbayes* intensity, defocuslikelihoodforbayes* likedihood, int numLikelihood);
spatialfrequencyRead(info.fptIn2,&ctf,info.rmax,info.rmin,0);
ctfInfoRead(info.fptIn3,&ctfinfo,"",0);
DEBUGPRINT6("kV:%f Cs:%f Ain:%f Cc:%f MTF:%f ctfMode:%ld\n",ctfinfo.kV,ctfinfo.Cs,ctfinfo.Ain,ctfinfo.Cc,ctfinfo.BofMTF,ctfinfo.mode);
+
+
+// ctfinfo.flagAliasing=1;
+// ctfinfo.flagSampling=1;
+ DEBUGPRINT2("flagAliasing:%ld flagSampling:%ld\n",ctfinfo.flagAliasing,ctfinfo.flagSampling);
+
+// ctfinfo.NyquistFrequency = 0.154799;
+ DEBUGPRINT1("NyquistFrequency:%f\n",ctfinfo.NyquistFrequency);
DEBUGPRINT1("flagIn4:%ld\n",info.flagIn4);
Rmax = ctf.rmax;
/*Defocus ref*/
DEBUGPRINT("defocus refinement start\n");
- ctf.rmax = Rintermediate;
- ctf.rmin = Rmin;
+ ctf.rmax = Rmax;
+ ctf.rmin = Rfirstpeak;
DEBUGPRINT2("set R range:%f~%f\n",ctf.rmin,ctf.rmax);
DEBUGPRINT("set maxposteriorflag of defocus,A,B,MTF\n");
out.posterior[1].maxposteriorflag = 0;
out.posterior[3].maxposteriorflag = 0;
out.posterior[5].maxposteriorflag = 0;
-// eosBayesMaxposteriorflagSet(&out,4);
+ eosBayesMaxposteriorflagSet(&out,4);
DEBUGPRINT("set canstantflag of Ain");
out.posterior[3].constantflag = 0;
eosBayesProbabilityReset(info.fptIn,&out,1,0);
DEBUGPRINT("set rangechangeflag of A\n");
- eosBayesRangeChangeflagSet(&out,0,0.95,20);
+ eosBayesRangeChangeflagSet(&out,0,0.70,10);
eosBayesRangeChangeflagSet(&out,1,0.95,20);
eosBayesRangeChangeflagSet(&out,2,0.95,20);
- eosBayesRangeChangeflagSet(&out,4,0.70,5);
+// eosBayesRangeChangeflagSet(&out,4,0.70,5);
eosBayesProbabilityRangeChange(&out,0);