From 831a3942d00172ddca7b180d3d82ad7e0f4ce05e Mon Sep 17 00:00:00 2001 From: nbollis Date: Mon, 8 Jan 2024 15:38:57 -0600 Subject: [PATCH 01/11] Updated Mzlib and made it so there are no errors on build --- MetaMorpheus/CMD/CMD.csproj | 2 +- MetaMorpheus/CMD/Program.cs | 1 + .../ClassicSearch/ClassicSearchEngine.cs | 3 ++- .../ClassicSearch/MiniClassicSearchEngine.cs | 2 +- MetaMorpheus/EngineLayer/CommonParameters.cs | 3 ++- .../CrosslinkSearch/CrosslinkSearchEngine.cs | 4 +++- .../CrosslinkSearch/CrosslinkSpectralMatch.cs | 2 +- .../CrosslinkSearch/CrosslinkedPeptides.cs | 3 ++- .../CrosslinkSearch/Crosslinker.cs | 1 + MetaMorpheus/EngineLayer/EngineLayer.csproj | 2 +- .../FdrAnalysis/PEPValueAnalysisGeneric.cs | 3 ++- MetaMorpheus/EngineLayer/GlobalVariables.cs | 1 + .../EngineLayer/GlycoSearch/Glycan.cs | 1 + .../EngineLayer/GlycoSearch/GlycanBox.cs | 1 + .../EngineLayer/GlycoSearch/GlycoPeptides.cs | 3 ++- .../GlycoSearch/GlycoSearchEngine.cs | 2 +- .../GlycoSearch/GlycoSpectralMatch.cs | 3 ++- .../GlycoSearch/LocalizationGraph.cs | 2 +- MetaMorpheus/EngineLayer/Gptmd/GptmdEngine.cs | 1 + .../EngineLayer/Gptmd/GptmdResults.cs | 1 + .../EngineLayer/HistogramAnalysis/Bin.cs | 1 + .../HistogramAnalysis/BinTreeStructure.cs | 2 +- .../EngineLayer/Indexing/IndexingEngine.cs | 4 +++- .../EngineLayer/Indexing/IndexingResults.cs | 2 +- .../Localization/LocalizationEngine.cs | 2 +- .../EngineLayer/MetaMorpheusEngine.cs | 11 +++++---- .../ModernSearch/ModernSearchEngine.cs | 2 +- .../NonSpecificEnzymeSearchEngine.cs | 5 +++- .../EngineLayer/PeptideSpectralMatch.cs | 4 +++- .../ProteinParsimony/ParsimonySequence.cs | 2 +- .../ProteinParsimony/ProteinGroup.cs | 1 + .../ProteinParsimonyEngine.cs | 9 +++---- .../ProteinScoringAndFdr/FdrClassifier.cs | 1 + .../ProteinScoringAndFdrEngine.cs | 4 ++-- MetaMorpheus/EngineLayer/PsmTsv/PsmFromTsv.cs | 9 +++---- .../EngineLayer/PsmTsv/PsmTsvWriter.cs | 4 +++- .../EngineLayer/Silac/SilacConversions.cs | 1 + .../CrosslinkLibrarySpectrum.cs | 2 +- .../SpectralLibrarySearch/LibrarySpectrum.cs | 2 +- .../SpectralLibrarySearch/SpectralLibrary.cs | 9 +++---- .../SpectralLibrarySearchFunction.cs | 4 ++-- .../SilacInfoForDataGrid.cs | 1 + MetaMorpheus/GUI/GUI.csproj | 2 +- MetaMorpheus/GUI/MainWindow.xaml.cs | 1 + .../MetaDraw/MetaDrawSettingsWindow.xaml.cs | 2 +- .../GUI/TaskWindows/SearchTaskWindow.xaml.cs | 20 +++++++++------- .../Views/CustomFragmentationWindow.xaml.cs | 3 ++- .../GUI/Views/CustomModWindow.xaml.cs | 1 + .../GUI/Views/SilacModificationWindow.xaml.cs | 1 + MetaMorpheus/GuiFunctions/GuiFunctions.csproj | 2 +- .../GuiFunctions/MetaDraw/DrawnSequence.cs | 2 +- .../GuiFunctions/MetaDraw/MetaDrawLogic.cs | 2 +- .../GuiFunctions/MetaDraw/MetaDrawSettings.cs | 2 +- .../MetaDraw/MetaDrawSettingsSnapshot.cs | 2 +- .../GuiFunctions/MetaDraw/PlotModelStat.cs | 2 +- .../SpectrumMatch/ChimeraSpectrumMatchPlot.cs | 2 +- .../SpectrumMatch/PeptideSpectrumMatchPlot.cs | 2 +- .../SpectrumMatch/SpectrumMatchPlot.cs | 4 ++-- .../ViewModels/IonForTreeViewModel.cs | 2 +- .../ViewModels/IonTypeForTreeViewModel.cs | 2 +- .../ViewModels/Legends/PtmLegendViewModel.cs | 1 + .../ViewModels/MetaDrawSettingsViewModel.cs | 2 +- .../CalibrationTask/CalibrationTask.cs | 3 ++- .../TaskLayer/FileSpecificParameters.cs | 2 +- MetaMorpheus/TaskLayer/GPTMDTask/GPTMDTask.cs | 1 + .../PostGlycoSearchAnalysisParameters.cs | 1 + .../PostGlycoSearchAnalysisTask.cs | 1 + MetaMorpheus/TaskLayer/MetaMorpheusTask.cs | 4 +++- MetaMorpheus/TaskLayer/PepXMLWriter.cs | 4 +++- .../TaskLayer/SearchTask/MzIdentMLWriter.cs | 2 ++ .../PostSearchAnalysisParameters.cs | 1 + .../SearchTask/PostSearchAnalysisTask.cs | 1 + .../TaskLayer/SearchTask/SearchParameters.cs | 1 + .../TaskLayer/SearchTask/SearchTask.cs | 4 +++- MetaMorpheus/TaskLayer/TaskLayer.csproj | 2 +- .../XLSearchTask/PostXLSearchAnalysisTask.cs | 1 + .../TaskLayer/XLSearchTask/WriteFile.cs | 4 +++- MetaMorpheus/Test/AddCompIonsTest.cs | 4 +++- MetaMorpheus/Test/AmbiguityTest.cs | 4 +++- MetaMorpheus/Test/AnalysisEngineTest.cs | 4 +++- MetaMorpheus/Test/BinGenerationTest.cs | 1 + MetaMorpheus/Test/CoIsolationTests.cs | 4 +++- MetaMorpheus/Test/CustomFragmentationTest.cs | 3 ++- .../Test/DigestionModificationTests.cs | 1 + MetaMorpheus/Test/EventArgsTest.cs | 3 ++- MetaMorpheus/Test/FdrTest.cs | 6 +++-- MetaMorpheus/Test/GPTMDengineTest.cs | 3 ++- MetaMorpheus/Test/IndexEngineTest.cs | 4 +++- MetaMorpheus/Test/LocalizationTest.cs | 3 ++- MetaMorpheus/Test/MatchIonsOfAllCharges.cs | 12 ++++++---- .../MetaDraw/MetaDrawSettingsAndViewsTest.cs | 4 +++- MetaMorpheus/Test/MetaDraw/MetaDrawTest.cs | 2 +- .../Test/MetaDraw/SpectrumMatchPlotTests.cs | 2 +- MetaMorpheus/Test/ModificationAnalysisTest.cs | 4 +++- .../Test/MultiProteaseParsimonyTest.cs | 22 +++++++++-------- .../Test/Multiplex_Labeling_TMT_iTRAQ.cs | 3 ++- MetaMorpheus/Test/MyPeptideTest.cs | 5 ++-- MetaMorpheus/Test/MyTaskTest.cs | 1 + MetaMorpheus/Test/ParameterTest.cs | 4 +++- MetaMorpheus/Test/ProteinGroupTest.cs | 2 ++ MetaMorpheus/Test/PsmTsvWriterTests.cs | 6 +++-- MetaMorpheus/Test/PsvTsvTest.cs | 4 ++-- MetaMorpheus/Test/QuantificationTest.cs | 5 ++-- MetaMorpheus/Test/RetentionTimeTest.cs | 1 + MetaMorpheus/Test/RobTest.cs | 4 +++- MetaMorpheus/Test/SearchEngineTests.cs | 4 +++- MetaMorpheus/Test/SearchTaskTest.cs | 4 +++- .../SearchWithPeptidesAddedInParsimony.cs | 1 + MetaMorpheus/Test/SeqCoverageTest.cs | 12 ++++++---- MetaMorpheus/Test/SilacTest.cs | 1 + .../Test/SpectralLibraryReaderTest.cs | 3 ++- MetaMorpheus/Test/SpectralRecoveryTest.cs | 1 + MetaMorpheus/Test/StefanParsimonyTest.cs | 7 +++--- MetaMorpheus/Test/Test.csproj | 2 +- MetaMorpheus/Test/TestDataFile.cs | 2 +- MetaMorpheus/Test/TestPsm.cs | 24 ++++++++++--------- MetaMorpheus/Test/TestTopDown.cs | 1 + MetaMorpheus/Test/VariantSearchTests.cs | 1 + MetaMorpheus/Test/XLSearchOutputTest.cs | 6 ++--- MetaMorpheus/Test/XLTest.cs | 4 +++- MetaMorpheus/Test/XLTestNGlyco.cs | 3 ++- MetaMorpheus/Test/XLTestOGlyco.cs | 3 ++- MetaMorpheus/Test/gptmdPrunedBdTests.cs | 5 ++-- 123 files changed, 267 insertions(+), 150 deletions(-) diff --git a/MetaMorpheus/CMD/CMD.csproj b/MetaMorpheus/CMD/CMD.csproj index 14333873c..b275d6b86 100644 --- a/MetaMorpheus/CMD/CMD.csproj +++ b/MetaMorpheus/CMD/CMD.csproj @@ -24,7 +24,7 @@ - + diff --git a/MetaMorpheus/CMD/Program.cs b/MetaMorpheus/CMD/Program.cs index 50e90956a..85fa86b12 100644 --- a/MetaMorpheus/CMD/Program.cs +++ b/MetaMorpheus/CMD/Program.cs @@ -9,6 +9,7 @@ using System.IO; using System.Linq; using System.Text.RegularExpressions; +using Omics.Modifications; using TaskLayer; namespace MetaMorpheusCommandLine diff --git a/MetaMorpheus/EngineLayer/ClassicSearch/ClassicSearchEngine.cs b/MetaMorpheus/EngineLayer/ClassicSearch/ClassicSearchEngine.cs index 3a3eb2a68..cf6a78717 100644 --- a/MetaMorpheus/EngineLayer/ClassicSearch/ClassicSearchEngine.cs +++ b/MetaMorpheus/EngineLayer/ClassicSearch/ClassicSearchEngine.cs @@ -1,12 +1,13 @@ using MassSpectrometry; using MzLibUtil; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Omics.Modifications; namespace EngineLayer.ClassicSearch { diff --git a/MetaMorpheus/EngineLayer/ClassicSearch/MiniClassicSearchEngine.cs b/MetaMorpheus/EngineLayer/ClassicSearch/MiniClassicSearchEngine.cs index 12f43ca29..6a3faca2d 100644 --- a/MetaMorpheus/EngineLayer/ClassicSearch/MiniClassicSearchEngine.cs +++ b/MetaMorpheus/EngineLayer/ClassicSearch/MiniClassicSearchEngine.cs @@ -1,7 +1,7 @@ using MassSpectrometry; using MassSpectrometry.MzSpectra; using MzLibUtil; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; diff --git a/MetaMorpheus/EngineLayer/CommonParameters.cs b/MetaMorpheus/EngineLayer/CommonParameters.cs index 3cc49cb50..f39ff3394 100644 --- a/MetaMorpheus/EngineLayer/CommonParameters.cs +++ b/MetaMorpheus/EngineLayer/CommonParameters.cs @@ -1,10 +1,11 @@ using MassSpectrometry; using MzLibUtil; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Reflection; +using Omics.Fragmentation.Peptide; namespace EngineLayer { diff --git a/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkSearchEngine.cs b/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkSearchEngine.cs index 51b0cb0f1..48ea48c44 100644 --- a/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkSearchEngine.cs +++ b/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkSearchEngine.cs @@ -2,13 +2,15 @@ using MassSpectrometry; using MzLibUtil; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Omics.Fragmentation; +using Omics.Modifications; namespace EngineLayer.CrosslinkSearch { diff --git a/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkSpectralMatch.cs b/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkSpectralMatch.cs index 88cbc93b3..2a65083f2 100644 --- a/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkSpectralMatch.cs +++ b/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkSpectralMatch.cs @@ -1,5 +1,5 @@ using Easy.Common.Extensions; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; diff --git a/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkedPeptides.cs b/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkedPeptides.cs index 1d36753a2..ef293057e 100644 --- a/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkedPeptides.cs +++ b/MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkedPeptides.cs @@ -1,10 +1,11 @@ using MassSpectrometry; using Proteomics; -using Proteomics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Linq; +using Omics.Fragmentation; +using Omics.Modifications; namespace EngineLayer.CrosslinkSearch { diff --git a/MetaMorpheus/EngineLayer/CrosslinkSearch/Crosslinker.cs b/MetaMorpheus/EngineLayer/CrosslinkSearch/Crosslinker.cs index 9a9bad96f..ad59d2e17 100644 --- a/MetaMorpheus/EngineLayer/CrosslinkSearch/Crosslinker.cs +++ b/MetaMorpheus/EngineLayer/CrosslinkSearch/Crosslinker.cs @@ -2,6 +2,7 @@ using System.IO; using MassSpectrometry; using System.Globalization; +using Omics.Modifications; using Proteomics; namespace EngineLayer diff --git a/MetaMorpheus/EngineLayer/EngineLayer.csproj b/MetaMorpheus/EngineLayer/EngineLayer.csproj index a0f70909e..c072889ac 100644 --- a/MetaMorpheus/EngineLayer/EngineLayer.csproj +++ b/MetaMorpheus/EngineLayer/EngineLayer.csproj @@ -21,7 +21,7 @@ - + diff --git a/MetaMorpheus/EngineLayer/FdrAnalysis/PEPValueAnalysisGeneric.cs b/MetaMorpheus/EngineLayer/FdrAnalysis/PEPValueAnalysisGeneric.cs index 7b795feac..1a1ccc6af 100644 --- a/MetaMorpheus/EngineLayer/FdrAnalysis/PEPValueAnalysisGeneric.cs +++ b/MetaMorpheus/EngineLayer/FdrAnalysis/PEPValueAnalysisGeneric.cs @@ -5,7 +5,7 @@ using Microsoft.ML; using Microsoft.ML.Data; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using Proteomics.RetentionTimePrediction; using System; @@ -15,6 +15,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using Omics.Modifications; namespace EngineLayer { diff --git a/MetaMorpheus/EngineLayer/GlobalVariables.cs b/MetaMorpheus/EngineLayer/GlobalVariables.cs index 5d27c34f1..96efe5960 100644 --- a/MetaMorpheus/EngineLayer/GlobalVariables.cs +++ b/MetaMorpheus/EngineLayer/GlobalVariables.cs @@ -11,6 +11,7 @@ using System.Linq; using System.Runtime.InteropServices; using System.Text; +using Omics.Modifications; using TopDownProteomics; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/EngineLayer/GlycoSearch/Glycan.cs b/MetaMorpheus/EngineLayer/GlycoSearch/Glycan.cs index f7a7c21a4..0ce4f1361 100644 --- a/MetaMorpheus/EngineLayer/GlycoSearch/Glycan.cs +++ b/MetaMorpheus/EngineLayer/GlycoSearch/Glycan.cs @@ -5,6 +5,7 @@ using System; using Proteomics; using MassSpectrometry; +using Omics.Modifications; namespace EngineLayer { diff --git a/MetaMorpheus/EngineLayer/GlycoSearch/GlycanBox.cs b/MetaMorpheus/EngineLayer/GlycoSearch/GlycanBox.cs index e7d5200cf..9a1d0f5d2 100644 --- a/MetaMorpheus/EngineLayer/GlycoSearch/GlycanBox.cs +++ b/MetaMorpheus/EngineLayer/GlycoSearch/GlycanBox.cs @@ -5,6 +5,7 @@ using System; using Proteomics; using MassSpectrometry; +using Omics.Modifications; namespace EngineLayer { diff --git a/MetaMorpheus/EngineLayer/GlycoSearch/GlycoPeptides.cs b/MetaMorpheus/EngineLayer/GlycoSearch/GlycoPeptides.cs index 9a63b3d5f..9a90f79ce 100644 --- a/MetaMorpheus/EngineLayer/GlycoSearch/GlycoPeptides.cs +++ b/MetaMorpheus/EngineLayer/GlycoSearch/GlycoPeptides.cs @@ -1,11 +1,12 @@ using MassSpectrometry; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Linq; using Chemistry; +using Omics.Modifications; namespace EngineLayer.GlycoSearch { diff --git a/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSearchEngine.cs b/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSearchEngine.cs index c6f30f69b..3a859f859 100644 --- a/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSearchEngine.cs +++ b/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSearchEngine.cs @@ -1,7 +1,7 @@ using EngineLayer.ModernSearch; using MzLibUtil; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; diff --git a/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs b/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs index 0b32f1001..b4e4bbdf3 100644 --- a/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs +++ b/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs @@ -1,9 +1,10 @@ -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Linq; using System.Text; +using Omics.Modifications; using Proteomics; namespace EngineLayer.GlycoSearch diff --git a/MetaMorpheus/EngineLayer/GlycoSearch/LocalizationGraph.cs b/MetaMorpheus/EngineLayer/GlycoSearch/LocalizationGraph.cs index 44a470fcf..3d56c5cd0 100644 --- a/MetaMorpheus/EngineLayer/GlycoSearch/LocalizationGraph.cs +++ b/MetaMorpheus/EngineLayer/GlycoSearch/LocalizationGraph.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using Proteomics; using MzLibUtil; diff --git a/MetaMorpheus/EngineLayer/Gptmd/GptmdEngine.cs b/MetaMorpheus/EngineLayer/Gptmd/GptmdEngine.cs index 71b103a29..a4dcfff62 100644 --- a/MetaMorpheus/EngineLayer/Gptmd/GptmdEngine.cs +++ b/MetaMorpheus/EngineLayer/Gptmd/GptmdEngine.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Omics.Modifications; namespace EngineLayer.Gptmd { diff --git a/MetaMorpheus/EngineLayer/Gptmd/GptmdResults.cs b/MetaMorpheus/EngineLayer/Gptmd/GptmdResults.cs index 797c4249e..1f457d4e5 100644 --- a/MetaMorpheus/EngineLayer/Gptmd/GptmdResults.cs +++ b/MetaMorpheus/EngineLayer/Gptmd/GptmdResults.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Omics.Modifications; namespace EngineLayer.Gptmd { diff --git a/MetaMorpheus/EngineLayer/HistogramAnalysis/Bin.cs b/MetaMorpheus/EngineLayer/HistogramAnalysis/Bin.cs index 88abe91e8..c1c81590b 100644 --- a/MetaMorpheus/EngineLayer/HistogramAnalysis/Bin.cs +++ b/MetaMorpheus/EngineLayer/HistogramAnalysis/Bin.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using Omics.Modifications; namespace EngineLayer.HistogramAnalysis { diff --git a/MetaMorpheus/EngineLayer/HistogramAnalysis/BinTreeStructure.cs b/MetaMorpheus/EngineLayer/HistogramAnalysis/BinTreeStructure.cs index f74e35e7c..8da75929d 100644 --- a/MetaMorpheus/EngineLayer/HistogramAnalysis/BinTreeStructure.cs +++ b/MetaMorpheus/EngineLayer/HistogramAnalysis/BinTreeStructure.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -using Proteomics.Fragmentation; +using Omics.Fragmentation; namespace EngineLayer.HistogramAnalysis { diff --git a/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs b/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs index 9a580f38e..3b2817b71 100644 --- a/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs +++ b/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs @@ -1,7 +1,7 @@ using Chemistry; using EngineLayer.NonSpecificEnzymeSearch; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; @@ -9,6 +9,8 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using Omics.Fragmentation.Peptide; +using Omics.Modifications; using UsefulProteomicsDatabases; namespace EngineLayer.Indexing diff --git a/MetaMorpheus/EngineLayer/Indexing/IndexingResults.cs b/MetaMorpheus/EngineLayer/Indexing/IndexingResults.cs index 35c87d958..5f926c3a8 100644 --- a/MetaMorpheus/EngineLayer/Indexing/IndexingResults.cs +++ b/MetaMorpheus/EngineLayer/Indexing/IndexingResults.cs @@ -1,4 +1,4 @@ -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System.Collections.Generic; using System.Text; diff --git a/MetaMorpheus/EngineLayer/Localization/LocalizationEngine.cs b/MetaMorpheus/EngineLayer/Localization/LocalizationEngine.cs index d336c3a13..ed0662d46 100644 --- a/MetaMorpheus/EngineLayer/Localization/LocalizationEngine.cs +++ b/MetaMorpheus/EngineLayer/Localization/LocalizationEngine.cs @@ -1,5 +1,5 @@ using MassSpectrometry; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System.Collections.Concurrent; using System.Collections.Generic; diff --git a/MetaMorpheus/EngineLayer/MetaMorpheusEngine.cs b/MetaMorpheus/EngineLayer/MetaMorpheusEngine.cs index 8afbc1647..4569b5367 100644 --- a/MetaMorpheus/EngineLayer/MetaMorpheusEngine.cs +++ b/MetaMorpheus/EngineLayer/MetaMorpheusEngine.cs @@ -2,7 +2,7 @@ using MassSpectrometry; using Microsoft.ML.Trainers.FastTree; using MzLibUtil; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Concurrent; @@ -10,6 +10,7 @@ using System.Diagnostics; using System.Linq; using System.Threading.Tasks; +using Omics.Fragmentation; namespace EngineLayer { @@ -162,7 +163,7 @@ public static List MatchFragmentIons(Ms2ScanWithSpecificMass if (commonParameters.ProductMassTolerance.Within(scan.TheScan.MassSpectrum.XArray[closestMzIndex], theoreticalFragmentMz)) { - matchedFragmentIons.Add(new MatchedFragmentIon(ref product, theoreticalFragmentMz, scan.TheScan.MassSpectrum.YArray[closestMzIndex], 1)); + matchedFragmentIons.Add(new MatchedFragmentIon(product, theoreticalFragmentMz, scan.TheScan.MassSpectrum.YArray[closestMzIndex], 1)); } } @@ -192,7 +193,7 @@ public static List MatchFragmentIons(Ms2ScanWithSpecificMass // is the mass error acceptable? if (closestExperimentalMass != null && commonParameters.ProductMassTolerance.Within(closestExperimentalMass.MonoisotopicMass, product.NeutralMass) && closestExperimentalMass.Charge <= scan.PrecursorCharge)//TODO apply this filter before picking the envelope { - matchedFragmentIons.Add(new MatchedFragmentIon(ref product, closestExperimentalMass.MonoisotopicMass.ToMz(closestExperimentalMass.Charge), + matchedFragmentIons.Add(new MatchedFragmentIon(product, closestExperimentalMass.MonoisotopicMass.ToMz(closestExperimentalMass.Charge), closestExperimentalMass.Peaks.First().intensity, closestExperimentalMass.Charge)); } } @@ -222,7 +223,7 @@ public static List MatchFragmentIons(Ms2ScanWithSpecificMass //found the peak, but we don't want to save that m/z because it's the complementary of the observed ion that we "added". Need to create a fake ion instead. double mz = (scan.PrecursorMass + protonMassShift - closestExperimentalMass.MonoisotopicMass).ToMz(closestExperimentalMass.Charge); - matchedFragmentIons.Add(new MatchedFragmentIon(ref product, mz, closestExperimentalMass.TotalIntensity, closestExperimentalMass.Charge)); + matchedFragmentIons.Add(new MatchedFragmentIon(product, mz, closestExperimentalMass.TotalIntensity, closestExperimentalMass.Charge)); } } } @@ -266,7 +267,7 @@ private static List MatchFragmentIonsOfAllCharges(Ms2ScanWit if (x != null && !ions.Contains(ion) && commonParameters.ProductMassTolerance.Within(x.MonoisotopicMass, product.NeutralMass) && x.Charge <= scan.PrecursorCharge)//TODO apply this filter before picking the envelope { Product temProduct = product; - matchedFragmentIons.Add(new MatchedFragmentIon(ref temProduct, x.MonoisotopicMass.ToMz(x.Charge), + matchedFragmentIons.Add(new MatchedFragmentIon(temProduct, x.MonoisotopicMass.ToMz(x.Charge), x.Peaks.First().intensity, x.Charge)); ions.Add(ion); diff --git a/MetaMorpheus/EngineLayer/ModernSearch/ModernSearchEngine.cs b/MetaMorpheus/EngineLayer/ModernSearch/ModernSearchEngine.cs index 0275879c9..8bf1666cf 100644 --- a/MetaMorpheus/EngineLayer/ModernSearch/ModernSearchEngine.cs +++ b/MetaMorpheus/EngineLayer/ModernSearch/ModernSearchEngine.cs @@ -1,6 +1,6 @@ using Chemistry; using MassSpectrometry; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; diff --git a/MetaMorpheus/EngineLayer/NonSpecificEnzymeSearch/NonSpecificEnzymeSearchEngine.cs b/MetaMorpheus/EngineLayer/NonSpecificEnzymeSearch/NonSpecificEnzymeSearchEngine.cs index 1b211f51b..b35eb8f15 100644 --- a/MetaMorpheus/EngineLayer/NonSpecificEnzymeSearch/NonSpecificEnzymeSearchEngine.cs +++ b/MetaMorpheus/EngineLayer/NonSpecificEnzymeSearch/NonSpecificEnzymeSearchEngine.cs @@ -2,7 +2,7 @@ using EngineLayer.FdrAnalysis; using EngineLayer.ModernSearch; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using MassSpectrometry; @@ -10,6 +10,9 @@ using System.Linq; using System.Threading.Tasks; using MzLibUtil; +using Omics.Digestion; +using Omics.Fragmentation.Peptide; +using Omics.Modifications; namespace EngineLayer.NonSpecificEnzymeSearch { diff --git a/MetaMorpheus/EngineLayer/PeptideSpectralMatch.cs b/MetaMorpheus/EngineLayer/PeptideSpectralMatch.cs index abe52ebf1..ba65d0c1a 100644 --- a/MetaMorpheus/EngineLayer/PeptideSpectralMatch.cs +++ b/MetaMorpheus/EngineLayer/PeptideSpectralMatch.cs @@ -3,13 +3,15 @@ using EngineLayer.FdrAnalysis; using MassSpectrometry; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; using System.Runtime.CompilerServices; using Easy.Common.Extensions; +using Omics; +using Omics.Modifications; using Proteomics.AminoAcidPolymer; using ThermoFisher.CommonCore.Data; diff --git a/MetaMorpheus/EngineLayer/ProteinParsimony/ParsimonySequence.cs b/MetaMorpheus/EngineLayer/ProteinParsimony/ParsimonySequence.cs index 053b8436d..64d4f7b5f 100644 --- a/MetaMorpheus/EngineLayer/ProteinParsimony/ParsimonySequence.cs +++ b/MetaMorpheus/EngineLayer/ProteinParsimony/ParsimonySequence.cs @@ -7,7 +7,7 @@ internal class ParsimonySequence public ParsimonySequence(PeptideWithSetModifications pwsm, bool TreatModPeptidesAsDifferentPeptides) { Sequence = TreatModPeptidesAsDifferentPeptides ? pwsm.FullSequence : pwsm.BaseSequence; - Protease = pwsm.DigestionParams.Protease; + Protease = pwsm.DigestionParams.DigestionAgent as Protease ?? throw new MetaMorpheusException("Digestion agent is not of type protease"); } public string Sequence { get; } diff --git a/MetaMorpheus/EngineLayer/ProteinParsimony/ProteinGroup.cs b/MetaMorpheus/EngineLayer/ProteinParsimony/ProteinGroup.cs index 48173d5db..b8252a28c 100644 --- a/MetaMorpheus/EngineLayer/ProteinParsimony/ProteinGroup.cs +++ b/MetaMorpheus/EngineLayer/ProteinParsimony/ProteinGroup.cs @@ -5,6 +5,7 @@ using System.IO; using System.Linq; using System.Text; +using Omics.Modifications; using ThermoFisher.CommonCore.Data; namespace EngineLayer diff --git a/MetaMorpheus/EngineLayer/ProteinParsimony/ProteinParsimonyEngine.cs b/MetaMorpheus/EngineLayer/ProteinParsimony/ProteinParsimonyEngine.cs index d94696eef..6139fcd7c 100644 --- a/MetaMorpheus/EngineLayer/ProteinParsimony/ProteinParsimonyEngine.cs +++ b/MetaMorpheus/EngineLayer/ProteinParsimony/ProteinParsimonyEngine.cs @@ -1,11 +1,12 @@ using EngineLayer.ProteinParsimony; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using IDigestionParams = Omics.Digestion.IDigestionParams; namespace EngineLayer { @@ -156,8 +157,8 @@ private List RunProteinParsimonyEngine() // this gets the digestion info for all of the peptide-protein associations that should exist var proteinToPeptideInfo = new Dictionary(); + (IDigestionParams DigestParams, int OneBasedStart, int OneBasedEnd, int MissedCleavages, int Notch, + Omics.Digestion.CleavageSpecificity CleavageSpecificity)>(); foreach (PeptideSpectralMatch psm in baseSequence.Value) { @@ -218,7 +219,7 @@ private List RunProteinParsimonyEngine() } // Parsimony stage 1: add proteins with unique peptides (for each protease) - var peptidesGroupedByProtease = _fdrFilteredPeptides.GroupBy(p => p.DigestionParams.Protease); + var peptidesGroupedByProtease = _fdrFilteredPeptides.GroupBy(p => p.DigestionParams.DigestionAgent); foreach (var peptidesForThisProtease in peptidesGroupedByProtease) { Dictionary> peptideSequenceToProteinsForThisProtease = new Dictionary>(); diff --git a/MetaMorpheus/EngineLayer/ProteinScoringAndFdr/FdrClassifier.cs b/MetaMorpheus/EngineLayer/ProteinScoringAndFdr/FdrClassifier.cs index 115853f19..dce5762a2 100644 --- a/MetaMorpheus/EngineLayer/ProteinScoringAndFdr/FdrClassifier.cs +++ b/MetaMorpheus/EngineLayer/ProteinScoringAndFdr/FdrClassifier.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Text; +using Omics.Digestion; namespace EngineLayer { diff --git a/MetaMorpheus/EngineLayer/ProteinScoringAndFdr/ProteinScoringAndFdrEngine.cs b/MetaMorpheus/EngineLayer/ProteinScoringAndFdr/ProteinScoringAndFdrEngine.cs index 52c507589..28924565d 100644 --- a/MetaMorpheus/EngineLayer/ProteinScoringAndFdr/ProteinScoringAndFdrEngine.cs +++ b/MetaMorpheus/EngineLayer/ProteinScoringAndFdr/ProteinScoringAndFdrEngine.cs @@ -91,8 +91,8 @@ private void ScoreProteinGroups(List proteinGroups, IEnumerable(p.AllPeptides.Select(x => x.FullSequence + x.DigestionParams.Protease)); - var seqs2 = new HashSet(pg[i].AllPeptides.Select(x => x.FullSequence + x.DigestionParams.Protease)); + var seqs1 = new HashSet(p.AllPeptides.Select(x => x.FullSequence + x.DigestionParams.DigestionAgent)); + var seqs2 = new HashSet(pg[i].AllPeptides.Select(x => x.FullSequence + x.DigestionParams.DigestionAgent)); if (p != pg[i] && seqs1.SetEquals(seqs2)) { diff --git a/MetaMorpheus/EngineLayer/PsmTsv/PsmFromTsv.cs b/MetaMorpheus/EngineLayer/PsmTsv/PsmFromTsv.cs index 383d98fe8..92ca7a74b 100644 --- a/MetaMorpheus/EngineLayer/PsmTsv/PsmFromTsv.cs +++ b/MetaMorpheus/EngineLayer/PsmTsv/PsmFromTsv.cs @@ -1,5 +1,4 @@ using Chemistry; -using Proteomics.Fragmentation; using System; using System.Collections.Generic; using System.Globalization; @@ -10,6 +9,8 @@ using Easy.Common.Extensions; using System.Text; using MathNet.Numerics; +using Omics.Fragmentation; +using Omics.Fragmentation.Peptide; namespace EngineLayer { @@ -511,7 +512,7 @@ private static List ReadFragmentIonsFromString(string matche secondaryProductType, secondaryFragmentNumber); - matchedIons.Add(new MatchedFragmentIon(ref theoreticalProduct, mz, intensity, z)); + matchedIons.Add(new MatchedFragmentIon(theoreticalProduct, mz, intensity, z)); } } return matchedIons; @@ -629,7 +630,7 @@ public LibrarySpectrum ToLibrarySpectrum() foreach (MatchedFragmentIon ion in this.MatchedIons) { Product product = new Product(ion.NeutralTheoreticalProduct.ProductType, ion.NeutralTheoreticalProduct.Terminus, ion.NeutralTheoreticalProduct.NeutralMass, ion.NeutralTheoreticalProduct.FragmentNumber, ion.NeutralTheoreticalProduct.AminoAcidPosition, ion.NeutralTheoreticalProduct.NeutralLoss); - fragments.Add(new MatchedFragmentIon(ref product, ion.Mz, ion.Intensity / matchedIonIntensitySum, ion.Charge)); + fragments.Add(new MatchedFragmentIon(product, ion.Mz, ion.Intensity / matchedIonIntensitySum, ion.Charge)); } double retentionTime = RetentionTime ?? -1; @@ -639,7 +640,7 @@ public LibrarySpectrum ToLibrarySpectrum() foreach(var ion in BetaPeptideMatchedIons) { Product product = new Product(ion.NeutralTheoreticalProduct.ProductType, ion.NeutralTheoreticalProduct.Terminus, ion.NeutralTheoreticalProduct.NeutralMass, ion.NeutralTheoreticalProduct.FragmentNumber, ion.NeutralTheoreticalProduct.AminoAcidPosition, ion.NeutralTheoreticalProduct.NeutralLoss); - betaFragments.Add(new MatchedFragmentIon(ref product, ion.Mz, ion.Intensity / matchedIonIntensitySum, ion.Charge)); + betaFragments.Add(new MatchedFragmentIon(product, ion.Mz, ion.Intensity / matchedIonIntensitySum, ion.Charge)); } string uniqueSequence = UniqueSequence ?? FullSequence + BetaPeptideFullSequence; return new CrosslinkLibrarySpectrum(uniqueSequence, PrecursorMz, PrecursorCharge, fragments, retentionTime, betaFragments); diff --git a/MetaMorpheus/EngineLayer/PsmTsv/PsmTsvWriter.cs b/MetaMorpheus/EngineLayer/PsmTsv/PsmTsvWriter.cs index 509af5e42..fa2dfbb54 100644 --- a/MetaMorpheus/EngineLayer/PsmTsv/PsmTsvWriter.cs +++ b/MetaMorpheus/EngineLayer/PsmTsv/PsmTsvWriter.cs @@ -1,6 +1,6 @@ using Chemistry; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; @@ -8,6 +8,8 @@ using System.IO; using System.Linq; using System.Text; +using Omics; +using Omics.Modifications; namespace EngineLayer { diff --git a/MetaMorpheus/EngineLayer/Silac/SilacConversions.cs b/MetaMorpheus/EngineLayer/Silac/SilacConversions.cs index 872386832..5b7a90dbe 100644 --- a/MetaMorpheus/EngineLayer/Silac/SilacConversions.cs +++ b/MetaMorpheus/EngineLayer/Silac/SilacConversions.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Omics.Modifications; namespace EngineLayer { diff --git a/MetaMorpheus/EngineLayer/SpectralLibrarySearch/CrosslinkLibrarySpectrum.cs b/MetaMorpheus/EngineLayer/SpectralLibrarySearch/CrosslinkLibrarySpectrum.cs index 2c84683ab..b2985e658 100644 --- a/MetaMorpheus/EngineLayer/SpectralLibrarySearch/CrosslinkLibrarySpectrum.cs +++ b/MetaMorpheus/EngineLayer/SpectralLibrarySearch/CrosslinkLibrarySpectrum.cs @@ -1,4 +1,4 @@ -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.Linq; diff --git a/MetaMorpheus/EngineLayer/SpectralLibrarySearch/LibrarySpectrum.cs b/MetaMorpheus/EngineLayer/SpectralLibrarySearch/LibrarySpectrum.cs index 63d857054..4311a71de 100644 --- a/MetaMorpheus/EngineLayer/SpectralLibrarySearch/LibrarySpectrum.cs +++ b/MetaMorpheus/EngineLayer/SpectralLibrarySearch/LibrarySpectrum.cs @@ -1,4 +1,4 @@ -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/MetaMorpheus/EngineLayer/SpectralLibrarySearch/SpectralLibrary.cs b/MetaMorpheus/EngineLayer/SpectralLibrarySearch/SpectralLibrary.cs index de68ddefa..477f9c092 100644 --- a/MetaMorpheus/EngineLayer/SpectralLibrarySearch/SpectralLibrary.cs +++ b/MetaMorpheus/EngineLayer/SpectralLibrarySearch/SpectralLibrary.cs @@ -1,6 +1,6 @@ using Chemistry; using MzLibUtil; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.Globalization; @@ -10,6 +10,7 @@ using System.Text; using System.Text.RegularExpressions; using Easy.Common.Extensions; +using Omics.Fragmentation.Peptide; using ThermoFisher.CommonCore.Data.Business; namespace EngineLayer @@ -442,7 +443,7 @@ private LibrarySpectrum ReadLibrarySpectrum_pDeep(StreamReader reader, bool only //TODO: figure out amino acid position var product = new Product(peakProductType, terminus, experMz, fragmentNumber, 0, 0); - matchedFragmentIons.Add(new MatchedFragmentIon(ref product, experMz, experIntensity, fragmentCharge)); + matchedFragmentIons.Add(new MatchedFragmentIon(product, experMz, experIntensity, fragmentCharge)); } } @@ -590,11 +591,11 @@ public static MatchedFragmentIon ReadFragmentIon(string fragmentIonLine, char[] { int peptideLength = peptideSequence.IsNotNullOrEmptyOrWhiteSpace() ? peptideSequence.Length : 25; // Arbitrary default peptide length product = new Product(peakProductType, terminus, experMz.ToMass(fragmentCharge), fragmentNumber, - aminoAcidPosition: terminus == FragmentationTerminus.N ? fragmentNumber : peptideLength - fragmentNumber, + residuePosition: terminus == FragmentationTerminus.N ? fragmentNumber : peptideLength - fragmentNumber, neutralLoss); } - return new MatchedFragmentIon(ref product, experMz, experIntensity, fragmentCharge); + return new MatchedFragmentIon(product, experMz, experIntensity, fragmentCharge); } private void IndexSpectralLibrary(string path) diff --git a/MetaMorpheus/EngineLayer/SpectralLibrarySearch/SpectralLibrarySearchFunction.cs b/MetaMorpheus/EngineLayer/SpectralLibrarySearch/SpectralLibrarySearchFunction.cs index 579853e05..3120e9441 100644 --- a/MetaMorpheus/EngineLayer/SpectralLibrarySearch/SpectralLibrarySearchFunction.cs +++ b/MetaMorpheus/EngineLayer/SpectralLibrarySearch/SpectralLibrarySearchFunction.cs @@ -1,6 +1,6 @@ using Chemistry; using MassSpectrometry; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.Linq; @@ -95,7 +95,7 @@ public static List GetDecoyLibrarySpectrumFromTargetByRevers { double decoyFragmentMz = decoyPeptideTheorIon.NeutralMass.ToMz(targetIon.Charge); Product temProduct = decoyPeptideTheorIon; - decoyFragmentIons.Add(new MatchedFragmentIon(ref temProduct, decoyFragmentMz, targetIon.Intensity, targetIon.Charge)); + decoyFragmentIons.Add(new MatchedFragmentIon(temProduct, decoyFragmentMz, targetIon.Intensity, targetIon.Charge)); } } } diff --git a/MetaMorpheus/GUI/ForDisplayingInDataGrids/SilacInfoForDataGrid.cs b/MetaMorpheus/GUI/ForDisplayingInDataGrids/SilacInfoForDataGrid.cs index 057bdf1fc..fbacda228 100644 --- a/MetaMorpheus/GUI/ForDisplayingInDataGrids/SilacInfoForDataGrid.cs +++ b/MetaMorpheus/GUI/ForDisplayingInDataGrids/SilacInfoForDataGrid.cs @@ -1,6 +1,7 @@ using Chemistry; using Proteomics; using System.Collections.Generic; +using Omics.Modifications; namespace MetaMorpheusGUI { diff --git a/MetaMorpheus/GUI/GUI.csproj b/MetaMorpheus/GUI/GUI.csproj index 64b1a617c..d4de3f8c0 100644 --- a/MetaMorpheus/GUI/GUI.csproj +++ b/MetaMorpheus/GUI/GUI.csproj @@ -55,7 +55,7 @@ - + diff --git a/MetaMorpheus/GUI/MainWindow.xaml.cs b/MetaMorpheus/GUI/MainWindow.xaml.cs index df152a3c3..db8f7bd28 100644 --- a/MetaMorpheus/GUI/MainWindow.xaml.cs +++ b/MetaMorpheus/GUI/MainWindow.xaml.cs @@ -17,6 +17,7 @@ using System.Windows.Documents; using System.Windows.Input; using System.Windows.Navigation; +using Omics.Modifications; using TaskLayer; namespace MetaMorpheusGUI diff --git a/MetaMorpheus/GUI/MetaDraw/MetaDrawSettingsWindow.xaml.cs b/MetaMorpheus/GUI/MetaDraw/MetaDrawSettingsWindow.xaml.cs index 192e11ba7..fda4dbd2a 100644 --- a/MetaMorpheus/GUI/MetaDraw/MetaDrawSettingsWindow.xaml.cs +++ b/MetaMorpheus/GUI/MetaDraw/MetaDrawSettingsWindow.xaml.cs @@ -3,7 +3,7 @@ using GuiFunctions; using Nett; using OxyPlot; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/MetaMorpheus/GUI/TaskWindows/SearchTaskWindow.xaml.cs b/MetaMorpheus/GUI/TaskWindows/SearchTaskWindow.xaml.cs index c51c58b8b..73567143f 100644 --- a/MetaMorpheus/GUI/TaskWindows/SearchTaskWindow.xaml.cs +++ b/MetaMorpheus/GUI/TaskWindows/SearchTaskWindow.xaml.cs @@ -2,7 +2,7 @@ using MassSpectrometry; using MzLibUtil; using Nett; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; @@ -19,6 +19,8 @@ using GuiFunctions; using Proteomics; using System.Threading.Tasks; +using Omics.Digestion; +using Omics.Modifications; namespace MetaMorpheusGUI { @@ -205,7 +207,7 @@ private void UpdateFieldsFromTask(SearchTask task) SilacInfoForDataGrid infoToAdd = new SilacInfoForDataGrid(startLabel, SilacModificationWindow.ExperimentType.Start); if (startLabel.AdditionalLabels != null) { - foreach (Proteomics.SilacLabel additionalLabel in startLabel.AdditionalLabels) + foreach (SilacLabel additionalLabel in startLabel.AdditionalLabels) { infoToAdd.AddAdditionalLabel(new SilacInfoForDataGrid(additionalLabel, SilacModificationWindow.ExperimentType.Start)); } @@ -222,7 +224,7 @@ private void UpdateFieldsFromTask(SearchTask task) SilacInfoForDataGrid infoToAdd = new SilacInfoForDataGrid(endLabel, SilacModificationWindow.ExperimentType.End); if (endLabel.AdditionalLabels != null) { - foreach (Proteomics.SilacLabel additionalLabel in endLabel.AdditionalLabels) + foreach (SilacLabel additionalLabel in endLabel.AdditionalLabels) { infoToAdd.AddAdditionalLabel(new SilacInfoForDataGrid(additionalLabel, SilacModificationWindow.ExperimentType.End)); } @@ -238,13 +240,13 @@ private void UpdateFieldsFromTask(SearchTask task) else if (task.SearchParameters.SilacLabels != null && task.SearchParameters.SilacLabels.Count != 0) { CheckBoxSILAC.IsChecked = true; - List labels = task.SearchParameters.SilacLabels; - foreach (Proteomics.SilacLabel label in labels) + List labels = task.SearchParameters.SilacLabels; + foreach (SilacLabel label in labels) { SilacInfoForDataGrid infoToAdd = new SilacInfoForDataGrid(label, SilacModificationWindow.ExperimentType.Multiplex); if (label.AdditionalLabels != null) { - foreach (Proteomics.SilacLabel additionalLabel in label.AdditionalLabels) + foreach (SilacLabel additionalLabel in label.AdditionalLabels) { infoToAdd.AddAdditionalLabel(new SilacInfoForDataGrid(additionalLabel, SilacModificationWindow.ExperimentType.Multiplex)); } @@ -1093,7 +1095,7 @@ private void OnClosing(object sender, CancelEventArgs e) CustomFragmentationWindow.Close(); } - private static Proteomics.SilacLabel ConvertSilacDataGridInfoToSilacLabel(SilacInfoForDataGrid info) + private static SilacLabel ConvertSilacDataGridInfoToSilacLabel(SilacInfoForDataGrid info) { if (info == null) { @@ -1101,7 +1103,7 @@ private static Proteomics.SilacLabel ConvertSilacDataGridInfoToSilacLabel(SilacI } else { - Proteomics.SilacLabel label = info.SilacLabel[0]; + SilacLabel label = info.SilacLabel[0]; //This is needed to prevent double adding of additional labels. //A quick test is to create a silac condition with two labels, save, reopen the task, save, and reopen again. //Without this line, the second label will be doubled. Example: (K+8)&(R+10)&(R+10) @@ -1210,7 +1212,7 @@ private void SilacUpdates(out string error) //if they're all multiplex if (StaticSilacLabelsObservableCollection.All(x => x.LabelType == SilacModificationWindow.ExperimentType.Multiplex)) { - List labelsToSave = new List(); + List labelsToSave = new List(); foreach (SilacInfoForDataGrid info in StaticSilacLabelsObservableCollection) { labelsToSave.Add(ConvertSilacDataGridInfoToSilacLabel(info)); diff --git a/MetaMorpheus/GUI/Views/CustomFragmentationWindow.xaml.cs b/MetaMorpheus/GUI/Views/CustomFragmentationWindow.xaml.cs index 8a616e1fe..23de0c9fb 100644 --- a/MetaMorpheus/GUI/Views/CustomFragmentationWindow.xaml.cs +++ b/MetaMorpheus/GUI/Views/CustomFragmentationWindow.xaml.cs @@ -1,4 +1,4 @@ -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System.Collections.Generic; using System.Windows; using System.ComponentModel; @@ -6,6 +6,7 @@ using System.Linq; using System.Collections.ObjectModel; using System; +using Omics.Fragmentation.Peptide; namespace MetaMorpheusGUI { diff --git a/MetaMorpheus/GUI/Views/CustomModWindow.xaml.cs b/MetaMorpheus/GUI/Views/CustomModWindow.xaml.cs index acb425902..74bf9875a 100644 --- a/MetaMorpheus/GUI/Views/CustomModWindow.xaml.cs +++ b/MetaMorpheus/GUI/Views/CustomModWindow.xaml.cs @@ -8,6 +8,7 @@ using MassSpectrometry; using Proteomics; using System.Globalization; +using Omics.Modifications; namespace MetaMorpheusGUI { diff --git a/MetaMorpheus/GUI/Views/SilacModificationWindow.xaml.cs b/MetaMorpheus/GUI/Views/SilacModificationWindow.xaml.cs index 6e33fe7b5..ef266dc7f 100644 --- a/MetaMorpheus/GUI/Views/SilacModificationWindow.xaml.cs +++ b/MetaMorpheus/GUI/Views/SilacModificationWindow.xaml.cs @@ -7,6 +7,7 @@ using Chemistry; using System.Text.RegularExpressions; using System.Globalization; +using Omics.Modifications; namespace MetaMorpheusGUI { diff --git a/MetaMorpheus/GuiFunctions/GuiFunctions.csproj b/MetaMorpheus/GuiFunctions/GuiFunctions.csproj index f1b519d45..e8f232287 100644 --- a/MetaMorpheus/GuiFunctions/GuiFunctions.csproj +++ b/MetaMorpheus/GuiFunctions/GuiFunctions.csproj @@ -14,7 +14,7 @@ - + diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/DrawnSequence.cs b/MetaMorpheus/GuiFunctions/MetaDraw/DrawnSequence.cs index 7b43733cd..d2a2dbd02 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/DrawnSequence.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/DrawnSequence.cs @@ -1,6 +1,6 @@ using EngineLayer; using OxyPlot; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawLogic.cs b/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawLogic.cs index faacb3780..8f520ca84 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawLogic.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawLogic.cs @@ -6,7 +6,6 @@ using iText.Kernel.Pdf; using MassSpectrometry; using OxyPlot.Wpf; -using Proteomics.Fragmentation; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -25,6 +24,7 @@ using Org.BouncyCastle.Asn1.X509.Qualified; using Readers; using System.Threading; +using Omics.Fragmentation; namespace GuiFunctions { diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettings.cs b/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettings.cs index 57b6c7d64..f9ad1812c 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettings.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettings.cs @@ -2,7 +2,7 @@ using EngineLayer.GlycoSearch; using OxyPlot; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.IO; diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettingsSnapshot.cs b/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettingsSnapshot.cs index 04ccfdf5e..d38e7b52b 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettingsSnapshot.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/MetaDrawSettingsSnapshot.cs @@ -1,6 +1,6 @@ using EngineLayer.GlycoSearch; using OxyPlot; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.Linq; diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/PlotModelStat.cs b/MetaMorpheus/GuiFunctions/MetaDraw/PlotModelStat.cs index d042c106c..63266f050 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/PlotModelStat.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/PlotModelStat.cs @@ -2,7 +2,7 @@ using OxyPlot; using OxyPlot.Axes; using OxyPlot.Series; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using Proteomics.RetentionTimePrediction; using System; diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/ChimeraSpectrumMatchPlot.cs b/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/ChimeraSpectrumMatchPlot.cs index e5c9fc8cf..1c6cfb310 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/ChimeraSpectrumMatchPlot.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/ChimeraSpectrumMatchPlot.cs @@ -2,7 +2,7 @@ using EngineLayer; using MassSpectrometry; using OxyPlot; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System.Collections.Generic; using System.IO; using System.Linq; diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/PeptideSpectrumMatchPlot.cs b/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/PeptideSpectrumMatchPlot.cs index 608fa2cd7..c48f61a45 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/PeptideSpectrumMatchPlot.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/PeptideSpectrumMatchPlot.cs @@ -1,6 +1,5 @@ using EngineLayer; using MassSpectrometry; -using Proteomics.Fragmentation; using System.Collections.Generic; using System.IO; using System.Reflection; @@ -8,6 +7,7 @@ using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Imaging; +using Omics.Fragmentation; namespace GuiFunctions { diff --git a/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/SpectrumMatchPlot.cs b/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/SpectrumMatchPlot.cs index 0da8192c7..97026c930 100644 --- a/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/SpectrumMatchPlot.cs +++ b/MetaMorpheus/GuiFunctions/MetaDraw/SpectrumMatch/SpectrumMatchPlot.cs @@ -18,11 +18,11 @@ using MassSpectrometry; using MassSpectrometry.MzSpectra; using mzPlot; +using Omics.Fragmentation; using OxyPlot; using OxyPlot.Annotations; using OxyPlot.Axes; using OxyPlot.Series; -using Proteomics.Fragmentation; using Canvas = System.Windows.Controls.Canvas; using FontWeights = OxyPlot.FontWeights; using HorizontalAlignment = OxyPlot.HorizontalAlignment; @@ -447,7 +447,7 @@ protected void AnnotateLibraryIons(bool isBetaPeptide, List libraryIon.NeutralTheoreticalProduct.AminoAcidPosition, libraryIon.NeutralTheoreticalProduct.NeutralLoss); - mirroredLibraryIons.Add(new MatchedFragmentIon(ref neutralProduct, libraryIon.Mz, + mirroredLibraryIons.Add(new MatchedFragmentIon(neutralProduct, libraryIon.Mz, multiplier * libraryIon.Intensity, libraryIon.Charge)); } diff --git a/MetaMorpheus/GuiFunctions/ViewModels/IonForTreeViewModel.cs b/MetaMorpheus/GuiFunctions/ViewModels/IonForTreeViewModel.cs index 3ef477a5d..cdc3cf98d 100644 --- a/MetaMorpheus/GuiFunctions/ViewModels/IonForTreeViewModel.cs +++ b/MetaMorpheus/GuiFunctions/ViewModels/IonForTreeViewModel.cs @@ -1,6 +1,6 @@ using GuiFunctions; using OxyPlot; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/MetaMorpheus/GuiFunctions/ViewModels/IonTypeForTreeViewModel.cs b/MetaMorpheus/GuiFunctions/ViewModels/IonTypeForTreeViewModel.cs index a3f0cdea5..d25b16543 100644 --- a/MetaMorpheus/GuiFunctions/ViewModels/IonTypeForTreeViewModel.cs +++ b/MetaMorpheus/GuiFunctions/ViewModels/IonTypeForTreeViewModel.cs @@ -1,5 +1,5 @@ using GuiFunctions; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/MetaMorpheus/GuiFunctions/ViewModels/Legends/PtmLegendViewModel.cs b/MetaMorpheus/GuiFunctions/ViewModels/Legends/PtmLegendViewModel.cs index 72ee42ca0..cae4b5d44 100644 --- a/MetaMorpheus/GuiFunctions/ViewModels/Legends/PtmLegendViewModel.cs +++ b/MetaMorpheus/GuiFunctions/ViewModels/Legends/PtmLegendViewModel.cs @@ -8,6 +8,7 @@ using System.Threading.Tasks; using System.Windows; using EngineLayer; +using Omics.Modifications; using Proteomics.ProteolyticDigestion; namespace GuiFunctions diff --git a/MetaMorpheus/GuiFunctions/ViewModels/MetaDrawSettingsViewModel.cs b/MetaMorpheus/GuiFunctions/ViewModels/MetaDrawSettingsViewModel.cs index d6a06fa30..8ffe71a02 100644 --- a/MetaMorpheus/GuiFunctions/ViewModels/MetaDrawSettingsViewModel.cs +++ b/MetaMorpheus/GuiFunctions/ViewModels/MetaDrawSettingsViewModel.cs @@ -1,6 +1,6 @@ using EngineLayer; using GuiFunctions; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/MetaMorpheus/TaskLayer/CalibrationTask/CalibrationTask.cs b/MetaMorpheus/TaskLayer/CalibrationTask/CalibrationTask.cs index 9c20fbf2c..669a09399 100644 --- a/MetaMorpheus/TaskLayer/CalibrationTask/CalibrationTask.cs +++ b/MetaMorpheus/TaskLayer/CalibrationTask/CalibrationTask.cs @@ -7,11 +7,12 @@ using MzLibUtil; using Nett; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Modifications; using Readers; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/TaskLayer/FileSpecificParameters.cs b/MetaMorpheus/TaskLayer/FileSpecificParameters.cs index b6d5aa5f4..8366d96c9 100644 --- a/MetaMorpheus/TaskLayer/FileSpecificParameters.cs +++ b/MetaMorpheus/TaskLayer/FileSpecificParameters.cs @@ -5,7 +5,7 @@ using Nett; using Proteomics.ProteolyticDigestion; using MassSpectrometry; -using Proteomics.Fragmentation; +using Omics.Fragmentation; namespace TaskLayer { diff --git a/MetaMorpheus/TaskLayer/GPTMDTask/GPTMDTask.cs b/MetaMorpheus/TaskLayer/GPTMDTask/GPTMDTask.cs index ecd4f1b82..cde4fad40 100644 --- a/MetaMorpheus/TaskLayer/GPTMDTask/GPTMDTask.cs +++ b/MetaMorpheus/TaskLayer/GPTMDTask/GPTMDTask.cs @@ -12,6 +12,7 @@ using UsefulProteomicsDatabases; using Proteomics.ProteolyticDigestion; using System.Globalization; +using Omics.Modifications; namespace TaskLayer { diff --git a/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisParameters.cs b/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisParameters.cs index cd18d148b..a1fd56251 100644 --- a/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisParameters.cs +++ b/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisParameters.cs @@ -4,6 +4,7 @@ using Proteomics; using Proteomics.ProteolyticDigestion; using System.Collections.Generic; +using Omics.Modifications; namespace TaskLayer { diff --git a/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisTask.cs b/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisTask.cs index 077716c00..4b205c6c1 100644 --- a/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisTask.cs +++ b/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisTask.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using FlashLFQ; +using Omics.Modifications; using pepXML.Generated; using Proteomics.ProteolyticDigestion; using TaskLayer.MbrAnalysis; diff --git a/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs b/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs index 07a30e767..31f6b2189 100644 --- a/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs +++ b/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs @@ -17,7 +17,9 @@ using System.Reflection.Metadata.Ecma335; using System.Text; using System.Threading.Tasks; -using Proteomics.Fragmentation; +using Omics.Fragmentation; +using Omics.Fragmentation.Peptide; +using Omics.Modifications; using SpectralAveraging; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/TaskLayer/PepXMLWriter.cs b/MetaMorpheus/TaskLayer/PepXMLWriter.cs index 466879498..e4e2b3c68 100644 --- a/MetaMorpheus/TaskLayer/PepXMLWriter.cs +++ b/MetaMorpheus/TaskLayer/PepXMLWriter.cs @@ -1,12 +1,14 @@ using EngineLayer; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Xml.Serialization; +using Omics.Fragmentation.Peptide; +using Omics.Modifications; namespace TaskLayer { diff --git a/MetaMorpheus/TaskLayer/SearchTask/MzIdentMLWriter.cs b/MetaMorpheus/TaskLayer/SearchTask/MzIdentMLWriter.cs index 750896b20..05ecd5a7c 100644 --- a/MetaMorpheus/TaskLayer/SearchTask/MzIdentMLWriter.cs +++ b/MetaMorpheus/TaskLayer/SearchTask/MzIdentMLWriter.cs @@ -10,6 +10,8 @@ using System.Text; using System.Xml; using System.Xml.Serialization; +using Omics.Digestion; +using Omics.Modifications; namespace TaskLayer { diff --git a/MetaMorpheus/TaskLayer/SearchTask/PostSearchAnalysisParameters.cs b/MetaMorpheus/TaskLayer/SearchTask/PostSearchAnalysisParameters.cs index 2dc83fcb4..1251e6dd0 100644 --- a/MetaMorpheus/TaskLayer/SearchTask/PostSearchAnalysisParameters.cs +++ b/MetaMorpheus/TaskLayer/SearchTask/PostSearchAnalysisParameters.cs @@ -3,6 +3,7 @@ using Proteomics; using Proteomics.ProteolyticDigestion; using System.Collections.Generic; +using Omics.Modifications; namespace TaskLayer { diff --git a/MetaMorpheus/TaskLayer/SearchTask/PostSearchAnalysisTask.cs b/MetaMorpheus/TaskLayer/SearchTask/PostSearchAnalysisTask.cs index 74e20bcac..f131b32ab 100644 --- a/MetaMorpheus/TaskLayer/SearchTask/PostSearchAnalysisTask.cs +++ b/MetaMorpheus/TaskLayer/SearchTask/PostSearchAnalysisTask.cs @@ -22,6 +22,7 @@ using MzLibUtil; using Proteomics.AminoAcidPolymer; using System.Text.Json.Serialization; +using Omics.Modifications; namespace TaskLayer { diff --git a/MetaMorpheus/TaskLayer/SearchTask/SearchParameters.cs b/MetaMorpheus/TaskLayer/SearchTask/SearchParameters.cs index 3068e8f00..c11c69212 100644 --- a/MetaMorpheus/TaskLayer/SearchTask/SearchParameters.cs +++ b/MetaMorpheus/TaskLayer/SearchTask/SearchParameters.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using UsefulProteomicsDatabases; using EngineLayer; +using Omics.Modifications; using Proteomics; namespace TaskLayer diff --git a/MetaMorpheus/TaskLayer/SearchTask/SearchTask.cs b/MetaMorpheus/TaskLayer/SearchTask/SearchTask.cs index e808c7732..2565349e6 100644 --- a/MetaMorpheus/TaskLayer/SearchTask/SearchTask.cs +++ b/MetaMorpheus/TaskLayer/SearchTask/SearchTask.cs @@ -7,13 +7,15 @@ using MassSpectrometry; using MzLibUtil; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; namespace TaskLayer { diff --git a/MetaMorpheus/TaskLayer/TaskLayer.csproj b/MetaMorpheus/TaskLayer/TaskLayer.csproj index 3976e9cd1..8b1cbcfc6 100644 --- a/MetaMorpheus/TaskLayer/TaskLayer.csproj +++ b/MetaMorpheus/TaskLayer/TaskLayer.csproj @@ -21,7 +21,7 @@ - + diff --git a/MetaMorpheus/TaskLayer/XLSearchTask/PostXLSearchAnalysisTask.cs b/MetaMorpheus/TaskLayer/XLSearchTask/PostXLSearchAnalysisTask.cs index d2acd5168..37057a572 100644 --- a/MetaMorpheus/TaskLayer/XLSearchTask/PostXLSearchAnalysisTask.cs +++ b/MetaMorpheus/TaskLayer/XLSearchTask/PostXLSearchAnalysisTask.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Modifications; namespace TaskLayer { diff --git a/MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs b/MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs index 95ad8e996..750199ce5 100644 --- a/MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs +++ b/MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs @@ -2,7 +2,7 @@ using EngineLayer.CrosslinkSearch; using EngineLayer.GlycoSearch; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System; using System.Collections.Generic; using System.Globalization; @@ -10,6 +10,8 @@ using System.Linq; using System.Xml.Serialization; using Easy.Common.Extensions; +using Omics.Fragmentation.Peptide; +using Omics.Modifications; namespace TaskLayer { diff --git a/MetaMorpheus/Test/AddCompIonsTest.cs b/MetaMorpheus/Test/AddCompIonsTest.cs index ee5e8b178..c3a59ed5a 100644 --- a/MetaMorpheus/Test/AddCompIonsTest.cs +++ b/MetaMorpheus/Test/AddCompIonsTest.cs @@ -7,13 +7,15 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using Proteomics.RetentionTimePrediction; using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/Test/AmbiguityTest.cs b/MetaMorpheus/Test/AmbiguityTest.cs index 87e03ebb8..96dbc0e13 100644 --- a/MetaMorpheus/Test/AmbiguityTest.cs +++ b/MetaMorpheus/Test/AmbiguityTest.cs @@ -4,12 +4,14 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/Test/AnalysisEngineTest.cs b/MetaMorpheus/Test/AnalysisEngineTest.cs index 9f07fb7f6..a4cd54884 100644 --- a/MetaMorpheus/Test/AnalysisEngineTest.cs +++ b/MetaMorpheus/Test/AnalysisEngineTest.cs @@ -5,11 +5,13 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; using TaskLayer; namespace Test diff --git a/MetaMorpheus/Test/BinGenerationTest.cs b/MetaMorpheus/Test/BinGenerationTest.cs index e513c7527..47cde2c42 100644 --- a/MetaMorpheus/Test/BinGenerationTest.cs +++ b/MetaMorpheus/Test/BinGenerationTest.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/Test/CoIsolationTests.cs b/MetaMorpheus/Test/CoIsolationTests.cs index dee54bda7..5f932119f 100644 --- a/MetaMorpheus/Test/CoIsolationTests.cs +++ b/MetaMorpheus/Test/CoIsolationTests.cs @@ -5,11 +5,13 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; using Readers; using TaskLayer; diff --git a/MetaMorpheus/Test/CustomFragmentationTest.cs b/MetaMorpheus/Test/CustomFragmentationTest.cs index 96fd8c5ac..3f0d6bac1 100644 --- a/MetaMorpheus/Test/CustomFragmentationTest.cs +++ b/MetaMorpheus/Test/CustomFragmentationTest.cs @@ -2,12 +2,13 @@ using MzLibUtil; using Nett; using NUnit.Framework; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using MassSpectrometry; +using Omics.Fragmentation.Peptide; using TaskLayer; namespace Test diff --git a/MetaMorpheus/Test/DigestionModificationTests.cs b/MetaMorpheus/Test/DigestionModificationTests.cs index 269251541..a3884b357 100644 --- a/MetaMorpheus/Test/DigestionModificationTests.cs +++ b/MetaMorpheus/Test/DigestionModificationTests.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using System.Text; +using Omics.Modifications; using UsefulProteomicsDatabases; namespace Test diff --git a/MetaMorpheus/Test/EventArgsTest.cs b/MetaMorpheus/Test/EventArgsTest.cs index 9b4c28c92..986630c16 100644 --- a/MetaMorpheus/Test/EventArgsTest.cs +++ b/MetaMorpheus/Test/EventArgsTest.cs @@ -5,12 +5,13 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Linq; using System.Text; +using Omics.Modifications; namespace Test { diff --git a/MetaMorpheus/Test/FdrTest.cs b/MetaMorpheus/Test/FdrTest.cs index 657585b62..80de8d810 100644 --- a/MetaMorpheus/Test/FdrTest.cs +++ b/MetaMorpheus/Test/FdrTest.cs @@ -8,12 +8,14 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; @@ -378,7 +380,7 @@ public static void TestComputePEPValue() PeptideWithSetModifications varPep = variantProtein.GetVariantProteins().SelectMany(p => p.Digest(CommonParameters.DigestionParams, null, null)).FirstOrDefault(); Product prod = new Product(ProductType.b, FragmentationTerminus.N, 1, 1, 1, 0); - List mfi = new List { new MatchedFragmentIon(ref prod, 1, 1.0, 1) }; + List mfi = new List { new MatchedFragmentIon(prod, 1, 1.0, 1) }; PeptideSpectralMatch variantPSM = new PeptideSpectralMatch(varPep, 0, maxScorePsm.Score, maxScorePsm.ScanIndex, scan, new CommonParameters(), mfi); diff --git a/MetaMorpheus/Test/GPTMDengineTest.cs b/MetaMorpheus/Test/GPTMDengineTest.cs index b89790e8e..dfc0fcef3 100644 --- a/MetaMorpheus/Test/GPTMDengineTest.cs +++ b/MetaMorpheus/Test/GPTMDengineTest.cs @@ -5,11 +5,12 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Linq; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/Test/IndexEngineTest.cs b/MetaMorpheus/Test/IndexEngineTest.cs index 3e2fa5e80..1cdf6e962 100644 --- a/MetaMorpheus/Test/IndexEngineTest.cs +++ b/MetaMorpheus/Test/IndexEngineTest.cs @@ -3,12 +3,14 @@ using MassSpectrometry; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; using UsefulProteomicsDatabases; namespace Test diff --git a/MetaMorpheus/Test/LocalizationTest.cs b/MetaMorpheus/Test/LocalizationTest.cs index a7ee32e96..cc553ff84 100644 --- a/MetaMorpheus/Test/LocalizationTest.cs +++ b/MetaMorpheus/Test/LocalizationTest.cs @@ -5,10 +5,11 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System.Collections.Generic; using System.Linq; +using Omics.Modifications; namespace Test { diff --git a/MetaMorpheus/Test/MatchIonsOfAllCharges.cs b/MetaMorpheus/Test/MatchIonsOfAllCharges.cs index 3ec0ec8de..86e36d45d 100644 --- a/MetaMorpheus/Test/MatchIonsOfAllCharges.cs +++ b/MetaMorpheus/Test/MatchIonsOfAllCharges.cs @@ -7,7 +7,7 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using TaskLayer; using Chemistry; @@ -15,6 +15,8 @@ using MassSpectrometry; using Nett; using EngineLayer.Gptmd; +using Omics.Digestion; +using Omics.Modifications; using static System.Net.WebRequestMethods; namespace Test @@ -458,10 +460,10 @@ public static void TestDecoyLibrarySpectraGenerationFunction() Product c = new Product(ProductType.b, FragmentationTerminus.N, 3, 3, 1, 0); Product d = new Product(ProductType.b, FragmentationTerminus.N, 4, 4, 1, 0); var decoyPeptideTheorProducts = new List { a, b, c, d }; - MatchedFragmentIon aa = new MatchedFragmentIon(ref a, 1, 1, 1); - MatchedFragmentIon bb = new MatchedFragmentIon(ref b, 2, 2, 1); - MatchedFragmentIon cc = new MatchedFragmentIon(ref c, 3, 3, 1); - MatchedFragmentIon dd = new MatchedFragmentIon(ref d, 4, 4, 1); + MatchedFragmentIon aa = new MatchedFragmentIon(a, 1, 1, 1); + MatchedFragmentIon bb = new MatchedFragmentIon(b, 2, 2, 1); + MatchedFragmentIon cc = new MatchedFragmentIon(c, 3, 3, 1); + MatchedFragmentIon dd = new MatchedFragmentIon(d, 4, 4, 1); var peaks = new List { aa, bb, cc, dd }; var librarySpectrum = new LibrarySpectrum("library", 0, 0, peaks, 0); var decoySpectum = SpectralLibrarySearchFunction.GetDecoyLibrarySpectrumFromTargetByReverse(librarySpectrum, decoyPeptideTheorProducts); diff --git a/MetaMorpheus/Test/MetaDraw/MetaDrawSettingsAndViewsTest.cs b/MetaMorpheus/Test/MetaDraw/MetaDrawSettingsAndViewsTest.cs index 525507e90..5661074e2 100644 --- a/MetaMorpheus/Test/MetaDraw/MetaDrawSettingsAndViewsTest.cs +++ b/MetaMorpheus/Test/MetaDraw/MetaDrawSettingsAndViewsTest.cs @@ -8,7 +8,7 @@ using GuiFunctions.ViewModels.Legends; using NUnit.Framework; using OxyPlot; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; namespace Test.MetaDraw @@ -94,6 +94,8 @@ public static void TestSaveAndLoadDefaultSettings() string outputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestMetaDrawWithSpectraLibrary"); + if (Directory.Exists(outputFolder)) + Directory.Delete(outputFolder, true); Assert.That(!Directory.Exists(outputFolder)); MetaDrawSettingsViewModel.SettingsPath = Path.Combine(outputFolder, @"MetaDrawSettingsDefault.xml"); diff --git a/MetaMorpheus/Test/MetaDraw/MetaDrawTest.cs b/MetaMorpheus/Test/MetaDraw/MetaDrawTest.cs index 147b3c9fa..73b23a243 100644 --- a/MetaMorpheus/Test/MetaDraw/MetaDrawTest.cs +++ b/MetaMorpheus/Test/MetaDraw/MetaDrawTest.cs @@ -16,7 +16,7 @@ using MassSpectrometry; using NUnit.Framework; using OxyPlot.Series; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using Readers; using TaskLayer; diff --git a/MetaMorpheus/Test/MetaDraw/SpectrumMatchPlotTests.cs b/MetaMorpheus/Test/MetaDraw/SpectrumMatchPlotTests.cs index c5dd8d865..fd77aaae3 100644 --- a/MetaMorpheus/Test/MetaDraw/SpectrumMatchPlotTests.cs +++ b/MetaMorpheus/Test/MetaDraw/SpectrumMatchPlotTests.cs @@ -11,7 +11,7 @@ using NUnit.Framework; using OxyPlot; using OxyPlot.Annotations; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using TaskLayer; namespace Test.MetaDraw diff --git a/MetaMorpheus/Test/ModificationAnalysisTest.cs b/MetaMorpheus/Test/ModificationAnalysisTest.cs index 5cc07a04c..ae6275616 100644 --- a/MetaMorpheus/Test/ModificationAnalysisTest.cs +++ b/MetaMorpheus/Test/ModificationAnalysisTest.cs @@ -4,10 +4,12 @@ using MassSpectrometry; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System.Collections.Generic; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; namespace Test { diff --git a/MetaMorpheus/Test/MultiProteaseParsimonyTest.cs b/MetaMorpheus/Test/MultiProteaseParsimonyTest.cs index e1b4c513c..2fdd76fc4 100644 --- a/MetaMorpheus/Test/MultiProteaseParsimonyTest.cs +++ b/MetaMorpheus/Test/MultiProteaseParsimonyTest.cs @@ -3,12 +3,14 @@ using MassSpectrometry; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; using TaskLayer; namespace Test @@ -252,20 +254,20 @@ public static void MultiProteaseParsimony_SharedSequenceCanBeUniquePeptide() Assert.AreEqual(2, proteinGroup1.AllPeptides.Count); Assert.AreEqual(1, proteinGroup1.UniquePeptides.Count); var pg1pep1 = proteinGroup1.AllPeptides.Where(p => p.BaseSequence == "XYZ").First(); - Assert.That(pg1pep1.DigestionParams.Protease.Name == "proteaseA"); + Assert.That(pg1pep1.DigestionParams.DigestionAgent.Name == "proteaseA"); var pg1pep2 = proteinGroup1.AllPeptides.Where(p => p.BaseSequence == "ABC").First(); - Assert.That(pg1pep2.DigestionParams.Protease.Name == "proteaseA"); + Assert.That(pg1pep2.DigestionParams.DigestionAgent.Name == "proteaseA"); Assert.That(proteinGroup1.UniquePeptides.First().BaseSequence.Equals("ABC")); var proteinGroup2 = proteinGroups.Where(p => p.ProteinGroupName == "2").First(); Assert.AreEqual(3, proteinGroup2.AllPeptides.Count); Assert.AreEqual(2, proteinGroup2.UniquePeptides.Count); var pg2pep1 = proteinGroup2.AllPeptides.Where(p => p.BaseSequence == "XYZ").First(); - Assert.That(pg2pep1.DigestionParams.Protease.Name == "proteaseA"); + Assert.That(pg2pep1.DigestionParams.DigestionAgent.Name == "proteaseA"); var pg2pep2 = proteinGroup2.AllPeptides.Where(p => p.BaseSequence == "ABC").First(); - Assert.That(pg2pep2.DigestionParams.Protease.Name == "proteaseB"); + Assert.That(pg2pep2.DigestionParams.DigestionAgent.Name == "proteaseB"); var pg2pep3 = proteinGroup2.AllPeptides.Where(p => p.BaseSequence == "EFGABC").First(); - Assert.That(pg2pep3.DigestionParams.Protease.Name == "proteaseA"); + Assert.That(pg2pep3.DigestionParams.DigestionAgent.Name == "proteaseA"); var uniquePeptideSequences = proteinGroup2.UniquePeptides.Select(p => p.BaseSequence).ToList(); Assert.That(uniquePeptideSequences.Contains("ABC")); Assert.That(uniquePeptideSequences.Contains("EFGABC")); @@ -345,9 +347,9 @@ public static void MultiProteaseParsimony_IndistringuishableProteinsNowDistingui PeptideWithSetModifications pg1pep1 = pg1.AllPeptides.Where(v => v.BaseSequence == "ABC").First(); PeptideWithSetModifications pg1pep2 = pg1.AllPeptides.Where(v => v.BaseSequence == "EFG").First(); Assert.That(pg1.UniquePeptides.Contains(pg1pep1)); - Assert.That(pg1pep1.DigestionParams.Protease.Name == "testA"); + Assert.That(pg1pep1.DigestionParams.DigestionAgent.Name == "testA"); Assert.That(pg1.UniquePeptides.Contains(pg1pep2)); - Assert.That(pg1pep2.DigestionParams.Protease.Name == "testA"); + Assert.That(pg1pep2.DigestionParams.DigestionAgent.Name == "testA"); Assert.That(pg1.AllPeptides.Count == 2); Assert.That(pg1.UniquePeptides.Count == 2); @@ -356,9 +358,9 @@ public static void MultiProteaseParsimony_IndistringuishableProteinsNowDistingui PeptideWithSetModifications pg2pep1 = pg2.AllPeptides.Where(v => v.BaseSequence == "ABC").First(); PeptideWithSetModifications pg2pep2 = pg2.AllPeptides.Where(v => v.BaseSequence == "EFG").First(); Assert.That(pg2.UniquePeptides.Contains(pg2pep1)); - Assert.That(pg2pep1.DigestionParams.Protease.Name == "testB"); + Assert.That(pg2pep1.DigestionParams.DigestionAgent.Name == "testB"); Assert.That(pg2.UniquePeptides.Contains(pg2pep2)); - Assert.That(pg2pep2.DigestionParams.Protease.Name == "testB"); + Assert.That(pg2pep2.DigestionParams.DigestionAgent.Name == "testB"); Assert.That(pg2.AllPeptides.Count == 2); Assert.That(pg2.UniquePeptides.Count == 2); } diff --git a/MetaMorpheus/Test/Multiplex_Labeling_TMT_iTRAQ.cs b/MetaMorpheus/Test/Multiplex_Labeling_TMT_iTRAQ.cs index 2b0887175..20682d7b3 100644 --- a/MetaMorpheus/Test/Multiplex_Labeling_TMT_iTRAQ.cs +++ b/MetaMorpheus/Test/Multiplex_Labeling_TMT_iTRAQ.cs @@ -4,7 +4,7 @@ using MassSpectrometry; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; @@ -17,6 +17,7 @@ using TaskLayer; using UsefulProteomicsDatabases; using System.Threading.Tasks; +using Omics.Modifications; namespace Test { diff --git a/MetaMorpheus/Test/MyPeptideTest.cs b/MetaMorpheus/Test/MyPeptideTest.cs index 0f71ea28a..04af2371e 100644 --- a/MetaMorpheus/Test/MyPeptideTest.cs +++ b/MetaMorpheus/Test/MyPeptideTest.cs @@ -7,13 +7,14 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.IO; using System.Linq; -using UsefulProteomicsDatabases; + using Omics.Modifications; + using UsefulProteomicsDatabases; namespace Test { diff --git a/MetaMorpheus/Test/MyTaskTest.cs b/MetaMorpheus/Test/MyTaskTest.cs index ee4ebd4ff..be7cf4f8d 100644 --- a/MetaMorpheus/Test/MyTaskTest.cs +++ b/MetaMorpheus/Test/MyTaskTest.cs @@ -11,6 +11,7 @@ using System.IO; using System.Linq; using System.Reflection; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/Test/ParameterTest.cs b/MetaMorpheus/Test/ParameterTest.cs index d5647df4a..539551cb2 100644 --- a/MetaMorpheus/Test/ParameterTest.cs +++ b/MetaMorpheus/Test/ParameterTest.cs @@ -3,11 +3,13 @@ using MzLibUtil; using Nett; using NUnit.Framework; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.IO; +using Omics.Digestion; +using Omics.Fragmentation.Peptide; using TaskLayer; namespace Test diff --git a/MetaMorpheus/Test/ProteinGroupTest.cs b/MetaMorpheus/Test/ProteinGroupTest.cs index bb4c15d8e..8d92eb2b8 100644 --- a/MetaMorpheus/Test/ProteinGroupTest.cs +++ b/MetaMorpheus/Test/ProteinGroupTest.cs @@ -11,6 +11,8 @@ using TaskLayer; using ProteinGroup = EngineLayer.ProteinGroup; using System.IO; +using Omics.Digestion; +using Omics.Modifications; using UsefulProteomicsDatabases; namespace Test diff --git a/MetaMorpheus/Test/PsmTsvWriterTests.cs b/MetaMorpheus/Test/PsmTsvWriterTests.cs index 0c5b364c0..db9b9f74f 100644 --- a/MetaMorpheus/Test/PsmTsvWriterTests.cs +++ b/MetaMorpheus/Test/PsmTsvWriterTests.cs @@ -3,9 +3,11 @@ using MassSpectrometry; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System.Collections.Generic; +using Omics.Digestion; +using Omics.Modifications; namespace Test { @@ -54,7 +56,7 @@ public static void ResolveModificationsTest() //we're adding a neutral loss of 5 to the product to make sure we hit the right spot in the unit test to add that loss to the product ion string Product p = new Product(ProductType.b, FragmentationTerminus.N, 1, 1, 1, 5); - mfi.Add(new MatchedFragmentIon(ref p, 1, 1, 1)); + mfi.Add(new MatchedFragmentIon(p, 1, 1, 1)); PeptideSpectralMatch myPsm = new PeptideSpectralMatch(pwsm1, 0, 10, 0, scan, new CommonParameters(), mfi); myPsm.AddOrReplace(pwsm2, 10, 0, true, mfi, 10); diff --git a/MetaMorpheus/Test/PsvTsvTest.cs b/MetaMorpheus/Test/PsvTsvTest.cs index dd3ed1000..55fd5c5f0 100644 --- a/MetaMorpheus/Test/PsvTsvTest.cs +++ b/MetaMorpheus/Test/PsvTsvTest.cs @@ -1,7 +1,7 @@ using EngineLayer; using GuiFunctions; using NUnit.Framework; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System.Collections.Generic; using System.IO; using System.Linq; @@ -239,7 +239,7 @@ public static void TestSimpleToLibrarySpectrum() //the code below tests the addition and correct output for neutral loss fragments Product p = new Product(ProductType.bWaterLoss, FragmentationTerminus.N, 1, 1, 1, 18); - MatchedFragmentIon matchedIon = new(ref p, 1, 1, 1); + MatchedFragmentIon matchedIon = new(p, 1, 1, 1); psms[0].MatchedIons.Add(matchedIon); string librarySpectrumWithNeutralLoss = psms[0].ToLibrarySpectrum().ToString(); diff --git a/MetaMorpheus/Test/QuantificationTest.cs b/MetaMorpheus/Test/QuantificationTest.cs index d61748b82..4df793fd9 100644 --- a/MetaMorpheus/Test/QuantificationTest.cs +++ b/MetaMorpheus/Test/QuantificationTest.cs @@ -5,7 +5,7 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using Readers; using System; @@ -13,6 +13,7 @@ using System.IO; using System.Linq; using System.Text; +using Omics.Modifications; using TaskLayer; namespace Test @@ -192,7 +193,7 @@ public static void TestProteinQuantFileHeaders(bool hasDefinedExperimentalDesign mzAnalyzer: MZAnalyzerType.Orbitrap, totalIonCurrent: intensities.Sum(), injectionTime: 1.0, noiseData: null, nativeId: "scan=1"); // create the MS2 scan - var pep = new PeptideWithSetModifications(peptide, new Dictionary()); + var pep = new PeptideWithSetModifications(peptide, new Dictionary()); List frags = new List(); pep.Fragment(DissociationType.HCD, FragmentationTerminus.Both, frags); double[] mz2 = frags.Select(v => v.NeutralMass.ToMz(1)).ToArray(); diff --git a/MetaMorpheus/Test/RetentionTimeTest.cs b/MetaMorpheus/Test/RetentionTimeTest.cs index 41efd41aa..72102952c 100644 --- a/MetaMorpheus/Test/RetentionTimeTest.cs +++ b/MetaMorpheus/Test/RetentionTimeTest.cs @@ -3,6 +3,7 @@ using Proteomics.ProteolyticDigestion; using Proteomics.RetentionTimePrediction; using System.Collections.Generic; +using Omics.Modifications; namespace Test { diff --git a/MetaMorpheus/Test/RobTest.cs b/MetaMorpheus/Test/RobTest.cs index 9a3d98f8f..9c7ce8f56 100644 --- a/MetaMorpheus/Test/RobTest.cs +++ b/MetaMorpheus/Test/RobTest.cs @@ -4,11 +4,13 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; namespace Test { diff --git a/MetaMorpheus/Test/SearchEngineTests.cs b/MetaMorpheus/Test/SearchEngineTests.cs index c2255f33f..15d7e8809 100644 --- a/MetaMorpheus/Test/SearchEngineTests.cs +++ b/MetaMorpheus/Test/SearchEngineTests.cs @@ -10,12 +10,14 @@ using NUnit.Framework; using Proteomics; using Proteomics.AminoAcidPolymer; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; using Readers; using TaskLayer; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/Test/SearchTaskTest.cs b/MetaMorpheus/Test/SearchTaskTest.cs index fbec1126d..dc3cb447c 100644 --- a/MetaMorpheus/Test/SearchTaskTest.cs +++ b/MetaMorpheus/Test/SearchTaskTest.cs @@ -3,13 +3,15 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; +using Omics.Digestion; +using Omics.Modifications; using TaskLayer; namespace Test diff --git a/MetaMorpheus/Test/SearchWithPeptidesAddedInParsimony.cs b/MetaMorpheus/Test/SearchWithPeptidesAddedInParsimony.cs index 3d0cf7f57..e7c44fe94 100644 --- a/MetaMorpheus/Test/SearchWithPeptidesAddedInParsimony.cs +++ b/MetaMorpheus/Test/SearchWithPeptidesAddedInParsimony.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/Test/SeqCoverageTest.cs b/MetaMorpheus/Test/SeqCoverageTest.cs index b405bea77..620fb1c75 100644 --- a/MetaMorpheus/Test/SeqCoverageTest.cs +++ b/MetaMorpheus/Test/SeqCoverageTest.cs @@ -2,12 +2,14 @@ using EngineLayer; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System.Collections.Generic; using System.Linq; using MassSpectrometry; using FlashLFQ; +using Omics.Digestion; +using Omics.Modifications; using TaskLayer; namespace Test @@ -121,10 +123,10 @@ public static void TestFragmentSequenceCoverage() Product producty1 = new (ProductType.y, FragmentationTerminus.C, 0, 1, 3, 0); Product producty2 = new (ProductType.y, FragmentationTerminus.C, 0, 2, 2, 0); - MatchedFragmentIon mfib1 = new MatchedFragmentIon(ref productb1, 0, 0, 1); - MatchedFragmentIon mfib2 = new MatchedFragmentIon(ref productb2, 0, 0, 2); - MatchedFragmentIon mfiy1 = new MatchedFragmentIon(ref producty1, 0, 0, 2); - MatchedFragmentIon mfiy2 = new MatchedFragmentIon(ref producty2, 0, 0, 2); + MatchedFragmentIon mfib1 = new MatchedFragmentIon(productb1, 0, 0, 1); + MatchedFragmentIon mfib2 = new MatchedFragmentIon(productb2, 0, 0, 2); + MatchedFragmentIon mfiy1 = new MatchedFragmentIon(producty1, 0, 0, 2); + MatchedFragmentIon mfiy2 = new MatchedFragmentIon(producty2, 0, 0, 2); List mfis1 = new List { mfib1 }; List mfis2 = new List { mfib2, mfiy1, mfiy2 }; diff --git a/MetaMorpheus/Test/SilacTest.cs b/MetaMorpheus/Test/SilacTest.cs index f9c17b02b..e62673798 100644 --- a/MetaMorpheus/Test/SilacTest.cs +++ b/MetaMorpheus/Test/SilacTest.cs @@ -7,6 +7,7 @@ using System; using System.Collections.Generic; using System.IO; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/Test/SpectralLibraryReaderTest.cs b/MetaMorpheus/Test/SpectralLibraryReaderTest.cs index c158fbc56..8170c7fc9 100644 --- a/MetaMorpheus/Test/SpectralLibraryReaderTest.cs +++ b/MetaMorpheus/Test/SpectralLibraryReaderTest.cs @@ -5,11 +5,12 @@ using EngineLayer; using TaskLayer; using System.Collections.Generic; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using System.Globalization; using Proteomics; using MassSpectrometry; using EngineLayer.ClassicSearch; +using Omics.Modifications; namespace Test { diff --git a/MetaMorpheus/Test/SpectralRecoveryTest.cs b/MetaMorpheus/Test/SpectralRecoveryTest.cs index eb437e943..c26ed855a 100644 --- a/MetaMorpheus/Test/SpectralRecoveryTest.cs +++ b/MetaMorpheus/Test/SpectralRecoveryTest.cs @@ -11,6 +11,7 @@ using System.Linq; using System.Text; using Easy.Common.Extensions; +using Omics.Modifications; using TaskLayer; using TaskLayer.MbrAnalysis; diff --git a/MetaMorpheus/Test/StefanParsimonyTest.cs b/MetaMorpheus/Test/StefanParsimonyTest.cs index 319980ed7..b836d9b30 100644 --- a/MetaMorpheus/Test/StefanParsimonyTest.cs +++ b/MetaMorpheus/Test/StefanParsimonyTest.cs @@ -2,11 +2,12 @@ using MassSpectrometry; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.Linq; +using Omics.Modifications; namespace Test { @@ -169,8 +170,8 @@ public static void ParsimonyWeirdCatch() Product productC3 = new Product(ProductType.y, FragmentationTerminus.C, 0, 3, 4, 0); Product productC4 = new Product(ProductType.y, FragmentationTerminus.C, 0, 4, 3, 0); - MatchedFragmentIon mfiC3 = new MatchedFragmentIon(ref productC3, 0, 0, 1); - MatchedFragmentIon mfiC4 = new MatchedFragmentIon(ref productC4, 0, 0, 1); + MatchedFragmentIon mfiC3 = new MatchedFragmentIon(productC3, 0, 0, 1); + MatchedFragmentIon mfiC4 = new MatchedFragmentIon(productC4, 0, 0, 1); List psms = new List { diff --git a/MetaMorpheus/Test/Test.csproj b/MetaMorpheus/Test/Test.csproj index acbe60418..63da5f2c8 100644 --- a/MetaMorpheus/Test/Test.csproj +++ b/MetaMorpheus/Test/Test.csproj @@ -23,7 +23,7 @@ - + diff --git a/MetaMorpheus/Test/TestDataFile.cs b/MetaMorpheus/Test/TestDataFile.cs index 012fe5553..4757672eb 100644 --- a/MetaMorpheus/Test/TestDataFile.cs +++ b/MetaMorpheus/Test/TestDataFile.cs @@ -1,6 +1,6 @@ using Chemistry; using MassSpectrometry; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; diff --git a/MetaMorpheus/Test/TestPsm.cs b/MetaMorpheus/Test/TestPsm.cs index 56a360d47..e34d4b3a1 100644 --- a/MetaMorpheus/Test/TestPsm.cs +++ b/MetaMorpheus/Test/TestPsm.cs @@ -6,13 +6,15 @@ using MzLibUtil; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; +using Omics.Digestion; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; using PsmFromTsv = EngineLayer.PsmFromTsv; @@ -419,7 +421,7 @@ public static void TestComplementaryIons() for (int i = 0; i < myProducts.Count; i++) { var prod = myProducts[i]; - mfiList.Add(new MatchedFragmentIon(ref prod, 1, 1, 1)); + mfiList.Add(new MatchedFragmentIon(prod, 1, 1, 1)); } Dictionary> PTMF = new Dictionary>(); @@ -478,15 +480,15 @@ public static void TestPSMFragmentCoverage() Product productN6 = new Product(ProductType.b, FragmentationTerminus.N, 0, 6, 6, 0); Product productN8 = new Product(ProductType.b, FragmentationTerminus.N, 0, 8, 8, 0); Product productN13 = new Product(ProductType.b, FragmentationTerminus.N, 0, 13, 13, 0); - MatchedFragmentIon mfiC3 = new MatchedFragmentIon(ref productC3, 0, 0, 1); - MatchedFragmentIon mfiC4 = new MatchedFragmentIon(ref productC4, 0, 0, 1); - MatchedFragmentIon mfiC7 = new MatchedFragmentIon(ref productC7, 0, 0, 1); - MatchedFragmentIon mfiC13 = new MatchedFragmentIon(ref productC13, 0, 0, 1); - MatchedFragmentIon mfiN3 = new MatchedFragmentIon(ref productN3, 0, 0, 1); - MatchedFragmentIon mfiN4 = new MatchedFragmentIon(ref productN4, 0, 0, 1); - MatchedFragmentIon mfiN6 = new MatchedFragmentIon(ref productN6, 0, 0, 1); - MatchedFragmentIon mfiN8 = new MatchedFragmentIon(ref productN8, 0, 0, 1); - MatchedFragmentIon mfiN13 = new MatchedFragmentIon(ref productN13, 0, 0, 1); + MatchedFragmentIon mfiC3 = new MatchedFragmentIon(productC3, 0, 0, 1); + MatchedFragmentIon mfiC4 = new MatchedFragmentIon(productC4, 0, 0, 1); + MatchedFragmentIon mfiC7 = new MatchedFragmentIon(productC7, 0, 0, 1); + MatchedFragmentIon mfiC13 = new MatchedFragmentIon(productC13, 0, 0, 1); + MatchedFragmentIon mfiN3 = new MatchedFragmentIon(productN3, 0, 0, 1); + MatchedFragmentIon mfiN4 = new MatchedFragmentIon(productN4, 0, 0, 1); + MatchedFragmentIon mfiN6 = new MatchedFragmentIon(productN6, 0, 0, 1); + MatchedFragmentIon mfiN8 = new MatchedFragmentIon(productN8, 0, 0, 1); + MatchedFragmentIon mfiN13 = new MatchedFragmentIon(productN13, 0, 0, 1); List mfis1 = new List { mfiC3, mfiC4, mfiC7, mfiC13, mfiN3, mfiN4, mfiN6, mfiN8, mfiN13}; MsDataScan mzLibScan1 = t.GetOneBasedScan(2); Ms2ScanWithSpecificMass scan1 = new Ms2ScanWithSpecificMass(mzLibScan1, 0, 1, null, new CommonParameters()); diff --git a/MetaMorpheus/Test/TestTopDown.cs b/MetaMorpheus/Test/TestTopDown.cs index 5c768533b..b99e13262 100644 --- a/MetaMorpheus/Test/TestTopDown.cs +++ b/MetaMorpheus/Test/TestTopDown.cs @@ -8,6 +8,7 @@ using IO.MzML; using MzLibUtil; using NUnit.Framework; +using Omics.Modifications; using Proteomics; using Proteomics.ProteolyticDigestion; using TaskLayer; diff --git a/MetaMorpheus/Test/VariantSearchTests.cs b/MetaMorpheus/Test/VariantSearchTests.cs index 82d20ba42..d13602de4 100644 --- a/MetaMorpheus/Test/VariantSearchTests.cs +++ b/MetaMorpheus/Test/VariantSearchTests.cs @@ -12,6 +12,7 @@ using TaskLayer; using UsefulProteomicsDatabases; using Nett; +using Omics.Modifications; namespace Test { diff --git a/MetaMorpheus/Test/XLSearchOutputTest.cs b/MetaMorpheus/Test/XLSearchOutputTest.cs index 7066e2a1f..7a1406887 100644 --- a/MetaMorpheus/Test/XLSearchOutputTest.cs +++ b/MetaMorpheus/Test/XLSearchOutputTest.cs @@ -4,7 +4,7 @@ using TaskLayer; using EngineLayer; using System.Linq; -using Proteomics.Fragmentation; +using Omics.Fragmentation; namespace Test { @@ -99,9 +99,9 @@ public static void WriteXlSpectralLibraryTest() Assert.AreEqual(interSpectrum.AlphaPeptideSequence, "GVTVDKMTELR"); Assert.AreEqual(interSpectrum.BetaPeptideSequence, "SFTFVTKTPPAAVLLK"); Assert.True(interSpectrum.BetaPeptideSpectrum.IsBetaPeptide); - interLinkSpectrum.MatchedFragmentIons.Add(new MatchedFragmentIon(ref productWithNeutralLoss, 100, 100, 1)); + interLinkSpectrum.MatchedFragmentIons.Add(new MatchedFragmentIon(productWithNeutralLoss, 100, 100, 1)); CrosslinkLibrarySpectrum spectrumDup = (CrosslinkLibrarySpectrum)interLinkSpectrum; - spectrumDup.BetaPeptideSpectrum.MatchedFragmentIons.Add(new MatchedFragmentIon(ref productWithNeutralLoss20, 100, 100, 1)); + spectrumDup.BetaPeptideSpectrum.MatchedFragmentIons.Add(new MatchedFragmentIon(productWithNeutralLoss20, 100, 100, 1)); var spectrumString = spectrumDup.ToString(); // Check neutral loss fragments are written correctly StringAssert.Contains("\"Y1^1-10/0ppm\"", spectrumString); diff --git a/MetaMorpheus/Test/XLTest.cs b/MetaMorpheus/Test/XLTest.cs index a0f945fa4..b7f4af290 100644 --- a/MetaMorpheus/Test/XLTest.cs +++ b/MetaMorpheus/Test/XLTest.cs @@ -9,7 +9,7 @@ using NUnit.Framework; using Proteomics; using Proteomics.AminoAcidPolymer; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; @@ -18,6 +18,8 @@ using System.IO.Compression; using System.Linq; using System.Text; +using Omics.Digestion; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; diff --git a/MetaMorpheus/Test/XLTestNGlyco.cs b/MetaMorpheus/Test/XLTestNGlyco.cs index 7cac3f08f..34ad2ecd5 100644 --- a/MetaMorpheus/Test/XLTestNGlyco.cs +++ b/MetaMorpheus/Test/XLTestNGlyco.cs @@ -6,7 +6,7 @@ using MassSpectrometry; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; @@ -16,6 +16,7 @@ using UsefulProteomicsDatabases; using MzLibUtil; using Nett; +using Omics.Modifications; namespace Test { diff --git a/MetaMorpheus/Test/XLTestOGlyco.cs b/MetaMorpheus/Test/XLTestOGlyco.cs index 5d15b6d21..ae85af0cb 100644 --- a/MetaMorpheus/Test/XLTestOGlyco.cs +++ b/MetaMorpheus/Test/XLTestOGlyco.cs @@ -2,7 +2,7 @@ using MassSpectrometry; using NUnit.Framework; using Proteomics; -using Proteomics.Fragmentation; +using Omics.Fragmentation; using Proteomics.ProteolyticDigestion; using System; using System.Collections.Generic; @@ -19,6 +19,7 @@ using MzLibUtil; using Readers; using System.Text; +using Omics.Modifications; namespace Test { diff --git a/MetaMorpheus/Test/gptmdPrunedBdTests.cs b/MetaMorpheus/Test/gptmdPrunedBdTests.cs index b99c7cdda..586560fd0 100644 --- a/MetaMorpheus/Test/gptmdPrunedBdTests.cs +++ b/MetaMorpheus/Test/gptmdPrunedBdTests.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Modifications; using TaskLayer; using UsefulProteomicsDatabases; @@ -359,7 +360,7 @@ public static void TestProteinPrunedWithModSelection() CommonParameters commonParam = new CommonParameters(useDeltaScore: false); double[,] noiseData = new double[10000, 10000]; noiseData[0,0] = 1.0; - List matchedFragmentIons = new List() { }; + List matchedFragmentIons = new List() { }; MzSpectrum spectrum = new MzSpectrum(noiseData); MsDataScan scan = new MsDataScan(spectrum , 1, 1, true, Polarity.Unknown, 2, new MzLibUtil.MzRange(10, 1000), "", MZAnalyzerType.Orbitrap, 10000, null, noiseData, ""); testPostTaskParameters.ProteinList = new List() { protein1, protein2 }; @@ -464,7 +465,7 @@ public static void TestProteinPrunedWithModSelectionAndVariants() CommonParameters commonParam = new CommonParameters(useDeltaScore: false); double[,] noiseData = new double[10000, 10000]; noiseData[0, 0] = 1.0; - List matchedFragmentIons = new List() { }; + List matchedFragmentIons = new List() { }; MzSpectrum spectrum = new MzSpectrum(noiseData); MsDataScan scan = new MsDataScan(spectrum, 1, 1, true, Polarity.Unknown, 2, new MzLibUtil.MzRange(10, 1000), "", MZAnalyzerType.Orbitrap, 10000, null, noiseData, ""); testPostTaskParameters.ProteinList = proteinList; From 976ab079a4158d407d494d065f340477f2b83e70 Mon Sep 17 00:00:00 2001 From: nbollis Date: Wed, 10 Jan 2024 10:57:56 -0600 Subject: [PATCH 02/11] Adjusted digestionparams toml --- .../EngineLayer/Indexing/IndexingEngine.cs | 16 +++++++++++++--- MetaMorpheus/TaskLayer/MetaMorpheusTask.cs | 13 +++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs b/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs index 3b2817b71..e3f3a5ffc 100644 --- a/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs +++ b/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs @@ -260,9 +260,19 @@ private void AddInteriorTerminalModsToPrecursorIndex(List[] precursorIndex, foreach (KeyValuePair> relevantDatabaseMod in databaseAnnotatedMods) { int fragmentNumber = relevantDatabaseMod.Key; - Product fragmentAtIndex = fragmentMasses.Where(x => x.FragmentNumber == fragmentNumber).FirstOrDefault(); - double basePrecursorMass = fragmentAtIndex.NeutralMass == default(Product).NeutralMass ? - peptide.MonoisotopicMass : fragmentAtIndex.NeutralMass - DissociationTypeCollection.GetMassShiftFromProductType(fragmentAtIndex.ProductType) + WaterMonoisotopicMass; + Product fragmentAtIndex = fragmentMasses.FirstOrDefault(x => x.FragmentNumber == fragmentNumber); + + double basePrecursorMass; + if (fragmentAtIndex.NeutralMass == 0.0) + { + basePrecursorMass = peptide.MonoisotopicMass; + } + else + { + basePrecursorMass = fragmentAtIndex.NeutralMass - + DissociationTypeCollection.GetMassShiftFromProductType(fragmentAtIndex.ProductType) + + WaterMonoisotopicMass; + } foreach (Modification mod in relevantDatabaseMod.Value) { diff --git a/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs b/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs index 31f6b2189..e4c56cdd4 100644 --- a/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs +++ b/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs @@ -14,6 +14,7 @@ using System.Globalization; using System.IO; using System.Linq; +using System.Reflection; using System.Reflection.Metadata.Ecma335; using System.Text; using System.Threading.Tasks; @@ -66,6 +67,18 @@ public abstract class MetaMorpheusTask tmlString.Value == "AverageDdaScansWithOverlap" ? SpectraFileAveragingType.AverageDdaScans : Enum.Parse(tmlString.Value)))) + .ConfigureType(type => type + .IgnoreProperty(p => p.DigestionAgent) + .IgnoreProperty(p => p.MaxModsForPeptide) + .IgnoreProperty(p => p.MaxPeptideLength) + .IgnoreProperty(p => p.MinPeptideLength) + //.Map("MaxMods").ToKey("MaxModsForPeptide") + //.Map("MaxLength").ToKey("MaxPeptideLength") + //.Map("MinLength").ToKey("MinPeptideLength") + + + ) + ); From 12129f8aa4a096b5292c57193deec552edf18d99 Mon Sep 17 00:00:00 2001 From: nbollis Date: Wed, 10 Jan 2024 11:05:22 -0600 Subject: [PATCH 03/11] fixed indexing engine without having a default product type --- MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs b/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs index e3f3a5ffc..c586fa394 100644 --- a/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs +++ b/MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs @@ -263,7 +263,7 @@ private void AddInteriorTerminalModsToPrecursorIndex(List[] precursorIndex, Product fragmentAtIndex = fragmentMasses.FirstOrDefault(x => x.FragmentNumber == fragmentNumber); double basePrecursorMass; - if (fragmentAtIndex.NeutralMass == 0.0) + if (fragmentAtIndex is null) { basePrecursorMass = peptide.MonoisotopicMass; } From 9e4da0c7045a6b3ec552b2203cceea45bc395ef8 Mon Sep 17 00:00:00 2001 From: nbollis Date: Wed, 10 Jan 2024 11:18:45 -0600 Subject: [PATCH 04/11] Fixed silac test --- MetaMorpheus/Test/SilacTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MetaMorpheus/Test/SilacTest.cs b/MetaMorpheus/Test/SilacTest.cs index e62673798..778c65118 100644 --- a/MetaMorpheus/Test/SilacTest.cs +++ b/MetaMorpheus/Test/SilacTest.cs @@ -377,7 +377,7 @@ public static void TestSilacTurnover() string[] output = File.ReadAllLines(TestContext.CurrentContext.TestDirectory + @"/TestSilac/AllQuantifiedPeptides.tsv"); Assert.IsTrue(output[1].Contains("PEPTKIDEK\t")); //test the unlabeled is present Assert.IsTrue(output[0].Contains("\tIntensity_silac_Original\tIntensity_silac_NewlySynthesized\tIntensity_silacPart2_Original\tIntensity_silacPart2_NewlySynthesized\t" + - "Detection Type_silac_Original\tDetection Type_silac_NewlySynthesized\tDetection Type_silacPart2_Original\tDetection Type_silacPart2_NewlySynthesized\t")); //test filename changes + "Detection Type_silac_Original\tDetection Type_silac_NewlySynthesized\tDetection Type_silacPart2_Original\tDetection Type_silacPart2_NewlySynthesized")); //test filename changes Assert.IsTrue(output[1].Contains("\t1093750\t437500\t")); //test intensities output = File.ReadAllLines(TestContext.CurrentContext.TestDirectory + @"/TestSilac/AllQuantifiedPeaks.tsv"); From ad5097b4e4280d005cc5f1d46acdeb56ecec5560 Mon Sep 17 00:00:00 2001 From: nbollis Date: Wed, 10 Jan 2024 11:39:39 -0600 Subject: [PATCH 05/11] All Tests Pass! --- MetaMorpheus/Test/MetaDraw/MetaDrawTest.cs | 2 ++ MetaMorpheus/Test/SilacTest.cs | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/MetaMorpheus/Test/MetaDraw/MetaDrawTest.cs b/MetaMorpheus/Test/MetaDraw/MetaDrawTest.cs index 73b23a243..7dafc48b8 100644 --- a/MetaMorpheus/Test/MetaDraw/MetaDrawTest.cs +++ b/MetaMorpheus/Test/MetaDraw/MetaDrawTest.cs @@ -1125,6 +1125,8 @@ public static void TestMetaDrawLoadingWithWeirdFileNames() metadrawLogic.CleanUpResources(); // delete output + + File.Delete(pathWithPeriodInIt); Directory.Delete(outputFolder, true); } diff --git a/MetaMorpheus/Test/SilacTest.cs b/MetaMorpheus/Test/SilacTest.cs index 778c65118..74f86989a 100644 --- a/MetaMorpheus/Test/SilacTest.cs +++ b/MetaMorpheus/Test/SilacTest.cs @@ -412,7 +412,7 @@ public static void TestSilacTurnover() output = File.ReadAllLines(TestContext.CurrentContext.TestDirectory + @"/TestSilac/AllQuantifiedPeptides.tsv"); Assert.IsTrue(output[1].Contains("PEPTKIDEK\t")); //test the unlabeled is present - Assert.IsTrue(output[0].Contains("\tIntensity_silac_Original\tIntensity_silac_NewlySynthesized\tDetection Type_silac_Original\tDetection Type_silac_NewlySynthesized\t")); //test filename changes + Assert.IsTrue(output[0].Contains("\tIntensity_silac_Original\tIntensity_silac_NewlySynthesized\tDetection Type_silac_Original\tDetection Type_silac_NewlySynthesized")); //test filename changes Assert.IsTrue(output[1].Contains("\t656250\t875000\t")); //test intensities output = File.ReadAllLines(TestContext.CurrentContext.TestDirectory + @"/TestSilac/AllPSMs.psmtsv"); @@ -453,7 +453,7 @@ public static void TestSilacTurnover() output = File.ReadAllLines(TestContext.CurrentContext.TestDirectory + @"/TestSilac/AllQuantifiedPeptides.tsv"); Assert.IsTrue(output[1].Contains("PEPEPEPTK\t")); //test the unlabeled is present Assert.IsTrue(output[2].Contains("PEPTKIDEK\t")); //test the unlabeled is present - Assert.IsTrue(output[0].Contains("\tIntensity_silac_Original\tIntensity_silac_NewlySynthesized\tDetection Type_silac_Original\tDetection Type_silac_NewlySynthesized\t")); //test filename changes + Assert.IsTrue(output[0].Contains("\tIntensity_silac_Original\tIntensity_silac_NewlySynthesized\tDetection Type_silac_Original\tDetection Type_silac_NewlySynthesized")); //test filename changes Assert.IsTrue(output[1].Contains("\t2625000\t6125000\t")); //test the light intensity is not negative. Assert.IsTrue(output[2].Contains("\t10500000\t5250000\t")); //test intensities. The observation is 9/6/3. From c30b67cc5352b372307534740219d0c06f0926fc Mon Sep 17 00:00:00 2001 From: nbollis Date: Thu, 11 Jan 2024 14:06:05 -0600 Subject: [PATCH 06/11] Added toml test for new digestionparams --- MetaMorpheus/CMD/CMD.csproj | 2 +- MetaMorpheus/EngineLayer/EngineLayer.csproj | 2 +- MetaMorpheus/GUI/GUI.csproj | 2 +- MetaMorpheus/GuiFunctions/GuiFunctions.csproj | 2 +- MetaMorpheus/TaskLayer/MetaMorpheusTask.cs | 13 ++---- MetaMorpheus/TaskLayer/TaskLayer.csproj | 2 +- MetaMorpheus/Test/Test.csproj | 2 +- MetaMorpheus/Test/TestToml.cs | 46 +++++++++++++++++++ 8 files changed, 55 insertions(+), 16 deletions(-) diff --git a/MetaMorpheus/CMD/CMD.csproj b/MetaMorpheus/CMD/CMD.csproj index b275d6b86..85646b9f0 100644 --- a/MetaMorpheus/CMD/CMD.csproj +++ b/MetaMorpheus/CMD/CMD.csproj @@ -24,7 +24,7 @@ - + diff --git a/MetaMorpheus/EngineLayer/EngineLayer.csproj b/MetaMorpheus/EngineLayer/EngineLayer.csproj index c072889ac..0f22bcc70 100644 --- a/MetaMorpheus/EngineLayer/EngineLayer.csproj +++ b/MetaMorpheus/EngineLayer/EngineLayer.csproj @@ -21,7 +21,7 @@ - + diff --git a/MetaMorpheus/GUI/GUI.csproj b/MetaMorpheus/GUI/GUI.csproj index d4de3f8c0..29014e0f7 100644 --- a/MetaMorpheus/GUI/GUI.csproj +++ b/MetaMorpheus/GUI/GUI.csproj @@ -55,7 +55,7 @@ - + diff --git a/MetaMorpheus/GuiFunctions/GuiFunctions.csproj b/MetaMorpheus/GuiFunctions/GuiFunctions.csproj index e8f232287..5f600feb4 100644 --- a/MetaMorpheus/GuiFunctions/GuiFunctions.csproj +++ b/MetaMorpheus/GuiFunctions/GuiFunctions.csproj @@ -14,7 +14,7 @@ - + diff --git a/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs b/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs index e4c56cdd4..8dd270e14 100644 --- a/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs +++ b/MetaMorpheus/TaskLayer/MetaMorpheusTask.cs @@ -69,16 +69,9 @@ public abstract class MetaMorpheusTask : Enum.Parse(tmlString.Value)))) .ConfigureType(type => type .IgnoreProperty(p => p.DigestionAgent) - .IgnoreProperty(p => p.MaxModsForPeptide) - .IgnoreProperty(p => p.MaxPeptideLength) - .IgnoreProperty(p => p.MinPeptideLength) - //.Map("MaxMods").ToKey("MaxModsForPeptide") - //.Map("MaxLength").ToKey("MaxPeptideLength") - //.Map("MinLength").ToKey("MinPeptideLength") - - - ) - + .IgnoreProperty(p => p.MaxMods) + .IgnoreProperty(p => p.MaxLength) + .IgnoreProperty(p => p.MinLength)) ); diff --git a/MetaMorpheus/TaskLayer/TaskLayer.csproj b/MetaMorpheus/TaskLayer/TaskLayer.csproj index 8b1cbcfc6..68e09f204 100644 --- a/MetaMorpheus/TaskLayer/TaskLayer.csproj +++ b/MetaMorpheus/TaskLayer/TaskLayer.csproj @@ -21,7 +21,7 @@ - + diff --git a/MetaMorpheus/Test/Test.csproj b/MetaMorpheus/Test/Test.csproj index 63da5f2c8..49ca2eb5b 100644 --- a/MetaMorpheus/Test/Test.csproj +++ b/MetaMorpheus/Test/Test.csproj @@ -23,7 +23,7 @@ - + diff --git a/MetaMorpheus/Test/TestToml.cs b/MetaMorpheus/Test/TestToml.cs index 4a8bf2734..f17690598 100644 --- a/MetaMorpheus/Test/TestToml.cs +++ b/MetaMorpheus/Test/TestToml.cs @@ -10,6 +10,8 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Omics.Digestion; +using Omics.Fragmentation; using SpectralAveraging; using TaskLayer; using UsefulProteomicsDatabases; @@ -262,6 +264,50 @@ public static void TestFileSpecificAndCommonParametersNameEquality() Assert.That(commonProperty.GetType(), Is.EqualTo(fileSpecificProperty.GetType())); } } + + [Test] + public static void TestDigestionParamsTomlReadingWriting() + { + var digestionParams = new DigestionParams("top-down", 4, 5, 12345, 2012, + InitiatorMethionineBehavior.Undefined, 4, CleavageSpecificity.Semi, FragmentationTerminus.Both, false, + true, true); + var commonParams = new CommonParameters(digestionParams: digestionParams); + var searchTask = new SearchTask(); + searchTask.CommonParameters = commonParams; + + // check that digestion params are correct in search task + Assert.That(searchTask.CommonParameters.DigestionParams.FragmentationTerminus, Is.EqualTo(digestionParams.FragmentationTerminus)); + Assert.That(searchTask.CommonParameters.DigestionParams.SearchModeType, Is.EqualTo(digestionParams.SearchModeType)); + Assert.That(searchTask.CommonParameters.DigestionParams.InitiatorMethionineBehavior, Is.EqualTo(digestionParams.InitiatorMethionineBehavior)); + Assert.That(searchTask.CommonParameters.DigestionParams.MaxMissedCleavages, Is.EqualTo(digestionParams.MaxMissedCleavages)); + Assert.That(searchTask.CommonParameters.DigestionParams.MaxModificationIsoforms, Is.EqualTo(digestionParams.MaxModificationIsoforms)); + Assert.That(searchTask.CommonParameters.DigestionParams.MinPeptideLength, Is.EqualTo(digestionParams.MinPeptideLength)); + Assert.That(searchTask.CommonParameters.DigestionParams.MaxPeptideLength, Is.EqualTo(digestionParams.MaxPeptideLength)); + Assert.That(searchTask.CommonParameters.DigestionParams.Protease.Name, Is.EqualTo(digestionParams.Protease.Name)); + Assert.That(searchTask.CommonParameters.DigestionParams.GeneratehUnlabeledProteinsForSilac, Is.EqualTo(digestionParams.GeneratehUnlabeledProteinsForSilac)); + Assert.That(searchTask.CommonParameters.DigestionParams.KeepNGlycopeptide, Is.EqualTo(digestionParams.KeepNGlycopeptide)); + Assert.That(searchTask.CommonParameters.DigestionParams.KeepOGlycopeptide, Is.EqualTo(digestionParams.KeepOGlycopeptide)); + + // write and read file + string filePath = Path.Combine(TestContext.CurrentContext.TestDirectory, "testDigestionParams.toml"); + Toml.WriteFile(searchTask, filePath, MetaMorpheusTask.tomlConfig); + var searchTaskLoaded = Toml.ReadFile(filePath, MetaMorpheusTask.tomlConfig); + + // check that digestion params are correct in search task + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.FragmentationTerminus, Is.EqualTo(digestionParams.FragmentationTerminus)); + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.SearchModeType, Is.EqualTo(digestionParams.SearchModeType)); + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.InitiatorMethionineBehavior, Is.EqualTo(digestionParams.InitiatorMethionineBehavior)); + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.MaxMissedCleavages, Is.EqualTo(digestionParams.MaxMissedCleavages)); + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.MaxModificationIsoforms, Is.EqualTo(digestionParams.MaxModificationIsoforms)); + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.MinPeptideLength, Is.EqualTo(digestionParams.MinPeptideLength)); + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.MaxPeptideLength, Is.EqualTo(digestionParams.MaxPeptideLength)); + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.Protease.Name, Is.EqualTo(digestionParams.Protease.Name)); + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.GeneratehUnlabeledProteinsForSilac, Is.EqualTo(digestionParams.GeneratehUnlabeledProteinsForSilac)); + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.KeepNGlycopeptide, Is.EqualTo(digestionParams.KeepNGlycopeptide)); + Assert.That(searchTaskLoaded.CommonParameters.DigestionParams.KeepOGlycopeptide, Is.EqualTo(digestionParams.KeepOGlycopeptide)); + + File.Delete(filePath); + } } } \ No newline at end of file From ff98c7736b82c92baad812ef38e552764997f090 Mon Sep 17 00:00:00 2001 From: nbollis Date: Thu, 18 Jan 2024 10:45:55 -0600 Subject: [PATCH 07/11] ope. Switched to proper version of mzLib --- MetaMorpheus/CMD/CMD.csproj | 2 +- MetaMorpheus/EngineLayer/EngineLayer.csproj | 2 +- MetaMorpheus/GUI/GUI.csproj | 2 +- MetaMorpheus/GuiFunctions/GuiFunctions.csproj | 2 +- MetaMorpheus/TaskLayer/TaskLayer.csproj | 2 +- MetaMorpheus/Test/Test.csproj | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/MetaMorpheus/CMD/CMD.csproj b/MetaMorpheus/CMD/CMD.csproj index 85646b9f0..ebe4a9739 100644 --- a/MetaMorpheus/CMD/CMD.csproj +++ b/MetaMorpheus/CMD/CMD.csproj @@ -24,7 +24,7 @@ - + diff --git a/MetaMorpheus/EngineLayer/EngineLayer.csproj b/MetaMorpheus/EngineLayer/EngineLayer.csproj index 0f22bcc70..f73bd152a 100644 --- a/MetaMorpheus/EngineLayer/EngineLayer.csproj +++ b/MetaMorpheus/EngineLayer/EngineLayer.csproj @@ -21,7 +21,7 @@ - + diff --git a/MetaMorpheus/GUI/GUI.csproj b/MetaMorpheus/GUI/GUI.csproj index 29014e0f7..99be99737 100644 --- a/MetaMorpheus/GUI/GUI.csproj +++ b/MetaMorpheus/GUI/GUI.csproj @@ -55,7 +55,7 @@ - + diff --git a/MetaMorpheus/GuiFunctions/GuiFunctions.csproj b/MetaMorpheus/GuiFunctions/GuiFunctions.csproj index 5f600feb4..fdb61d2d4 100644 --- a/MetaMorpheus/GuiFunctions/GuiFunctions.csproj +++ b/MetaMorpheus/GuiFunctions/GuiFunctions.csproj @@ -14,7 +14,7 @@ - + diff --git a/MetaMorpheus/TaskLayer/TaskLayer.csproj b/MetaMorpheus/TaskLayer/TaskLayer.csproj index 68e09f204..889bb446a 100644 --- a/MetaMorpheus/TaskLayer/TaskLayer.csproj +++ b/MetaMorpheus/TaskLayer/TaskLayer.csproj @@ -21,7 +21,7 @@ - + diff --git a/MetaMorpheus/Test/Test.csproj b/MetaMorpheus/Test/Test.csproj index 49ca2eb5b..ebf27cde9 100644 --- a/MetaMorpheus/Test/Test.csproj +++ b/MetaMorpheus/Test/Test.csproj @@ -23,7 +23,7 @@ - + From 031c96292f6bd9b3e461f5d147cbaf322171092d Mon Sep 17 00:00:00 2001 From: nbollis Date: Thu, 18 Jan 2024 16:16:21 -0600 Subject: [PATCH 08/11] Added Omics to project.wxs --- MetaMorpheus/MetaMorpheusSetup/Product.wxs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MetaMorpheus/MetaMorpheusSetup/Product.wxs b/MetaMorpheus/MetaMorpheusSetup/Product.wxs index 5d9ec87f8..4bb106375 100644 --- a/MetaMorpheus/MetaMorpheusSetup/Product.wxs +++ b/MetaMorpheus/MetaMorpheusSetup/Product.wxs @@ -271,6 +271,9 @@ + + + From 87d9844298ace9fce7ddf0f5a0157107a8296288 Mon Sep 17 00:00:00 2001 From: nbollis Date: Thu, 18 Jan 2024 19:00:28 -0600 Subject: [PATCH 09/11] Updated ParsimonySequence to use interfaces --- .../ProteinParsimony/ParsimonySequence.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/MetaMorpheus/EngineLayer/ProteinParsimony/ParsimonySequence.cs b/MetaMorpheus/EngineLayer/ProteinParsimony/ParsimonySequence.cs index 64d4f7b5f..139670fe2 100644 --- a/MetaMorpheus/EngineLayer/ProteinParsimony/ParsimonySequence.cs +++ b/MetaMorpheus/EngineLayer/ProteinParsimony/ParsimonySequence.cs @@ -1,29 +1,30 @@ -using Proteomics.ProteolyticDigestion; +using Omics; +using Omics.Digestion; namespace EngineLayer.ProteinParsimony { internal class ParsimonySequence { - public ParsimonySequence(PeptideWithSetModifications pwsm, bool TreatModPeptidesAsDifferentPeptides) + public ParsimonySequence(IBioPolymerWithSetMods pwsm, bool TreatModPeptidesAsDifferentPeptides) { Sequence = TreatModPeptidesAsDifferentPeptides ? pwsm.FullSequence : pwsm.BaseSequence; - Protease = pwsm.DigestionParams.DigestionAgent as Protease ?? throw new MetaMorpheusException("Digestion agent is not of type protease"); + DigestionAgent = pwsm.DigestionParams.DigestionAgent; } public string Sequence { get; } - public Protease Protease { get; } + public DigestionAgent DigestionAgent { get; } public override bool Equals(object obj) { ParsimonySequence other = (ParsimonySequence)obj; return other != null && (Sequence == null && other.Sequence == null || Sequence.Equals(other.Sequence)) - && (Protease == null && other.Protease == null || Protease.Equals(other.Protease)); + && (DigestionAgent == null && other.DigestionAgent == null || DigestionAgent.Equals(other.DigestionAgent)); } public override int GetHashCode() { - return Sequence.GetHashCode() ^ Protease.GetHashCode(); + return Sequence.GetHashCode() ^ DigestionAgent.GetHashCode(); } } } \ No newline at end of file From ddfb9623928dc9632752c0cbc3db9756c161eabf Mon Sep 17 00:00:00 2001 From: trishorts Date: Mon, 12 Feb 2024 13:46:54 -0600 Subject: [PATCH 10/11] N-glyco search improvements (#2322) * reverted filtering method for psms passed to FlashLFQ * refactor glycospsmwriter and split from xlwriter * fix unit tests * rename N and O glyco test classes * refactor is patially working * files written to correct directory * now with glyco protein parsimony and writing all quantified proteins * nglycoBugged * n glyco output is correct now i think * yo * fix unit tests * fix more unit tests * dont need glyco stuff in writexl anymore * n glyco individual file unit test --------- Co-authored-by: Alex Co-authored-by: MICHAEL SHORTREED --- .../FdrAnalysis/FdrAnalysisEngine.cs | 2 +- .../GlycoSearch/GlycoSpectralMatch.cs | 172 ++++++---------- .../PostGlycoSearchAnalysisTask.cs | 185 ++++++++++-------- .../GlycoSearchTask/WriteGlycoFile.cs | 114 +++++++++++ .../XLSearchTask/PostXLSearchAnalysisTask.cs | 16 +- .../{WriteFile.cs => WriteXlFile.cs} | 102 +--------- MetaMorpheus/Test/OutputTest.cs | 2 +- .../Test/{XLTestNGlyco.cs => TestNGlyco.cs} | 67 ++++++- .../Test/{XLTestOGlyco.cs => TestOGlyco.cs} | 146 ++++++++------ MetaMorpheus/Test/XLTest.cs | 16 +- 10 files changed, 448 insertions(+), 374 deletions(-) create mode 100644 MetaMorpheus/TaskLayer/GlycoSearchTask/WriteGlycoFile.cs rename MetaMorpheus/TaskLayer/XLSearchTask/{WriteFile.cs => WriteXlFile.cs} (86%) rename MetaMorpheus/Test/{XLTestNGlyco.cs => TestNGlyco.cs} (84%) rename MetaMorpheus/Test/{XLTestOGlyco.cs => TestOGlyco.cs} (94%) diff --git a/MetaMorpheus/EngineLayer/FdrAnalysis/FdrAnalysisEngine.cs b/MetaMorpheus/EngineLayer/FdrAnalysis/FdrAnalysisEngine.cs index 694133a6d..95c8bc3a8 100644 --- a/MetaMorpheus/EngineLayer/FdrAnalysis/FdrAnalysisEngine.cs +++ b/MetaMorpheus/EngineLayer/FdrAnalysis/FdrAnalysisEngine.cs @@ -31,7 +31,7 @@ protected override MetaMorpheusEngineResults RunSpecific() Status("Running FDR analysis..."); DoFalseDiscoveryRateAnalysis(myAnalysisResults); - + Status("Done."); myAnalysisResults.PsmsWithin1PercentFdr = AllPsms.Count(b => b.FdrInfo.QValue <= 0.01 && !b.IsDecoy); return myAnalysisResults; diff --git a/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs b/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs index 0b32f1001..58a5ed109 100644 --- a/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs +++ b/MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs @@ -140,119 +140,40 @@ public static string GetTabSepHeaderSingle() sb.Append("Matched Ion Mass Diff (Da)" + '\t'); sb.Append("Matched Ion Mass Diff (Ppm)" + '\t'); sb.Append("Matched Ion Intensities" + '\t'); + sb.Append("Matched Ion Counts" + '\t'); sb.Append("Decoy/Contaminant/Target" + '\t'); sb.Append("QValue" + '\t'); sb.Append("PEP" + '\t'); - sb.Append("PEP_QValue" + '\t'); + sb.Append("PEP_QValue"); return sb.ToString(); } - public static string GetTabSepHeaderOGlyco() + public static string GetTabSeperatedHeaderGlyco() { var sb = new StringBuilder(); - sb.Append("File Name" + '\t'); - sb.Append("Scan Number" + '\t'); - sb.Append("Scan Retention Time" + '\t'); - sb.Append("Precursor Scan Number" + '\t'); - sb.Append("Precursor MZ" + '\t'); - sb.Append("Precursor Charge" + '\t'); - sb.Append("Precursor Mass" + '\t'); - - sb.Append("Protein Accession" + '\t'); - sb.Append("Organism" + '\t'); - sb.Append("Protein Name" + '\t'); - sb.Append("Start and End Residues In Protein" + '\t'); - sb.Append("Base Sequence" + '\t'); - sb.Append("FlankingResidues" + '\t'); - sb.Append("Full Sequence" + '\t'); - sb.Append("Number of Mods" + '\t'); - sb.Append("Peptide Monoisotopic Mass" + '\t'); - sb.Append("Score" + '\t'); - sb.Append("Rank" + '\t'); - - sb.Append("Matched Ion Series" + '\t'); - sb.Append("Matched Ion Mass-To-Charge Ratios" + '\t'); - sb.Append("Matched Ion Mass Diff (Da)" + '\t'); - sb.Append("Matched Ion Mass Diff (Ppm)" + '\t'); - sb.Append("Matched Ion Intensities" + '\t'); - sb.Append("Matched Ion Counts" + '\t'); - - sb.Append("Decoy/Contaminant/Target" + '\t'); - sb.Append("QValue" + '\t'); - sb.Append("PEP" + '\t'); - sb.Append("PEP_QValue" + '\t'); - + sb.Append("\t");//provides the separation needed from GetTabSepHeaderSingle() sb.Append("Localization Score" + '\t'); sb.Append("Yion Score" + '\t'); sb.Append("DiagonosticIon Score" + '\t'); - sb.Append("Plausible Number Of Glycans" + '\t'); - sb.Append("Total Glycosylation sites" + '\t'); + sb.Append("Plausible Number Of Glycans" + '\t');//Not used for N-Glyco + sb.Append("Total Glycosylation sites" + '\t');//Not used for N-Glyco sb.Append("GlycanMass" + '\t'); sb.Append("Plausible GlycanComposition" + '\t'); - sb.Append("N-Glycan motif Check" + '\t'); + sb.Append("N-Glycan motif Check" + '\t');//Not used for N-Glyco sb.Append("R138/144" + '\t'); sb.Append("Plausible GlycanStructure" + '\t'); sb.Append("GlycanLocalizationLevel" + '\t'); sb.Append("Localized Glycans with Peptide Site Specific Probability" + '\t'); sb.Append("Localized Glycans with Protein Site Specific Probability" + '\t'); - sb.Append("All potential glycan localizations" + '\t'); - sb.Append("AllSiteSpecificLocalizationProbability" + '\t'); + sb.Append("All potential glycan localizations" + '\t');//Not used for N-Glyco + sb.Append("AllSiteSpecificLocalizationProbability");//Not used for N-Glyco return sb.ToString(); } - public static string GetTabSepHeaderNGlyco() - { - var sb = new StringBuilder(); - sb.Append("File Name" + '\t'); - sb.Append("Scan Number" + '\t'); - sb.Append("Scan Retention Time" + '\t'); - sb.Append("Precursor Scan Number" + '\t'); - sb.Append("Precursor MZ" + '\t'); - sb.Append("Precursor Charge" + '\t'); - sb.Append("Precursor Mass" + '\t'); - - sb.Append("Protein Accession" + '\t'); - sb.Append("Organism" + '\t'); - sb.Append("Protein Name" + '\t'); - sb.Append("Start and End Residues In Protein" + '\t'); - sb.Append("Base Sequence" + '\t'); - sb.Append("FlankingResidues" + '\t'); - sb.Append("Full Sequence" + '\t'); - sb.Append("Number of Mods" + '\t'); - sb.Append("Peptide Monoisotopic Mass" + '\t'); - sb.Append("Score" + '\t'); - sb.Append("Rank" + '\t'); - - sb.Append("Matched Ion Series" + '\t'); - sb.Append("Matched Ion Mass-To-Charge Ratios" + '\t'); - sb.Append("Matched Ion Mass Diff (Da)" + '\t'); - sb.Append("Matched Ion Mass Diff (Ppm)" + '\t'); - sb.Append("Matched Ion Intensities" + '\t'); - sb.Append("Matched Ion Counts" + '\t'); - - sb.Append("Decoy/Contaminant/Target" + '\t'); - sb.Append("QValue" + '\t'); - sb.Append("PEP" + '\t'); - sb.Append("PEP_QValue" + '\t'); - - sb.Append("Localization Score" + '\t'); - sb.Append("Yion Score" + '\t'); - sb.Append("DiagonosticIon Score" + '\t'); - sb.Append("GlycanMass" + '\t'); - sb.Append("Plausible GlycanComposition" + '\t'); - sb.Append("R138/144" + '\t'); - sb.Append("Plausible GlycanStructure" + '\t'); - sb.Append("GlycanLocalizationLevel" + '\t'); - sb.Append("Localized Glycans with Peptide Site Specific Probability" + '\t'); - sb.Append("Localized Glycans with Protein Site Specific Probability" + '\t'); - - return sb.ToString(); - } - - public override string ToString() + public string SingleToString() { var sb = new StringBuilder(); sb.Append(FullFilePath + "\t"); @@ -328,31 +249,25 @@ public override string ToString() sb.Append(FdrInfo!=null? FdrInfo.QValue.ToString() : "-1" ); sb.Append("\t"); - sb.Append("0" + "\t"); + sb.Append("0" + "\t"); //This is space for PEP - sb.Append("0" + "\t"); + sb.Append("0"); //This is space for PEP Q-value - if (NGlycan != null) - { - sb.Append(PeptideScore + "\t"); - sb.Append(GlycanScore + "\t"); - sb.Append(DiagnosticIonScore + "\t"); - sb.Append((double)NGlycan.First().Mass / 1E5); sb.Append("\t"); - sb.Append(Glycan.GetKindString(NGlycan.First().Kind)); sb.Append("\t"); - sb.Append(R138vs144.ToString()); sb.Append("\t"); - if (NGlycan.First().Struc!=null) - { - sb.Append(NGlycan.First().Struc); sb.Append("\t"); - } - } + return sb.ToString(); + } + + //This should be appended to SingleToString + public string GlycoToString() + { + var sb = new StringBuilder(); - if (Routes != null) + if (Routes != null)//this gets the o-glyco { sb.Append(LocalizationGraphs.First().TotalScore + "\t"); sb.Append(GlycanScore + "\t"); - sb.Append(DiagnosticIonScore + "\t"); + sb.Append(DiagnosticIonScore + "\t"); var glycanBox = GlycanBox.OGlycanBoxes[Routes.First().ModBoxId]; @@ -377,16 +292,14 @@ public override string ToString() glycans[i] = GlycanBox.GlobalOGlycans[glycanBox.ModIds[i]]; } - if (glycans.First().Struc!=null) + if (glycans.First().Struc != null) { - sb.Append(string.Join(",", glycans.Select(p => p.Struc.ToString()).ToArray())); + sb.Append(string.Join(",", glycans.Select(p => p.Struc.ToString()).ToArray())); } sb.Append("\t"); - sb.Append(CorrectLocalizationLevel(SiteSpeciLocalProb, LocalizationGraphs.First(), Routes.First(), LocalizedGlycan, LocalizationLevel)) ; sb.Append("\t"); + sb.Append(CorrectLocalizationLevel(SiteSpeciLocalProb, LocalizationGraphs.First(), Routes.First(), LocalizedGlycan, LocalizationLevel)); sb.Append("\t"); - //string localizedGlycan = LocalizedGlycan.Where(p=>p.Item3).Count() > 0 ? "[" + string.Join(",", LocalizedGlycan.Where(p => p.Item3).Select(p => p.Item1.ToString() + "-" + p.Item2.ToString())) + "]" : ""; - //sb.Append(localizedGlycan); sb.Append("\t"); string local_peptide = ""; string local_protein = ""; LocalizedSiteSpeciLocalInfo(SiteSpeciLocalProb, LocalizedGlycan, OneBasedStartResidueInProtein, ref local_peptide, ref local_protein); @@ -397,10 +310,45 @@ public override string ToString() sb.Append(SiteSpeciLocalInfo(SiteSpeciLocalProb)); } + else if (GlycanScore > 0)//this gets the N-glcyo that remain + { + sb.Append("\t"); //Localization score + + sb.Append(GlycanScore + "\t"); + + sb.Append(DiagnosticIonScore + "\t"); + + sb.Append("\t"); //number of mods + + sb.Append( "\t"); //mod pos length + sb.Append((double)NGlycan.First().Mass / 1E5 + "\t"); + + sb.Append(Glycan.GetKindString(NGlycan.First().Kind) + "\t"); + + var NSiteExist = MotifExist(BaseSequence, new string[] { "Nxt", "Nxs" }); + + sb.Append(NSiteExist); sb.Append("\t"); + + sb.Append(R138vs144.ToString()); sb.Append("\t"); + + if (NGlycan.First().Struc != null) + { + sb.Append(NGlycan.First().Struc); + } + sb.Append("\t"); + + sb.Append("\t"); + + sb.Append("\t"); + sb.Append("\t"); + + sb.Append("\t"); + + sb.Append(SiteSpeciLocalInfo(SiteSpeciLocalProb)); + } return sb.ToString(); } - public static Dictionary MatchedIonDataDictionary(List matchedFragmentIons) { Dictionary s = new Dictionary(); diff --git a/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisTask.cs b/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisTask.cs index 077716c00..3d5cde563 100644 --- a/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisTask.cs +++ b/MetaMorpheus/TaskLayer/GlycoSearchTask/PostGlycoSearchAnalysisTask.cs @@ -2,14 +2,12 @@ using EngineLayer.GlycoSearch; using EngineLayer.FdrAnalysis; using Proteomics; -using System; using System.Collections.Generic; using System.IO; using System.Linq; using FlashLFQ; -using pepXML.Generated; using Proteomics.ProteolyticDigestion; -using TaskLayer.MbrAnalysis; +using ThermoFisher.CommonCore.Data; using ProteinGroup = EngineLayer.ProteinGroup; namespace TaskLayer @@ -40,90 +38,116 @@ public MyTaskResults Run(string OutputFolder, List dbFilenameList, Li } var allPSMs = allPsms.OrderByDescending(p => p.Score).ToList(); + //This is all psms for all files including glyco- and non-glyco psms. SingleFDRAnalysis(allPSMs, commonParameters, new List { taskId }); List filteredGsms = allPSMs.Where(p => p.FdrInfo.QValue < 0.01).ToList(); - if (Parameters.GlycoSearchParameters.DoParsimony) + //write individual file results + if (Parameters.GlycoSearchParameters.WriteIndividualFiles) { - if (Parameters.GlycoSearchParameters.WriteIndividualFiles) + string individualFileResults = Path.Combine(OutputFolder, "IndividualFileResults"); + if (!Directory.Exists(individualFileResults)) { - string individualFileResults = Path.Combine(OutputFolder, "IndividualFileResults"); - if (!Directory.Exists(individualFileResults)) + Directory.CreateDirectory(individualFileResults); + } + + foreach (var fileSpecificGSMs in filteredGsms.GroupBy(p => p.FullFilePath)) + { + string individualFileFolder = Path.GetFileNameWithoutExtension(fileSpecificGSMs.Key); + string individualFileFolderPath = Path.Combine(individualFileResults, individualFileFolder); + if (!Directory.Exists(individualFileFolderPath)) { - Directory.CreateDirectory(individualFileResults); + Directory.CreateDirectory(individualFileFolderPath); } - - foreach (var fileSpecificGSMs in filteredGsms.GroupBy(p => p.FullFilePath)) + var fsgList = fileSpecificGSMs.ToList(); + if (Parameters.GlycoSearchParameters.DoParsimony) { - string individualFileFolder = Path.GetFileNameWithoutExtension(fileSpecificGSMs.Key); - string individualFileFolderPath = Path.Combine(individualFileResults, individualFileFolder); - if (!Directory.Exists(individualFileFolderPath)) - { - Directory.CreateDirectory(individualFileFolderPath); - } - var fsgList = fileSpecificGSMs.ToList(); GlycoProteinAnalysis(fsgList, individualFileFolderPath, individualFileFolder); - foreach (GlycoSpectralMatch gsm in fsgList) //maybe this needs to be the filterd list??? - { - gsm.ResolveAllAmbiguities(); - } - var individualFilePsmsPath = Path.Combine(individualFileFolderPath, individualFileFolder + "_AllPSMs.psmtsv"); - WriteFile.WritePsmGlycoToTsv(fsgList, individualFilePsmsPath, 1); - DividePsmsIntoGroupsWriteToTsv(glycoSearchParameters.GlycoSearchType, fsgList, commonParameters, taskId, individualFileFolderPath, individualFileFolder); } + + foreach (GlycoSpectralMatch gsm in fsgList) //maybe this needs to be the filterd list??? + { + gsm.ResolveAllAmbiguities(); + } + var individualFilePsmsPath = Path.Combine(individualFileFolderPath, individualFileFolder + "_AllPSMs.psmtsv"); + WriteGlycoFile.WritePsmGlycoToTsv(fsgList, individualFilePsmsPath, false);//this is everything, glyco and non-glyco + //the individual file AllPSMs was just written. The next method writes only those PSMs that have a glyco mod + DivideGlycoPsmsIntoGroupsWriteToTsv(glycoSearchParameters.GlycoSearchType, fsgList, commonParameters, taskId, individualFileFolderPath, individualFileFolder); } - - GlycoProteinAnalysis(filteredGsms, OutputFolder);//Do the whole group last so inference is done on the whole group - foreach (GlycoSpectralMatch gsm in allPSMs) //maybe this needs to be the filterd list??? - { - gsm.ResolveAllAmbiguities(); - } - DividePsmsIntoGroupsWriteToTsv(glycoSearchParameters.GlycoSearchType, allPSMs, commonParameters, taskId, OutputFolder, null); } - else + + //write combined results + switch (glycoSearchParameters.GlycoSearchType) { - if (Parameters.GlycoSearchParameters.WriteIndividualFiles) //even if we don't do parsimony, we can still get individual file results - { - string individualFileResults = Path.Combine(OutputFolder, "IndividualFileResults"); - if (!Directory.Exists(individualFileResults)) + case GlycoSearchType.OGlycanSearch: + var allPsmsOgly = filteredGsms.Where(p => p.Routes != null).ToList(); + if (allPsmsOgly.Any()) { - Directory.CreateDirectory(individualFileResults); + SingleFDRAnalysis(allPsmsOgly, commonParameters, new List { taskId }); + var writtenFileOGlyco = Path.Combine(OutputFolder + "\\oglyco" + ".psmtsv"); + + var ProteinLevelLocalization = GlycoProteinParsimony.ProteinLevelGlycoParsimony(allPsmsOgly.Where(p => p.ProteinAccession != null && p.OneBasedStartResidueInProtein.HasValue).ToList()); + var seen_oglyco_localization_file = Path.Combine(OutputFolder + "\\seen_oglyco_localization" + ".tsv"); + WriteGlycoFile.WriteSeenProteinGlycoLocalization(ProteinLevelLocalization, seen_oglyco_localization_file); + + var protein_oglyco_localization_file = Path.Combine(OutputFolder + "\\protein_oglyco_localization" + ".tsv"); + WriteGlycoFile.WriteProteinGlycoLocalization(ProteinLevelLocalization, protein_oglyco_localization_file); + WriteGlycoFile.WritePsmGlycoToTsv(allPsmsOgly, writtenFileOGlyco, true); //we write this last so localization can be attempted } + break; + case GlycoSearchType.NGlycanSearch: + var allPsmsNgly = filteredGsms.Where(p => p.GlycanScore > 0 && p.Routes == null).ToList(); + if (allPsmsNgly.Any()) + { + SingleFDRAnalysis(allPsmsNgly, commonParameters, new List { taskId }); + + var writtenFileNGlyco = Path.Combine(OutputFolder + "\\nglyco" + ".psmtsv"); + + var ProteinLevelLocalization = GlycoProteinParsimony.ProteinLevelGlycoParsimony(allPsmsNgly.Where(p => p.ProteinAccession != null && p.OneBasedStartResidueInProtein.HasValue).ToList()); + var seen_nglyco_localization_file = Path.Combine(OutputFolder + "\\seen_nglyco_localization" + ".tsv"); + WriteGlycoFile.WriteSeenProteinGlycoLocalization(ProteinLevelLocalization, seen_nglyco_localization_file); - foreach (var fileSpecificGSMs in filteredGsms.GroupBy(p => p.FullFilePath)) + var protein_nglyco_localization_file = Path.Combine(OutputFolder + "\\protein_nglyco_localization" + ".tsv"); + WriteGlycoFile.WriteProteinGlycoLocalization(ProteinLevelLocalization, protein_nglyco_localization_file); + WriteGlycoFile.WritePsmGlycoToTsv(allPsmsNgly, writtenFileNGlyco, true); //we write this last so localization can be attempted + } + break; + case GlycoSearchType.N_O_GlycanSearch: + default: + var allPsmsgly = filteredGsms.Where(p => p.GlycanScore > 0).ToList(); + if (allPsmsgly.Any()) { - string individualFileFolder = Path.GetFileNameWithoutExtension(fileSpecificGSMs.Key); - string individualFileFolderPath = Path.Combine(individualFileResults, individualFileFolder); - if (!Directory.Exists(individualFileFolderPath)) - { - Directory.CreateDirectory(individualFileFolderPath); - } - var fsgList = fileSpecificGSMs.ToList(); - GlycoAccessionAnalysis(fsgList, individualFileFolderPath, individualFileFolder); - foreach (GlycoSpectralMatch gsm in fsgList) //maybe this needs to be the filterd list??? - { - gsm.ResolveAllAmbiguities(); - } - var individualFilePsmsPath = Path.Combine(individualFileFolderPath, individualFileFolder + "_AllPSMs.psmtsv"); - WriteFile.WritePsmGlycoToTsv(fsgList, individualFilePsmsPath, 1); - DividePsmsIntoGroupsWriteToTsv(glycoSearchParameters.GlycoSearchType, fsgList, commonParameters, taskId, individualFileFolderPath, individualFileFolder); + SingleFDRAnalysis(allPsmsgly, commonParameters, new List { taskId }); + + var writtenFileNOGlyco = Path.Combine(OutputFolder + "\\no_glyco" + ".psmtsv"); + + var ProteinLevelLocalization = GlycoProteinParsimony.ProteinLevelGlycoParsimony(allPsmsgly.Where(p => p.ProteinAccession != null && p.OneBasedStartResidueInProtein.HasValue).ToList()); + var seen_no_glyco_localization_file = Path.Combine(OutputFolder + "\\seen_no_glyco_localization" + ".tsv"); + WriteGlycoFile.WriteSeenProteinGlycoLocalization(ProteinLevelLocalization, seen_no_glyco_localization_file); + + var protein_no_glyco_localization_file = Path.Combine(OutputFolder + "\\protein_no_glyco_localization" + ".tsv"); + WriteGlycoFile.WriteProteinGlycoLocalization(ProteinLevelLocalization, protein_no_glyco_localization_file); + WriteGlycoFile.WritePsmGlycoToTsv(allPsmsgly, writtenFileNOGlyco, true); //we write this last so localization can be attempted } - } + break; + } + if (glycoSearchParameters.DoParsimony) + { + GlycoProteinAnalysis(filteredGsms, OutputFolder);//Do the whole group last so inference is done on the whole group + } + else + { GlycoAccessionAnalysis(filteredGsms, OutputFolder);//Do the whole group last so inference is done on the whole group - foreach (GlycoSpectralMatch gsm in allPSMs) //maybe this needs to be the filterd list??? - { - gsm.ResolveAllAmbiguities(); - } - DividePsmsIntoGroupsWriteToTsv(glycoSearchParameters.GlycoSearchType, allPSMs, commonParameters, taskId, OutputFolder, null); } + QuantificationAnalysis(); WriteQuantificationResults(); var writtenFileSingle = Path.Combine(OutputFolder, "AllPSMs.psmtsv"); - WriteFile.WritePsmGlycoToTsv(filteredGsms, writtenFileSingle, 1); + WriteGlycoFile.WritePsmGlycoToTsv(filteredGsms, writtenFileSingle, true); FinishedWritingFile(writtenFileSingle, new List { taskId }); return MyTaskResults; @@ -131,56 +155,56 @@ public MyTaskResults Run(string OutputFolder, List dbFilenameList, Li - private void DividePsmsIntoGroupsWriteToTsv(GlycoSearchType glycoSearchType, List gsms, CommonParameters commonParameters, string taskId, string individualFileFolderPath, string individualFileFolder) + private void DivideGlycoPsmsIntoGroupsWriteToTsv(GlycoSearchType glycoSearchType, List gsms, CommonParameters commonParameters, string taskId, string individualFileFolderPath, string individualFileFolder) { switch (glycoSearchType) { case GlycoSearchType.OGlycanSearch: - var allPsmsOgly = gsms.Where(p => p.Routes != null).OrderByDescending(p => p.Score).ToList(); + var allPsmsOgly = gsms.Where(p => p.Routes != null).ToList(); if (allPsmsOgly.Any()) { SingleFDRAnalysis(allPsmsOgly, commonParameters, new List { taskId }); var writtenFileOGlyco = Path.Combine(individualFileFolderPath, individualFileFolder + "oglyco" + ".psmtsv"); - WriteFile.WritePsmGlycoToTsv(allPsmsOgly, writtenFileOGlyco, 2); - + var ProteinLevelLocalization = GlycoProteinParsimony.ProteinLevelGlycoParsimony(allPsmsOgly.Where(p => p.ProteinAccession != null && p.OneBasedStartResidueInProtein.HasValue).ToList()); var seen_oglyco_localization_file = Path.Combine(individualFileFolderPath, individualFileFolder + "seen_oglyco_localization" + ".tsv"); - WriteFile.WriteSeenProteinGlycoLocalization(ProteinLevelLocalization, seen_oglyco_localization_file); + WriteGlycoFile.WriteSeenProteinGlycoLocalization(ProteinLevelLocalization, seen_oglyco_localization_file); var protein_oglyco_localization_file = Path.Combine(individualFileFolderPath, individualFileFolder + "protein_oglyco_localization" + ".tsv"); - WriteFile.WriteProteinGlycoLocalization(ProteinLevelLocalization, protein_oglyco_localization_file); + WriteGlycoFile.WriteProteinGlycoLocalization(ProteinLevelLocalization, protein_oglyco_localization_file); + WriteGlycoFile.WritePsmGlycoToTsv(allPsmsOgly, writtenFileOGlyco, true); //we write this last so localization can be attempted } break; case GlycoSearchType.NGlycanSearch: - var allPsmsNgly = gsms.Where(p => p.NGlycan != null).OrderByDescending(p => p.Score).ToList(); + var allPsmsNgly = gsms.Where(p => p.GlycanScore > 0 && p.Routes == null).OrderByDescending(p => p.Score).ToList(); if (allPsmsNgly.Any()) { SingleFDRAnalysis(allPsmsNgly, commonParameters, new List { taskId }); - var writtenFileOGlyco = Path.Combine(individualFileFolderPath, individualFileFolder + "nglyco" + ".psmtsv"); - WriteFile.WritePsmGlycoToTsv(allPsmsNgly, writtenFileOGlyco, 2); + var writtenFileNGlyco = Path.Combine(individualFileFolderPath, individualFileFolder + "nglyco" + ".psmtsv"); var ProteinLevelLocalization = GlycoProteinParsimony.ProteinLevelGlycoParsimony(allPsmsNgly.Where(p => p.ProteinAccession != null && p.OneBasedStartResidueInProtein.HasValue).ToList()); var seen_nglyco_localization_file = Path.Combine(individualFileFolderPath, individualFileFolder + "seen_nglyco_localization" + ".tsv"); - WriteFile.WriteSeenProteinGlycoLocalization(ProteinLevelLocalization, seen_nglyco_localization_file); + WriteGlycoFile.WriteSeenProteinGlycoLocalization(ProteinLevelLocalization, seen_nglyco_localization_file); - var protein_oglyco_localization_file = Path.Combine(individualFileFolderPath, individualFileFolder + "protein_nglyco_localization" + ".tsv"); - WriteFile.WriteProteinGlycoLocalization(ProteinLevelLocalization, protein_oglyco_localization_file); + var protein_nglyco_localization_file = Path.Combine(individualFileFolderPath, individualFileFolder + "protein_nglyco_localization" + ".tsv"); + WriteGlycoFile.WriteProteinGlycoLocalization(ProteinLevelLocalization, protein_nglyco_localization_file); + WriteGlycoFile.WritePsmGlycoToTsv(allPsmsNgly, writtenFileNGlyco, true); //we write this last so localization can be attempted } break; default: //both N and O glycan search combined - var allPsmsGly = gsms.Where(p => p.NGlycan != null || p.Routes != null).OrderByDescending(p => p.Score).ToList(); + var allPsmsGly = gsms.Where(p => p.GlycanScore > 0).OrderByDescending(p => p.Score).ToList(); if (allPsmsGly.Any()) { SingleFDRAnalysis(allPsmsGly, commonParameters, new List { taskId }); - var writtenFileOGlyco = Path.Combine(individualFileFolderPath, individualFileFolder + "nglyco" + ".psmtsv"); - WriteFile.WritePsmGlycoToTsv(allPsmsGly, writtenFileOGlyco, 2); + var writtenFileNOGlyco = Path.Combine(individualFileFolderPath, individualFileFolder + "no_glyco" + ".psmtsv"); + WriteGlycoFile.WritePsmGlycoToTsv(allPsmsGly, writtenFileNOGlyco, true); var ProteinLevelLocalization = GlycoProteinParsimony.ProteinLevelGlycoParsimony(allPsmsGly.Where(p => p.ProteinAccession != null && p.OneBasedStartResidueInProtein.HasValue).ToList()); - var seen_oglyco_localization_file = Path.Combine(individualFileFolderPath, individualFileFolder + "seen_nglyco_localization" + ".tsv"); - WriteFile.WriteSeenProteinGlycoLocalization(ProteinLevelLocalization, seen_oglyco_localization_file); + var seen_no_glyco_localization_file = Path.Combine(individualFileFolderPath, individualFileFolder + "seen_no_glyco_localization" + ".tsv"); + WriteGlycoFile.WriteSeenProteinGlycoLocalization(ProteinLevelLocalization, seen_no_glyco_localization_file); - var protein_oglyco_localization_file = Path.Combine(individualFileFolderPath, individualFileFolder + "protein_nglyco_localization" + ".tsv"); - WriteFile.WriteProteinGlycoLocalization(ProteinLevelLocalization, protein_oglyco_localization_file); + var protein_noglyco_localization_file = Path.Combine(individualFileFolderPath, individualFileFolder + "protein_no_glyco_localization" + ".tsv"); + WriteGlycoFile.WriteProteinGlycoLocalization(ProteinLevelLocalization, protein_noglyco_localization_file); } break; } @@ -473,6 +497,9 @@ private void WriteQuantificationResults() WritePeptideQuantificationResultsToTsv(Parameters.FlashLfqResults, Parameters.OutputFolder, filename, new List { Parameters.SearchTaskId }); + WriteProteinQuantificationResultsToTsv(Parameters.FlashLfqResults, Parameters.OutputFolder, + "AllQuantifiedProteins", new List { Parameters.SearchTaskId }); + // write individual results if (Parameters.CurrentRawFileList.Count > 0 && Parameters.GlycoSearchParameters.WriteIndividualFiles) { diff --git a/MetaMorpheus/TaskLayer/GlycoSearchTask/WriteGlycoFile.cs b/MetaMorpheus/TaskLayer/GlycoSearchTask/WriteGlycoFile.cs new file mode 100644 index 000000000..81be1bccb --- /dev/null +++ b/MetaMorpheus/TaskLayer/GlycoSearchTask/WriteGlycoFile.cs @@ -0,0 +1,114 @@ +using EngineLayer.GlycoSearch; +using EngineLayer; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace TaskLayer +{ + public static class WriteGlycoFile + { + public static void WritePsmGlycoToTsv(List gsms, string filePath, bool writeGlycoPsms) + { + if (gsms.Count == 0) + { + return; + } + + string header = GlycoSpectralMatch.GetTabSepHeaderSingle(); + if (writeGlycoPsms) + { + header += (GlycoSpectralMatch.GetTabSeperatedHeaderGlyco()); + } + + using (StreamWriter output = new StreamWriter(filePath)) + { + output.WriteLine(header); + if (writeGlycoPsms) + { + foreach (var gsm in gsms) + { + output.WriteLine(gsm.SingleToString() + "\t" + gsm.GlycoToString()); + } + } + else + { + foreach (var gsm in gsms) + { + output.WriteLine(gsm.SingleToString()); + } + } + + } + } + + //The function is to summarize localized glycan by protein site. + public static void WriteSeenProteinGlycoLocalization(Dictionary<(string proteinAccession, string proteinPosition, int glycanId), GlycoProteinParsimony> glycoProteinParsimony, string outputPath) + { + if (glycoProteinParsimony.Keys.Count == 0) + { return; } + var writtenFile = Path.Combine(outputPath); + using (StreamWriter output = new StreamWriter(writtenFile)) + { + output.WriteLine("Protein Accession\tModification Site\tAminoAcid\tLocalized Glycans\tLocalized\tLowest Qvalue\tBest Localization Level\tMax Site Specific Probability"); + foreach (var protein in glycoProteinParsimony.OrderBy(i => i.Key.proteinAccession)) + { + if (protein.Value != null) + { + output.WriteLine( + protein.Key.proteinAccession + "\t" + + protein.Key.proteinPosition + "\t" + + protein.Value.AminoAcid + "\t" + + GlycanBox.GlobalOGlycans[protein.Key.glycanId].Composition + "\t" + + protein.Value.IsLocalized + "\t" + + protein.Value.MinQValue.ToString("0.000") + "\t" + + protein.Value.BestLocalizeLevel + "\t" + + protein.Value.MaxProbability.ToString("0.000")); + + } + } + } + } + + //The function is to summarize localized glycosylation of each protein site. + public static void WriteProteinGlycoLocalization(Dictionary<(string proteinAccession, string proteinPosition, int glycanId), GlycoProteinParsimony> glycoProteinParsimony, string outputPath) + { + if (glycoProteinParsimony.Count == 0) + { return; } + + 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)) + { + localizedglycans[key].Add(item.Key.glycanId.ToString()); + } + else + { + localizedglycans[key] = new HashSet(); + localizedglycans[key].Add(item.Key.glycanId.ToString()); + } + + } + + var writtenFile = Path.Combine(outputPath); + using (StreamWriter output = new StreamWriter(writtenFile)) + { + output.WriteLine("Protein Accession\tModification Site\tLocalized Glycan Number\tLocalized Glycans"); + foreach (var local in localizedglycans.OrderBy(p => p.Key)) + { + var x = local.Key.Split('#'); + output.WriteLine( + x[0] + "\t" + + x[1] + "\t" + + local.Value.Count() + "\t" + + String.Join(",", local.Value.Select(p => GlycanBox.GlobalOGlycans[int.Parse(p)].Composition)) + ); + } + } + } + } +} diff --git a/MetaMorpheus/TaskLayer/XLSearchTask/PostXLSearchAnalysisTask.cs b/MetaMorpheus/TaskLayer/XLSearchTask/PostXLSearchAnalysisTask.cs index d2acd5168..b557c411e 100644 --- a/MetaMorpheus/TaskLayer/XLSearchTask/PostXLSearchAnalysisTask.cs +++ b/MetaMorpheus/TaskLayer/XLSearchTask/PostXLSearchAnalysisTask.cs @@ -61,7 +61,7 @@ public MyTaskResults Run(string outputFolder, List dbFilenameList, Li foreach (var fullFilePath in currentRawFileList) { string fileNameNoExtension = Path.GetFileNameWithoutExtension(fullFilePath); - WriteFile.WritePepXML_xl(writeToXml.Where(p => p.FullFilePath == fullFilePath).ToList(), proteinList, dbFilenameList[0].FilePath, variableModifications, fixedModifications, localizeableModificationTypes, outputFolder, fileNameNoExtension, commonParameters, xlSearchParameters); + WriteXlFile.WritePepXML_xl(writeToXml.Where(p => p.FullFilePath == fullFilePath).ToList(), proteinList, dbFilenameList[0].FilePath, variableModifications, fixedModifications, localizeableModificationTypes, outputFolder, fileNameNoExtension, commonParameters, xlSearchParameters); FinishedWritingFile(Path.Combine(outputFolder, fileNameNoExtension + ".pep.XML"), new List { taskId }); } } @@ -120,14 +120,14 @@ public void WriteCsvFiles(string outputFolder, List inte if (interCsms.Any()) { string file = Path.Combine(outputFolder, "XL_Interlinks.tsv"); - WriteFile.WritePsmCrossToTsv(interCsms, file, 2); + WriteXlFile.WritePsmCrossToTsv(interCsms, file, 2); FinishedWritingFile(file, new List { taskId }); } if (xlSearchParameters.WriteOutputForPercolator) { var interPsmsXLPercolator = interCsms.Where(p => p.Score >= 2 && p.BetaPeptide.Score >= 2).OrderBy(p => p.ScanNumber).ToList(); - WriteFile.WriteCrosslinkToTxtForPercolator(interPsmsXLPercolator, outputFolder, "XL_Interlinks_Percolator", xlSearchParameters.Crosslinker); + WriteXlFile.WriteCrosslinkToTxtForPercolator(interPsmsXLPercolator, outputFolder, "XL_Interlinks_Percolator", xlSearchParameters.Crosslinker); FinishedWritingFile(Path.Combine(outputFolder, "XL_Interlinks_Percolator.txt"), new List { taskId }); } @@ -135,14 +135,14 @@ public void WriteCsvFiles(string outputFolder, List inte if (intraCsms.Any()) { string file = Path.Combine(outputFolder, "XL_Intralinks.tsv"); - WriteFile.WritePsmCrossToTsv(intraCsms, file, 2); + WriteXlFile.WritePsmCrossToTsv(intraCsms, file, 2); FinishedWritingFile(file, new List { taskId }); } if (xlSearchParameters.WriteOutputForPercolator) { var intraPsmsXLPercolator = intraCsms.Where(p => p.Score >= 2 && p.BetaPeptide.Score >= 2).OrderBy(p => p.ScanNumber).ToList(); - WriteFile.WriteCrosslinkToTxtForPercolator(intraPsmsXLPercolator, outputFolder, "XL_Intralinks_Percolator", xlSearchParameters.Crosslinker); + WriteXlFile.WriteCrosslinkToTxtForPercolator(intraPsmsXLPercolator, outputFolder, "XL_Intralinks_Percolator", xlSearchParameters.Crosslinker); FinishedWritingFile(Path.Combine(outputFolder, "XL_Intralinks_Percolator.txt"), new List { taskId }); } @@ -151,7 +151,7 @@ public void WriteCsvFiles(string outputFolder, List inte if (singlePsms.Any()) { string writtenFileSingle = Path.Combine(outputFolder, "SinglePeptides" + ".tsv"); - WriteFile.WritePsmCrossToTsv(singlePsms, writtenFileSingle, 1); + WriteXlFile.WritePsmCrossToTsv(singlePsms, writtenFileSingle, 1); FinishedWritingFile(writtenFileSingle, new List { taskId }); } @@ -159,7 +159,7 @@ public void WriteCsvFiles(string outputFolder, List inte if (loopPsms.Any()) { string writtenFileLoop = Path.Combine(outputFolder, "Looplinks" + ".tsv"); - WriteFile.WritePsmCrossToTsv(loopPsms, writtenFileLoop, 1); + WriteXlFile.WritePsmCrossToTsv(loopPsms, writtenFileLoop, 1); FinishedWritingFile(writtenFileLoop, new List { taskId }); } @@ -167,7 +167,7 @@ public void WriteCsvFiles(string outputFolder, List inte if (deadendPsms.Any()) { string writtenFileDeadend = Path.Combine(outputFolder, "Deadends" + ".tsv"); - WriteFile.WritePsmCrossToTsv(deadendPsms, writtenFileDeadend, 1); + WriteXlFile.WritePsmCrossToTsv(deadendPsms, writtenFileDeadend, 1); FinishedWritingFile(writtenFileDeadend, new List { taskId }); } } diff --git a/MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs b/MetaMorpheus/TaskLayer/XLSearchTask/WriteXlFile.cs similarity index 86% rename from MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs rename to MetaMorpheus/TaskLayer/XLSearchTask/WriteXlFile.cs index 95ad8e996..0195aeaba 100644 --- a/MetaMorpheus/TaskLayer/XLSearchTask/WriteFile.cs +++ b/MetaMorpheus/TaskLayer/XLSearchTask/WriteXlFile.cs @@ -13,7 +13,7 @@ namespace TaskLayer { - public static class WriteFile + public static class WriteXlFile { public static void WritePsmCrossToTsv(List items, string filePath, int writeType) { @@ -419,105 +419,5 @@ public static void WritePepXML_xl(List items, List items, string filePath, int writeType) - { - if (items.Count == 0) - { - return; - } - - using (StreamWriter output = new StreamWriter(filePath)) - { - string header = ""; - switch (writeType) - { - case 1: - header = GlycoSpectralMatch.GetTabSepHeaderSingle(); - break; - case 2: - header = GlycoSpectralMatch.GetTabSepHeaderOGlyco(); - break; - case 3: - header = GlycoSpectralMatch.GetTabSepHeaderNGlyco(); - break; - default: - break; - } - output.WriteLine(header); - foreach (var heh in items) - { - output.WriteLine(heh.ToString()); - } - } - } - - //The function is to summarize localized glycan by protein site. - public static void WriteSeenProteinGlycoLocalization(Dictionary<(string proteinAccession, string proteinPosition, int glycanId), GlycoProteinParsimony> glycoProteinParsimony, string outputPath) - { - if (glycoProteinParsimony.Keys.Count == 0) - { return; } - var writtenFile = Path.Combine(outputPath); - using (StreamWriter output = new StreamWriter(writtenFile)) - { - output.WriteLine("Protein Accession\tModification Site\tAminoAcid\tLocalized Glycans\tLocalized\tLowest Qvalue\tBest Localization Level\tMax Site Specific Probability"); - foreach (var item in glycoProteinParsimony.OrderBy(i=>i.Key.proteinAccession)) - { - if (item.Value != null) - { - output.WriteLine( - item.Key.proteinAccession + "\t" + - item.Key.proteinPosition + "\t" + - item.Value.AminoAcid + "\t" + - GlycanBox.GlobalOGlycans[item.Key.glycanId].Composition + "\t" + - item.Value.IsLocalized + "\t" + - item.Value.MinQValue.ToString("0.000") + "\t" + - item.Value.BestLocalizeLevel + "\t" + - item.Value.MaxProbability.ToString("0.000")); - - } - } - } - } - - //The function is to summarize localized glycosylation of each protein site. - public static void WriteProteinGlycoLocalization(Dictionary<(string proteinAccession, string proteinPosition, int glycanId), GlycoProteinParsimony> glycoProteinParsimony, string outputPath) - { - if (glycoProteinParsimony.Count == 0) - { return; } - - 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)) - { - localizedglycans[key].Add(item.Key.glycanId.ToString()); - } - else - { - localizedglycans[key] = new HashSet(); - localizedglycans[key].Add(item.Key.glycanId.ToString()); - } - - } - - var writtenFile = Path.Combine(outputPath); - using (StreamWriter output = new StreamWriter(writtenFile)) - { - output.WriteLine("Protein Accession\tModification Site\tLocalized Glycan Number\tLocalized Glycans"); - foreach (var local in localizedglycans.OrderBy(p => p.Key)) - { - var x = local.Key.Split('#'); - output.WriteLine( - x[0] + "\t" + - x[1] + "\t" + - local.Value.Count() + "\t" + - String.Join(",", local.Value.Select(p=> GlycanBox.GlobalOGlycans[int.Parse(p)].Composition)) - ); - } - } - } } } \ No newline at end of file diff --git a/MetaMorpheus/Test/OutputTest.cs b/MetaMorpheus/Test/OutputTest.cs index af0d9c4b4..0ab40e7ff 100644 --- a/MetaMorpheus/Test/OutputTest.cs +++ b/MetaMorpheus/Test/OutputTest.cs @@ -116,8 +116,8 @@ public static void TestOpairFileOutput() //check that the first task wrote everything fine HashSet expectedFiles = new() { - "_AllProteinGroups.tsv", "AllPSMs.psmtsv", + "_AllProteinGroups.tsv", "oglyco.psmtsv", "protein_oglyco_localization.tsv", "seen_oglyco_localization.tsv", diff --git a/MetaMorpheus/Test/XLTestNGlyco.cs b/MetaMorpheus/Test/TestNGlyco.cs similarity index 84% rename from MetaMorpheus/Test/XLTestNGlyco.cs rename to MetaMorpheus/Test/TestNGlyco.cs index 7cac3f08f..31bc6dc9d 100644 --- a/MetaMorpheus/Test/XLTestNGlyco.cs +++ b/MetaMorpheus/Test/TestNGlyco.cs @@ -20,8 +20,65 @@ namespace Test { [TestFixture] - public class XLTestNGlyco + public class TestNGlyco { + [Test] + public static void TestNGlycoPsmsHeader() + { + List headerTerms = new() + { + "File Name", + "Scan Number", + "Retention Time", + "Precursor Scan Number", + "Precursor MZ", + "Precursor Charge", + "Precursor Mass", + "Protein Accession", + "Organism", + "Protein Name", + "Start and End Residues In Protein", + "Base Sequence", + "FlankingResidues", + "Full Sequence", + "Number of Mods", + "Peptide Monoisotopic Mass", + "Score", + "Rank", + "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", + "Decoy/Contaminant/Target", + "QValue", + "PEP", + "PEP_QValue", + "Localization Score", + "Yion Score", + "DiagonosticIon Score", + "Plausible Number Of Glycans",//Not used for N-Glyco + "Total Glycosylation sites",//Not used for N-Glyco + "GlycanMass", + "Plausible GlycanComposition", + "N-Glycan motif Check",//Not used for N-Glyco + "R138/144", + "Plausible GlycanStructure", + "GlycanLocalizationLevel", + "Localized Glycans with Peptide Site Specific Probability", + "Localized Glycans with Protein Site Specific Probability", + "All potential glycan localizations",//Not used for N-Glyco + "AllSiteSpecificLocalizationProbability",//Not used for N-Glyco + + }; + + string nglycoHeaderString = GlycoSpectralMatch.GetTabSepHeaderSingle() + GlycoSpectralMatch.GetTabSeperatedHeaderGlyco(); + List nGlycoHeaderTerms = nglycoHeaderString.Split('\t').ToList(); + + CollectionAssert.AreEquivalent(headerTerms, nGlycoHeaderTerms); + } + [Test] public static void GlyTest_GetKindString() { @@ -98,7 +155,10 @@ public static void GlyTest_RunTask() Directory.CreateDirectory(Path.Combine(Environment.CurrentDirectory, @"TESTGlycoData")); DbForTask db = new DbForTask(Path.Combine(TestContext.CurrentContext.TestDirectory, @"GlycoTestData\Q9C0Y4.fasta"), false); string raw = Path.Combine(TestContext.CurrentContext.TestDirectory, @"GlycoTestData\yeast_glycan_25170.mgf"); - new EverythingRunnerEngine(new List<(string, MetaMorpheusTask)> { ("Task", task) }, new List { raw }, new List { db }, Path.Combine(Environment.CurrentDirectory, @"TESTGlycoData")).Run(); + new EverythingRunnerEngine(new List<(string, MetaMorpheusTask)> { ("Task", task) }, new List { raw }, new List + { + db + }, Path.Combine(Environment.CurrentDirectory, @"TESTGlycoData")).Run(); Directory.Delete(Path.Combine(Environment.CurrentDirectory, @"TESTGlycoData"), true); } @@ -187,7 +247,7 @@ public static void GlyTest_BisectHexNAc() public static void GlyTest_GlycanDecoy() { Glycan glycan = Glycan.Struct2Glycan("(N(N(H(N)(H(N)(N))(H(N(H))))))", 0); - var test = Glycan.BuildTargetDecoyGlycans(new Glycan[] { glycan}); + var test = Glycan.BuildTargetDecoyGlycans(new Glycan[] { glycan }); Assert.AreEqual(test.Last().Decoy, true); foreach (var ion in test.Last().Ions) { @@ -245,6 +305,5 @@ public static void GlyTest_NGlycanCompositionFragments() Assert.That(overlap == 13); } - } } diff --git a/MetaMorpheus/Test/XLTestOGlyco.cs b/MetaMorpheus/Test/TestOGlyco.cs similarity index 94% rename from MetaMorpheus/Test/XLTestOGlyco.cs rename to MetaMorpheus/Test/TestOGlyco.cs index 5d15b6d21..20c0ebdba 100644 --- a/MetaMorpheus/Test/XLTestOGlyco.cs +++ b/MetaMorpheus/Test/TestOGlyco.cs @@ -23,7 +23,7 @@ namespace Test { [TestFixture] - public class XLTestOGlyco + public class TestOGlyco { private static GlycanBox[] OGlycanBoxes { get; set; } @@ -769,14 +769,14 @@ public static void GlycoSearchIndividualFileFolderOutputTest() List expectedOutput = new() { - "_AllProteinGroups.tsv", "AutoGeneratedManuscriptProse.txt", "results.txt", "oglyco.psmtsv", - "AllPSMs.psmtsv" + "AllPSMs.psmtsv", + "_AllProteinGroups.tsv", + "protein_oglyco_localization.tsv", + "seen_oglyco_localization.tsv" }; - expectedOutput.Add("protein_oglyco_localization.tsv"); - expectedOutput.Add("seen_oglyco_localization.tsv"); List expectedIndividualFileOutput = new() { @@ -841,19 +841,19 @@ public static void NandO_GlycoSearchIndividualFileFolderOutputTest() "_AllProteinGroups.tsv", "AutoGeneratedManuscriptProse.txt", "results.txt", - "nglyco.psmtsv", - "AllPSMs.psmtsv" + "no_glyco.psmtsv", + "AllPSMs.psmtsv", + "protein_no_glyco_localization.tsv", + "seen_no_glyco_localization.tsv" }; - expectedOutput.Add("protein_nglyco_localization.tsv"); - expectedOutput.Add("seen_nglyco_localization.tsv"); List expectedIndividualFileOutput = new() { "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968_AllProteinGroups.tsv", "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968_AllPSMs.psmtsv", - "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968nglyco.psmtsv", - "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968protein_nglyco_localization.tsv", - "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968seen_nglyco_localization.tsv" + "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968no_glyco.psmtsv", + "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968protein_no_glyco_localization.tsv", + "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968seen_no_glyco_localization.tsv" }; @@ -873,58 +873,81 @@ public static void NandO_GlycoSearchIndividualFileFolderOutputTest() Directory.Delete(outputFolder, true); } + [Test] - public static void TestNGlycoPsmsHeader() + public static void N_GlycoSearchIndividualFileFolderOutputTest() { - List headerTerms = new() + string outputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TESTGlycoData"); + string proteinDatabase = Path.Combine(TestContext.CurrentContext.TestDirectory, @"GlycoTestData\N_O_glycoWithFileSpecific\\FourMucins_NoSigPeps_FASTA.fasta"); + string spectraFileDirctory = Path.Combine(TestContext.CurrentContext.TestDirectory, @"GlycoTestData\N_O_glycoWithFileSpecific"); + List rawFilePaths = Directory.GetFiles(spectraFileDirctory).Where(p => p.Contains("mzML")).ToList(); + + // run task + CommonParameters commonParameters = new(dissociationType: DissociationType.HCD, ms2childScanDissociationType: DissociationType.EThcD); + + Directory.CreateDirectory(outputFolder); + var glycoSearchTask = new GlycoSearchTask() + { + CommonParameters = commonParameters, + _glycoSearchParameters = new GlycoSearchParameters() + { + OGlycanDatabasefile = "OGlycan.gdb", + NGlycanDatabasefile = "NGlycan.gdb", + GlycoSearchType = GlycoSearchType.NGlycanSearch, + OxoniumIonFilt = true, + DecoyType = DecoyType.Reverse, + GlycoSearchTopNum = 50, + MaximumOGlycanAllowed = 4, + DoParsimony = true, + WriteContaminants = true, + WriteDecoys = true, + WriteIndividualFiles = true, + DoQuantification = true + } + }; + glycoSearchTask.RunTask(outputFolder, new List { new DbForTask(proteinDatabase, false) }, rawFilePaths, ""); + + List expectedOutput = new() { - "File Name", - "Scan Number", - "Scan Retention Time", - "Precursor Scan Number", - "Precursor MZ", - "Precursor Charge", - "Precursor Mass", - "Protein Accession", - "Organism", - "Protein Name", - "Start and End Residues In Protein", - "Base Sequence", - "FlankingResidues", - "Full Sequence", - "Number of Mods", - "Peptide Monoisotopic Mass", - "Score", - "Rank", - "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", - "Decoy/Contaminant/Target", - "QValue", - "PEP", - "PEP_QValue", - "Localization Score", - "Yion Score", - "DiagonosticIon Score", - "GlycanMass", - "Plausible GlycanComposition", - "R138/144", - "Plausible GlycanStructure", - "GlycanLocalizationLevel", - "Localized Glycans with Peptide Site Specific Probability", - "Localized Glycans with Protein Site Specific Probability" + "_AllProteinGroups.tsv", + "AllQuantifiedPeaks.tsv", + "AllQuantifiedPeptides.tsv", + "AllQuantifiedProteins.tsv", + "AutoGeneratedManuscriptProse.txt", + "results.txt", + "ExperimentalDesign.tsv", + "nglyco.psmtsv", + "AllPSMs.psmtsv", + }; + + List expectedIndividualFileOutput = new() + { + "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968nglyco.psmtsv", + "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968_AllProteinGroups.tsv", + "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968_AllPSMs.psmtsv", + "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968_QuantifiedPeaks.tsv", + "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968_QuantifiedPeptides.tsv", + "2019_09_16_StcEmix_35trig_EThcD25_rep1_4999-5968_QuantifiedProteins.tsv" }; - string nglycoHeaderString = GlycoSpectralMatch.GetTabSepHeaderNGlyco(); - List nGlycoHeaderTerms = nglycoHeaderString.Split('\t').ToList(); - nGlycoHeaderTerms.RemoveAll(s => s == ""); - CollectionAssert.AreEquivalent(headerTerms, nGlycoHeaderTerms); + + List output = Directory.GetFiles(outputFolder).Select(f => Path.GetFileName(f)).ToList(); + List outputFolders = Directory.GetDirectories(outputFolder).ToList(); + List individualOutputFolders = Directory.GetDirectories(outputFolders.FirstOrDefault()).ToList(); + List individualOutputs = Directory.GetFiles(individualOutputFolders.FirstOrDefault()).Select(f => Path.GetFileName(f)).ToList(); + + CollectionAssert.IsSubsetOf(expectedOutput, output); + CollectionAssert.IsSubsetOf(expectedIndividualFileOutput, individualOutputs); + + string[] allProteinGroups = File.ReadAllLines(Path.Combine(outputFolder, "_AllProteinGroups.tsv")); + string[] proteinGroupFields = allProteinGroups[1].Split('\t'); + + Assert.AreEqual("Q8WXI7.3", proteinGroupFields[0]); + + Directory.Delete(outputFolder, true); } - + //Test oglycopeptide quant with two conditions, experimental design and normalization [Test] public static void TestGlycoQuant() @@ -966,6 +989,7 @@ public static void TestGlycoQuant() "AllPSMs.psmtsv", "AllQuantifiedPeaks.tsv", "AllQuantifiedPeptides.tsv", + "AllQuantifiedProteins.tsv", "AutoGeneratedManuscriptProse.txt", "oglyco.psmtsv", "protein_oglyco_localization.tsv", @@ -1044,6 +1068,7 @@ public static void TestGlycoQuant2() "AllPSMs.psmtsv", "AllQuantifiedPeaks.tsv", "AllQuantifiedPeptides.tsv", + "AllQuantifiedProteins.tsv", "AutoGeneratedManuscriptProse.txt", "oglyco.psmtsv", "protein_oglyco_localization.tsv", @@ -1119,7 +1144,7 @@ public static void GlycoQuantWithNoExperimentalDesignFileTest() List expectedOutput = new() { "ExperimentalDesign.tsv", - "_AllProteinGroups.tsv", + "AllQuantifiedProteins.tsv", "AllPSMs.psmtsv", "AllQuantifiedPeaks.tsv", "AllQuantifiedPeptides.tsv", @@ -1127,7 +1152,8 @@ public static void GlycoQuantWithNoExperimentalDesignFileTest() "oglyco.psmtsv", "protein_oglyco_localization.tsv", "results.txt", - "seen_oglyco_localization.tsv" + "seen_oglyco_localization.tsv", + "_AllProteinGroups.tsv" }; @@ -1152,7 +1178,7 @@ public static void GlycoQuantWithNoExperimentalDesignFileTest() CollectionAssert.AreEquivalent(expectedOutput, output); CollectionAssert.AreEquivalent(expectedIndividualFileOutput, individualOutputs); - string[] allProteinGroups = File.ReadAllLines(Path.Combine(outputFolderWithTask, "_AllProteinGroups.tsv")); + string[] allProteinGroups = File.ReadAllLines(Path.Combine(outputFolderWithTask, "AllQuantifiedProteins.tsv")); string[] proteinGroupFields = allProteinGroups[1].Split('\t'); Assert.AreEqual("Q9GZM5", proteinGroupFields[0]); diff --git a/MetaMorpheus/Test/XLTest.cs b/MetaMorpheus/Test/XLTest.cs index 5e84dd0fc..2ffcc39f5 100644 --- a/MetaMorpheus/Test/XLTest.cs +++ b/MetaMorpheus/Test/XLTest.cs @@ -211,14 +211,14 @@ public static void XlTest_BSA_DSSO() //Test Output var task = new XLSearchTask(); - WriteFile.WritePepXML_xl(newPsms, proteinList, null, variableModifications, fixedModifications, null, TestContext.CurrentContext.TestDirectory, "pep.XML", commonParameters, xlSearchParameters); + WriteXlFile.WritePepXML_xl(newPsms, proteinList, null, variableModifications, fixedModifications, null, TestContext.CurrentContext.TestDirectory, "pep.XML", commonParameters, xlSearchParameters); File.Delete(@"singlePsms.tsv"); File.Delete(@"pep.XML.pep.xml"); File.Delete(@"allPsms.tsv"); // write percolator result - WriteFile.WriteCrosslinkToTxtForPercolator(newPsms.Where(q => q.CrossType == PsmCrossType.Inter || q.CrossType == PsmCrossType.Intra).ToList(), TestContext.CurrentContext.TestDirectory, "perc", new Crosslinker()); + WriteXlFile.WriteCrosslinkToTxtForPercolator(newPsms.Where(q => q.CrossType == PsmCrossType.Inter || q.CrossType == PsmCrossType.Intra).ToList(), TestContext.CurrentContext.TestDirectory, "perc", new Crosslinker()); var percOut = File.ReadAllLines(Path.Combine(TestContext.CurrentContext.TestDirectory, @"perc.txt"), Encoding.UTF8); string header = "SpecId\tLabel\tScannr\tScore\tdScore\tCharge\tMass\tPPM\tLenShort\tLenLong\tLenSum\tPeptide\tProtein"; string dataRow = "T-2-1\t1\t2\t9.080357142857142\t9.080357142857142\t3\t1994.05\t79237.2823474838\t7\t9\t16\t-.EKVLTSSAR2--LSQKFPK4.-\tFake01(2)\tFake02(4)"; @@ -1185,7 +1185,7 @@ public static void TestTheoreticalFragmentsCleavableCrosslink() public static void XLSearchTastWriteFileTest() { //sending zero CSMs to write doesn't error. Method Simply Returns. - WriteFile.WritePsmCrossToTsv(new List(), "", 0); + WriteXlFile.WritePsmCrossToTsv(new List(), "", 0); //sending the wrong writeType doesn't error. Method Simply breaks. string outputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, @"XlTestData\TestXLWrite"); @@ -1221,7 +1221,7 @@ public static void XLSearchTastWriteFileTest() csmAlpha.LinkPositions = new() { 1 }; csmBeta.LinkPositions = new() { 1 }; - WriteFile.WritePsmCrossToTsv(new List() { csmAlpha}, outputFolder + "csm.psmtsv", 0); + WriteXlFile.WritePsmCrossToTsv(new List() { csmAlpha}, outputFolder + "csm.psmtsv", 0); //check decoy label csmAlpha.BetaPeptide = csmBeta; @@ -1248,7 +1248,7 @@ public static void XLSearchTastWriteFileTest() Assert.AreEqual("ACCESSION()", lastRandomString); - WriteFile.WriteCrosslinkToTxtForPercolator(new List() { csmAlpha }, outputFolder, "percolator.tsv", xlinker); + WriteXlFile.WriteCrosslinkToTxtForPercolator(new List() { csmAlpha }, outputFolder, "percolator.tsv", xlinker); Directory.Delete(outputFolder, true); } @@ -1322,7 +1322,7 @@ public static void TestWriteNonSingleCross() csms[0].First().ResolveAllAmbiguities(); csms[0].First().SetFdrValues(0, 0, 0.1, 0, 0, 0, 0, 0); - WriteFile.WritePepXML_xl(csms.SelectMany(p => p).ToList(), new List(), "", new List { deadend }, new List { deadend }, new List(), TestContext.CurrentContext.TestDirectory, "test", new CommonParameters(), new XlSearchParameters { Crosslinker = crosslinker }); + WriteXlFile.WritePepXML_xl(csms.SelectMany(p => p).ToList(), new List(), "", new List { deadend }, new List { deadend }, new List(), TestContext.CurrentContext.TestDirectory, "test", new CommonParameters(), new XlSearchParameters { Crosslinker = crosslinker }); File.Delete(Path.Combine(TestContext.CurrentContext.TestDirectory, @"test.pep.XML")); } @@ -1416,7 +1416,7 @@ public static void TestMixedMs2Ms2() // write results to TSV csm.SetFdrValues(1, 0, 0, 0, 0, 0, 0, 0); - WriteFile.WritePsmCrossToTsv(new List { csm }, outputFile, 2); + WriteXlFile.WritePsmCrossToTsv(new List { csm }, outputFile, 2); // read results from TSV var psmFromTsv = PsmTsvReader.ReadTsv(outputFile, out var warnings).First(); @@ -1505,7 +1505,7 @@ public static void TestMs2Ms3() // write results to TSV csm.SetFdrValues(1, 0, 0, 0, 0, 0, 0, 0); - WriteFile.WritePsmCrossToTsv(new List { csm }, outputFile, 2); + WriteXlFile.WritePsmCrossToTsv(new List { csm }, outputFile, 2); // read results from TSV var psmFromTsv = PsmTsvReader.ReadTsv(outputFile, out var warnings).First(); From c1c578ff86bee6b84bb25cbc83fd53105ee77346 Mon Sep 17 00:00:00 2001 From: nbollis Date: Wed, 14 Feb 2024 10:13:47 -0600 Subject: [PATCH 11/11] updated mzlib version --- MetaMorpheus/CMD/CMD.csproj | 2 +- MetaMorpheus/EngineLayer/EngineLayer.csproj | 2 +- MetaMorpheus/EngineLayer/Localization/LocalizationEngine.cs | 2 +- MetaMorpheus/GUI/GUI.csproj | 2 +- MetaMorpheus/GuiFunctions/GuiFunctions.csproj | 2 +- MetaMorpheus/TaskLayer/TaskLayer.csproj | 2 +- MetaMorpheus/Test/Test.csproj | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/MetaMorpheus/CMD/CMD.csproj b/MetaMorpheus/CMD/CMD.csproj index ebe4a9739..2570c57f1 100644 --- a/MetaMorpheus/CMD/CMD.csproj +++ b/MetaMorpheus/CMD/CMD.csproj @@ -24,7 +24,7 @@ - + diff --git a/MetaMorpheus/EngineLayer/EngineLayer.csproj b/MetaMorpheus/EngineLayer/EngineLayer.csproj index f73bd152a..f1d1a4102 100644 --- a/MetaMorpheus/EngineLayer/EngineLayer.csproj +++ b/MetaMorpheus/EngineLayer/EngineLayer.csproj @@ -21,7 +21,7 @@ - + diff --git a/MetaMorpheus/EngineLayer/Localization/LocalizationEngine.cs b/MetaMorpheus/EngineLayer/Localization/LocalizationEngine.cs index ed0662d46..f4b03445c 100644 --- a/MetaMorpheus/EngineLayer/Localization/LocalizationEngine.cs +++ b/MetaMorpheus/EngineLayer/Localization/LocalizationEngine.cs @@ -58,7 +58,7 @@ protected override MetaMorpheusEngineResults RunSpecific() for (int r = 0; r < peptide.Length; r++) { // create new PeptideWithSetMods with unidentified mass difference at the given residue - PeptideWithSetModifications peptideWithLocalizedMassDiff = peptide.Localize(r, massDifference); + var peptideWithLocalizedMassDiff = peptide.Localize(r, massDifference); // this is the list of theoretical products for this peptide with mass-difference on this residue peptideWithLocalizedMassDiff.Fragment(CommonParameters.DissociationType, CommonParameters.DigestionParams.FragmentationTerminus, productsWithLocalizedMassDiff); diff --git a/MetaMorpheus/GUI/GUI.csproj b/MetaMorpheus/GUI/GUI.csproj index 99be99737..64bb7e0f7 100644 --- a/MetaMorpheus/GUI/GUI.csproj +++ b/MetaMorpheus/GUI/GUI.csproj @@ -55,7 +55,7 @@ - + diff --git a/MetaMorpheus/GuiFunctions/GuiFunctions.csproj b/MetaMorpheus/GuiFunctions/GuiFunctions.csproj index fdb61d2d4..b32fb72cc 100644 --- a/MetaMorpheus/GuiFunctions/GuiFunctions.csproj +++ b/MetaMorpheus/GuiFunctions/GuiFunctions.csproj @@ -14,7 +14,7 @@ - + diff --git a/MetaMorpheus/TaskLayer/TaskLayer.csproj b/MetaMorpheus/TaskLayer/TaskLayer.csproj index 889bb446a..57b70d433 100644 --- a/MetaMorpheus/TaskLayer/TaskLayer.csproj +++ b/MetaMorpheus/TaskLayer/TaskLayer.csproj @@ -21,7 +21,7 @@ - + diff --git a/MetaMorpheus/Test/Test.csproj b/MetaMorpheus/Test/Test.csproj index 6ac1c6373..0404d7fb6 100644 --- a/MetaMorpheus/Test/Test.csproj +++ b/MetaMorpheus/Test/Test.csproj @@ -23,7 +23,7 @@ - +