public static ModelScorer GetInstance(PhyloTree aPhyloTree, string leafDistributionName, string optimizerName) { leafDistributionName = leafDistributionName.ToLower(); ModelScorer modelScorer; GridSearch optimizer = GridSearch.GetInstance(optimizerName); if (leafDistributionName.StartsWith(ModelEvaluatorCrossValidate.BaseName.ToLower())) { leafDistributionName = leafDistributionName.Substring(ModelEvaluatorCrossValidate.BaseName.Length); } else if (leafDistributionName.StartsWith(ModelEvaluatorReverse.BaseName.ToLower())) { leafDistributionName = leafDistributionName.Substring(ModelEvaluatorReverse.BaseName.Length); } if (leafDistributionName.StartsWith(ModelEvaluatorDiscrete.BaseName.ToLower())) { modelScorer = new ModelScorerDiscrete(aPhyloTree, optimizer); } //else if (leafDistributionName.StartsWith(ModelEvaluatorGaussian.BaseName.ToLower())) //{ // modelScorer = new ModelScorerGaussian(aPhyloTree, optimizer); //} else { modelScorer = null; throw new ArgumentException("Cannot parse " + leafDistributionName + " into a valid ModelScorer."); } //modelScorer.GridSearch = GridSearch.GetInstance(optimizerName); return(modelScorer); }