OSDN Git Service

Merge branch 'master' of git.sourceforge.jp:/gitroot/eos/base
[eos/base.git] / src / Tools / ctfInfo / ctfDeterminationByBayes / src / ctfDeterminationByBayes.c
1 /*
2 # ctfDeterminationByBayes : $Revision$  
3 # $Date$ 
4 # Created by $Author$
5 # Usage : ctfDeterminationByBayes
6 # Attention
7 #   $Loccker$
8 #       $State$ 
9 #
10 */
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <string.h>
14 #include <math.h>                  
15 #define GLOBAL_DECLARATION
16 #include "../inc/config.h"
17 #include "eosBayes.h"
18 #include "ctfInfo.h"
19 #include "ctffuncforbayes.h"
20
21
22 #define DEBUG
23 #include "genUtil.h"
24 #include "ctfDeterminationByBayes.h"
25 #include "String.h"
26
27 /*
28 Example:
29 typedef struct lctfDeterminationByBayesInfo {
30         float a;
31         int   b;
32 } lctfDeterminationByBayesInfo;
33
34 typedef enum lctfDeterminationByBayesMode {
35         a=0,
36         b=1
37 } lctfDeterminationByBayesMode;
38 */
39
40 int
41 main(int argc, char* argv[]) 
42 {
43   
44   ctfDeterminationByBayesInfo info;
45   ctfInfo ctfinfo;
46   eosBayesDistributionInfo llinfo;
47   
48   eosBayes out;
49   ctfforbayes ctf;
50   int i;
51
52   init0(&info);
53   argCheck(&info, argc, argv);
54   init1(&info);
55
56   DEBUGPRINT("Program Start\n");
57
58   ctfinfo.mode = 33;
59
60
61   leosBayesInit(&out, info.numDistribution, info.numLikelihood, info.mode);
62   eosBayesCondition(info.fptIn, &out, &llinfo, 0);
63   eosBayesPriorWrite(info.fptOut2, &out,0);
64   DistributionChangeCheck(&out, 0);
65
66
67   ctfforbayesInit(info.fptIn2,&ctf,0);
68   spatialfrequencyRead(info.fptIn2,&ctf,0);
69   ctfInfoRead(info.fptIn3,&ctfinfo,"",0);
70   DEBUGPRINT4("kV:%f  Cs:%f  Ain:%f ctfMode:%d\n",ctfinfo.kV,ctfinfo.Cs,ctfinfo.Ain,ctfinfo.mode);
71   DEBUGPRINT1("flagIn4:%d\n",info.flagIn4);
72
73
74   /*defocus estimation*/
75   for(i=0;i<info.flagIn4;i++){
76         
77         IntensityRead(info.In4[i],&ctf,0);
78         
79         DEBUGPRINT("ctf start\n");
80         ctfFunctionforbayes(&ctf,out.likelihood,&ctfinfo,out.numLikelihood,i,0);
81
82         DEBUGPRINT("likelihood start\n");
83
84         defocuslikelihood(ctf,&out,i,0);
85         LikelihoodChangeCheck(&out,i,0);
86
87         DEBUGPRINT("estimate start\n");
88         eosBayesEstimation(&out,0);
89
90         DistributionChangeCheck(&out,1);
91           
92         DEBUGPRINT("change start\n");
93         eosBayesPosteriortoPrior(&out,0);
94         DEBUGPRINT("loop end\n");
95
96   }
97   
98   eosBayesPriorWrite(info.fptOut,&out,0);
99   
100   exit(EXIT_SUCCESS);
101 }
102
103 void
104 additionalUsage()
105 {
106   fprintf(stderr, "----- Additional Usage -----\n");
107 }
108