Example #1
0
        /// <summary>
        /// Event triggers when a different cell is selected in the PSM data grid
        /// </summary>
        private void dataGridScanNums_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            if (dataGridScanNums.SelectedItem == null)
            {
                return;
            }

            PsmFromTsv psm = (PsmFromTsv)dataGridScanNums.SelectedItem;

            // draw the annotated spectrum
            MetaDrawLogic.DisplaySpectrumMatch(plotView, canvas, psm, itemsControlSampleViewModel, out var errors);

            //draw the sequence coverage if not crosslinked
            if (psm.ChildScanMatchedIons == null)
            {
                MetaDrawLogic.DrawSequenceCoverageMap(psm, sequenceText, map); //TODO: figure out how to show coverage on crosslinked peptides
                ParentChildScanView.Visibility            = Visibility.Collapsed;
                SequenceCoverageAnnotationView.Visibility = Visibility.Visible;
            }
            else
            {
                ParentChildScanView.Visibility            = Visibility.Visible;
                SequenceCoverageAnnotationView.Visibility = Visibility.Collapsed;
            }

            mapViewer.Width = map.Width;

            if (errors != null && errors.Any())
            {
                MessageBox.Show(errors.First());
                return;
            }

            // display PSM properties
            propertyView.Clear();
            System.Reflection.PropertyInfo[] temp = psm.GetType().GetProperties();

            for (int i = 0; i < temp.Length; i++)
            {
                if (temp[i].Name == nameof(psm.MatchedIons))
                {
                    propertyView.Rows.Add(temp[i].Name, string.Join(", ", psm.MatchedIons.Select(p => p.Annotation)));
                }
                else if (temp[i].Name == nameof(psm.VariantCrossingIons))
                {
                    propertyView.Rows.Add(temp[i].Name, string.Join(", ", psm.VariantCrossingIons.Select(p => p.Annotation)));
                }
                else
                {
                    propertyView.Rows.Add(temp[i].Name, temp[i].GetValue(psm, null));
                }
            }
        }
Example #2
0
        public static void IonsWithNoTerminusTest() //if internal fragments are selected using TerminusType == None, then "M" and "D" ions get lumped in and cause a crash
        {
            // load results into metadraw
            var    metadrawLogic = new MetaDrawLogic();
            string spectraFile   = Path.Combine(TestContext.CurrentContext.TestDirectory, @"XlTestData\ms2mixed_bsa_xlink.mzML");
            string psmFile       = Path.Combine(TestContext.CurrentContext.TestDirectory, @"XlTestData\XL_Intralinks_MIons.tsv");

            metadrawLogic.SpectraFilePaths.Add(spectraFile);
            metadrawLogic.PsmResultFilePaths.Add(psmFile);
            var errors = metadrawLogic.LoadFiles(true, true);

            Assert.That(!errors.Any());

            // draw sequence coverage for PSM
            var sequenceText = new Canvas();
            var map          = new Canvas();
            var psm          = metadrawLogic.FilteredListOfPsms.First();

            metadrawLogic.DrawSequenceCoverageMap(psm, sequenceText, map);

            //test no errors
            Assert.That(errors == null || !errors.Any());
        }
Example #3
0
        public static void SequenceCoverageMapTest()
        {
            // load results into metadraw
            var    metadrawLogic = new MetaDrawLogic();
            string spectraFile   = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\InternalTest.mgf");
            string psmFile       = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\SequenceCoverageTestPSM.psmtsv");

            metadrawLogic.SpectraFilePaths.Add(spectraFile);
            metadrawLogic.PsmResultFilePaths.Add(psmFile);
            var errors = metadrawLogic.LoadFiles(true, true);

            Assert.That(!errors.Any());

            // draw sequence coverage for PSM
            var sequenceText = new Canvas();
            var map          = new Canvas();
            var psm          = metadrawLogic.FilteredListOfPsms.First();

            metadrawLogic.DrawSequenceCoverageMap(psm, sequenceText, map);

            //test no errors
            Assert.That(errors == null || !errors.Any());
        }