OSDN Git Service

modified eosBayesCondition v2.3.9p0190
author久永浩司 <hisanagakouji@hisanagakouji-no-MacBook-Air.local>
Thu, 29 Dec 2016 14:54:39 +0000 (23:54 +0900)
committer久永浩司 <hisanagakouji@hisanagakouji-no-MacBook-Air.local>
Thu, 29 Dec 2016 14:54:39 +0000 (23:54 +0900)
include/eosBayes.h
src/Objects/General/eosBayes/inc/eosBayes.h
src/Objects/General/eosBayes/src/eosBayesCondition.c
src/Tools/ctfInfo/ctfDeterminationByBayes/src/ctfDeterminationByBayes.c

index bfb3637..97d16f5 100644 (file)
@@ -26,17 +26,19 @@ typedef struct eosBayes {
 
 
 typedef enum eosBayesDistributionInfoMode {
-        eosBayesDistributionInfoModeGaussian=0
+        eosBayesDistributionInfoModeGaussian=0,
+        eosBayesDistributionInfoModeConstant=1
 } eosBayesDistributionInfoMode;
 
 typedef struct eosBayesDistributionInfo {
-       float min;
-       float max;
-       float delta;
-       eosBayesDistributionInfoMode mode;
-       // For Gaussian
-       float mean;
-       float sigma;
+  float min;
+  float max;
+  float delta;
+  eosBayesDistributionInfoMode mode;
+  // For Gaussian
+  float mean;
+  float sigma;
+  float constant;
 } eosBayesDistributionInfo;
 
 
@@ -45,6 +47,7 @@ typedef struct eosBayesDistributionInfo {
 extern void leosBayesInit(eosBayes* d, int numDistribution, int numLikelihood, int mode);
 
 extern void eosBayesCondition(FILE* fptIn, eosBayes* d, eosBayesDistributionInfo* llinfo, int mode);
+extern void eosBayesRefinementCondition(FILE* fptIn, eosBayes* d, eosBayesDistributionInfo* llinfo, int n, int mode);
 
 // Initialize Each distribution of eosBayesDistributions
 extern void eosBayesDistributionInit(eosBayesDistribution* d,eosBayesDistributionInfo* info, int mode);
index 0797770..97d16f5 100644 (file)
@@ -47,7 +47,7 @@ typedef struct eosBayesDistributionInfo {
 extern void leosBayesInit(eosBayes* d, int numDistribution, int numLikelihood, int mode);
 
 extern void eosBayesCondition(FILE* fptIn, eosBayes* d, eosBayesDistributionInfo* llinfo, int mode);
-extern void eosBayesRefinementCondition(eosBayes* d, eosBayesDistributionInfo* llinfo, int n, int mode);
+extern void eosBayesRefinementCondition(FILE* fptIn, eosBayes* d, eosBayesDistributionInfo* llinfo, int n, int mode);
 
 // Initialize Each distribution of eosBayesDistributions
 extern void eosBayesDistributionInit(eosBayesDistribution* d,eosBayesDistributionInfo* info, int mode);
index 34ef006..1ebe8c8 100644 (file)
@@ -25,8 +25,10 @@ void eosBayesCondition(FILE* fptIn, eosBayes* d, eosBayesDistributionInfo* llinf
 
        int i;
        char s[1024];
-       
+
        DEBUGPRINT("File read start\n");
+       fseek(fptIn,0,SEEK_SET);
+
        for(i=0; i<d->numDistribution;i++){
                // read each of min, max, delta, mode, mean, sigma
 
@@ -55,27 +57,37 @@ void eosBayesCondition(FILE* fptIn, eosBayes* d, eosBayesDistributionInfo* llinf
                eosBayesDistributionInit(&(d->likelihood[i]),llinfo,0);
                eosBayesDistributionInitialProbabilitySet(&(d->prior[i]), llinfo, 0);
        }
-       DEBUGPRINT("eosBayesConditon finish\n")
+       DEBUGPRINT("eosBayesConditon finish\n");
+       
 
 }
 
-void eosBayesRefinementCondition(eosBayes* d, eosBayesDistributionInfo* llinfo, int n, int mode){
+void eosBayesRefinementCondition(FILE* fptIn, eosBayes* d, eosBayesDistributionInfo* llinfo, int n, int mode){
 
   int i;
+  char s[1024];
 
-  DEBUGPRINT("eosBayesRefinementConditon start\n")
+  DEBUGPRINT("eosBayesRefinementConditon start\n");
+  fseek(fptIn,0,SEEK_SET);
 
   eosBayesParameterOfMaxPosteriorGet(d->posterior,d->numDistribution,0);
   
-
   for(i=0;i<d->numDistribution;i++){
-       DEBUGPRINT2("%d/%d loop\n",i+1,d->numDistribution);
+               DEBUGPRINT2("%d/%d loop\n",i+1,d->numDistribution);
+               stringGetFromFile(s, "in main", fptIn, stdout, 3);
+
+               llinfo->min      = stringGetNthRealData(s, 2," \t");
+               llinfo->max      = stringGetNthRealData(s, 3," \t");
+               llinfo->delta    = stringGetNthRealData(s, 4," \t");
+               llinfo->mode     = stringGetNthIntegerData(s, 5," \t");
+               llinfo->mean     = stringGetNthRealData(s, 6," \t");
+               llinfo->sigma    = stringGetNthRealData(s, 7," \t");
 
        switch(llinfo->mode){
        case 0:
          /*Gaussian*/
          llinfo->min = d->posterior[i].valueofmaxposterior-d->posterior[i].delta;
-         llinfo->min = d->posterior[i].valueofmaxposterior+d->posterior[i].delta;
+         llinfo->max = d->posterior[i].valueofmaxposterior+d->posterior[i].delta;
          llinfo->sigma = d->posterior[i].delta;
          llinfo->mean = d->posterior[i].valueofmaxposterior;
          llinfo->delta = d->posterior[i].delta/n;
@@ -90,7 +102,7 @@ void eosBayesRefinementCondition(eosBayes* d, eosBayesDistributionInfo* llinfo,
          break;
        }
 
-
+       DEBUGPRINT1("%s\n",s);
        DEBUGPRINT6("min:%f max:%f delta:%f mode:%u mean:%f sigma:%f\n",llinfo->min,llinfo->max,llinfo->delta,llinfo->mode,llinfo->mean,llinfo->sigma);
 
        eosBayesDistributionInit(&(d->prior[i]),llinfo,1);
@@ -100,6 +112,6 @@ void eosBayesRefinementCondition(eosBayes* d, eosBayesDistributionInfo* llinfo,
 
   }
 
-  DEBUGPRINT("eosBayesRefinementConditon finish\n")
+  DEBUGPRINT("eosBayesRefinementConditon finish\n");
 
 }
index aab5874..ad4455a 100755 (executable)
@@ -101,7 +101,7 @@ main(int argc, char* argv[])
 
   /*defocus estimation (refinement)*/
 
-  eosBayesRefinementCondition(&out,&llinfo,5,0);
+  eosBayesRefinementCondition(info.fptIn,&out,&llinfo,5,0);
   DistributionChangeCheck(&out, 0);
   defocusLikelihoodInit(&likelihood,out,1);