public MainWindow() { InitializeComponent(); dataGridPeptideFiles.DataContext = DataFilesObservableCollection; dataGridDatabaseFiles.DataContext = DatabasesObservableCollection; DisplayedSamplesDataGrid.DataContext = FilesToDisplayObservableCollection; HiddenSamplesDataGrid.DataContext = FilesToHideObservableCollection; DisplayAnalyzedFilesDataGrid.DataContext = DataFilesObservableCollection; HalfLifeHistogramPlot.Configure(enableScrollWheelZoom: false); PrecisionPlot.Configure(enableScrollWheelZoom: false); HalfLifeComparisonPlot.Configure(enableScrollWheelZoom: false); RatioComparisonPlot.Configure(enableScrollWheelZoom: false); peptideRadioButton.IsChecked = true; proteinSpecificRadioButton.IsChecked = DisplayProteinInSpecificTable; DisplayPeptidesView = CollectionViewSource.GetDefaultView(PeptidesToDisplay); DisplayPeptidesDataGrid.DataContext = DisplayPeptidesView; Loaders.LoadElements(); PopulateChoices(); }
private void PlotPrecisionScatterPlot(List <PeptideTurnoverObject> peptidesToPlot, PoolParameters poolParams) { PrecisionPlot.plt.Clear(); PrecisionPlot.plt.GetPlottables().Clear(); if (peptidesToPlot.Count == 0) { return; } Dictionary <double, List <(double halfLife, double relativeFraction)> > dictionaryToPlot = new Dictionary <double, List <(double halfLife, double relativeFraction)> >(); foreach (PeptideTurnoverObject peptide in peptidesToPlot) { //grab measurements double halfLife = Math.Log(2, Math.E) / peptide.Kbi; for (int i = 0; i < peptide.Timepoints.Length; i++) { if (dictionaryToPlot.ContainsKey(peptide.Timepoints[i])) { dictionaryToPlot[peptide.Timepoints[i]].Add((halfLife, peptide.RelativeFractions[i])); } else { dictionaryToPlot[peptide.Timepoints[i]] = new List <(double halfLife, double relativeFraction)> { (halfLife, peptide.RelativeFractions[i]) }; } } } //plot all peptide data double[] timepoints = dictionaryToPlot.Keys.OrderBy(x => x).ToArray(); foreach (double timepoint in timepoints) { var value = dictionaryToPlot[timepoint]; PrecisionPlot.plt.PlotScatter(value.Select(x => x.halfLife).ToArray(), value.Select(x => x.relativeFraction).ToArray(), lineWidth: 0, markerSize: 3, label: timepoint.ToString(), markerShape: ScottPlot.MarkerShape.openCircle); } //plt fits for each timepoint on top of the peptide data double[] halflives = new double[2499]; for (int i = 0; i < halflives.Length; i++) { halflives[i] = i / 5.0 + 0.2; } List <double>[] rfs = new List <double> [timepoints.Length]; for (int i = 0; i < timepoints.Length; i++) { rfs[i] = new List <double>(); } foreach (double halflife in halflives) { if (halflife == 0) { continue; } //halflife = ln(2)/kbi //kbi = ln(2)/halflife double[] rfsForThisHalfLife = NonLinearRegression.PredictRelativeFractionUsingThreeCompartmentModel( poolParams.Kst, poolParams.Kbt, poolParams.Kao, Math.Log(2, Math.E) / halflife, timepoints); for (int i = 0; i < timepoints.Length; i++) { rfs[i].Add(rfsForThisHalfLife[i]); } } PrecisionPlot.plt.Axis(0, 50, 0, 1); for (int i = 0; i < timepoints.Length; i++) { PrecisionPlot.plt.PlotScatter(halflives, rfs[i].ToArray(), Color.Black, markerSize: 0); } if (DisplayLegendCheckBox.IsChecked.Value) { PrecisionPlot.plt.Legend(location: ScottPlot.legendLocation.upperRight); } else { PrecisionPlot.plt.Legend(false); } PrecisionPlot.plt.YLabel("Lys0 / LysTotal"); PrecisionPlot.plt.XLabel("Half-life (Days)"); PrecisionPlot.plt.Axis(0, 50, 0, 1); PrecisionPlot.Render(); PrecisionPlot.Render(); }