private IList <UMCLight> AlignDataset( IList <UMCLight> features, IEnumerable <UMCLight> baselineFeatures, MassTagDatabase database, DatasetInformation datasetInfo, DatasetInformation baselineInfo) { AlignmentData 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> /// 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, alignmentData.BaselineIsAmtDB); 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.Net, 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.Net, 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(); }