internal static KeepTest <Dictionary <string, string> > GetInstance(bool keepIt) { if (keepIt) { return(AlwaysKeep <Dictionary <string, string> > .GetInstance()); } KeepEndOfGag aKeepEndOfGag = new KeepEndOfGag(); aKeepEndOfGag.KeepIt = keepIt; return(aKeepEndOfGag); }
internal static KeepTest <Dictionary <string, string> > GetInstance(int k1) { if (k1 == 0) { return(AlwaysKeep <Dictionary <string, string> > .GetInstance()); } K1 aK1 = new K1(); aK1.k1 = k1; return(aK1); }
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)); } } }
static void Main(string[] argsx) { try { List <string> argumentCollection = new List <string>(argsx); bool auditRowIndexValues = true; string noAuditFlag = "-NoAudit"; if (argumentCollection.Contains(noAuditFlag)) { argumentCollection.Remove(noAuditFlag); auditRowIndexValues = false; } double maxPValue = 1.0; // Ignore pValues greater than this string maxPValueFlag = "-MaxPValue"; int maxPValuePosition = argumentCollection.IndexOf(maxPValueFlag); if (maxPValuePosition >= 0) { argumentCollection.RemoveAt(maxPValuePosition); SpecialFunctions.CheckCondition(maxPValuePosition < argumentCollection.Count, "pValue expected after -MaxPValue"); maxPValue = double.Parse(argumentCollection[maxPValuePosition]); argumentCollection.RemoveAt(maxPValuePosition); } KeepTest <Dictionary <string, string> > keepTest; // Ignore pValues greater than this string keepTestFlag = "-KeepTest"; int keepTestPosition = argumentCollection.IndexOf(keepTestFlag); if (keepTestPosition >= 0) { argumentCollection.RemoveAt(keepTestPosition); SpecialFunctions.CheckCondition(keepTestPosition < argumentCollection.Count, "KeepTest expected after -MaxPValue"); keepTest = KeepTest <Dictionary <string, string> > .GetInstance(null, argumentCollection[keepTestPosition]); argumentCollection.RemoveAt(keepTestPosition); } else { keepTest = new AlwaysKeep <Dictionary <string, string> >(); } SpecialFunctions.CheckCondition(argumentCollection.Count > 1, "Expect 2 or more parameters"); string outputFileName = argumentCollection[argumentCollection.Count - 1]; argumentCollection.RemoveAt(argumentCollection.Count - 1); Tabulate.CreateTabulateReport(argumentCollection, outputFileName, keepTest, maxPValue, auditRowIndexValues); } catch (Exception e) { Console.WriteLine(""); Console.WriteLine(e.Message); if (e.InnerException != null) { Console.WriteLine(e.InnerException.Message); } Console.WriteLine(@" Usage: Tabulate {-NoAudit} {-MaxPValue maxPValue} {-KeepTest keeptest} broadInputFileNamePattern1 {broadInputFileNamePattern2 ...} outputFileName Each broadInputFileNamePattern1 is of the form narrowInputFileNamePattern1{+narrowInputFileNamePattern2...} Each broadInputFileNamePattern must cover the same range of nullIndexes (including -1, the real index). Each narrowInputFileNamePattern within a broadInputFileNamePattern must cover a disjoint set of nullIndexes. For example Tabulate -MaxPValue .05 raw\GagEscape0606*-1-19*.txt raw\GagReversion0606*-1-9*.txt+raw\GagReversion0606*10-19*.txt AllGag.qValue.txt Notice that broad pattern raw\GagEscape0606*-1-19*.txt has one narrow pattern and covers nullIndex's -1 to 19 While broad pattern raw\GagReversion0606*-1-9*.txt+raw\GagReversion0606*10-19*.txt has two narrow patterns: raw\GagReversion0606*-1-9*.txt, which covers nullIndexes -1 to 9 raw\GagReversion0606*10-19*.txt which covers nullIndexes 10 to 19 By default, ""Tabulate"" will audit the ""rowIndex"" and ""rowCount"" values in the input to remove duplicates and check that all rows are present. Use ""-NoAudit"" when this is not desired. Use ""-MaxPValue maxPValue"", where maxPValue is a double, to ignore rows with obviously bad rows "); throw; } }