📄 params.cpp
字号:
g_bNormalizeCounts = false;
g_dSmoothScoreCeil = 999.0; // disable
g_dMinBestColScore = 90;
g_dMinSmoothScore = 90;
g_Distance1 = DISTANCE_Kmer4_6;
g_Distance2 = DISTANCE_PctIdKimura;
}
static void FlagParam(const char *OptName, bool *ptrParam, bool bValueIfFlagSet)
{
bool bIsSet = FlagOpt(OptName);
if (bIsSet)
*ptrParam = bValueIfFlagSet;
}
static void StrParam(const char *OptName, const char **ptrptrParam)
{
const char *opt = ValueOpt(OptName);
if (0 != opt)
*ptrptrParam = opt;
}
static void FloatParam(const char *OptName, float *ptrParam)
{
const char *opt = ValueOpt(OptName);
if (0 != opt)
*ptrParam = (float) atof(opt);
}
static void UintParam(const char *OptName, unsigned *ptrParam)
{
const char *opt = ValueOpt(OptName);
if (0 != opt)
*ptrParam = atou(opt);
}
static void EnumParam(const char *OptName, EnumOpt *Opts, int *Param)
{
const char *Value = ValueOpt(OptName);
if (0 == Value)
return;
for (;;)
{
if (0 == Opts->pstrOpt)
Quit("Invalid parameter -%s %s", OptName, Value);
if (0 == stricmp(Value, Opts->pstrOpt))
{
*Param = Opts->iValue;
return;
}
++Opts;
}
}
static void SetPPDefaultParams()
{
switch (g_PPScore)
{
case PPSCORE_SP:
SetDefaultsSP();
break;
case PPSCORE_LE:
SetDefaultsLE();
break;
case PPSCORE_SV:
SetDefaultsSV();
break;
case PPSCORE_SPN:
switch (g_Alpha)
{
case ALPHA_DNA:
SetDefaultsSPN_DNA();
break;
case ALPHA_RNA:
SetDefaultsSPN_RNA();
break;
default:
Quit("Invalid alpha %d", g_Alpha);
}
break;
default:
Quit("Invalid g_PPScore");
}
}
static void SetPPCommandLineParams()
{
FloatParam("GapOpen", &g_scoreGapOpen);
FloatParam("GapOpen2", &g_scoreGapOpen2);
FloatParam("GapExtend", &g_scoreGapExtend);
FloatParam("GapExtend2", &g_scoreGapExtend2);
FloatParam("GapAmbig", &g_scoreAmbigFactor);
FloatParam("Center", &g_scoreCenter);
FloatParam("SmoothScoreCeil", &g_dSmoothScoreCeil);
FloatParam("MinBestColScore", &g_dMinBestColScore);
FloatParam("MinSmoothScore", &g_dMinSmoothScore);
EnumParam("Distance", DISTANCE_Opts, (int *) &g_Distance1);
EnumParam("Distance", DISTANCE_Opts, (int *) &g_Distance2);
EnumParam("Distance1", DISTANCE_Opts, (int *) &g_Distance1);
EnumParam("Distance2", DISTANCE_Opts, (int *) &g_Distance2);
}
void SetPPScore(bool bRespectFlagOpts)
{
if (bRespectFlagOpts)
{
if (FlagOpt("SP"))
g_PPScore = PPSCORE_SP;
else if (FlagOpt("LE"))
g_PPScore = PPSCORE_LE;
else if (FlagOpt("SV"))
g_PPScore = PPSCORE_SV;
else if (FlagOpt("SPN"))
g_PPScore = PPSCORE_SPN;
}
switch (g_PPScore)
{
case PPSCORE_LE:
case PPSCORE_SP:
case PPSCORE_SV:
if (ALPHA_RNA == g_Alpha || ALPHA_DNA == g_Alpha)
g_PPScore = PPSCORE_SPN;
break;
case PPSCORE_SPN:
if (ALPHA_Amino == g_Alpha)
g_PPScore = PPSCORE_LE;
break;
}
SetPPDefaultParams();
SetPPCommandLineParams();
if (g_bVerbose)
ListParams();
}
void SetPPScore(PPSCORE p)
{
g_PPScore = p;
SetPPScore(true);
}
static void SetMaxSecs()
{
float fMaxHours = 0.0;
FloatParam("MaxHours", &fMaxHours);
if (0.0 == fMaxHours)
return;
g_ulMaxSecs = (unsigned long) (fMaxHours*60*60);
}
static bool CanDoLowComplexity()
{
if (g_SeqWeight1 != SEQWEIGHT_ClustalW)
return false;
if (1 == g_uMaxIters)
return true;
return g_SeqWeight2 == SEQWEIGHT_ClustalW;
}
bool MissingCommand()
{
if (strcmp(g_pstrInFileName, "-"))
return false;
if (0 != g_pstrFileName1)
return false;
if (0 != g_pstrSPFileName)
return false;
return true;
}
void SetParams()
{
SetMaxSecs();
StrParam("in", &g_pstrInFileName);
StrParam("out", &g_pstrOutFileName);
StrParam("FASTAOut", &g_pstrFASTAOutFileName);
StrParam("ClwOut", &g_pstrClwOutFileName);
StrParam("ClwStrictOut", &g_pstrClwStrictOutFileName);
StrParam("HTMLOut", &g_pstrHTMLOutFileName);
StrParam("PHYIOut", &g_pstrPHYIOutFileName);
StrParam("PHYSOut", &g_pstrPHYSOutFileName);
StrParam("MSFOut", &g_pstrMSFOutFileName);
StrParam("in1", &g_pstrFileName1);
StrParam("in2", &g_pstrFileName2);
StrParam("Matrix", &g_pstrMatrixFileName);
StrParam("SPScore", &g_pstrSPFileName);
StrParam("UseTree_NoWarn", &g_pstrUseTreeFileName);
if (0 != g_pstrUseTreeFileName)
g_bUseTreeNoWarn = true;
StrParam("UseTree", &g_pstrUseTreeFileName);
StrParam("ComputeWeights", &g_pstrComputeWeightsFileName);
StrParam("ScoreFile", &g_pstrScoreFileName);
StrParam("DistMx1", &g_pstrDistMxFileName1);
StrParam("DistMx2", &g_pstrDistMxFileName2);
FlagParam("Core", &g_bCatchExceptions, false);
FlagParam("NoCore", &g_bCatchExceptions, true);
FlagParam("Diags1", &g_bDiags1, true);
FlagParam("Diags2", &g_bDiags2, true);
bool Diags = false;
FlagParam("Diags", &Diags, true);
if (Diags)
{
g_bDiags1 = true;
g_bDiags2 = true;
}
FlagParam("Anchors", &g_bAnchors, true);
FlagParam("NoAnchors", &g_bAnchors, false);
FlagParam("Quiet", &g_bQuiet, true);
FlagParam("Verbose", &g_bVerbose, true);
FlagParam("Version", &g_bVersion, true);
FlagParam("Stable", &g_bStable, true);
FlagParam("Group", &g_bStable, false);
FlagParam("Refine", &g_bRefine, true);
FlagParam("RefineW", &g_bRefineW, true);
FlagParam("ProfDB", &g_bProfDB, true);
FlagParam("SW", &g_bSW, true);
FlagParam("ClusterOnly", &g_bClusterOnly, true);
FlagParam("Profile", &g_bProfile, true);
FlagParam("PPScore", &g_bPPScore, true);
FlagParam("Brenner", &g_bBrenner, true);
FlagParam("Dimer", &g_bDimer, true);
FlagParam("MSF", &g_bMSF, true);
FlagParam("PHYI", &g_bPHYI, true);
FlagParam("PHYS", &g_bPHYS, true);
FlagParam("clw", &g_bAln, true);
FlagParam("HTML", &g_bHTML, true);
FlagParam("FASTA", &g_bFASTA, true);
FlagParam("PAS", &g_bPAS, true);
FlagParam("MakeTree", &g_bMakeTree, true);
bool b = false;
FlagParam("clwstrict", &b, true);
if (b)
{
g_bAln = true;
g_bClwStrict = true;
}
UintParam("MaxIters", &g_uMaxIters);
UintParam("MaxTrees", &g_uMaxTreeRefineIters);
UintParam("SmoothWindow", &g_uSmoothWindowLength);
UintParam("RefineWindow", &g_uRefineWindow);
UintParam("FromWindow", &g_uWindowFrom);
UintParam("ToWindow", &g_uWindowTo);
UintParam("SaveWindow", &g_uSaveWindow);
UintParam("WindowOffset", &g_uWindowOffset);
UintParam("AnchorSpacing", &g_uAnchorSpacing);
UintParam("DiagLength", &g_uMinDiagLength);
UintParam("DiagMargin", &g_uDiagMargin);
UintParam("DiagBreak", &g_uMaxDiagBreak);
UintParam("MaxSubFam", &g_uMaxSubFamCount);
UintParam("Hydro", &g_uHydrophobicRunLength);
FlagParam("TomHydro", &g_bTomHydro, true);
if (g_bTomHydro)
g_uHydrophobicRunLength = 0;
FloatParam("SUEFF", &g_dSUEFF);
FloatParam("HydroFactor", &g_dHydroFactor);
EnumParam("ObjScore", OBJSCORE_Opts, (int *) &g_ObjScore);
EnumParam("TermGaps", TERMGAPS_Opts, (int *) &g_TermGaps);
EnumParam("Weight", SEQWEIGHT_Opts, (int *) &g_SeqWeight1);
EnumParam("Weight", SEQWEIGHT_Opts, (int *) &g_SeqWeight2);
EnumParam("Weight1", SEQWEIGHT_Opts, (int *) &g_SeqWeight1);
EnumParam("Weight2", SEQWEIGHT_Opts, (int *) &g_SeqWeight2);
EnumParam("Cluster", CLUSTER_Opts, (int *) &g_Cluster1);
EnumParam("Cluster", CLUSTER_Opts, (int *) &g_Cluster2);
EnumParam("Cluster1", CLUSTER_Opts, (int *) &g_Cluster1);
EnumParam("Cluster2", CLUSTER_Opts, (int *) &g_Cluster2);
EnumParam("Root1", ROOT_Opts, (int *) &g_Root1);
EnumParam("Root2", ROOT_Opts, (int *) &g_Root2);
EnumParam("SeqType", SEQTYPE_Opts, (int *) &g_SeqType);
g_scoreGapAmbig = g_scoreGapOpen*g_scoreAmbigFactor;
g_bLow = CanDoLowComplexity();
if (g_bDimer)
g_bPrecompiledCenter = false;
UintParam("MaxMB", &g_uMaxMB);
if (0 == ValueOpt("MaxMB"))
g_uMaxMB = (unsigned) (GetRAMSizeMB()*DEFAULT_MAX_MB_FRACT);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -