/// <summary> /// Creates alignment plots for the HTML output. /// </summary> public void CreateAlignmentPlots(FeaturesAlignedEventArgs e) { var name = e.AligneeDatasetInformation.DatasetName; var alignmentData = e.AlignmentData; if (alignmentData == null) return; var directory = Path.Combine(Config.AnalysisPath, PlotPath, name); var heatmap = HeatmapFactory.CreateAlignedHeatmap(alignmentData.heatScores); var feature = ScatterPlotFactory.CreateFeatureMassScatterPlot(e.AligneeFeatures); var netHistogram = HistogramFactory.CreateHistogram(alignmentData.netErrorHistogram, "NET Error", "NET Error"); var massHistogram = HistogramFactory.CreateHistogram(alignmentData.massErrorHistogram, "Mass Error", "Mass Error (ppm)"); var residuals = alignmentData.ResidualData; var netResidual = ScatterPlotFactory.CreateResidualPlot(residuals.Scan, residuals.LinearCustomNet, residuals.LinearNet, "NET Residuals", "Scans", "NET"); var massMzResidual = ScatterPlotFactory.CreateResidualPlot(residuals.Mz, residuals.MzMassError, residuals.MzMassErrorCorrected, "Mass Residuals", "m/z", "Mass Errors"); var massScanResidual = ScatterPlotFactory.CreateResidualPlot(residuals.Scan, residuals.MzMassError, residuals.MzMassErrorCorrected, "Mass Residuals", "Scan", "Mass Errors"); var report = Config.Report; report.PushLargeText(string.Format("Alignee Statistics - {0}", name)); report.PushStartTable(); // Features report.PushStartTableRow(); report.PushTextHeader("Features"); report.PushEndTableRow(); report.PushStartTableRow(); Config.Report.PushImageColumn(directory + "_features.png", WIDTH, HEIGHT); Config.Report.PushImageColumn(directory + "_heatmap.png", WIDTH, HEIGHT); PlotImageUtility.SaveImage(feature, directory + "_features.png"); PlotImageUtility.SaveImage(heatmap, directory + "_heatmap.png"); report.PushEndTableRow(); // Histograms report.PushStartTableRow(); report.PushTextHeader("Histograms"); report.PushEndTableRow(); report.PushStartTableRow(); Config.Report.PushImageColumn(directory + "_netHistogram.png"); Config.Report.PushImageColumn(directory + "_massHistogram.png"); PlotImageUtility.SaveImage(netHistogram, directory + "_netHistogram.png"); PlotImageUtility.SaveImage(massHistogram, directory + "_massHistogram.png"); report.PushEndTableRow(); // Residuals report.PushStartTableRow(); report.PushTextHeader("Histograms"); report.PushEndTableRow(); report.PushStartTableRow(); Config.Report.PushImageColumn(directory + "_netResidual.png"); Config.Report.PushImageColumn(directory + "_massMzResidual.png"); Config.Report.PushImageColumn(directory + "_massScanResidual.png"); PlotImageUtility.SaveImage(netResidual, directory + "_netResidual.png"); PlotImageUtility.SaveImage(massMzResidual, directory + "_massMzResidual.png"); PlotImageUtility.SaveImage(massScanResidual, directory + "_massScanResidual.png"); report.PushEndTableRow(); report.PushEndTable(); }
private IList<UMCLight> AlignDataset( IList<UMCLight> features, IEnumerable<UMCLight> baselineFeatures, MassTagDatabase database, DatasetInformation datasetInfo, DatasetInformation baselineInfo) { classAlignmentData alignmentData; if (baselineInfo == null && database == null) { throw new NullReferenceException("No reference was set for LC-MS alignment."); } // align the data. if (baselineFeatures != null && baselineInfo != null && baselineInfo.IsBaseline) { // Align pairwise and cache results intermediately. var aligner = m_algorithms.DatasetAligner; RegisterProgressNotifier(aligner); UpdateStatus("Aligning " + datasetInfo.DatasetName + " to baseline."); alignmentData = aligner.Align(baselineFeatures, features); DeRegisterProgressNotifier(aligner); } else { // Align pairwise and cache results intermediately. var aligner = m_algorithms.DatabaseAligner; RegisterProgressNotifier(aligner); UpdateStatus("Aligning " + datasetInfo.DatasetName + " to mass tag database."); alignmentData = aligner.Align(database, features); DeRegisterProgressNotifier(aligner); } if (alignmentData != null) { alignmentData.aligneeDataset = datasetInfo.DatasetName; alignmentData.DatasetID = datasetInfo.DatasetId; } var args = new FeaturesAlignedEventArgs(datasetInfo, baselineFeatures, features, alignmentData); if (FeaturesAligned != null) FeaturesAligned(this, args); UpdateStatus("Updating cache with aligned features."); return features; }
public void CreateAlignmentPlots(FeaturesAlignedEventArgs e) { Action workAction = () => { BuildAlignmentPlotView(e); Reporter.CreateAlignmentPlots(e); }; ThreadSafeDispatcher.Invoke(workAction); }
/// <summary> /// Builds the alignment plot views. /// </summary> /// <param name="e"></param> private void BuildAlignmentPlotView(FeaturesAlignedEventArgs e) { var view = new AlignmentPlotView {AlignmentData = e}; GalleryImages.Insert(0, view); if (GalleryImages.Count > 10) { GalleryImages.RemoveAt(0); } }
/// <summary> /// Logs when features are aligned. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void processor_FeaturesAligned(object sender, FeaturesAlignedEventArgs e) { Logger.PrintMessage("Creating feature alignment plots."); m_reportCreator.CreateAlignmentPlots(e); ReportPeptideFeatures(e.AligneeDatasetInformation, e.AligneeFeatures); }