1 // $Id: ui_vars_chainparams.h,v 1.17 2011/03/07 06:08:53 bobgian Exp $
2 
3 /*
4  *  Copyright 2004  Peter Beerli, Mary Kuhner, Jon Yamato and Joseph Felsenstein
5  *
6  *  This software is distributed free of charge for non-commercial use
7  *  and is copyrighted.  Of course, we do not guarantee that the software
8  *  works, and are not responsible for any damage you may cause or have.
9  *
10  */
11 
12 #ifndef UI_VARS_CHAINPARAMS_H
13 #define UI_VARS_CHAINPARAMS_H
14 
15 #include <string>
16 #include "vectorx.h"
17 #include "ui_vars_component.h"
18 
19 using std::string;
20 
21 // variables that can be changed by the user
22 class UIVarsChainParameters : public UIVarsComponent
23 {
24   private:
25     //
26     UIVarsChainParameters();                                // undefined
27     UIVarsChainParameters(const UIVarsChainParameters&);    // undefined
28 
29     // variables for the ChainParameters
30     bool                    adaptiveTemperatures;
31     DoubleVec1d             chainTemperatures;
32     double                  dropArrangerRelativeTiming;
33     double                  sizeArrangerRelativeTiming;
34     double                  haplotypeArrangerRelativeTiming;
35     double                  probhapArrangerRelativeTiming;
36     double                  bayesianArrangerRelativeTiming;
37     double                  locusArrangerRelativeTiming;
38     double                  zilchArrangerRelativeTiming;
39     double                  stairArrangerRelativeTiming;
40     double                  epochSizeArrangerRelativeTiming;
41     bool                    doBayesianAnalysis;
42     long                    finalChainSamplingInterval;
43     long                    finalNumberOfChains;
44     long                    finalNumberOfChainsToDiscard;
45     long                    finalNumberOfSamples;
46     long                    initialChainSamplingInterval;
47     long                    initialNumberOfChains;
48     long                    initialNumberOfChainsToDiscard;
49     long                    initialNumberOfSamples;
50     long                    numberOfReplicates;
51     long                    temperatureInterval;
52 
53   public:
54     // one might argue that the constructors should have
55     // restricted access since only UIVars should
56     // be creating these puppies.
57     UIVarsChainParameters(UIVars*);
58     UIVarsChainParameters(UIVars*,const UIVarsChainParameters&);
59 
60     virtual ~UIVarsChainParameters();
61 
62     /////////////////////////////////////////////////////////////
63     // Get Methods for chain parameter variables
64     virtual bool           GetAdaptiveTemperatures() const;
65     virtual bool           GetDoBayesianAnalysis() const;
66     virtual long           GetChainCount() const;
67     virtual double         GetChainTemperature(long chainId) const;
68     virtual DoubleVec1d    GetChainTemperatures() const;
69     virtual double         GetDropArrangerRelativeTiming() const;
70     virtual double         GetSizeArrangerRelativeTiming() const;
71     virtual double         GetBayesianArrangerRelativeTiming() const;
72     virtual double         GetLocusArrangerRelativeTiming() const;
73     virtual double         GetZilchArrangerRelativeTiming() const;
74     virtual double         GetStairArrangerRelativeTiming() const;
75     virtual double         GetEpochSizeArrangerRelativeTiming() const;
76     virtual long           GetFinalChainSamplingInterval() const;
77     virtual long           GetFinalNumberOfChains() const;
78     virtual long           GetFinalNumberOfChainsToDiscard() const;
79     virtual long           GetFinalNumberOfSamples() const;
80     virtual bool           GetHaplotypeArrangerPossible() const;
81     virtual double         GetHaplotypeArrangerRelativeTiming() const;
82     virtual bool           GetProbHapArrangerPossible() const;
83     virtual double         GetProbHapArrangerRelativeTiming() const;
84     virtual long           GetInitialChainSamplingInterval() const;
85     virtual long           GetInitialNumberOfChains() const;
86     virtual long           GetInitialNumberOfChainsToDiscard() const;
87     virtual long           GetInitialNumberOfSamples() const;
88     virtual long           GetNumberOfReplicates() const;
89     virtual long           GetTemperatureInterval() const;
90 
91     /////////////////////////////////////////////////////////////
92     virtual void            SetAdaptiveTemperatures(bool);
93     virtual void            SetDoBayesianAnalysis(bool);
94     virtual void            SetChainCount(long count);
95     virtual void            SetChainTemperature(double temp, long chainId);
96     virtual void            RescaleDefaultSizeArranger();
97     virtual void            SetBayesianArrangerRelativeTiming(double);
98     virtual void            SetDropArrangerRelativeTiming(double);
99     virtual void            SetSizeArrangerRelativeTiming(double);
100     virtual void            SetLocusArrangerRelativeTiming(double);
101     virtual void            SetHaplotypeArrangerRelativeTiming(double);
102     virtual void            SetProbHapArrangerRelativeTiming(double);
103     virtual void            SetZilchArrangerRelativeTiming(double);
104     virtual void            SetStairArrangerRelativeTiming(double);
105     virtual void            SetEpochSizeArrangerRelativeTiming(double);
106     virtual void            SetFinalChainSamplingInterval(long);
107     virtual void            SetFinalNumberOfChains(long);
108     virtual void            SetFinalNumberOfChainsToDiscard(long);
109     virtual void            SetFinalNumberOfSamples(long);
110     virtual void            SetInitialChainSamplingInterval(long);
111     virtual void            SetInitialNumberOfChains(long);
112     virtual void            SetInitialNumberOfChainsToDiscard(long);
113     virtual void            SetInitialNumberOfSamples(long);
114     virtual void            SetNumberOfReplicates(long);
115     virtual void            SetTemperatureInterval(long);
116   private:
117     virtual void            WarnIfNoSamples();
118 };
119 
120 double MakeNextChainTemperature(const vector<double> temperatures);
121 
122 #endif  // UI_VARS_CHAINPARAMS_H
123 
124 //____________________________________________________________________________________
125