70d39e3c7e72579e4bb4178e634ee80053194d1d
[jabaws.git] / binaries / src / muscle / params.cpp
1 #include "muscle.h"\r
2 #include "objscore.h"\r
3 #include "profile.h"\r
4 #include "enumopts.h"\r
5 \r
6 const double DEFAULT_MAX_MB_FRACT = 0.8;\r
7 \r
8 SCORE g_scoreCenter = 0;\r
9 SCORE g_scoreGapExtend = 0;\r
10 SCORE g_scoreGapOpen2 = MINUS_INFINITY;\r
11 SCORE g_scoreGapExtend2 = MINUS_INFINITY;\r
12 SCORE g_scoreGapAmbig = 0;\r
13 SCORE g_scoreAmbigFactor = 0;\r
14 \r
15 extern SCOREMATRIX VTML_LA;\r
16 extern SCOREMATRIX PAM200;\r
17 extern SCOREMATRIX PAM200NoCenter;\r
18 extern SCOREMATRIX VTML_SP;\r
19 extern SCOREMATRIX VTML_SPNoCenter;\r
20 extern SCOREMATRIX NUC_SP;\r
21 \r
22 PTR_SCOREMATRIX g_ptrScoreMatrix;\r
23 \r
24 const char *g_pstrInFileName = "-";\r
25 const char *g_pstrOutFileName = "-";\r
26 const char *g_pstrFASTAOutFileName = 0;\r
27 const char *g_pstrMSFOutFileName = 0;\r
28 const char *g_pstrClwOutFileName = 0;\r
29 const char *g_pstrClwStrictOutFileName = 0;\r
30 const char *g_pstrHTMLOutFileName = 0;\r
31 const char *g_pstrPHYIOutFileName = 0;\r
32 const char *g_pstrPHYSOutFileName = 0;\r
33 const char *g_pstrDistMxFileName1 = 0;\r
34 const char *g_pstrDistMxFileName2 = 0;\r
35 \r
36 const char *g_pstrFileName1 = 0;\r
37 const char *g_pstrFileName2 = 0;\r
38 \r
39 const char *g_pstrSPFileName = 0;\r
40 const char *g_pstrMatrixFileName = 0;\r
41 \r
42 const char *g_pstrUseTreeFileName = 0;\r
43 bool g_bUseTreeNoWarn = false;\r
44 \r
45 const char *g_pstrComputeWeightsFileName;\r
46 const char *g_pstrScoreFileName;\r
47 \r
48 const char *g_pstrProf1FileName = 0;\r
49 const char *g_pstrProf2FileName = 0;\r
50 \r
51 unsigned g_uSmoothWindowLength = 7;\r
52 unsigned g_uAnchorSpacing = 32;\r
53 unsigned g_uMaxTreeRefineIters = 1;\r
54 \r
55 unsigned g_uRefineWindow = 200;\r
56 unsigned g_uWindowFrom = 0;\r
57 unsigned g_uWindowTo = 0;\r
58 unsigned g_uSaveWindow = uInsane;\r
59 unsigned g_uWindowOffset = 0;\r
60 \r
61 unsigned g_uMaxSubFamCount = 5;\r
62 \r
63 unsigned g_uHydrophobicRunLength = 5;\r
64 float g_dHydroFactor = (float) 1.2;\r
65 \r
66 unsigned g_uMinDiagLength = 24; // TODO alpha -- should depend on alphabet?\r
67 unsigned g_uMaxDiagBreak = 1;\r
68 unsigned g_uDiagMargin = 5;\r
69 \r
70 float g_dSUEFF = (float) 0.1;\r
71 \r
72 bool g_bPrecompiledCenter = true;\r
73 bool g_bNormalizeCounts = false;\r
74 bool g_bDiags1 = false;\r
75 bool g_bDiags2 = false;\r
76 bool g_bAnchors = true;\r
77 bool g_bQuiet = false;\r
78 bool g_bVerbose = false;\r
79 bool g_bRefine = false;\r
80 bool g_bRefineW = false;\r
81 bool g_bProfDB = false;\r
82 bool g_bLow = false;\r
83 bool g_bSW = false;\r
84 bool g_bClusterOnly = false;\r
85 bool g_bProfile = false;\r
86 bool g_bPPScore = false;\r
87 bool g_bBrenner = false;\r
88 bool g_bDimer = false;\r
89 bool g_bVersion = false;\r
90 bool g_bStable = false;\r
91 bool g_bFASTA = false;\r
92 bool g_bPAS = false;\r
93 bool g_bTomHydro = false;\r
94 bool g_bMakeTree = false;\r
95 \r
96 #if     DEBUG\r
97 bool g_bCatchExceptions = false;\r
98 #else\r
99 bool g_bCatchExceptions = true;\r
100 #endif\r
101 \r
102 bool g_bMSF = false;\r
103 bool g_bAln = false;\r
104 bool g_bClwStrict = false;\r
105 bool g_bHTML = false;\r
106 bool g_bPHYI = false;\r
107 bool g_bPHYS = false;\r
108 \r
109 unsigned g_uMaxIters = 8;\r
110 unsigned long g_ulMaxSecs = 0;\r
111 unsigned g_uMaxMB = 500;\r
112 \r
113 PPSCORE g_PPScore = PPSCORE_LE;\r
114 OBJSCORE g_ObjScore = OBJSCORE_SPM;\r
115 \r
116 SEQWEIGHT g_SeqWeight1 = SEQWEIGHT_ClustalW;\r
117 SEQWEIGHT g_SeqWeight2 = SEQWEIGHT_ClustalW;\r
118 \r
119 DISTANCE g_Distance1 = DISTANCE_Kmer6_6;\r
120 DISTANCE g_Distance2 = DISTANCE_PctIdKimura;\r
121 \r
122 CLUSTER g_Cluster1 = CLUSTER_UPGMB;\r
123 CLUSTER g_Cluster2 = CLUSTER_UPGMB;\r
124 \r
125 ROOT g_Root1 = ROOT_Pseudo;\r
126 ROOT g_Root2 = ROOT_Pseudo;\r
127 \r
128 bool g_bDiags;\r
129 \r
130 SEQTYPE g_SeqType = SEQTYPE_Auto;\r
131 \r
132 TERMGAPS g_TermGaps = TERMGAPS_Half;\r
133 \r
134 //------------------------------------------------------\r
135 // These parameters depending on the chosen prof-prof\r
136 // score (g_PPScore), initialized to "Undefined".\r
137 float g_dSmoothScoreCeil = fInsane;\r
138 float g_dMinBestColScore = fInsane;\r
139 float g_dMinSmoothScore = fInsane;\r
140 SCORE g_scoreGapOpen = fInsane;\r
141 //------------------------------------------------------\r
142 \r
143 static unsigned atou(const char *s)\r
144         {\r
145         return (unsigned) atoi(s);\r
146         }\r
147 \r
148 const char *MaxSecsToStr()\r
149         {\r
150         if (0 == g_ulMaxSecs)\r
151                 return "(No limit)";\r
152         return SecsToStr(g_ulMaxSecs);\r
153         }\r
154 \r
155 void ListParams()\r
156         {\r
157         Log("\n");\r
158         Log("%s\n", MUSCLE_LONG_VERSION);\r
159         Log("http://www.drive5.com/muscle\n");\r
160         Log("\n");\r
161         Log("Profile-profile score    %s\n", PPSCOREToStr(g_PPScore));\r
162         Log("Max iterations           %u\n", g_uMaxIters);\r
163         Log("Max trees                %u\n", g_uMaxTreeRefineIters);\r
164         Log("Max time                 %s\n", MaxSecsToStr());\r
165         Log("Max MB                   %u\n", g_uMaxMB);\r
166         Log("Gap open                 %g\n", g_scoreGapOpen);\r
167         Log("Gap extend (dimer)       %g\n", g_scoreGapExtend);\r
168         Log("Gap ambig factor         %g\n", g_scoreAmbigFactor);\r
169         Log("Gap ambig penalty        %g\n", g_scoreGapAmbig);\r
170         Log("Center (LE)              %g\n", g_scoreCenter);\r
171         Log("Term gaps                %s\n", TERMGAPSToStr(g_TermGaps));\r
172 \r
173         Log("Smooth window length     %u\n", g_uSmoothWindowLength);\r
174         Log("Refine window length     %u\n", g_uRefineWindow);\r
175         Log("Min anchor spacing       %u\n", g_uAnchorSpacing);\r
176         Log("Min diag length (lambda) %u\n", g_uMinDiagLength);\r
177         Log("Diag margin (mu)         %u\n", g_uDiagMargin);\r
178         Log("Min diag break           %u\n", g_uMaxDiagBreak);\r
179         Log("Hydrophobic window       %u\n", g_uHydrophobicRunLength);\r
180 \r
181         Log("Hydrophobic gap factor   %g\n", g_dHydroFactor);\r
182         Log("Smooth score ceiling     %g\n", g_dSmoothScoreCeil);\r
183         Log("Min best col score       %g\n", g_dMinBestColScore);\r
184         Log("Min anchor score         %g\n", g_dMinSmoothScore);\r
185         Log("SUEFF                    %g\n", g_dSUEFF);\r
186 \r
187         Log("Brenner root MSA         %s\n", BoolToStr(g_bBrenner));\r
188         Log("Normalize counts         %s\n", BoolToStr(g_bNormalizeCounts));\r
189         Log("Diagonals (1)            %s\n", BoolToStr(g_bDiags1));\r
190         Log("Diagonals (2)            %s\n", BoolToStr(g_bDiags2));\r
191         Log("Anchors                  %s\n", BoolToStr(g_bAnchors));\r
192         Log("MSF output format        %s\n", BoolToStr(g_bMSF));\r
193         Log("Phylip interleaved       %s\n", BoolToStr(g_bPHYI));\r
194         Log("Phylip sequential        %s\n", BoolToStr(g_bPHYS));\r
195         Log("ClustalW output format   %s\n", BoolToStr(g_bAln));\r
196         Log("Catch exceptions         %s\n", BoolToStr(g_bCatchExceptions));\r
197         Log("Quiet                    %s\n", BoolToStr(g_bQuiet));\r
198         Log("Refine                   %s\n", BoolToStr(g_bRefine));\r
199         Log("ProdfDB                  %s\n", BoolToStr(g_bProfDB));\r
200         Log("Low complexity profiles  %s\n", BoolToStr(g_bLow));\r
201 \r
202         Log("Objective score          %s\n", OBJSCOREToStr(g_ObjScore));\r
203 \r
204         Log("Distance method (1)      %s\n", DISTANCEToStr(g_Distance1));\r
205         Log("Clustering method (1)    %s\n", CLUSTERToStr(g_Cluster1));\r
206         Log("Root method (1)          %s\n", ROOTToStr(g_Root1));\r
207         Log("Sequence weighting (1)   %s\n", SEQWEIGHTToStr(g_SeqWeight1));\r
208 \r
209         Log("Distance method (2)      %s\n", DISTANCEToStr(g_Distance2));\r
210         Log("Clustering method (2)    %s\n", CLUSTERToStr(g_Cluster2));\r
211         Log("Root method (2)          %s\n", ROOTToStr(g_Root2));\r
212         Log("Sequence weighting (2)   %s\n", SEQWEIGHTToStr(g_SeqWeight2));\r
213 \r
214         Log("\n");\r
215         }\r
216 \r
217 static void SetDefaultsLE()\r
218         {\r
219         g_ptrScoreMatrix = &VTML_LA;\r
220 \r
221         //g_scoreGapOpen = (SCORE) -3.00;\r
222         //g_scoreCenter = (SCORE) -0.55;\r
223         g_scoreGapOpen = (SCORE) -2.9;\r
224         g_scoreCenter = (SCORE) -0.52;\r
225 \r
226         g_bNormalizeCounts = true;\r
227 \r
228         //g_dSmoothScoreCeil = 5.0;\r
229         //g_dMinBestColScore = 4.0;\r
230         //g_dMinSmoothScore = 2.0;\r
231         g_dSmoothScoreCeil = 3.0;\r
232         g_dMinBestColScore = 2.0;\r
233         g_dMinSmoothScore = 1.0;\r
234 \r
235         g_Distance1 = DISTANCE_Kmer6_6;\r
236         g_Distance2 = DISTANCE_PctIdKimura;\r
237         }\r
238 \r
239 static void SetDefaultsSP()\r
240         {\r
241         g_ptrScoreMatrix = &PAM200;\r
242 \r
243         g_scoreGapOpen = -1439;\r
244         g_scoreCenter = 0.0;    // center pre-added into score mx\r
245 \r
246         g_bNormalizeCounts = false;\r
247 \r
248         g_dSmoothScoreCeil = 200.0;\r
249         g_dMinBestColScore = 300.0;\r
250         g_dMinSmoothScore = 125.0;\r
251 \r
252         g_Distance1 = DISTANCE_Kmer6_6;\r
253         g_Distance2 = DISTANCE_PctIdKimura;\r
254         }\r
255 \r
256 static void SetDefaultsSV()\r
257         {\r
258         g_ptrScoreMatrix = &VTML_SP;\r
259 \r
260         g_scoreGapOpen = -300;\r
261         g_scoreCenter = 0.0;    // center pre-added into score mx\r
262 \r
263         g_bNormalizeCounts = false;\r
264 \r
265         g_dSmoothScoreCeil = 90.0;\r
266         g_dMinBestColScore = 130.0;\r
267         g_dMinSmoothScore = 40.0;\r
268 \r
269         g_Distance1 = DISTANCE_Kmer6_6;\r
270         g_Distance2 = DISTANCE_PctIdKimura;\r
271         }\r
272 \r
273 //static void SetDefaultsSPN()\r
274 //      {\r
275 //      g_ptrScoreMatrix = &NUC_SP;\r
276 //\r
277 //      g_scoreGapOpen = -400;\r
278 //      g_scoreCenter = 0.0;    // center pre-added into score mx\r
279 //\r
280 //      g_bNormalizeCounts = false;\r
281 //\r
282 //      g_dSmoothScoreCeil = 999.0;             // disable\r
283 //      g_dMinBestColScore = 90;\r
284 //      g_dMinSmoothScore = 90;\r
285 //\r
286 //      g_Distance1 = DISTANCE_Kmer4_6;\r
287 //      g_Distance2 = DISTANCE_PctIdKimura;\r
288 //      }\r
289 \r
290 static void SetDefaultsSPN_DNA()\r
291         {\r
292         g_ptrScoreMatrix = &NUC_SP;\r
293 \r
294         g_scoreGapOpen = -400;\r
295         g_scoreCenter = 0.0;    // center pre-added into score mx\r
296         g_scoreGapExtend = 0.0;\r
297 \r
298         g_bNormalizeCounts = false;\r
299 \r
300         g_dSmoothScoreCeil = 999.0;             // disable\r
301         g_dMinBestColScore = 90;\r
302         g_dMinSmoothScore = 90;\r
303 \r
304         g_Distance1 = DISTANCE_Kmer4_6;\r
305         g_Distance2 = DISTANCE_PctIdKimura;\r
306         }\r
307 \r
308 static void SetDefaultsSPN_RNA()\r
309         {\r
310         g_ptrScoreMatrix = &NUC_SP;\r
311 \r
312         g_scoreGapOpen = -420;\r
313         g_scoreCenter = -300;   // total center = NUC_EXTEND - 300 \r
314         g_scoreGapExtend = 0.0;\r
315 \r
316         g_bNormalizeCounts = false;\r
317 \r
318         g_dSmoothScoreCeil = 999.0;             // disable\r
319         g_dMinBestColScore = 90;\r
320         g_dMinSmoothScore = 90;\r
321 \r
322         g_Distance1 = DISTANCE_Kmer4_6;\r
323         g_Distance2 = DISTANCE_PctIdKimura;\r
324         }\r
325 \r
326 static void FlagParam(const char *OptName, bool *ptrParam, bool bValueIfFlagSet)\r
327         {\r
328         bool bIsSet = FlagOpt(OptName);\r
329         if (bIsSet)\r
330                 *ptrParam = bValueIfFlagSet;\r
331         }\r
332 \r
333 static void StrParam(const char *OptName, const char **ptrptrParam)\r
334         {\r
335         const char *opt = ValueOpt(OptName);\r
336         if (0 != opt)\r
337                 *ptrptrParam = opt;\r
338         }\r
339 \r
340 static void FloatParam(const char *OptName, float *ptrParam)\r
341         {\r
342         const char *opt = ValueOpt(OptName);\r
343         if (0 != opt)\r
344                 *ptrParam = (float) atof(opt);\r
345         }\r
346 \r
347 static void UintParam(const char *OptName, unsigned *ptrParam)\r
348         {\r
349         const char *opt = ValueOpt(OptName);\r
350         if (0 != opt)\r
351                 *ptrParam = atou(opt);\r
352         }\r
353 \r
354 static void EnumParam(const char *OptName, EnumOpt *Opts, int *Param)\r
355         {\r
356         const char *Value = ValueOpt(OptName);\r
357         if (0 == Value)\r
358                 return;\r
359 \r
360         for (;;)\r
361                 {\r
362                 if (0 == Opts->pstrOpt)\r
363                         Quit("Invalid parameter -%s %s", OptName, Value);\r
364                 if (0 == stricmp(Value, Opts->pstrOpt))\r
365                         {\r
366                         *Param = Opts->iValue;\r
367                         return;\r
368                         }\r
369                 ++Opts;\r
370                 }\r
371         }\r
372 \r
373 static void SetPPDefaultParams()\r
374         {\r
375         switch (g_PPScore)\r
376                 {\r
377         case PPSCORE_SP:\r
378                 SetDefaultsSP();\r
379                 break;\r
380 \r
381         case PPSCORE_LE:\r
382                 SetDefaultsLE();\r
383                 break;\r
384 \r
385         case PPSCORE_SV:\r
386                 SetDefaultsSV();\r
387                 break;\r
388 \r
389         case PPSCORE_SPN:\r
390                 switch (g_Alpha)\r
391                         {\r
392                 case ALPHA_DNA:\r
393                         SetDefaultsSPN_DNA();\r
394                         break;\r
395                 case ALPHA_RNA:\r
396                         SetDefaultsSPN_RNA();\r
397                         break;\r
398                 default:\r
399                         Quit("Invalid alpha %d", g_Alpha);\r
400                         }\r
401                 break;\r
402 \r
403         default:\r
404                 Quit("Invalid g_PPScore");\r
405                 }\r
406         }\r
407 \r
408 static void SetPPCommandLineParams()\r
409         {\r
410         FloatParam("GapOpen", &g_scoreGapOpen);\r
411         FloatParam("GapOpen2", &g_scoreGapOpen2);\r
412         FloatParam("GapExtend", &g_scoreGapExtend);\r
413         FloatParam("GapExtend2", &g_scoreGapExtend2);\r
414         FloatParam("GapAmbig", &g_scoreAmbigFactor);\r
415         FloatParam("Center", &g_scoreCenter);\r
416         FloatParam("SmoothScoreCeil", &g_dSmoothScoreCeil);\r
417         FloatParam("MinBestColScore", &g_dMinBestColScore);\r
418         FloatParam("MinSmoothScore", &g_dMinSmoothScore);\r
419 \r
420         EnumParam("Distance", DISTANCE_Opts, (int *) &g_Distance1);\r
421         EnumParam("Distance", DISTANCE_Opts, (int *) &g_Distance2);\r
422 \r
423         EnumParam("Distance1", DISTANCE_Opts, (int *) &g_Distance1);\r
424         EnumParam("Distance2", DISTANCE_Opts, (int *) &g_Distance2);\r
425         }\r
426 \r
427 void SetPPScore(bool bRespectFlagOpts)\r
428         {\r
429         if (bRespectFlagOpts)\r
430                 {\r
431                 if (FlagOpt("SP"))\r
432                         g_PPScore = PPSCORE_SP;\r
433                 else if (FlagOpt("LE"))\r
434                         g_PPScore = PPSCORE_LE;\r
435                 else if (FlagOpt("SV"))\r
436                         g_PPScore = PPSCORE_SV;\r
437                 else if (FlagOpt("SPN"))\r
438                         g_PPScore = PPSCORE_SPN;\r
439                 }\r
440 \r
441         switch (g_PPScore)\r
442                 {\r
443         case PPSCORE_LE:\r
444         case PPSCORE_SP:\r
445         case PPSCORE_SV:\r
446                 if (ALPHA_RNA == g_Alpha || ALPHA_DNA == g_Alpha)\r
447                         g_PPScore = PPSCORE_SPN;\r
448                 break;\r
449         case PPSCORE_SPN:\r
450                 if (ALPHA_Amino == g_Alpha)\r
451                         g_PPScore = PPSCORE_LE;\r
452                 break;\r
453                 }\r
454 \r
455         SetPPDefaultParams();\r
456         SetPPCommandLineParams();\r
457 \r
458         if (g_bVerbose)\r
459                 ListParams();\r
460         }\r
461 \r
462 void SetPPScore(PPSCORE p)\r
463         {\r
464         g_PPScore = p;\r
465         SetPPScore(true);\r
466         }\r
467 \r
468 static void SetMaxSecs()\r
469         {\r
470         float fMaxHours = 0.0;\r
471         FloatParam("MaxHours", &fMaxHours);\r
472         if (0.0 == fMaxHours)\r
473                 return;\r
474         g_ulMaxSecs = (unsigned long) (fMaxHours*60*60);\r
475         }\r
476 \r
477 static bool CanDoLowComplexity()\r
478         {\r
479         if (g_SeqWeight1 != SEQWEIGHT_ClustalW)\r
480                 return false;\r
481         if (1 == g_uMaxIters)\r
482                 return true;\r
483         return g_SeqWeight2 == SEQWEIGHT_ClustalW;\r
484         }\r
485 \r
486 bool MissingCommand()\r
487         {\r
488         if (strcmp(g_pstrInFileName, "-"))\r
489                 return false;\r
490         if (0 != g_pstrFileName1)\r
491                 return false;\r
492         if (0 != g_pstrSPFileName)\r
493                 return false;\r
494         return true;\r
495         }\r
496 \r
497 void SetParams()\r
498         {\r
499         SetMaxSecs();\r
500 \r
501         StrParam("in", &g_pstrInFileName);\r
502         StrParam("out", &g_pstrOutFileName);\r
503 \r
504         StrParam("FASTAOut", &g_pstrFASTAOutFileName);\r
505         StrParam("ClwOut", &g_pstrClwOutFileName);\r
506         StrParam("ClwStrictOut", &g_pstrClwStrictOutFileName);\r
507         StrParam("HTMLOut", &g_pstrHTMLOutFileName);\r
508         StrParam("PHYIOut", &g_pstrPHYIOutFileName);\r
509         StrParam("PHYSOut", &g_pstrPHYSOutFileName);\r
510         StrParam("MSFOut", &g_pstrMSFOutFileName);\r
511 \r
512         StrParam("in1", &g_pstrFileName1);\r
513         StrParam("in2", &g_pstrFileName2);\r
514 \r
515         StrParam("Matrix", &g_pstrMatrixFileName);\r
516         StrParam("SPScore", &g_pstrSPFileName);\r
517 \r
518         StrParam("UseTree_NoWarn", &g_pstrUseTreeFileName);\r
519         if (0 != g_pstrUseTreeFileName)\r
520                 g_bUseTreeNoWarn = true;\r
521 \r
522         StrParam("UseTree", &g_pstrUseTreeFileName);\r
523         StrParam("ComputeWeights", &g_pstrComputeWeightsFileName);\r
524         StrParam("ScoreFile", &g_pstrScoreFileName);\r
525         StrParam("DistMx1", &g_pstrDistMxFileName1);\r
526         StrParam("DistMx2", &g_pstrDistMxFileName2);\r
527 \r
528         FlagParam("Core", &g_bCatchExceptions, false);\r
529         FlagParam("NoCore", &g_bCatchExceptions, true);\r
530 \r
531         FlagParam("Diags1", &g_bDiags1, true);\r
532         FlagParam("Diags2", &g_bDiags2, true);\r
533 \r
534         bool Diags = false;\r
535         FlagParam("Diags", &Diags, true);\r
536         if (Diags)\r
537                 {\r
538                 g_bDiags1 = true;\r
539                 g_bDiags2 = true;\r
540                 }\r
541 \r
542         FlagParam("Anchors", &g_bAnchors, true);\r
543         FlagParam("NoAnchors", &g_bAnchors, false);\r
544 \r
545         FlagParam("Quiet", &g_bQuiet, true);\r
546         FlagParam("Verbose", &g_bVerbose, true);\r
547         FlagParam("Version", &g_bVersion, true);\r
548         FlagParam("Stable", &g_bStable, true);\r
549         FlagParam("Group", &g_bStable, false);\r
550         FlagParam("Refine", &g_bRefine, true);\r
551         FlagParam("RefineW", &g_bRefineW, true);\r
552         FlagParam("ProfDB", &g_bProfDB, true);\r
553         FlagParam("SW", &g_bSW, true);\r
554         FlagParam("ClusterOnly", &g_bClusterOnly, true);\r
555         FlagParam("Profile", &g_bProfile, true);\r
556         FlagParam("PPScore", &g_bPPScore, true);\r
557         FlagParam("Brenner", &g_bBrenner, true);\r
558         FlagParam("Dimer", &g_bDimer, true);\r
559 \r
560         FlagParam("MSF", &g_bMSF, true);\r
561         FlagParam("PHYI", &g_bPHYI, true);\r
562         FlagParam("PHYS", &g_bPHYS, true);\r
563         FlagParam("clw", &g_bAln, true);\r
564         FlagParam("HTML", &g_bHTML, true);\r
565         FlagParam("FASTA", &g_bFASTA, true);\r
566         FlagParam("PAS", &g_bPAS, true);\r
567         FlagParam("MakeTree", &g_bMakeTree, true);\r
568 \r
569         bool b = false;\r
570         FlagParam("clwstrict", &b, true);\r
571         if (b)\r
572                 {\r
573                 g_bAln = true;\r
574                 g_bClwStrict = true;\r
575                 }\r
576 \r
577         UintParam("MaxIters", &g_uMaxIters);\r
578         UintParam("MaxTrees", &g_uMaxTreeRefineIters);\r
579         UintParam("SmoothWindow", &g_uSmoothWindowLength);\r
580         UintParam("RefineWindow", &g_uRefineWindow);\r
581         UintParam("FromWindow", &g_uWindowFrom);\r
582         UintParam("ToWindow", &g_uWindowTo);\r
583         UintParam("SaveWindow", &g_uSaveWindow);\r
584         UintParam("WindowOffset", &g_uWindowOffset);\r
585         UintParam("AnchorSpacing", &g_uAnchorSpacing);\r
586         UintParam("DiagLength", &g_uMinDiagLength);\r
587         UintParam("DiagMargin", &g_uDiagMargin);\r
588         UintParam("DiagBreak", &g_uMaxDiagBreak);\r
589         UintParam("MaxSubFam", &g_uMaxSubFamCount);\r
590 \r
591         UintParam("Hydro", &g_uHydrophobicRunLength);\r
592         FlagParam("TomHydro", &g_bTomHydro, true);\r
593         if (g_bTomHydro)\r
594                 g_uHydrophobicRunLength = 0;\r
595 \r
596         FloatParam("SUEFF", &g_dSUEFF);\r
597         FloatParam("HydroFactor", &g_dHydroFactor);\r
598 \r
599         EnumParam("ObjScore", OBJSCORE_Opts, (int *) &g_ObjScore);\r
600         EnumParam("TermGaps", TERMGAPS_Opts, (int *) &g_TermGaps);\r
601 \r
602         EnumParam("Weight", SEQWEIGHT_Opts, (int *) &g_SeqWeight1);\r
603         EnumParam("Weight", SEQWEIGHT_Opts, (int *) &g_SeqWeight2);\r
604 \r
605         EnumParam("Weight1", SEQWEIGHT_Opts, (int *) &g_SeqWeight1);\r
606         EnumParam("Weight2", SEQWEIGHT_Opts, (int *) &g_SeqWeight2);\r
607 \r
608         EnumParam("Cluster", CLUSTER_Opts, (int *) &g_Cluster1);\r
609         EnumParam("Cluster", CLUSTER_Opts, (int *) &g_Cluster2);\r
610 \r
611         EnumParam("Cluster1", CLUSTER_Opts, (int *) &g_Cluster1);\r
612         EnumParam("Cluster2", CLUSTER_Opts, (int *) &g_Cluster2);\r
613 \r
614         EnumParam("Root1", ROOT_Opts, (int *) &g_Root1);\r
615         EnumParam("Root2", ROOT_Opts, (int *) &g_Root2);\r
616 \r
617         EnumParam("SeqType", SEQTYPE_Opts, (int *) &g_SeqType);\r
618 \r
619         g_scoreGapAmbig = g_scoreGapOpen*g_scoreAmbigFactor;\r
620         g_bLow = CanDoLowComplexity();\r
621 \r
622         if (g_bDimer)\r
623                 g_bPrecompiledCenter = false;\r
624 \r
625         UintParam("MaxMB", &g_uMaxMB);\r
626         if (0 == ValueOpt("MaxMB"))\r
627                 g_uMaxMB = (unsigned) (GetRAMSizeMB()*DEFAULT_MAX_MB_FRACT);\r
628         }\r