2 #include "objscore.h"
\r
4 #include "enumopts.h"
\r
6 const double DEFAULT_MAX_MB_FRACT = 0.8;
\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
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
22 PTR_SCOREMATRIX g_ptrScoreMatrix;
\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
36 const char *g_pstrFileName1 = 0;
\r
37 const char *g_pstrFileName2 = 0;
\r
39 const char *g_pstrSPFileName = 0;
\r
40 const char *g_pstrMatrixFileName = 0;
\r
42 const char *g_pstrUseTreeFileName = 0;
\r
43 bool g_bUseTreeNoWarn = false;
\r
45 const char *g_pstrComputeWeightsFileName;
\r
46 const char *g_pstrScoreFileName;
\r
48 const char *g_pstrProf1FileName = 0;
\r
49 const char *g_pstrProf2FileName = 0;
\r
51 unsigned g_uSmoothWindowLength = 7;
\r
52 unsigned g_uAnchorSpacing = 32;
\r
53 unsigned g_uMaxTreeRefineIters = 1;
\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
61 unsigned g_uMaxSubFamCount = 5;
\r
63 unsigned g_uHydrophobicRunLength = 5;
\r
64 float g_dHydroFactor = (float) 1.2;
\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
70 float g_dSUEFF = (float) 0.1;
\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
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
97 bool g_bCatchExceptions = false;
\r
99 bool g_bCatchExceptions = true;
\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
109 unsigned g_uMaxIters = 8;
\r
110 unsigned long g_ulMaxSecs = 0;
\r
111 unsigned g_uMaxMB = 500;
\r
113 PPSCORE g_PPScore = PPSCORE_LE;
\r
114 OBJSCORE g_ObjScore = OBJSCORE_SPM;
\r
116 SEQWEIGHT g_SeqWeight1 = SEQWEIGHT_ClustalW;
\r
117 SEQWEIGHT g_SeqWeight2 = SEQWEIGHT_ClustalW;
\r
119 DISTANCE g_Distance1 = DISTANCE_Kmer6_6;
\r
120 DISTANCE g_Distance2 = DISTANCE_PctIdKimura;
\r
122 CLUSTER g_Cluster1 = CLUSTER_UPGMB;
\r
123 CLUSTER g_Cluster2 = CLUSTER_UPGMB;
\r
125 ROOT g_Root1 = ROOT_Pseudo;
\r
126 ROOT g_Root2 = ROOT_Pseudo;
\r
130 SEQTYPE g_SeqType = SEQTYPE_Auto;
\r
132 TERMGAPS g_TermGaps = TERMGAPS_Half;
\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
143 static unsigned atou(const char *s)
\r
145 return (unsigned) atoi(s);
\r
148 const char *MaxSecsToStr()
\r
150 if (0 == g_ulMaxSecs)
\r
151 return "(No limit)";
\r
152 return SecsToStr(g_ulMaxSecs);
\r
158 Log("%s\n", MUSCLE_LONG_VERSION);
\r
159 Log("http://www.drive5.com/muscle\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
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
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
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
202 Log("Objective score %s\n", OBJSCOREToStr(g_ObjScore));
\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
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
217 static void SetDefaultsLE()
\r
219 g_ptrScoreMatrix = &VTML_LA;
\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
226 g_bNormalizeCounts = true;
\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
235 g_Distance1 = DISTANCE_Kmer6_6;
\r
236 g_Distance2 = DISTANCE_PctIdKimura;
\r
239 static void SetDefaultsSP()
\r
241 g_ptrScoreMatrix = &PAM200;
\r
243 g_scoreGapOpen = -1439;
\r
244 g_scoreCenter = 0.0; // center pre-added into score mx
\r
246 g_bNormalizeCounts = false;
\r
248 g_dSmoothScoreCeil = 200.0;
\r
249 g_dMinBestColScore = 300.0;
\r
250 g_dMinSmoothScore = 125.0;
\r
252 g_Distance1 = DISTANCE_Kmer6_6;
\r
253 g_Distance2 = DISTANCE_PctIdKimura;
\r
256 static void SetDefaultsSV()
\r
258 g_ptrScoreMatrix = &VTML_SP;
\r
260 g_scoreGapOpen = -300;
\r
261 g_scoreCenter = 0.0; // center pre-added into score mx
\r
263 g_bNormalizeCounts = false;
\r
265 g_dSmoothScoreCeil = 90.0;
\r
266 g_dMinBestColScore = 130.0;
\r
267 g_dMinSmoothScore = 40.0;
\r
269 g_Distance1 = DISTANCE_Kmer6_6;
\r
270 g_Distance2 = DISTANCE_PctIdKimura;
\r
273 //static void SetDefaultsSPN()
\r
275 // g_ptrScoreMatrix = &NUC_SP;
\r
277 // g_scoreGapOpen = -400;
\r
278 // g_scoreCenter = 0.0; // center pre-added into score mx
\r
280 // g_bNormalizeCounts = false;
\r
282 // g_dSmoothScoreCeil = 999.0; // disable
\r
283 // g_dMinBestColScore = 90;
\r
284 // g_dMinSmoothScore = 90;
\r
286 // g_Distance1 = DISTANCE_Kmer4_6;
\r
287 // g_Distance2 = DISTANCE_PctIdKimura;
\r
290 static void SetDefaultsSPN_DNA()
\r
292 g_ptrScoreMatrix = &NUC_SP;
\r
294 g_scoreGapOpen = -400;
\r
295 g_scoreCenter = 0.0; // center pre-added into score mx
\r
296 g_scoreGapExtend = 0.0;
\r
298 g_bNormalizeCounts = false;
\r
300 g_dSmoothScoreCeil = 999.0; // disable
\r
301 g_dMinBestColScore = 90;
\r
302 g_dMinSmoothScore = 90;
\r
304 g_Distance1 = DISTANCE_Kmer4_6;
\r
305 g_Distance2 = DISTANCE_PctIdKimura;
\r
308 static void SetDefaultsSPN_RNA()
\r
310 g_ptrScoreMatrix = &NUC_SP;
\r
312 g_scoreGapOpen = -420;
\r
313 g_scoreCenter = -300; // total center = NUC_EXTEND - 300
\r
314 g_scoreGapExtend = 0.0;
\r
316 g_bNormalizeCounts = false;
\r
318 g_dSmoothScoreCeil = 999.0; // disable
\r
319 g_dMinBestColScore = 90;
\r
320 g_dMinSmoothScore = 90;
\r
322 g_Distance1 = DISTANCE_Kmer4_6;
\r
323 g_Distance2 = DISTANCE_PctIdKimura;
\r
326 static void FlagParam(const char *OptName, bool *ptrParam, bool bValueIfFlagSet)
\r
328 bool bIsSet = FlagOpt(OptName);
\r
330 *ptrParam = bValueIfFlagSet;
\r
333 static void StrParam(const char *OptName, const char **ptrptrParam)
\r
335 const char *opt = ValueOpt(OptName);
\r
337 *ptrptrParam = opt;
\r
340 static void FloatParam(const char *OptName, float *ptrParam)
\r
342 const char *opt = ValueOpt(OptName);
\r
344 *ptrParam = (float) atof(opt);
\r
347 static void UintParam(const char *OptName, unsigned *ptrParam)
\r
349 const char *opt = ValueOpt(OptName);
\r
351 *ptrParam = atou(opt);
\r
354 static void EnumParam(const char *OptName, EnumOpt *Opts, int *Param)
\r
356 const char *Value = ValueOpt(OptName);
\r
362 if (0 == Opts->pstrOpt)
\r
363 Quit("Invalid parameter -%s %s", OptName, Value);
\r
364 if (0 == stricmp(Value, Opts->pstrOpt))
\r
366 *Param = Opts->iValue;
\r
373 static void SetPPDefaultParams()
\r
393 SetDefaultsSPN_DNA();
\r
396 SetDefaultsSPN_RNA();
\r
399 Quit("Invalid alpha %d", g_Alpha);
\r
404 Quit("Invalid g_PPScore");
\r
408 static void SetPPCommandLineParams()
\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
420 EnumParam("Distance", DISTANCE_Opts, (int *) &g_Distance1);
\r
421 EnumParam("Distance", DISTANCE_Opts, (int *) &g_Distance2);
\r
423 EnumParam("Distance1", DISTANCE_Opts, (int *) &g_Distance1);
\r
424 EnumParam("Distance2", DISTANCE_Opts, (int *) &g_Distance2);
\r
427 void SetPPScore(bool bRespectFlagOpts)
\r
429 if (bRespectFlagOpts)
\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
446 if (ALPHA_RNA == g_Alpha || ALPHA_DNA == g_Alpha)
\r
447 g_PPScore = PPSCORE_SPN;
\r
450 if (ALPHA_Amino == g_Alpha)
\r
451 g_PPScore = PPSCORE_LE;
\r
455 SetPPDefaultParams();
\r
456 SetPPCommandLineParams();
\r
462 void SetPPScore(PPSCORE p)
\r
468 static void SetMaxSecs()
\r
470 float fMaxHours = 0.0;
\r
471 FloatParam("MaxHours", &fMaxHours);
\r
472 if (0.0 == fMaxHours)
\r
474 g_ulMaxSecs = (unsigned long) (fMaxHours*60*60);
\r
477 static bool CanDoLowComplexity()
\r
479 if (g_SeqWeight1 != SEQWEIGHT_ClustalW)
\r
481 if (1 == g_uMaxIters)
\r
483 return g_SeqWeight2 == SEQWEIGHT_ClustalW;
\r
486 bool MissingCommand()
\r
488 if (strcmp(g_pstrInFileName, "-"))
\r
490 if (0 != g_pstrFileName1)
\r
492 if (0 != g_pstrSPFileName)
\r
501 StrParam("in", &g_pstrInFileName);
\r
502 StrParam("out", &g_pstrOutFileName);
\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
512 StrParam("in1", &g_pstrFileName1);
\r
513 StrParam("in2", &g_pstrFileName2);
\r
515 StrParam("Matrix", &g_pstrMatrixFileName);
\r
516 StrParam("SPScore", &g_pstrSPFileName);
\r
518 StrParam("UseTree_NoWarn", &g_pstrUseTreeFileName);
\r
519 if (0 != g_pstrUseTreeFileName)
\r
520 g_bUseTreeNoWarn = true;
\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
528 FlagParam("Core", &g_bCatchExceptions, false);
\r
529 FlagParam("NoCore", &g_bCatchExceptions, true);
\r
531 FlagParam("Diags1", &g_bDiags1, true);
\r
532 FlagParam("Diags2", &g_bDiags2, true);
\r
534 bool Diags = false;
\r
535 FlagParam("Diags", &Diags, true);
\r
542 FlagParam("Anchors", &g_bAnchors, true);
\r
543 FlagParam("NoAnchors", &g_bAnchors, false);
\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
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
570 FlagParam("clwstrict", &b, true);
\r
574 g_bClwStrict = true;
\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
591 UintParam("Hydro", &g_uHydrophobicRunLength);
\r
592 FlagParam("TomHydro", &g_bTomHydro, true);
\r
594 g_uHydrophobicRunLength = 0;
\r
596 FloatParam("SUEFF", &g_dSUEFF);
\r
597 FloatParam("HydroFactor", &g_dHydroFactor);
\r
599 EnumParam("ObjScore", OBJSCORE_Opts, (int *) &g_ObjScore);
\r
600 EnumParam("TermGaps", TERMGAPS_Opts, (int *) &g_TermGaps);
\r
602 EnumParam("Weight", SEQWEIGHT_Opts, (int *) &g_SeqWeight1);
\r
603 EnumParam("Weight", SEQWEIGHT_Opts, (int *) &g_SeqWeight2);
\r
605 EnumParam("Weight1", SEQWEIGHT_Opts, (int *) &g_SeqWeight1);
\r
606 EnumParam("Weight2", SEQWEIGHT_Opts, (int *) &g_SeqWeight2);
\r
608 EnumParam("Cluster", CLUSTER_Opts, (int *) &g_Cluster1);
\r
609 EnumParam("Cluster", CLUSTER_Opts, (int *) &g_Cluster2);
\r
611 EnumParam("Cluster1", CLUSTER_Opts, (int *) &g_Cluster1);
\r
612 EnumParam("Cluster2", CLUSTER_Opts, (int *) &g_Cluster2);
\r
614 EnumParam("Root1", ROOT_Opts, (int *) &g_Root1);
\r
615 EnumParam("Root2", ROOT_Opts, (int *) &g_Root2);
\r
617 EnumParam("SeqType", SEQTYPE_Opts, (int *) &g_SeqType);
\r
619 g_scoreGapAmbig = g_scoreGapOpen*g_scoreAmbigFactor;
\r
620 g_bLow = CanDoLowComplexity();
\r
623 g_bPrecompiledCenter = false;
\r
625 UintParam("MaxMB", &g_uMaxMB);
\r
626 if (0 == ValueOpt("MaxMB"))
\r
627 g_uMaxMB = (unsigned) (GetRAMSizeMB()*DEFAULT_MAX_MB_FRACT);
\r