public void PrintConfidenceIntervals(string fileName) { ConfidenceIntervalStats.Compute( ); ConfidenceIntervalStats.PrintToCsv("ConfidenceIntervals.csv"); var properties = new[] { "Quality", "Variance Quality", "Covariance Quality", "Reproduction", "Variance Reproduction", "Covariance Reproduction" }; var ci = "\n\n\nHeritability Confidence Intervals:\n\n"; for (var i = 0; i < properties.Length; i++) { var property = properties[i]; var interval = Utility.CalculateConfidenceInterval( HeritabilitySummaries.Select(x => x.Values[i]).ToList( ), V.Z); ci += $"{property,-33}: {interval}\n"; } var lines = ci.Split('\n').Select(x => x.TrimEnd( )); File.WriteAllLines(fileName, lines); }
public virtual void Run( ) { var options = ProgressBarOptions.Default; options.EnableTaskBarProgress = true; using (var pbar = new ProgressBar(V.Runs, "Simulating", options)) { ParallelEnumerable .Range(0, V.Runs) .ForAll(i => { var iteration = new TIteration( ); iteration.Init(V, StrategyCollection); iteration.Run( ); lock ( SyncLock ) { ++Wins[iteration.Winner]; ++TimeStepsCount[iteration.TimeStepsPassed]; ConfidenceIntervalStats?.AddRun(iteration.GenerationHistory); } if (iteration.TimeStepsPassed > 2) { HeritabilitySummaries.Add(iteration.Heritability); } // ReSharper disable once AccessToDisposedClosure pbar.Tick( ); } ); } var clean = HeritabilitySummaries .Where(x => !x.Values.Any(double.IsNaN)) .ToList( ); for (var i = 0; i < HeritabilityMean.ValueCount; i++) { var index = i; (HeritabilityMean.Values[index], HeritabilitySd.Values[index]) = clean.Select(x => x.Values[index]).MeanStandardDeviation( ); } PrintHeritabilitySummaries("Heritability.csv"); if (V.IncludeConfidenceIntervals) { PrintConfidenceIntervals("ConfidenceIntervals.txt"); } }
public virtual void Run( ) { var options = ProgressBarOptions.Default; options.EnableTaskBarProgress = true; using (var pbar = new ProgressBar(V.Runs, "Simulating", options)) { ParallelEnumerable .Range(0, V.Runs) .ForAll(i => { var adjustmentRules = new TAdjustmentRules( ); var iteration = new TIteration( ); iteration.Init(V, adjustmentRules); iteration.Run( ); lock ( SyncLock ) { ++Wins[iteration.Winner]; ++GenerationsCount[iteration.GenerationsPassed]; ConfidenceIntervalStats?.Add(iteration.GenerationHistory); } if (iteration.GenerationsPassed > 2) { HeritabilitySummaries.Add(iteration.Heritability); } // ReSharper disable once AccessToDisposedClosure pbar.Tick( ); } ); } for (var i = 0; i < HeritabilityMean.ValueCount; i++) { var index = i; (HeritabilityMean.Values[index], HeritabilitySd.Values[index]) = HeritabilitySummaries.Select(x => x.Values[index]).MeanStandardDeviation( ); } if (V.IncludeConfidenceIntervals) { PrintConfidenceIntervals("ConfidenceIntervals.txt"); } }