OSDN Git Service

"rebuid"
author中野沙紀 <nakanosaki@nakanosaki-no-Mac-mini.local>
Fri, 22 Jan 2016 12:44:03 +0000 (21:44 +0900)
committer中野沙紀 <nakanosaki@nakanosaki-no-Mac-mini.local>
Fri, 22 Jan 2016 12:44:03 +0000 (21:44 +0900)
include/lmrcFFTCentralSection.h
src/Objects/DataManip/mrcImage/src/lmrcFFTCentralSection.h
src/Objects/DataManip/mrcImage/src/lmrcMultiFFTCentralSectionsCompare.c

index b1a96ef..5640b0c 100644 (file)
@@ -39,19 +39,19 @@ typedef struct lmrcFFTCentralSectionsGetInfo{
        double Rot1End;
        double Rot1Delta;
        int nRot1;
-               
+       
        double Rot2Start;
        double Rot2End;
        double Rot2Delta;
        int nRot2;
-              
+      
        double Rot3Start;
        double Rot3End;
        double Rot3Delta;
        int nRot3;
-              
+      
        int RotSize;
-              
+      
        lmrcFFTCentralSectionInfo llinfo;
 }lmrcFFTCentralSectionsGetInfo;
 
@@ -60,9 +60,9 @@ typedef struct lmrcMultiFFTCentralSectionsCompareInfoOut{
        mrcImage out;
 //     char EulerMode[5];
        double Rot[3];
-       float Likelihood;
-       float Prob;
-       float Weight;
+       double Likelihood;
+       double Prob;
+       double Weight;
 }lmrcMultiFFTCentralSectionsCompareInfoOut;
 
 typedef struct lmrcMultiFFTCentralSectionsCompareInfo{
index b1a96ef..5640b0c 100644 (file)
@@ -39,19 +39,19 @@ typedef struct lmrcFFTCentralSectionsGetInfo{
        double Rot1End;
        double Rot1Delta;
        int nRot1;
-               
+       
        double Rot2Start;
        double Rot2End;
        double Rot2Delta;
        int nRot2;
-              
+      
        double Rot3Start;
        double Rot3End;
        double Rot3Delta;
        int nRot3;
-              
+      
        int RotSize;
-              
+      
        lmrcFFTCentralSectionInfo llinfo;
 }lmrcFFTCentralSectionsGetInfo;
 
@@ -60,9 +60,9 @@ typedef struct lmrcMultiFFTCentralSectionsCompareInfoOut{
        mrcImage out;
 //     char EulerMode[5];
        double Rot[3];
-       float Likelihood;
-       float Prob;
-       float Weight;
+       double Likelihood;
+       double Prob;
+       double Weight;
 }lmrcMultiFFTCentralSectionsCompareInfoOut;
 
 typedef struct lmrcMultiFFTCentralSectionsCompareInfo{
index a602e69..7feb9b6 100644 (file)
@@ -24,65 +24,90 @@ static char __sccs_id[] = "%Z%lmrcMultiFFTCentralSectionsCompare ver%I%; Date:%D
 void
 lmrcMultiFFTCentralSectionsCompare(lmrcMultiFFTCentralSectionsCompareInfoOut* Out, mrcImage* in, mrcImage* volume, lmrcMultiFFTCentralSectionsCompareInfo* linfo, int mode){
     mrcImageParaTypeReal x, y;
-    float likelihood;
-    float likelihoodxre, likelihoodyre, likelihoodxyre;
-    float likelihoodxim, likelihoodyim, likelihoodxyim;
+    double likelihood;
+    double likelihoodxre, likelihoodyre, likelihoodxyre;
+    double likelihoodxim, likelihoodyim, likelihoodxyim;
     double rein, imin;
     double revol, imvol;
-    int i;
+    int i,j;
     clock_t start,end;
-
+    
     DEBUGPRINT("lmrcMultiFFTCentralSectionsCompare start\n");
     start=clock();
     lmrcFFTCentralSectionsGet(Out, in, volume, linfo,mode);
     end=clock();
     DEBUGPRINT1(" SectionsGet time:%f\n", (double)(end-start)/CLOCKS_PER_SEC);
 
-    //DEBUGPRINT2(" HeaderN x y:%d %d \n", in->HeaderN.x, in->HeaderN.y);
-        
     for(i=0; i < linfo->llinfo.RotSize; i++){
         if(mode == 1){
-            likelihoodxre = 0;
-            likelihoodyre = 0;
-            likelihoodxyre = 0;
-            likelihoodxim = 0;
-            likelihoodyim = 0;
-            likelihoodxyim = 0;
-            
+            likelihoodxre = 0.0;
+            likelihoodyre = 0.0;
+            likelihoodxyre = 0.0;
+            likelihoodxim = 0.0;
+            likelihoodyim = 0.0;
+            likelihoodxyim = 0.0;
+            j=0;
             for(x=0; x < in->HeaderN.x ; x++){
                 for(y=0; y < in -> HeaderN.y ; y++){
+                    if(j==32){
+                        rein = 0;
+                        imin = 0;
+                        revol = 0;
+                        imvol = 0;
+                    }else{
                     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);
+                    }
                     likelihoodxre = likelihoodxre + rein*rein;
                     likelihoodxim = likelihoodxim + imin*imin;
                     likelihoodyre = likelihoodyre + revol*revol;
                     likelihoodyim = likelihoodyre + imvol*imvol;
                     likelihoodxyre = likelihoodxyre + rein*revol;
                     likelihoodxyim = likelihoodxyim + imin*imvol;
+                    j++;
+                    if(i>12300){
+                        if(j<50){
+                            DEBUGPRINT1(" %d", j);
+                       }
+                    }
                 }
             }
-            DEBUGPRINT("\n");
-            (Out +i)->Likelihood = likelihoodxyre/sqrt(likelihoodxre*likelihoodyre) + likelihoodxyim/sqrt(likelihoodxim*likelihoodyim);
+            Out[i].Likelihood = likelihoodxyre/sqrt(likelihoodxre*likelihoodyre) + likelihoodxyim/sqrt(likelihoodxim*likelihoodyim);
+            if(i>12300){
+                DEBUGPRINT("\n");
+            DEBUGPRINT2("lmrcMultiFFTCentralSectionsComapre Likelihood:%d %f\n", i, Out[i].Likelihood);
+            }
         }else{
-            likelihood = 0;
-               for(x=0; x < in->HeaderN.x ; x++){
+            likelihood = 0.0;
+            j=0;
+            for(x=0; x < in->HeaderN.x ; x++){
                  for(y=0; y < in -> HeaderN.y ; y++){
+                    if(j==32){
+                        rein = 0;
+                        imin = 0;
+                        revol = 0;
+                        imvol = 0;
+                    }else{
                     mrcPixelDataGet(in, x, y, 0, &rein, mrcPixelRePart, linfo->llinfo.llinfo.InterpMode);
-                    //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);
-                   // DEBUGPRINT1(" revol:%f\n", revol);
-                    mrcPixelDataGet(&Out[i].out, x, y, 0, &imvol, mrcPixelImPart, linfo->llinfo.llinfo.InterpMode);
-                   // DEBUGPRINT1("imvol:%f\n", imvol);
+                   mrcPixelDataGet(&Out[i].out, x, y, 0, &imvol, mrcPixelImPart, linfo->llinfo.llinfo.InterpMode);
+                    }
                     likelihood = likelihood + ((rein - revol)*(rein - revol) + (imin - imvol)*(imin - imvol))/(-2);
+                    j++;
+                    if(i>13500){
+                        if(j<50){
+                            DEBUGPRINT1(" %d", j);
+                        }
+                    }
                  }
             }
-
-            DEBUGPRINT("\n");
+            if(i>13500){
+                DEBUGPRINT("\n");
+            }
             Out[i].Likelihood = exp(likelihood)/(2*M_PI);
             DEBUGPRINT3("lmrcMultiFFTCentralSectionsComapre Likelihood:%d %f %f\n", i, likelihood, Out[i].Likelihood);
         }
@@ -94,11 +119,11 @@ void
 lmrcMultiFFTCentralSectionsCompareNormalization(lmrcMultiFFTCentralSectionsCompareInfoOut* Out, lmrcMultiFFTCentralSectionsCompareInfo* linfo, int mode){
 
     int i;
-    float sum=0;
-    float min;
-    float max;
-    float delta = 0;
-    float weight = 0;
+    double sum=0.0;
+    double min;
+    double max;
+    double delta = 0.0;
+    double weight = 0.0;
 
     min = Out[0].Likelihood;
     max = Out[0].Likelihood;
@@ -132,7 +157,7 @@ lmrcMultiFFTCentralSectionsCompareNormalization(lmrcMultiFFTCentralSectionsCompa
         }
         DEBUGPRINT1("lmrcMultiFFTCentralSectionsComapreNormalization sum: %f\n",sum);
         for(i=0; i<linfo->llinfo.RotSize; i++){
-            Out[i].Prob = Out[i].Likelihood / sum;
+            Out[i].Weight = Out[i].Likelihood / sum;
         }
     }
 }
@@ -141,47 +166,32 @@ void
 lmrcMultiFFTCentralSectionsCompareInfoWrite(FILE* fpt, char* filename, lmrcMultiFFTCentralSectionsCompareInfoOut* Out, lmrcMultiFFTCentralSectionsCompareInfo* linfo, int Mode, float mode1, float mode2){
 
     int i,j=0;
-    float sum = 0;
+    double sum = 0;
 
     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);
-                }
-            }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].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{
         for(i=0; i< linfo->llinfo.RotSize; i++){
             if(sum < mode2){
-                if(Mode == 1){
-                    sum = sum + Out[i].Weight;
-                }else{
-                    sum = sum + Out[i].Prob;
-                }
+                sum = sum + Out[i].Weight;
                 j++;
             }else{
                 break;
             }
         }
-           
         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].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].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);
             }
         }
     }
 }
 
+
 void
 lmrcMultiFFTCentralSectionsCompareInfoSort(lmrcMultiFFTCentralSectionsCompareInfoOut Out[], int left, int right){
 
@@ -189,7 +199,7 @@ lmrcMultiFFTCentralSectionsCompareInfoSort(lmrcMultiFFTCentralSectionsCompareInf
     int pr=right;
     int middle=(left+right)/2;
     lmrcMultiFFTCentralSectionsCompareInfoOut temp;
-    float pivot;
+    double pivot;
 
     pivot = Out[middle].Prob;