static public void Test() { RangeCollection aRangeCollection = RangeCollection.GetInstance(); aRangeCollection.Add(0); SpecialFunctions.CheckCondition("0-0" == aRangeCollection.ToString()); aRangeCollection.Add(1); SpecialFunctions.CheckCondition("0-1" == aRangeCollection.ToString()); aRangeCollection.Add(4); SpecialFunctions.CheckCondition("0-1,4-4" == aRangeCollection.ToString()); aRangeCollection.Add(5); SpecialFunctions.CheckCondition("0-1,4-5" == aRangeCollection.ToString()); aRangeCollection.Add(7); SpecialFunctions.CheckCondition("0-1,4-5,7-7" == aRangeCollection.ToString()); aRangeCollection.Add(2); SpecialFunctions.CheckCondition("0-2,4-5,7-7" == aRangeCollection.ToString()); aRangeCollection.Add(3); SpecialFunctions.CheckCondition("0-5,7-7" == aRangeCollection.ToString()); aRangeCollection.Add(6); SpecialFunctions.CheckCondition("0-7" == aRangeCollection.ToString()); aRangeCollection.Add(-10); SpecialFunctions.CheckCondition("-10--10,0-7" == aRangeCollection.ToString()); aRangeCollection.Add(-5); SpecialFunctions.CheckCondition("-10--10,-5--5,0-7" == aRangeCollection.ToString()); aRangeCollection = RangeCollection.Parse("1-5,7-12,13-14"); Console.WriteLine(aRangeCollection); Console.WriteLine(aRangeCollection.Contains(3)); Console.WriteLine(aRangeCollection.Contains(12)); Console.WriteLine(aRangeCollection.Contains(13)); Console.WriteLine(aRangeCollection.Contains(6)); aRangeCollection = RangeCollection.Parse("-10--5,-1-14"); Console.WriteLine(aRangeCollection); Console.WriteLine(aRangeCollection.Contains(-12)); Console.WriteLine(aRangeCollection.Contains(-10)); Console.WriteLine(aRangeCollection.Contains(-7)); Console.WriteLine(aRangeCollection.Contains(-5)); Console.WriteLine(aRangeCollection.Contains(-4)); Console.WriteLine(aRangeCollection.Contains(0)); Console.WriteLine(aRangeCollection.Contains(1)); Console.WriteLine(aRangeCollection.Contains(-2)); Console.WriteLine("Count: " + aRangeCollection.Count()); Console.WriteLine("Count -5 to 2: " + aRangeCollection.Count(-5, 2)); RangeCollectionCollection rcc = RangeCollectionCollection.GetInstance(aRangeCollection); Console.WriteLine(rcc); Console.WriteLine(rcc.GetContainingRangeCollection(-12)); Console.WriteLine(rcc.GetContainingRangeCollection(-10)); Console.WriteLine(rcc.GetContainingRangeCollection(-5)); Console.WriteLine(rcc.GetContainingRangeCollection(3)); Console.WriteLine(rcc.GetContainingRangeCollection(15)); }
public void ScoreTree( ModelScorer modelScorer, PhyloTree phyloTree, string predictorSparseFileName, string targetSparseFileName, string predictorVariableName, string targetVariableName, double[] nullModelArgs, double[] altModelArgs) { //Dictionary<string, Dictionary<string, SufficientStatistics>> predictorVariableToCaseIdToRealNonMissingValue = LoadSparseFileInMemory(predictorSparseFileName); IEnumerable <Pair <string, Dictionary <string, SufficientStatistics> > > predictorNameAndCaseIdToNonMissingValueEnumeration = LoadSparseFileEnumeration(predictorSparseFileName); IEnumerable <Pair <string, Dictionary <string, SufficientStatistics> > > targetNameAndCaseIdToNonMissingValueEnumeration = LoadSparseFileEnumeration(targetSparseFileName); RangeCollection nullIndexRangeCollection = RangeCollection.GetInstance(-1, -1); NullDataCollection nullDataGenerator = CreateNullDataGenerator("PredictorPermutation", modelScorer, phyloTree, nullIndexRangeCollection, predictorNameAndCaseIdToNonMissingValueEnumeration, targetNameAndCaseIdToNonMissingValueEnumeration); UniversalWorkList workList = UniversalWorkList.GetInstance( predictorNameAndCaseIdToNonMissingValueEnumeration, targetNameAndCaseIdToNonMissingValueEnumeration, //targetNameAndCaseIdToNonMissingValueEnumeration, nullDataGenerator, nullIndexRangeCollection, AlwaysKeep <Dictionary <string, string> > .GetInstance()); foreach (RowData rowAndTargetData in workList.List()) { if (rowAndTargetData.Row[PhyloTree.PredictorVariableColumnName] == predictorVariableName && rowAndTargetData.Row[PhyloTree.TargetVariableColumnName] == targetVariableName) { Dictionary <string, SufficientStatistics> caseIdToNonNullPredictorValue = rowAndTargetData.PredictorData;//workList.GetCaseIdToNonMissingValueForNullIndexAndPredictorVariable(-1, predictorVariableName); Dictionary <string, SufficientStatistics> caseIdToNonMissingTargetValue = rowAndTargetData.TargetData; Converter <Leaf, SufficientStatistics> targetDistributionMap = CreateSufficientStatisticsMap(caseIdToNonMissingTargetValue); Converter <Leaf, SufficientStatistics> predictorDistributionClassFunction = CreateSufficientStatisticsMap(caseIdToNonNullPredictorValue); Converter <Leaf, SufficientStatistics> altDistributionMap = CreateAlternativeSufficientStatisticsMap(predictorDistributionClassFunction, targetDistributionMap); double logLikelihood; Score scoreIndTarget, scoreIndPredictor, scoreAlt; MessageInitializer messageInitializer; OptimizationParameterList nullParams = NullModelDistribution.GetParameters(nullModelArgs); OptimizationParameterList altParams = AltModelDistribution.GetParameters(altModelArgs); Console.WriteLine(SpecialFunctions.CreateTabString("Variable", nullParams.ToStringHeader(), "LogL")); messageInitializer = modelScorer.CreateMessageInitializer(predictorDistributionClassFunction, targetDistributionMap, NullModelDistribution); logLikelihood = modelScorer.ComputeLogLikelihoodModelGivenData(messageInitializer, nullParams); scoreIndTarget = Score.GetInstance(logLikelihood, nullParams); Console.WriteLine("Target\t" + scoreIndTarget); messageInitializer = modelScorer.CreateMessageInitializer(targetDistributionMap, predictorDistributionClassFunction, NullModelDistribution); logLikelihood = modelScorer.ComputeLogLikelihoodModelGivenData(messageInitializer, nullParams); modelScorer.ComputeLogLikelihoodModelGivenData(messageInitializer, nullParams); scoreIndPredictor = Score.GetInstance(logLikelihood, nullParams); Console.WriteLine("Predictor\t" + scoreIndPredictor); Console.WriteLine("\n" + SpecialFunctions.CreateTabString("Variable", altParams.ToStringHeader(), "LogL")); messageInitializer = modelScorer.CreateMessageInitializer(null, altDistributionMap, AltModelDistribution); logLikelihood = modelScorer.ComputeLogLikelihoodModelGivenData(messageInitializer, altParams); scoreAlt = Score.GetInstance(logLikelihood, altParams); Console.WriteLine(SpecialFunctions.CreateTabString(AltModelDistribution, scoreAlt)); } } }