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