diff --git a/MetaMorpheus/EngineLayer/SpectralLibrarySearch/LibrarySpectrum.cs b/MetaMorpheus/EngineLayer/SpectralLibrarySearch/LibrarySpectrum.cs index 1c36de9ea..5e4e04208 100644 --- a/MetaMorpheus/EngineLayer/SpectralLibrarySearch/LibrarySpectrum.cs +++ b/MetaMorpheus/EngineLayer/SpectralLibrarySearch/LibrarySpectrum.cs @@ -3,6 +3,9 @@ using System.Linq; using System.Text; using System; +using Easy.Common.Extensions; +using MassSpectrometry.MzSpectra; +using ThermoFisher.CommonCore.Data; namespace EngineLayer { @@ -39,6 +42,34 @@ public LibrarySpectrum(string sequence, double precursorMz, int chargeState, Lis Array.Sort(XArray, YArray); } + /// + /// This function enables the spectrum angle to be computed between an individual experimental spectrum and the loaded library spectrum within MetaDraw + /// + /// + /// + public string CalculateSpectralAngleOnTheFly(List spectrumMatchFragments) + { + if (spectrumMatchFragments.IsNullOrEmpty()) + { + return "N/A"; + } + + if(spectrumMatchFragments.IsNotNullOrEmpty()){} + SpectralSimilarity spectraComparison = new SpectralSimilarity( + spectrumMatchFragments.Select(f => f.Mz).ToArray(), + spectrumMatchFragments.Select(f => f.Intensity).ToArray(), + MatchedFragmentIons.Select(f => f.Mz).ToArray(), + MatchedFragmentIons.Select(f => f.Intensity).ToArray(), + SpectralSimilarity.SpectrumNormalizationScheme.mostAbundantPeak, + toleranceInPpm: 20, + allPeaks: true); + double? spectralContrastAngle = spectraComparison.SpectralContrastAngle(); + + return spectralContrastAngle == null + ? "N/A" + : ((double)spectralContrastAngle).ToString("F4"); + } + public override string ToString() { StringBuilder spectrum = new StringBuilder(); diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawLogic.cs b/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawLogic.cs index b9c3d50af..9841af04b 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawLogic.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawLogic.cs @@ -132,7 +132,14 @@ public void DisplaySpectrumMatch(PlotView plotView, PsmFromTsv psm, ParentChildS spectraFile.InitiateDynamicConnection(); MsDataScan scan = spectraFile.GetOneBasedScanFromDynamicConnection(psm.Ms2ScanNumber); + LibrarySpectrum librarySpectrum = null; + if (SpectralLibrary != null) + { + SpectralLibrary.TryGetSpectrum(psm.FullSequence, psm.PrecursorCharge, out var librarySpectrum1); + librarySpectrum = librarySpectrum1; + } + //if not crosslinked if (psm.BetaPeptideBaseSequence == null) { diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettings.cs b/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettings.cs index 4974c7454..175433672 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettings.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettings.cs @@ -200,7 +200,7 @@ private static void InitializeDictionaries() // lines to be written on the spectrum SpectrumDescription = SpectrumDescriptors.ToDictionary(p => p, p => true); - SpectrumDescription["Spectral Angle: "] = false; + SpectrumDescription["Spectral Angle: "] = true; } // offset for annotation on base sequence diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/PeptideSpectrumMatchPlot.cs b/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/PeptideSpectrumMatchPlot.cs index af0abaf23..608fa2cd7 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/PeptideSpectrumMatchPlot.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/PeptideSpectrumMatchPlot.cs @@ -22,7 +22,14 @@ public PeptideSpectrumMatchPlot(OxyPlot.Wpf.PlotView plotView, PsmFromTsv psm, M { if (annotateProperties) { - AnnotateProperties(); + if (librarySpectrum != null) + { + AnnotateProperties(librarySpectrum); + } + else + { + AnnotateProperties(); + } } ZoomAxes(matchedFragmentIons); diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/SpectrumMatchPlot.cs b/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/SpectrumMatchPlot.cs index f6b89c328..b1f93705f 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/SpectrumMatchPlot.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/SpectrumMatchPlot.cs @@ -10,11 +10,13 @@ using System.Windows.Media; using System.Windows.Media.Imaging; using Chemistry; +using Easy.Common.Extensions; using EngineLayer; using iText.IO.Image; using iText.Kernel.Pdf; using iText.Layout; using MassSpectrometry; +using MassSpectrometry.MzSpectra; using mzPlot; using OxyPlot; using OxyPlot.Annotations; @@ -42,7 +44,7 @@ public class SpectrumMatchPlot : Plot /// psm to plot /// spectrum to plot /// glyco ONLY child matched ions - public SpectrumMatchPlot(OxyPlot.Wpf.PlotView plotView, PsmFromTsv psm, + public SpectrumMatchPlot(OxyPlot.Wpf.PlotView plotView, PsmFromTsv psm, MsDataScan scan, List matchedIons = null) : base(plotView) { Model.Title = string.Empty; @@ -115,7 +117,8 @@ protected void DrawSpectrum() double mz = Scan.MassSpectrum.XArray[i]; double intensity = Scan.MassSpectrum.YArray[i]; - DrawPeak(mz, intensity, MetaDrawSettings.StrokeThicknessUnannotated, MetaDrawSettings.UnannotatedPeakColor, null); + DrawPeak(mz, intensity, MetaDrawSettings.StrokeThicknessUnannotated, + MetaDrawSettings.UnannotatedPeakColor, null); } } @@ -127,7 +130,8 @@ protected void DrawSpectrum() /// /// Color to draw peak /// text to display above the peak - protected void DrawPeak(double mz, double intensity, double strokeWidth, OxyColor color, TextAnnotation annotation) + protected void DrawPeak(double mz, double intensity, double strokeWidth, OxyColor color, + TextAnnotation annotation) { // peak line var line = new LineSeries(); @@ -150,7 +154,8 @@ protected void DrawPeak(double mz, double intensity, double strokeWidth, OxyColo /// /// /// - protected void AnnotateMatchedIons(bool isBetaPeptide, List matchedFragmentIons, bool useLiteralPassedValues = false) + protected void AnnotateMatchedIons(bool isBetaPeptide, List matchedFragmentIons, + bool useLiteralPassedValues = false) { List ionsToDisplay = !MetaDrawSettings.DisplayInternalIons ? matchedFragmentIons.Where(p => p.NeutralTheoreticalProduct.SecondaryProductType == null).ToList() @@ -168,7 +173,8 @@ protected void AnnotateMatchedIons(bool isBetaPeptide, List /// matched ion to annotate /// is a beta x-linked peptide /// - protected void AnnotatePeak(MatchedFragmentIon matchedIon, bool isBetaPeptide, bool useLiteralPassedValues = false, OxyColor? ionColorNullable = null) + protected void AnnotatePeak(MatchedFragmentIon matchedIon, bool isBetaPeptide, + bool useLiteralPassedValues = false, OxyColor? ionColorNullable = null) { OxyColor ionColor; if (ionColorNullable == null) @@ -196,7 +202,8 @@ protected void AnnotatePeak(MatchedFragmentIon matchedIon, bool isBetaPeptide, b ionColor = (OxyColor)ionColorNullable; } - int i = Scan.MassSpectrum.GetClosestPeakIndex(matchedIon.NeutralTheoreticalProduct.NeutralMass.ToMz(matchedIon.Charge)); + int i = Scan.MassSpectrum.GetClosestPeakIndex( + matchedIon.NeutralTheoreticalProduct.NeutralMass.ToMz(matchedIon.Charge)); double mz = Scan.MassSpectrum.XArray[i]; double intensity = Scan.MassSpectrum.YArray[i]; @@ -221,12 +228,14 @@ protected void AnnotatePeak(MatchedFragmentIon matchedIon, bool isBetaPeptide, b prefix = "A-"; } } + var peakAnnotation = new TextAnnotation(); if (MetaDrawSettings.DisplayIonAnnotations) { string peakAnnotationText = prefix + matchedIon.NeutralTheoreticalProduct.Annotation; - if (matchedIon.NeutralTheoreticalProduct.NeutralLoss != 0 && !peakAnnotationText.Contains("-" + matchedIon.NeutralTheoreticalProduct.NeutralLoss.ToString("F2"))) + if (matchedIon.NeutralTheoreticalProduct.NeutralLoss != 0 && + !peakAnnotationText.Contains("-" + matchedIon.NeutralTheoreticalProduct.NeutralLoss.ToString("F2"))) { peakAnnotationText += "-" + matchedIon.NeutralTheoreticalProduct.NeutralLoss.ToString("F2"); } @@ -256,7 +265,9 @@ protected void AnnotatePeak(MatchedFragmentIon matchedIon, bool isBetaPeptide, b { peakAnnotation.Text = string.Empty; } - if (matchedIon.NeutralTheoreticalProduct.SecondaryProductType != null && !MetaDrawSettings.DisplayInternalIonAnnotations) //if internal fragment + + if (matchedIon.NeutralTheoreticalProduct.SecondaryProductType != null && + !MetaDrawSettings.DisplayInternalIonAnnotations) //if internal fragment { peakAnnotation.Text = string.Empty; } @@ -323,11 +334,13 @@ public void ExportPlot(string path, Bitmap combinedBitmaps, double width = 700, switch (MetaDrawSettings.ExportType) { case "Pdf": - string tempCombinedPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(path), "tempCombined.png"); + string tempCombinedPath = + System.IO.Path.Combine(System.IO.Path.GetDirectoryName(path), "tempCombined.png"); combinedBitmaps.Save(tempCombinedPath, System.Drawing.Imaging.ImageFormat.Png); PdfDocument pdfDoc = new(new PdfWriter(path)); - Document document = new(pdfDoc, new iText.Kernel.Geom.PageSize((float)width - 30, (float)height - 30)); + Document document = new(pdfDoc, + new iText.Kernel.Geom.PageSize((float)width - 30, (float)height - 30)); ImageData sequenceAndLegendImageData = ImageDataFactory.Create(tempCombinedPath); iText.Layout.Element.Image sequenceAndPtmLegendImage = new(sequenceAndLegendImageData); @@ -372,7 +385,8 @@ protected void AnnotateLibraryIons(bool isBetaPeptide, List { var matchedIon = SpectrumMatch.MatchedIons.FirstOrDefault(p => p.NeutralTheoreticalProduct.ProductType == libraryIon.NeutralTheoreticalProduct.ProductType - && p.NeutralTheoreticalProduct.FragmentNumber == libraryIon.NeutralTheoreticalProduct.FragmentNumber); + && p.NeutralTheoreticalProduct.FragmentNumber == + libraryIon.NeutralTheoreticalProduct.FragmentNumber); if (matchedIon == null) { @@ -391,11 +405,15 @@ protected void AnnotateLibraryIons(bool isBetaPeptide, List foreach (MatchedFragmentIon libraryIon in libraryIons) { - var neutralProduct = new Product(libraryIon.NeutralTheoreticalProduct.ProductType, libraryIon.NeutralTheoreticalProduct.Terminus, - libraryIon.NeutralTheoreticalProduct.NeutralMass, libraryIon.NeutralTheoreticalProduct.FragmentNumber, - libraryIon.NeutralTheoreticalProduct.AminoAcidPosition, libraryIon.NeutralTheoreticalProduct.NeutralLoss); + var neutralProduct = new Product(libraryIon.NeutralTheoreticalProduct.ProductType, + libraryIon.NeutralTheoreticalProduct.Terminus, + libraryIon.NeutralTheoreticalProduct.NeutralMass, + libraryIon.NeutralTheoreticalProduct.FragmentNumber, + libraryIon.NeutralTheoreticalProduct.AminoAcidPosition, + libraryIon.NeutralTheoreticalProduct.NeutralLoss); - mirroredLibraryIons.Add(new MatchedFragmentIon(ref neutralProduct, libraryIon.Mz, multiplier * libraryIon.Intensity, libraryIon.Charge)); + mirroredLibraryIons.Add(new MatchedFragmentIon(ref neutralProduct, libraryIon.Mz, + multiplier * libraryIon.Intensity, libraryIon.Charge)); } AnnotateMatchedIons(isBetaPeptide, mirroredLibraryIons, useLiteralPassedValues: true); @@ -408,7 +426,7 @@ protected void AnnotateLibraryIons(bool isBetaPeptide, List Model.Axes[1].LabelFormatter = DrawnSequence.YAxisLabelFormatter; } - protected void AnnotateProperties() + protected void AnnotateProperties(LibrarySpectrum librarySpectrum = null) { StringBuilder text = new StringBuilder(); if (MetaDrawSettings.SpectrumDescription["Precursor Charge: "]) @@ -417,18 +435,25 @@ protected void AnnotateProperties() text.Append(SpectrumMatch.PrecursorCharge); text.Append("\r\n"); } + if (MetaDrawSettings.SpectrumDescription["Precursor Mass: "]) { text.Append("Precursor Mass: "); text.Append(SpectrumMatch.PrecursorMass.ToString("F3")); text.Append("\r\n"); } + if (MetaDrawSettings.SpectrumDescription["Theoretical Mass: "]) { text.Append("Theoretical Mass: "); - text.Append(double.TryParse(SpectrumMatch.PeptideMonoMass, NumberStyles.Any, CultureInfo.InvariantCulture, out var monoMass) ? monoMass.ToString("F3") : SpectrumMatch.PeptideMonoMass); + text.Append( + double.TryParse(SpectrumMatch.PeptideMonoMass, NumberStyles.Any, CultureInfo.InvariantCulture, + out var monoMass) + ? monoMass.ToString("F3") + : SpectrumMatch.PeptideMonoMass); text.Append("\r\n"); } + if (MetaDrawSettings.SpectrumDescription["Protein Accession: "]) { text.Append("Protein Accession: "); @@ -438,8 +463,10 @@ protected void AnnotateProperties() } else text.Append(SpectrumMatch.ProteinAccession); + text.Append("\r\n"); } + if (SpectrumMatch.ProteinName != null && MetaDrawSettings.SpectrumDescription["Protein: "]) { text.Append("Protein: "); @@ -461,53 +488,67 @@ protected void AnnotateProperties() } else text.Append(SpectrumMatch.ProteinName); + text.Append("\r\n"); } + if (MetaDrawSettings.SpectrumDescription["Decoy/Contaminant/Target: "]) { text.Append("Decoy/Contaminant/Target: "); text.Append(SpectrumMatch.DecoyContamTarget); text.Append("\r\n"); } + if (MetaDrawSettings.SpectrumDescription["Sequence Length: "]) { text.Append("Sequence Length: "); text.Append(SpectrumMatch.BaseSeq.Length.ToString("F3").Split('.')[0]); text.Append("\r\n"); } + if (MetaDrawSettings.SpectrumDescription["Ambiguity Level: "]) { text.Append("Ambiguity Level: "); text.Append(SpectrumMatch.AmbiguityLevel); text.Append("\r\n"); } + if (MetaDrawSettings.SpectrumDescription["Spectral Angle: "]) { - text.Append("Spectral Angle: "); if (SpectrumMatch.SpectralAngle != null) - text.Append(SpectrumMatch.SpectralAngle.ToString()); - else - text.Append("N/A"); - text.Append("\r\n"); + { + text.Append("Original Spectral Angle: "); + text.Append(SpectrumMatch.SpectralAngle.ToString() + "\r\n"); + } + + if (librarySpectrum != null) + { + text.Append("Displayed Spectral Angle: "); + text.Append(librarySpectrum.CalculateSpectralAngleOnTheFly(this.matchedFragmentIons) + "\r\n"); + } } + if (MetaDrawSettings.SpectrumDescription["Score: "]) { text.Append("Score: "); text.Append(SpectrumMatch.Score.ToString("F3")); text.Append("\r\n"); } + if (MetaDrawSettings.SpectrumDescription["Q-Value: "]) { text.Append("Q-Value: "); text.Append(SpectrumMatch.QValue.ToString("F3")); text.Append("\r\n"); } + if (MetaDrawSettings.SpectrumDescription["PEP: "]) { text.Append("PEP: "); text.Append(SpectrumMatch.PEP.ToString("F3")); text.Append("\r\n"); } + if (MetaDrawSettings.SpectrumDescription["PEP Q-Value: "]) { text.Append("PEP Q-Value: "); diff --git a/MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs b/MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs index dc57e6208..95ad8e996 100644 --- a/MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs +++ b/MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs @@ -489,6 +489,7 @@ public static void WriteProteinGlycoLocalization(Dictionary<(string proteinAcces Dictionary> localizedglycans = new Dictionary>(); foreach (var item in glycoProteinParsimony.Where(p=>p.Value.IsLocalized && p.Value.MinQValue <= 0.01)) { + var key = item.Key.proteinAccession + "#" + item.Key.proteinPosition; if ( localizedglycans.ContainsKey(key)) { diff --git a/MetaMorpheus/Test/LocalizationTest.cs b/MetaMorpheus/Test/LocalizationTest.cs index afc4a3dee..a7ee32e96 100644 --- a/MetaMorpheus/Test/LocalizationTest.cs +++ b/MetaMorpheus/Test/LocalizationTest.cs @@ -24,7 +24,7 @@ public static void TestNonSpecific() DigestionParams digestionParams = new DigestionParams(protease: p.Name, maxMissedCleavages: 8, minPeptideLength: 1, maxPeptideLength: 9, initiatorMethionineBehavior: InitiatorMethionineBehavior.Retain); var peps = prot.Digest(digestionParams, new List(), new List()).ToList(); - Assert.AreEqual(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9, peps.Count); + Assert.AreEqual(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9, peps.Count); } [Test] diff --git a/MetaMorpheus/Test/MatchIonsOfAllCharges.cs b/MetaMorpheus/Test/MatchIonsOfAllCharges.cs index 2c11f92c0..3ec0ec8de 100644 --- a/MetaMorpheus/Test/MatchIonsOfAllCharges.cs +++ b/MetaMorpheus/Test/MatchIonsOfAllCharges.cs @@ -491,6 +491,27 @@ public static void TestLibraryExistAfterGPTMDsearch() Directory.Delete(thisTaskOutputFolder, true); } - + + [Test] + public static void TestLibrarySpectrumCalculateSpectralAngleOnTheFly() + { + + var librarySpectrumPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\SpectralLibrarySearch\SLSNVIAHEISHSWTGNLVTNK.msp"); + var testLibrary = new SpectralLibrary(new List { librarySpectrumPath }); + testLibrary.TryGetSpectrum("SLSNVIAHEISHSWTGNLVTNK", 3, out var spectrum); + + + string psmsPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\SpectralLibrarySearch\SLSNVIAHEISHSWTGNLVTNK.psmtsv"); + List psms = PsmTsvReader.ReadTsv(psmsPath, out List warnings).Where(p => p.AmbiguityLevel == "1").ToList(); + + var computedSpectralSimilarity = spectrum.CalculateSpectralAngleOnTheFly(psms[0].MatchedIons); + + Assert.AreEqual(1,Convert.ToDouble(computedSpectralSimilarity),0.01); + + + Assert.AreEqual("N/A", spectrum.CalculateSpectralAngleOnTheFly(new List())); + } + + } } diff --git a/MetaMorpheus/Test/Test.csproj b/MetaMorpheus/Test/Test.csproj index 65344d56a..9d8c7c956 100644 --- a/MetaMorpheus/Test/Test.csproj +++ b/MetaMorpheus/Test/Test.csproj @@ -318,6 +318,12 @@ Always + + Always + + + Always + Always diff --git a/MetaMorpheus/Test/TestData/SpectralLibrarySearch/SLSNVIAHEISHSWTGNLVTNK.msp b/MetaMorpheus/Test/TestData/SpectralLibrarySearch/SLSNVIAHEISHSWTGNLVTNK.msp new file mode 100644 index 000000000..30d3e3d4f --- /dev/null +++ b/MetaMorpheus/Test/TestData/SpectralLibrarySearch/SLSNVIAHEISHSWTGNLVTNK.msp @@ -0,0 +1,31 @@ +Name: SLSNVIAHEISHSWTGNLVTNK/3 +MW: 803.0822025412958 +Comment: Parent=803.0822025412958 RT=134.886453333333 +Num peaks: 27 +147.1129608154297 0.19090206812841462 "y1^1/0ppm" +201.12393112446262 0.9071219475995949 "b2^1/0ppm" +261.1560363769531 0.40488765485145883 "y2^1/0ppm" +288.155029296875 0.24610769649114067 "b3^1/0ppm" +362.203857421875 0.8321028636103224 "y3^1/0ppm" +402.1987609863281 0.36237424157035153 "b4^1/0ppm" +461.27154541015625 0.1836191131536558 "y4^1/0ppm" +501.2671107473324 0.37051059206811804 "b5^1/0ppm" +614.3518676757812 0.08307893960481742 "b6^1/0ppm" +745.4259628204269 0.26463215578243576 "y7^1/0ppm" +846.4698486328125 0.49593904124943955 "y8^1/0ppm" +951.48486328125 0.16425557781804745 "b9^1/0ppm" +1032.5477294921875 0.40521494332146 "y9^1/0ppm" +1064.5742437544022 0.09069648063215098 "b10^1/0ppm" +1119.5767822265625 0.467004775019097 "y10^1/0ppm" +1151.6079897591685 0.15542903817731946 "b11^1/0ppm" +1256.6319580078125 0.12269299900415566 "y11^1/0ppm" +1343.6749659568004 0.19925363244470184 "y12^1/0ppm" +688.3478905714542 0.21720372333690363 "b13^2/0ppm" +1456.7582252979032 0.1427475424336588 "y13^1/0ppm" +793.4056901862189 0.15090432616263139 "y14^2/0ppm" +861.9322387219233 0.40638375658014914 "y15^2/0ppm" +897.4506213820968 0.6999917099461964 "y16^2/0ppm" +953.9908627606557 0.9248343805526495 "y17^2/0ppm" +973.9902744497624 0.3677952426767299 "b18^2/0ppm" +736.3786027788356 0.4491412010225178 "y20^3/0ppm" +1104.0642659348136 1 "y20^2/0ppm" diff --git a/MetaMorpheus/Test/TestData/SpectralLibrarySearch/SLSNVIAHEISHSWTGNLVTNK.psmtsv b/MetaMorpheus/Test/TestData/SpectralLibrarySearch/SLSNVIAHEISHSWTGNLVTNK.psmtsv new file mode 100644 index 000000000..bb53cfde7 --- /dev/null +++ b/MetaMorpheus/Test/TestData/SpectralLibrarySearch/SLSNVIAHEISHSWTGNLVTNK.psmtsv @@ -0,0 +1,2 @@ +File Name Scan Number Scan Retention Time Num Experimental Peaks Total Ion Current Precursor Scan Number Precursor Charge Precursor MZ Precursor Mass Score Delta Score Notch Base Sequence Full Sequence Essential Sequence Ambiguity Level PSM Count (unambiguous, <0.01 q-value) Mods Mods Chemical Formulas Mods Combined Chemical Formula Num Variable Mods Missed Cleavages Peptide Monoisotopic Mass Mass Diff (Da) Mass Diff (ppm) Protein Accession Protein Name Gene Name Organism Name Identified Sequence Variations Splice Sites Contaminant Decoy Peptide Description Start and End Residues In Protein Previous Amino Acid Next Amino Acid Theoreticals Searched Decoy/Contaminant/Target Matched Ion Series Matched Ion Mass-To-Charge Ratios Matched Ion Mass Diff (Da) Matched Ion Mass Diff (Ppm) Matched Ion Intensities Matched Ion Counts Normalized Spectral Angle Localized Scores Improvement Possible Cumulative Target Cumulative Decoy QValue Cumulative Target Notch Cumulative Decoy Notch QValue Notch PEP PEP_QValue +miniA549 57 134.88645 200.00000 808852.37500 56 3.00000 803.08220 2406.22478 26.192 21.139 0 SLSNVIAHEISHSWTGNLVTNK SLSNVIAHEISHSWTGNLVTNK SLSNVIAHEISHSWTGNLVTNK 1 2 0 0 2406.22917 -0.00439 -1.83 P09960 Leukotriene A-4 hydrolase primary:LTA4H Homo sapiens N N full [289 to 310] K T T [y1+1, y2+1, y3+1, y4+1, y7+1, y8+1, y9+1, y10+1, y11+1, y12+1, y13+1, y14+2, y15+2, y16+2, y17+2, y20+3, y20+2];[b2+1, b3+1, b4+1, b5+1, b6+1, b9+1, b10+1, b11+1, b13+2, b18+2] [y1+1:147.11296, y2+1:261.15604, y3+1:362.20386, y4+1:461.27155, y7+1:745.42596, y8+1:846.46985, y9+1:1032.54773, y10+1:1119.57678, y11+1:1256.63196, y12+1:1343.67497, y13+1:1456.75823, y14+2:793.40569, y15+2:861.93224, y16+2:897.45062, y17+2:953.99086, y20+3:736.37860, y20+2:1104.06427];[b2+1:201.12393, b3+1:288.15503, b4+1:402.19876, b5+1:501.26711, b6+1:614.35187, b9+1:951.48486, b10+1:1064.57424, b11+1:1151.60799, b13+2:688.34789, b18+2:973.99027] [y1+1:0.00016, y2+1:0.00030, y3+1:0.00045, y4+1:-0.00028, y7+1:0.00568, y8+1:0.00189, y9+1:0.00046, y10+1:-0.00252, y11+1:-0.00625, y12+1:0.00473, y13+1:0.00392, y14+2:0.00721, y15+2:0.00139, y16+2:0.00104, y17+2:-0.00254, y20+3:0.00090, y20+2:0.00090];[b2+1:0.00056, b3+1:-0.00037, b4+1:0.00044, b5+1:0.00037, b6+1:0.00107, b9+1:-0.00456, b10+1:0.00076, b11+1:0.00248, b13+2:-0.00795, b18+2:0.00137] [y1+1:1.07, y2+1:1.17, y3+1:1.24, y4+1:-0.61, y7+1:7.64, y8+1:2.24, y9+1:0.44, y10+1:-2.25, y11+1:-4.98, y12+1:3.52, y13+1:2.69, y14+2:4.55, y15+2:0.81, y16+2:0.58, y17+2:-1.33, y20+3:0.41, y20+2:0.41];[b2+1:2.81, b3+1:-1.28, b4+1:1.09, b5+1:0.74, b6+1:1.74, b9+1:-4.80, b10+1:0.71, b11+1:2.15, b13+2:-5.78, b18+2:0.70] [y1+1:2874, y2+1:6095, y3+1:12527, y4+1:2764, y7+1:3984, y8+1:7466, y9+1:6100, y10+1:7031, y11+1:1847, y12+1:3000, y13+1:2149, y14+2:2272, y15+2:6118, y16+2:10538, y17+2:13923, y20+3:6762, y20+2:15055];[b2+1:13656, b3+1:3705, b4+1:5455, b5+1:5578, b6+1:1251, b9+1:2473, b10+1:1365, b11+1:2340, b13+2:3270, b18+2:5537] 27 -1.0000 1 0 0.000000 1 0 0.000000 0 0