1 // $Id: defaults.h,v 1.62 2012/04/26 23:54:36 ewalkup Exp $
2 
3 #ifndef DEFAULTS_H
4 #define DEFAULTS_H
5 
6 #include <ctime>
7 #include <string>
8 #include "constants.h"
9 #include "local_build.h"
10 #include "vectorx.h"
11 
12 using std::string;
13 
14 class defaults
15 {
16     // Default values -- you can change these, but it is easier to
17     // code your defaults into your input data file.
18 
19   public:
20 
21     // Whether or not the user expects 'site 0' in their output
22     static const bool convert_output_to_eliminate_zeroes;
23 
24     // minimal mutation rate
25     static const double minMuRate;
26 
27     // parameters
28     static const double theta;
29     static const double migration;
30     static const double divMigration;
31     static const double disease;
32     static const double recombinationRate;
33     static const double growth;
34     static const double logisticSelection;
35     static const double gammaOverRegions; // equals alpha, which equals the
36     // scaled shape parameter of a gamma distribution over regions
37     // of the background mutation rate
38     static const double epochtime;
39 
40     // disease location
41     static const long diseaseLocation;
42 
43     // growth approximation type
44     static const growth_type growType;
45     // selection approximation type
46     static const selection_type selectionType;
47 
48     // maximum events
49     static const long coalEvents;
50     static const long migEvents;
51     static const long divMigEvents;
52     static const long diseaseEvents;
53     static const long recEvents;
54     static const long growEvents;
55     static const long lselectEvents;
56     static const long epochEvents;
57 
58     // methods
59     static const method_type thetaMethod;
60     static const method_type migMethod;
61     static const method_type divMigMethod;
62     static const method_type diseaseMethod;
63     static const method_type recMethod;
64     static const method_type growMethod;
65     static const method_type lselectMethod;
66     static const method_type divMethod;
67 
68     // Do a bayesian analysis
69     static const bool   useBayesianAnalysis;
70 
71     // bayesian prior default boundaries
72     static const double lowerboundTheta;
73     static const double upperboundTheta;
74     static const double lowerboundMig;
75     static const double upperboundMig;
76     static const double lowerboundDivMig;
77     static const double upperboundDivMig;
78     static const double lowerboundDisease;
79     static const double upperboundDisease;
80     static const double lowerboundRec;
81     static const double upperboundRec;
82     static const double lowerboundGrowth;
83     static const double upperboundGrowth;
84     static const double lowerboundLSelect;
85     static const double upperboundLSelect;
86     static const double lowerboundEpoch;
87     static const double upperboundEpoch;
88 
89 #ifdef LAMARC_NEW_FEATURE_RELATIVE_SAMPLING
90     // default relative sampling rate
91     static const long   samplingRate;
92 #endif
93 
94     // bayesian prior default types
95     static const priortype priortypeTheta;
96     static const priortype priortypeMig;
97     static const priortype priortypeDivMig;
98     static const priortype priortypeDisease;
99     static const priortype priortypeRec;
100     static const priortype priortypeGrowth;
101     static const priortype priortypeLSelect;
102     static const priortype priortypeEpoch;
103 
104     // Min/Max allowable values for bayesian priors.  Used both in
105     //  prior_interface.cpp and ui_vars_prior.cpp
106     static const double minboundTheta;
107     static const double maxboundTheta;
108     static const double minboundMig;
109     static const double maxboundMig;
110     static const double minboundDivMig;
111     static const double maxboundDivMig;
112     static const double minboundDisease;
113     static const double maxboundDisease;
114     static const double minboundRec;
115     static const double maxboundRec;
116     static const double minboundGrowth;
117     static const double maxboundGrowth;
118     static const double minboundLSelect;
119     static const double maxboundLSelect;
120     static const double minboundEpoch;
121     static const double maxboundEpoch;
122 
123     // maximum allowable values for initial parameter estimates
124     static const double maxTheta;
125     static const double minTheta;
126     static const double maxMigRate;
127     static const double minMigRate;
128     static const double maxDivMigRate;
129     static const double minDivMigRate;
130     static const double maxDiseaseRate;
131     static const double minDiseaseRate;
132     static const double maxRecRate;
133     static const double minRecRate;
134     static const double maxGrowRate;
135     static const double minGrowRate;
136     static const double maxLSelectCoeff;
137     static const double minLSelectCoeff;
138     static const double minGammaOverRegions;
139     static const double maxGammaOverRegions; // equals alpha, which equals
140     // the shape parameter of a gamma distribution over regions
141     // of the background mutation rate
142     static const double minEpoch;
143     static const double maxEpoch;
144 
145     // maximum allowable values during parameter estimation (maximization)
146     static const double maximization_maxTheta;
147     static const double maximization_minTheta;
148     static const double maximization_maxMigRate;
149     static const double maximization_minMigRate;
150     static const double maximization_maxDivMigRate;
151     static const double maximization_minDivMigRate;
152     static const double maximization_maxDiseaseRate;
153     static const double maximization_minDiseaseRate;
154     static const double maximization_maxRecRate;
155     static const double maximization_minRecRate;
156     static const double maximization_maxGrowRate;
157     static const double maximization_minGrowRate;
158     static const double maximization_maxLSelectCoeff;
159     static const double maximization_minLSelectCoeff;
160     static const double maximization_minGammaOverRegions;
161     static const double maximization_maxGammaOverRegions; // equals alpha,
162     // which equals the shape parameter of a gamma distribution over regions
163     // of the background mutation rate
164     static const double maximization_minEpoch;
165     static const double maximization_maxEpoch;
166 
167     // arrangers
168     static const double dropArrangerTiming;
169     static const double sizeArrangerTiming;
170     static const double haplotypeArrangerTiming;
171     static const double probhapArrangerTiming;
172     static const double bayesianArrangerTiming;
173 
174     // temperature
175     static const long temperatureInterval;
176     static const bool useAdaptiveTemperatures;
177     static const double minTemperature;
178     static const double secondTemperature;
179 
180     // chains
181     static const long initial;
182     static const long initNChains;
183     static const long initNSamples;
184     static const long initInterval;
185     static const long initDiscard;
186 
187     static const long final;
188     static const long finalNChains;
189     static const long finalNSamples;
190     static const long finalInterval;
191     static const long finalDiscard;
192     // replicates
193     static const long replicates;
194     static const long geyeriters;
195 
196     //Max num heated chains.
197     static const long maxNumHeatedChains;
198 
199     // error conditions
200     static const long tooManyDeNovo;  // we give up; we can't make a denovo tree
201 
202     // default user params for profiling
203     static const bool doProfile;
204     static const proftype profileType;
205 
206     // default group parameter status
207     static const pstatus groupPstat;
208 
209     //Parameters for profiling estimation
210     static const double highvalTheta;
211     static const double lowvalTheta;
212     static const double highmultTheta;
213     static const double lowmultTheta;
214 
215     static const double highvalMig;
216     static const double lowvalMig;
217     static const double highmultMig;
218     static const double lowmultMig;
219 
220     static const double highvalDisease;
221     static const double lowvalDisease;
222     static const double highmultDisease;
223     static const double lowmultDisease;
224 
225     static const double highvalRec;
226     static const double lowvalRec;
227     static const double highmultRec;
228     static const double lowmultRec;
229 
230     static const double highvalGrowth;
231     static const double lowvalGrowth;
232     static const double highmultGrowth;
233     static const double lowmultGrowth;
234 
235     static const double highvalLSelect;
236     static const double lowvalLSelect;
237     static const double highmultLSelect;
238     static const double lowmultLSelect;
239 
240     static const double highvalGammaOverRegions;
241     static const double lowvalGammaOverRegions;
242     static const double highmultGammaOverRegions;
243     static const double lowmultGammaOverRegions; // equals alpha, which equals
244     // the shape parameter of a gamma distribution over regions
245     // of the background mutation rate
246 
247     static const double highvalEpoch;
248     static const double lowvalEpoch;
249     static const double highmultEpoch;
250     static const double lowmultEpoch;
251 
252     // defaults for datamodels
253     static const long nucleotideBins;
254     // default number of bins for allelic and microsat stepwise models
255     static const long bins;
256     // default number of bins for brownian model
257     static const long brownianBins;
258     // default maximum seperation (functionally) allowed between any
259     // two alleles in a microsat stepwise model
260     static const long threshhold;
261     static const long step_allowance;
262     static const long mixedks_allowance;
263 
264     static const string startMethod;
265 
266     // default values for userparams
267     static const string curvefileprefix;
268     static const string mapfileprefix;
269     static const string reclocfileprefix;
270     static const string tracefileprefix;
271     static const string newicktreefileprefix;
272 #ifdef LAMARC_QA_TREE_DUMP
273     static const string argfileprefix;
274 #endif
275 
276     static const string datafilename;
277     static const string profileprefix;
278     static const string resultsfilename;
279     static const string treesuminfilename;
280     static const string treesumoutfilename;
281     static const string xmloutfilename;
282     static const string xmlreportfilename;
283 
284     static const verbosity_type verbosity;
285     static const verbosity_type progress;
286 
287     static const time_t programstarttime;
288     static const long randomseed;
289     static const bool hasoldrandomseed;
290 
291     static const bool plotpost;
292     static const bool readsumfile;
293     static const bool useoldrandomseed;
294     static const bool usesystemclock;
295     static const bool writecurvefiles;
296     static const bool writereclocfiles;
297     static const bool writetracefiles;
298     static const bool writenewicktreefiles;
299 #ifdef LAMARC_QA_TREE_DUMP
300     static const bool writeargfiles;
301     static const bool writemanyargs;
302 #endif // LAMARC_QA_TREE_DUMP
303     static const bool writesumfile;
304 
305     // default values for regions
306     static const double effpopsize;
307 
308     // default values for data models
309 
310     static const double       minLegalFrequency;
311 
312     static const ModelTypeVec1d allDataModels();
313     static const model_type   dataModelType;
314     static const bool         doNormalize;
315     static const double       autoCorrelation;
316     static const double       ttratio;
317     static const bool         calcFreqsFromData;
318     static const double       categoryProbability;
319     static const DoubleVec1d  categoryProbabilities();
320     static const double       categoryRate;
321     static const double       categoryRateMultiple;
322     static const DoubleVec1d  categoryRates();
323     static const DoubleVec1d  chainTemperatures();
324     static const double       baseFrequencyA;
325     static const double       baseFrequencyC;
326     static const double       baseFrequencyG;
327     static const double       baseFrequencyT;
328     static const double       gtrRateAC;
329     static const double       gtrRateAG;
330     static const double       gtrRateAT;
331     static const double       gtrRateCG;
332     static const double       gtrRateCT;
333     static const double       gtrRateGT;
334     static const double       relativeMuRate;
335     static const double       KS_alpha;
336     static const bool         optimize_KS_alpha;
337     static const long         numCategories;
338 
339     static const long         maxNumCategories;
340 
341     static const double       per_base_error_rate;
342 
343     // default stick-joint length
344     static const double       perThetaChange;
345 
346     // default maximum number of "semi-unique" concurrent branches in
347     // all trees
348     static const long         numSemiUniqueBranches;
349 #ifdef LAMARC_QA_SINGLE_DENOVOS
350     static const long         numDenovos;
351 #endif // LAMARC_QA_SINGLE_DENOVOS
352 };
353 
354 #endif // DEFAULTS_H
355 
356 //____________________________________________________________________________________
357