/// <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)); } } }
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()); }
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()); }