mrcPixelDataGet(in, x, y, 0, &rein, mrcPixelRePart, linfo->llinfo.llinfo.InterpMode);
mrcPixelDataGet(in, x, y, 0, &imin, mrcPixelImPart, linfo->llinfo.llinfo.InterpMode);
- mrcPixelDataGet(&(Out+i)->out, x, y, 0, &revol, mrcPixelRePart, linfo->llinfo.llinfo.InterpMode);
- mrcPixelDataGet(&(Out+i)->out, x, y, 0, &imvol, mrcPixelImPart, linfo->llinfo.llinfo.InterpMode);
+ mrcPixelDataGet(&Out[i].out, x, y, 0, &revol, mrcPixelRePart, linfo->llinfo.llinfo.InterpMode);
+ mrcPixelDataGet(&Out[i].out, x, y, 0, &imvol, mrcPixelImPart, linfo->llinfo.llinfo.InterpMode);
likelihoodxre = likelihoodxre + rein*rein;
likelihoodxim = likelihoodxim + imin*imin;
likelihoodyre = likelihoodyre + revol*revol;
//DEBUGPRINT1(" rein:%f\n", rein);
mrcPixelDataGet(in, x, y, 0, &imin, mrcPixelImPart, linfo->llinfo.llinfo.InterpMode);
// DEBUGPRINT1("imin:%f\n", imin);
- mrcPixelDataGet(&(Out+i)->out, x, y, 0, &revol, mrcPixelRePart, linfo->llinfo.llinfo.InterpMode);
+ mrcPixelDataGet(&Out[i].out, x, y, 0, &revol, mrcPixelRePart, linfo->llinfo.llinfo.InterpMode);
// DEBUGPRINT1(" revol:%f\n", revol);
- mrcPixelDataGet(&(Out+i)->out, x, y, 0, &imvol, mrcPixelImPart, linfo->llinfo.llinfo.InterpMode);
+ mrcPixelDataGet(&Out[i].out, x, y, 0, &imvol, mrcPixelImPart, linfo->llinfo.llinfo.InterpMode);
// DEBUGPRINT1("imvol:%f\n", imvol);
likelihood = likelihood + ((rein - revol)*(rein - revol) + (imin - imvol)*(imin - imvol))/(-2);
j++;
}
}
DEBUGPRINT("\n");
- (Out +i) -> Likelihood = exp(likelihood)/(2*M_PI);
- DEBUGPRINT3("lmrcMultiFFTCentralSectionsComapre Likelihood:%d %f %f\n", i, likelihood, (Out+i)->Likelihood);
+ Out[i].Likelihood = exp(likelihood)/(2*M_PI);
+ DEBUGPRINT3("lmrcMultiFFTCentralSectionsComapre Likelihood:%d %f %f\n", i, likelihood, Out[i].Likelihood);
}
}
DEBUGPRINT("lmrcMultiFFTCentralSectionsCompare end\n");
float delta = 0;
float weight = 0;
- min = Out->Likelihood;
- max = Out->Likelihood;
+ min = Out[0].Likelihood;
+ max = Out[0].Likelihood;
if(mode ==1){
for(i=0; i < linfo->llinfo.RotSize; i++){
- if(min > (Out+i)->Likelihood){
- min = (Out+i)->Likelihood;
- }else if(max < (Out+i)->Likelihood){
- max = (Out+i)->Likelihood;
+ if(min > Out[i].Likelihood){
+ min = Out[i].Likelihood;
+ }else if(max < Out[i].Likelihood){
+ max = Out[i].Likelihood;
}
- sum = sum + (Out+i)-> Likelihood;
+ sum = sum + Out[i].Likelihood;
}
DEBUGPRINT1("lmrcMultiFFTCentralSectionsComapreNormalization sum: %f\n",sum);
delta = max - min;
for(i=0; i<linfo->llinfo.RotSize; i++){
- (Out +i) -> Prob = (exp(((Out+i)->Likelihood - min)/delta) - 1)/(exp(1)-1);
- weight = weight + exp((Out +i)->Prob);
+ Out[i].Prob = (exp((Out[i].Likelihood - min)/delta) - 1)/(exp(1)-1);
+ weight = weight + exp(Out[i].Prob);
}
for(i=0; i<linfo->llinfo.RotSize; i++){
- if((Out+i)->Likelihood > 0){
- (Out +i) -> Weight = exp((Out+i)->Prob)/weight;
+ if(Out[i].Likelihood > 0){
+ Out[i].Weight = exp(Out[i].Prob)/weight;
}else{
- (Out +i) -> Weight = 0;
+ Out[i].Weight = 0;
}
}
}else{
for(i=0; i<linfo->llinfo.RotSize; i++){
- sum = sum+(Out+i)->Likelihood;
+ sum = sum + Out[i].Likelihood;
}
DEBUGPRINT1("lmrcMultiFFTCentralSectionsComapreNormalization sum: %f\n",sum);
for(i=0; i<linfo->llinfo.RotSize; i++){
- (Out +i) -> Prob = (Out +i)-> Likelihood / sum;
+ Out[i].Prob = Out[i].Likelihood / sum;
}
}
}
if(mode2 == 0){
for(i=0; i< linfo->llinfo.RotSize; i++){
if(Mode == 1){
- if((Out+i)->Weight >= mode1){
- fprintf(fpt,"%s %s %15.4f %15.4f %15.4f %15.6e\n", filename, linfo->EulerMode, (Out+i)->Rot[0]*DEGREE, (Out+i)->Rot[1]*DEGREE, (Out+i)->Rot[2]*DEGREE, (Out+i)->Weight);
+ if(Out[i].Weight >= mode1){
+ fprintf(fpt,"%s %s %15.4f %15.4f %15.4f %15.6e\n", filename, linfo->EulerMode, Out[i].Rot[0]*DEGREE, Out[i].Rot[1]*DEGREE, Out[i].Rot[2]*DEGREE, Out[i].Weight);
}
}else{
- if((Out+i)->Prob >= mode1){
- fprintf(fpt,"%s %s %15.4f %15.4f %15.4f %15.6e\n", filename, linfo->EulerMode, (Out+i)->Rot[0]*DEGREE, (Out+i)->Rot[1]*DEGREE, (Out+i)->Rot[2]*DEGREE, (Out+i)->Prob);
+ if(Out[i].Prob >= mode1){
+ fprintf(fpt,"%s %s %15.4f %15.4f %15.4f %15.6e\n", filename, linfo->EulerMode, Out[i].Rot[0]*DEGREE, Out[i].Rot[1]*DEGREE, Out[i].Rot[2]*DEGREE, Out[i].Prob);
}
}
}
for(i=0; i< linfo->llinfo.RotSize; i++){
if(sum < mode2){
if(Mode == 1){
- sum = sum + (Out+i)->Weight;
+ sum = sum + Out[i].Weight;
}else{
- sum = sum + (Out+i)->Prob;
+ sum = sum + Out[i].Prob;
}
j++;
}else{
for(i=0; i<j; i++){
if(Mode ==1){
- if((Out+i)->Weight >= mode1){
- fprintf(fpt,"%s %s %15.4f %15.4f %15.4f %15.6e\n", filename, linfo->EulerMode, (Out+i)->Rot[0]*DEGREE, (Out+i)->Rot[1]*DEGREE, (Out+i)->Rot[2]*DEGREE, (Out+i)->Weight);
+ if(Out[i].Weight >= mode1){
+ fprintf(fpt,"%s %s %15.4f %15.4f %15.4f %15.6e\n", filename, linfo->EulerMode, Out[i].Rot[0]*DEGREE, Out[i].Rot[1]*DEGREE, Out[i].Rot[2]*DEGREE, Out[i].Weight);
}
- }else{
- if((Out+i)->Prob >= mode1){
- fprintf(fpt,"%s %s %15.4f %15.4f %15.4f %15.6e\n", filename, linfo->EulerMode, (Out+i)->Rot[0]*DEGREE, (Out+i)->Rot[1]*DEGREE, (Out+i)->Rot[2]*DEGREE, (Out+i)->Prob);
+ if(Out[i].Prob >= mode1){
+ fprintf(fpt,"%s %s %15.4f %15.4f %15.4f %15.6e\n", filename, linfo->EulerMode, Out[i].Rot[0]*DEGREE, Out[i].Rot[1]*DEGREE, Out[i].Rot[2]*DEGREE, Out[i].Prob);
}
}
}