Exemple #1
0
        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);
        }
Exemple #2
0
        public void CreateAlignmentPlots(FeaturesAlignedEventArgs e)
        {
            Action workAction = () =>
            {
                BuildAlignmentPlotView(e);
                Reporter.CreateAlignmentPlots(e);
            };

            ThreadSafeDispatcher.Invoke(workAction);
        }
Exemple #3
0
        /// <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);
            }
        }
Exemple #4
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();
        }