예제 #1
0
        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);
        }