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   intensityforbayes intensity;
51   defocuslikelihoodforbayes likelihood;
52
53   int i;
54
55   init0(&info);
56   argCheck(&info, argc, argv);
57   init1(&info);
58
59   DEBUGPRINT("Program Start\n");
60
61   ctfinfo.mode = 33;
62
63   /*For Prior*/
64   leosBayesInit(&out, info.numDistribution, info.numLikelihood, info.mode);
65   eosBayesCondition(info.fptIn, &out, &llinfo, 0);
66   eosBayesPriorWrite(info.fptOut2, &out,0);
67   DistributionChangeCheck(&out, 0);
68
69
70   /*For CTF and intensity*/
71   ctfforbayesInit(info.fptIn2,&ctf,0);
72   intensityforbayesInit(&intensity,info.flagIn4,ctf.n,0);
73   spatialfrequencyRead(info.fptIn2,&ctf,info.rmax,info.rmin,0);
74   for(i=0;i<info.flagIn4;i++){
75         intensityRead(info.In4[i],&intensity,i,0);
76   }
77   ctfInfoRead(info.fptIn3,&ctfinfo,"",0);
78   DEBUGPRINT4("kV:%f  Cs:%f  Ain:%f ctfMode:%ld\n",ctfinfo.kV,ctfinfo.Cs,ctfinfo.Ain,ctfinfo.mode);
79   DEBUGPRINT1("flagIn4:%ld\n",info.flagIn4);
80   DEBUGPRINT("ctf start\n");
81   ctfFunctionforbayes(&ctf, &intensity,out.likelihood,&ctfinfo,out.numLikelihood,0,1);
82
83   /*For likelihood*/
84   defocusLikelihoodInit(&likelihood,out,0);
85
86   /*defocus estimation*/
87   for(i=0;i<info.flagIn4;i++){
88
89         DEBUGPRINT("set intensity\n");
90         intensitySet(&ctf,intensity,i,0);
91
92 #ifdef DEBUG
93         ctfforbayescheckintensity(ctf,out.likelihood,out.numLikelihood,i,1);
94 #endif
95
96
97         DEBUGPRINT("likelihood start\n");
98         defocusLikelihood(&likelihood,ctf,&out,i,0);
99         LikelihoodChangeCheck(&out,i,0);
100
101
102         DEBUGPRINT("estimate start\n");
103         eosBayesEstimation(&out,0);
104         DistributionChangeCheck(&out,1);
105   
106
107         DEBUGPRINT("change start\n");
108         eosBayesPosteriortoPrior(&out,0);
109
110   }
111         DEBUGPRINT("loop end\n");
112   
113   eosBayesPriorWrite(info.fptOut,&out,0);
114   
115   exit(EXIT_SUCCESS);
116 }
117
118 void
119 additionalUsage()
120 {
121   fprintf(stderr, "----- Additional Usage -----\n");
122 }
123