internal DisplayRow(HalfLifeCalculator halfLifeCalculator, HalfLifeCalculator.ResultRow resultRow)
 {
     _resultRow = resultRow;
     _halfLifeCalculator = halfLifeCalculator;
     Results = new Dictionary<GroupKey, GroupResult>();
 }
Beispiel #2
0
 private HalfLifeCalculator UpdateGraph(List<PeptideFileAnalysis> peptideFileAnalyses, HalfLifeSettings halfLifeSettings, out HalfLifeCalculator.ResultData resultData)
 {
     var halfLifeCalculator = new HalfLifeCalculator(Workspace, halfLifeSettings);
     var halfLife = resultData = halfLifeCalculator.CalculateHalfLife(peptideFileAnalyses);
     _zedGraphControl.GraphPane.CurveList.Clear();
     _zedGraphControl.GraphPane.GraphObjList.Clear();
     _pointsCurve = null;
     _peptideFileAnalysisPoints = null;
     var xValues = new List<double>();
     var yValues = new List<double>();
     var fileAnalysisPoints = new List<PeptideFileAnalysis>();
     var filteredFileAnalysisIds =
         new HashSet<long>(resultData.FilteredRowDatas.Select(rd => rd.RawRowData.PeptideFileAnalysisId));
     foreach (var peptideFileAnalysis in peptideFileAnalyses)
     {
         if (!filteredFileAnalysisIds.Contains(peptideFileAnalysis.Id))
         {
             continue;
         }
         double? value;
         var processedRowData = halfLifeCalculator.ToRowData(peptideFileAnalysis);
         if (!processedRowData.Turnover.HasValue)
         {
             continue;
         }
         if (LogPlot)
         {
             value = 2-Math.Log10(100 - processedRowData.Turnover.Value * 100);
         }
         else
         {
             value = processedRowData.Turnover.Value * 100;
         }
         if (double.IsInfinity(value.Value) || double.IsNaN(value.Value))
         {
             continue;
         }
         Debug.Assert(peptideFileAnalysis.MsDataFile.TimePoint != null);
         xValues.Add(peptideFileAnalysis.MsDataFile.TimePoint.Value);
         yValues.Add(value.Value);
         fileAnalysisPoints.Add(peptideFileAnalysis);
     }
     UpdateStatsGrid(xValues, yValues);
     var pointsCurve = _zedGraphControl.GraphPane.AddCurve("Data Points", xValues.ToArray(), yValues.ToArray(), Color.Black);
     pointsCurve.Line.IsVisible = false;
     pointsCurve.Label.IsVisible = false;
     Func<double, double> funcMiddle = x => halfLife.YIntercept + halfLife.RateConstant * x;
     Func<double, double> funcMin = x => halfLife.YIntercept + (halfLife.RateConstant - halfLife.RateConstantError) * x;
     Func<double, double> funcMax = x => halfLife.YIntercept + (halfLife.RateConstant + halfLife.RateConstantError) * x;
     Func<double, double> funcConvertToDisplayedValue;
     if (LogPlot)
     {
         _zedGraphControl.GraphPane.YAxis.Title.Text = "-Log(100% - % Newly Synthesized)";
         funcConvertToDisplayedValue = x => -x / Math.Log(10);
     }
     else
     {
         _zedGraphControl.GraphPane.YAxis.Title.Text = "% Newly Synthesized";
         funcConvertToDisplayedValue = x => (1 - Math.Exp(x)) * 100;
     }
     // ReSharper disable ImplicitlyCapturedClosure
     AddFunction("Best Fit", x=>funcConvertToDisplayedValue(funcMiddle(x)), Color.Black);
     AddFunction("Minimum Bound", x=>funcConvertToDisplayedValue(funcMin(x)), Color.LightBlue);
     AddFunction("Maximum Bound", x=>funcConvertToDisplayedValue(funcMax(x)), Color.LightGreen);
     // ReSharper restore ImplicitlyCapturedClosure
     _zedGraphControl.GraphPane.AxisChange();
     _zedGraphControl.Invalidate();
     _pointsCurve = pointsCurve;
     _peptideFileAnalysisPoints = fileAnalysisPoints;
     tbxRateConstant.Text = resultData.RateConstant.ToString("0.##E0") + "+/-" +
                            resultData.RateConstantError.ToString("0.##E0");
     tbxHalfLife.Text = resultData.HalfLife.ToString("0.##") + "(" + resultData.MinHalfLife.ToString("0.##") + "-" +
                        resultData.MaxHalfLife.ToString("0.##") + ")";
     if (resultData.RSquared.HasValue)
     {
         tbxCorrelationCoefficient.Text = Math.Sqrt(resultData.RSquared.Value).ToString(CultureInfo.InvariantCulture);
     }
     else
     {
         tbxCorrelationCoefficient.Text = "";
     }
     return halfLifeCalculator;
 }
 private void btnRequery_Click(object sender, EventArgs e)
 {
     var halfLifeCalculator = new HalfLifeCalculator(Workspace, HalfLifeSettings)
                                  {
                                      ByFile = cbxGroupByFile.Checked,
                                  };
     using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Calculating Half Lives"))
     {
         var longOperationBroker = new LongOperationBroker(halfLifeCalculator.Run, longWaitDialog);
         if (!longOperationBroker.LaunchJob())
         {
             return;
         }
     }
     bool byCohort = cbxGroupByCohort.Checked;
     bool byTimePoint = cbxGroupByTimePoint.Checked;
     bool bySample = cbxGroupBySample.Checked;
     bool byFile = cbxGroupByFile.Checked;
     var displayRows = new List<DisplayRow>();
     foreach (var resultRow in halfLifeCalculator.ResultRows)
     {
         var displayRow = new DisplayRow(halfLifeCalculator, resultRow);
         var rowDatasByCohort = new Dictionary<GroupKey, List<HalfLifeCalculator.ProcessedRowData>>();
         foreach (var halfLife in resultRow.HalfLives)
         {
             if (resultRow.HalfLives.Count > 1 && string.IsNullOrEmpty(halfLife.Key) != byCohort)
             {
                 continue;
             }
             foreach (var rowData in halfLife.Value.FilteredRowDatas)
             {
                 GroupKey cohortKey = new GroupKey(
                     byCohort ? rowData.RawRowData.MsDataFile.Cohort : null,
                     byTimePoint ? rowData.RawRowData.MsDataFile.TimePoint : null,
                     bySample ? rowData.RawRowData.MsDataFile.Sample : null,
                     byFile ? rowData.RawRowData.MsDataFile.Name : null);
                 List<HalfLifeCalculator.ProcessedRowData> list;
                 if (!rowDatasByCohort.TryGetValue(cohortKey, out list))
                 {
                     list = new List<HalfLifeCalculator.ProcessedRowData>();
                     rowDatasByCohort.Add(cohortKey, list);
                 }
                 list.Add(rowData);
             }
         }
         foreach (var cohortRowDatas in rowDatasByCohort)
         {
             displayRow.Results.Add(cohortRowDatas.Key, new GroupResult(this, displayRow, cohortRowDatas.Key, new ResultData(cohortRowDatas.Value)));
         }
         displayRows.Add(displayRow);
     }
     var viewInfo = bindingSource1.ViewInfo;
     var dataSchema = new TopographDataSchema(Workspace);
     if (viewInfo == null || "default" == viewInfo.Name)
     {
         viewInfo= new ViewInfo(ColumnDescriptor.RootColumn(dataSchema, typeof(DisplayRow)),
             GetDefaultViewSpec(halfLifeCalculator.ByProtein));
     }
     var viewContext = new TopographViewContext(Workspace, typeof (DisplayRow), displayRows,
         GetDefaultViewSpec(halfLifeCalculator.ByProtein));
     bindingSource1.SetViewContext(viewContext, viewInfo);
     bindingSource1.RowSource = displayRows;
     dataGridViewSummary.Rows.Clear();
     SetSummary("Tracer %", displayRows.Select(dr=>dr.Results).SelectMany(r=>r.Values
         .Select(cohortResult=>cohortResult.GetResultData().TracerPercentByArea)));
     SetSummary("Precursor Enrichment", displayRows.Select(dr=>dr.Results).SelectMany(r=>r.Values
         .Select(cohortResult=>cohortResult.GetResultData().IndPrecursorEnrichment)));
     SetSummary("Turnover", displayRows.Select(dr=>dr.Results).SelectMany(r=>r.Values
         .Select(cohortResult=>cohortResult.GetResultData().IndTurnover)));
     SetSummary("Area Under Curve", displayRows.Select(dr=>dr.Results).SelectMany(r=>r.Values
         .Select(cohortResult=>cohortResult.GetResultData().AreaUnderCurve)));
 }
Beispiel #4
0
 private void BtnRequeryOnClick(object sender, EventArgs e)
 {
     var halfLifeSettings = HalfLifeSettings;
     Settings.Default.Reload();
     Settings.Default.HalfLifeSettings = halfLifeSettings;
     Settings.Default.Save();
     var calculator = new HalfLifeCalculator(Workspace, halfLifeSettings)
                          {
                              ExcludedTimePoints = UpdateTimePoints(),
                          };
     using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Calculating Half Lives"))
     {
         var longOperationBroker = new LongOperationBroker(calculator.Run, longWaitDialog);
         if (!longOperationBroker.LaunchJob())
         {
             return;
         }
     }
     var viewInfo = bindingSource1.ViewInfo;
     var rows = calculator.ResultRows.Select(row => new ResultRow(this, row)).ToArray();
     if (viewInfo == null || "default" == viewInfo.Name)
     {
         viewInfo = new ViewInfo(ColumnDescriptor.RootColumn(bindingSource1.ViewInfo.DataSchema, typeof(ResultRow)),
             GetDefaultViewSpec(calculator.ByProtein));
         bindingSource1.SetViewContext(GetViewContext(rows), viewInfo);
     }
     bindingSource1.RowSource = rows;
 }
Beispiel #5
0
 public ResultRow(HalfLivesForm form, HalfLifeCalculator.ResultRow halfLifeResultRow)
 {
     _form = form;
     _halfLifeResultRow = halfLifeResultRow;
     HalfLives = new Dictionary<string, LinkValue<HalfLifeCalculator.ResultData>>();
     foreach (var resultDataEntry in _halfLifeResultRow.HalfLives)
     {
         var cohort = resultDataEntry.Key;
         HalfLives.Add(resultDataEntry.Key, new LinkValue<HalfLifeCalculator.ResultData>(resultDataEntry.Value,
             (sender, args)=>ShowHalfLifeForm(_halfLifeResultRow.Peptide, _halfLifeResultRow.ProteinName, cohort)
             ));
     }
 }
 public PerReplicateResult(HalfLifeCalculator.ProcessedRowData rowData)
 {
     _rowData = rowData;
 }
 private void UpdateRows(HalfLifeCalculator halfLifeCalculator)
 {
     var resultRows = halfLifeCalculator.RowDatas.Select(rd => new PerReplicateResult(halfLifeCalculator.ComputeAvgTurnover(rd))).ToArray();
     bindingSourceResults.RowSource = resultRows;
 }
 private void BtnRequeryOnClick(object sender, EventArgs e)
 {
     var calculator = new HalfLifeCalculator(Workspace, HalfLifeSettings.Default)
     {
         MaxResults = MaxResults,
     };
     using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Calculating Half Lives"))
     {
         var longOperationBroker = new LongOperationBroker(calculator.Run, longWaitDialog);
         if (!longOperationBroker.LaunchJob())
         {
             return;
         }
     }
     UpdateRows(calculator);
 }