Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Ignore Coverage] #4 - Digestion params generalization #2341

Open
wants to merge 53 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
831a394
Updated Mzlib and made it so there are no errors on build
nbollis Jan 8, 2024
976ab07
Adjusted digestionparams toml
nbollis Jan 10, 2024
12129f8
fixed indexing engine without having a default product type
nbollis Jan 10, 2024
9e4da0c
Fixed silac test
nbollis Jan 10, 2024
ad5097b
All Tests Pass!
nbollis Jan 10, 2024
c30b67c
Added toml test for new digestionparams
nbollis Jan 11, 2024
92e9842
Merge branch 'master' into mzlibUpdate
nbollis Jan 18, 2024
ff98c77
ope. Switched to proper version of mzLib
nbollis Jan 18, 2024
fc5fa16
Merge branch 'mzlibUpdate' of https://github.com/nbollis/MetaMorpheus…
nbollis Jan 18, 2024
bd1b1e9
Generalized Spectral Match
nbollis Jan 18, 2024
031c962
Added Omics to project.wxs
nbollis Jan 18, 2024
87d9844
Updated ParsimonySequence to use interfaces
nbollis Jan 19, 2024
75d1bc2
a
nbollis Jan 22, 2024
569edd7
Udpated to mzlib pr 757
nbollis Jan 22, 2024
1b83e1a
Updated to mzlib pr 757
nbollis Jan 22, 2024
bf78cae
Changed names of digestion params MinLength, MaxLength, and MaxMods t…
nbollis Jan 22, 2024
98e027d
Implemented clone function in commonparams
nbollis Jan 22, 2024
5eb7cc4
Changed CommonParameters to use IDigestionParameters instead of Diges…
nbollis Jan 23, 2024
25d4fd2
Formatted toml parameters
nbollis Jan 23, 2024
b3a338c
Merge branch 'master' into mzlibUpdate
nbollis Feb 8, 2024
9096c5c
Generalized Deconvolution in MzLIb
nbollis Feb 9, 2024
251e86e
Updated to mzlib after decon generalization
nbollis Feb 9, 2024
dd31b56
Merged in DeconGeneralization
nbollis Feb 9, 2024
16a1a5a
fixed issue caused by merge
nbollis Feb 9, 2024
f650731
updated mzlib to decon
nbollis Feb 9, 2024
001bbaf
Merged decon changes in
nbollis Feb 9, 2024
c1c578f
updated mzlib version
nbollis Feb 14, 2024
41128eb
Updated mzlib
nbollis Feb 14, 2024
cbb2956
Resolved merge conflicts
nbollis Feb 14, 2024
bd379f1
Merge branch 'mzlibUpdate' into DeconGeneralization
nbollis Feb 14, 2024
e7d56b3
Updated nuget
nbollis Feb 14, 2024
03bfbc7
Merged in DeconGeneralizaton
nbollis Feb 14, 2024
8a67256
Resolved final conflicts
nbollis Feb 14, 2024
e340d5b
updated mzlib
nbollis Feb 14, 2024
0878b5d
Merged in spec match gen
nbollis Feb 14, 2024
4c23ce7
Removed decon tolerance and ratio from toml
nbollis Feb 21, 2024
4316fe9
Merged in Master
nbollis Feb 27, 2024
05ab191
Updated classes after merge
nbollis Feb 27, 2024
fe8ac98
Made changes for code coverage
nbollis Feb 27, 2024
2a24fc2
Added test coverage to the bin class
nbollis Feb 27, 2024
ab456b3
Idk man its like 0.02% coverage
nbollis Feb 27, 2024
04fd9bb
helpme.jpg
nbollis Feb 27, 2024
76e87aa
merged in spectralmatch generalization
nbollis Mar 5, 2024
1095fb1
merged in master
nbollis Mar 7, 2024
2012fc3
fixed errors in merge
nbollis Mar 7, 2024
cab9e10
Merged in changes
nbollis Apr 9, 2024
7809e53
Merged in master after q value
nbollis Apr 9, 2024
aa6872c
boosting code coverage elsewhere
nbollis Apr 9, 2024
3f4ede3
removed unused node constructor
nbollis Apr 9, 2024
60b841d
expanded gptmd test coverage
nbollis Apr 9, 2024
d438c5b
ugh
nbollis Apr 9, 2024
d97d590
push to rerun appveyor
nbollis Apr 10, 2024
1ed889e
Merge branch 'master' into DigestionParamsGeneralization
nbollis Jun 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 4 additions & 13 deletions MetaMorpheus/EngineLayer/CommonParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.Collections.Generic;
using System.Reflection;
using Nett;
using Omics.Digestion;
using Omics.Fragmentation.Peptide;

namespace EngineLayer
Expand Down Expand Up @@ -46,7 +47,7 @@ public CommonParameters(
Tolerance precursorMassTolerance = null,
Tolerance deconvolutionMassTolerance = null,
int maxThreadsToUsePerFile = -1,
DigestionParams digestionParams = null,
IDigestionParams digestionParams = null,
IEnumerable<(string, string)> listOfModsVariable = null,
IEnumerable<(string, string)> listOfModsFixed = null,
bool assumeOrphanPeaksAreZ1Fragments = true,
Expand Down Expand Up @@ -155,7 +156,7 @@ public int DeconvolutionMaxAssumedChargeState
/// </summary>
public double PepQValueThreshold { get; private set; }
public double ScoreCutoff { get; private set; }
public DigestionParams DigestionParams { get; private set; }
public IDigestionParams DigestionParams { get; private set; }
public bool ReportAllAmbiguity { get; private set; }
public int? NumberOfPeaksToKeepPerWindow { get; private set; }
public double? MinimumAllowedIntensityRatioToBasePeak { get; private set; }
Expand Down Expand Up @@ -233,17 +234,7 @@ public CommonParameters CloneWithNewTerminus(FragmentationTerminus? terminus = n
PrecursorMassTolerance,
DeconvolutionMassTolerance,
MaxThreadsToUsePerFile,
new DigestionParams(
DigestionParams.Protease.Name,
DigestionParams.MaxMissedCleavages,
DigestionParams.MinPeptideLength,
DigestionParams.MaxPeptideLength,
DigestionParams.MaxModificationIsoforms,
DigestionParams.InitiatorMethionineBehavior,
DigestionParams.MaxModsForPeptide,
DigestionParams.SearchModeType,
terminus.Value //possibly changed
),
(DigestionParams)DigestionParams.Clone(terminus),
ListOfModsVariable,
ListOfModsFixed,
AssumeOrphanPeaksAreZ1Fragments,
Expand Down
23 changes: 12 additions & 11 deletions MetaMorpheus/EngineLayer/CrosslinkSearch/CrosslinkSearchEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -320,9 +320,10 @@ private void FindCrosslinkedPeptide(Ms2ScanWithSpecificMass scan, List<(double,
possibleMatches = new List<CrosslinkSpectralMatch>();
}

var initiatorMethionine = ((DigestionParams)CommonParameters.DigestionParams).InitiatorMethionineBehavior;
foreach (var id in idsOfPeptidesPossiblyObserved)
{
List<int> possibleCrosslinkLocations = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(AllCrosslinkerSites, PeptideIndex[id], CommonParameters.DigestionParams.InitiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleCrosslinkLocations = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(AllCrosslinkerSites, PeptideIndex[id], initiatorMethionine, CleaveAtCrosslinkSite);


foreach (var pre in precursors)
Expand Down Expand Up @@ -397,7 +398,7 @@ private void FindCrosslinkedPeptide(Ms2ScanWithSpecificMass scan, List<(double,
}
}
}
else if (pre.Item1 - PrecursorMassTable[id] >= (CommonParameters.DigestionParams.MinPeptideLength * 50))
else if (pre.Item1 - PrecursorMassTable[id] >= (CommonParameters.DigestionParams.MinLength * 50))
{
if (possibleCrosslinkLocations == null)
{
Expand All @@ -419,14 +420,14 @@ private void FindCrosslinkedPeptide(Ms2ScanWithSpecificMass scan, List<(double,
{
seenPair.Add(key);

List<int> possibleBetaCrosslinkSites = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(AllCrosslinkerSites, NextPeptideIndex[betaMassLowIndex], CommonParameters.DigestionParams.InitiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleBetaCrosslinkSites = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(AllCrosslinkerSites, NextPeptideIndex[betaMassLowIndex], initiatorMethionine, CleaveAtCrosslinkSite);

if (possibleBetaCrosslinkSites == null)
{
continue;
}

CrosslinkSpectralMatch x = LocalizeCrosslinkSites(scan, id, betaMassLowIndex, Crosslinker, experimentFragmentMasses, intensityRanks);
CrosslinkSpectralMatch x = LocalizeCrosslinkSites(scan, id, betaMassLowIndex, Crosslinker, experimentFragmentMasses, intensityRanks, initiatorMethionine);

if (x != null)
{
Expand Down Expand Up @@ -459,7 +460,7 @@ private void FindCrosslinkedPeptide(Ms2ScanWithSpecificMass scan, List<(double,
/// <summary>
/// Localizes the crosslink position on the alpha and beta peptides
/// </summary>
private CrosslinkSpectralMatch LocalizeCrosslinkSites(Ms2ScanWithSpecificMass theScan, int alphaIndex, int betaIndex, Crosslinker crosslinker, double[] experimentFragmentMasses, int[] intensityRanks)
private CrosslinkSpectralMatch LocalizeCrosslinkSites(Ms2ScanWithSpecificMass theScan, int alphaIndex, int betaIndex, Crosslinker crosslinker, double[] experimentFragmentMasses, int[] intensityRanks, InitiatorMethionineBehavior initiatorMethionineBehavior)
{
CrosslinkSpectralMatch localizedCrosslinkedSpectralMatch = null;

Expand All @@ -468,20 +469,20 @@ private CrosslinkSpectralMatch LocalizeCrosslinkSites(Ms2ScanWithSpecificMass th

if (crosslinker.CrosslinkerModSites.Equals(crosslinker.CrosslinkerModSites2))
{
List<int> possibleAlphaXlSites = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites.ToCharArray(), PeptideIndex[alphaIndex], CommonParameters.DigestionParams.InitiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleBetaXlSites = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites.ToCharArray(), NextPeptideIndex[betaIndex], CommonParameters.DigestionParams.InitiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleAlphaXlSites = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites.ToCharArray(), PeptideIndex[alphaIndex], initiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleBetaXlSites = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites.ToCharArray(), NextPeptideIndex[betaIndex], initiatorMethionineBehavior, CleaveAtCrosslinkSite);

pairs.Add(new Tuple<List<int>, List<int>>(possibleAlphaXlSites, possibleBetaXlSites));
}
else
{
List<int> possibleAlphaXlSites =CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites.ToCharArray(), PeptideIndex[alphaIndex], CommonParameters.DigestionParams.InitiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleBetaXlSites = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites2.ToCharArray(), NextPeptideIndex[betaIndex], CommonParameters.DigestionParams.InitiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleAlphaXlSites =CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites.ToCharArray(), PeptideIndex[alphaIndex], initiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleBetaXlSites = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites2.ToCharArray(), NextPeptideIndex[betaIndex], initiatorMethionineBehavior, CleaveAtCrosslinkSite);

pairs.Add(new Tuple<List<int>, List<int>>(possibleAlphaXlSites, possibleBetaXlSites));

List<int> possibleAlphaXlSites2 = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites2.ToCharArray(), PeptideIndex[alphaIndex], CommonParameters.DigestionParams.InitiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleBetaXlSites2 = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites.ToCharArray(), NextPeptideIndex[betaIndex], CommonParameters.DigestionParams.InitiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleAlphaXlSites2 = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites2.ToCharArray(), PeptideIndex[alphaIndex], initiatorMethionineBehavior, CleaveAtCrosslinkSite);
List<int> possibleBetaXlSites2 = CrosslinkSpectralMatch.GetPossibleCrosslinkerModSites(crosslinker.CrosslinkerModSites.ToCharArray(), NextPeptideIndex[betaIndex], initiatorMethionineBehavior, CleaveAtCrosslinkSite);

pairs.Add(new Tuple<List<int>, List<int>>(possibleAlphaXlSites2, possibleBetaXlSites2));
}
Expand Down
4 changes: 2 additions & 2 deletions MetaMorpheus/EngineLayer/FdrAnalysis/FdrAnalysisEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ private void DoFalseDiscoveryRateAnalysis(FdrAnalysisResults myAnalysisResults)
if (GlobalVariables.StopLoops) { return; }

// calculate FDR on a per-protease basis (targets and decoys for a specific protease)
var psmsGroupedByProtease = AllPsms.GroupBy(p => p.DigestionParams.Protease);
var psmsGroupedByProtease = AllPsms.GroupBy(p => p.DigestionParams.DigestionAgent);

foreach (var proteasePsms in psmsGroupedByProtease)
{
Expand Down Expand Up @@ -151,7 +151,7 @@ public void Compute_PEPValue(FdrAnalysisResults myAnalysisResults)
if (AllPsms.Count > 100)
{
string searchType = "standard";
if (AllPsms[0].DigestionParams.Protease.Name == "top-down")
if (AllPsms[0].DigestionParams.DigestionAgent.Name == "top-down")
{
searchType = "top-down";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -745,7 +745,7 @@ public static PsmData CreateOnePsmDataEntry(string searchType, List<(string file
hasSpectralAngle = 1;
}

if (psm.DigestionParams.Protease.Name != "top-down")
if (psm.DigestionParams.DigestionAgent.Name != "top-down")
{
missedCleavages = selectedPeptide.MissedCleavages;
bool fileIsCzeSeparationType = fileSpecificParameters.Any(p => Path.GetFileName(p.fileName) == Path.GetFileName(psm.FullFilePath) && p.fileSpecificParameters.SeparationType == "CZE");
Expand Down
10 changes: 0 additions & 10 deletions MetaMorpheus/EngineLayer/GlycoSearch/Node.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@

namespace EngineLayer
{

public class Node
{
public Node(char v, Node l, Node r, Node m)
{
Value = v;
LeftChild = l;
RightChild = r;
MiddleChild = m;
Level = null;
}

public Node(char v)
{
Value = v;
Expand Down
22 changes: 14 additions & 8 deletions MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Omics;
using Omics.Fragmentation.Peptide;
using Omics.Modifications;
using UsefulProteomicsDatabases;
Expand Down Expand Up @@ -68,16 +69,18 @@
sb.AppendLine("Dissociation Type: " + CommonParameters.DissociationType);
sb.AppendLine("Contaminant Handling: " + TcAmbiguity);

sb.AppendLine("protease: " + CommonParameters.DigestionParams.Protease);
sb.AppendLine("initiatorMethionineBehavior: " + CommonParameters.DigestionParams.InitiatorMethionineBehavior);
sb.AppendLine("protease: " + CommonParameters.DigestionParams.DigestionAgent);
if (CommonParameters.DigestionParams is DigestionParams digestionParams)
sb.AppendLine("initiatorMethionineBehavior: " + digestionParams.InitiatorMethionineBehavior);
sb.AppendLine("maximumMissedCleavages: " + CommonParameters.DigestionParams.MaxMissedCleavages);
sb.AppendLine("minPeptideLength: " + CommonParameters.DigestionParams.MinPeptideLength);
sb.AppendLine("maxPeptideLength: " + CommonParameters.DigestionParams.MaxPeptideLength);
sb.AppendLine("minPeptideLength: " + CommonParameters.DigestionParams.MinLength);
sb.AppendLine("maxPeptideLength: " + CommonParameters.DigestionParams.MaxLength);
sb.AppendLine("maximumVariableModificationIsoforms: " + CommonParameters.DigestionParams.MaxModificationIsoforms);
sb.AppendLine("digestionTerminus: " + CommonParameters.DigestionParams.FragmentationTerminus);
sb.AppendLine("maxModsForEachPeptide: " + CommonParameters.DigestionParams.MaxModsForPeptide);
sb.AppendLine("maxModsForEachPeptide: " + CommonParameters.DigestionParams.MaxMods);
sb.AppendLine("cleavageSpecificity: " + CommonParameters.DigestionParams.SearchModeType);
sb.AppendLine("specificProtease: " + CommonParameters.DigestionParams.SpecificProtease);
if (CommonParameters.DigestionParams is DigestionParams digestionParam)
sb.AppendLine("specificProtease: " + digestionParam.SpecificProtease);
sb.AppendLine("maximumFragmentSize" + (int)Math.Round(MaxFragmentSize));

sb.Append("Localizeable mods: " + ProteinList.Select(b => b.OneBasedPossibleLocalizedModifications.Count).Sum());
Expand All @@ -92,6 +95,9 @@
// digest database
List<PeptideWithSetModifications> peptides = new List<PeptideWithSetModifications>();

if (CommonParameters.DigestionParams is not DigestionParams digestionParams)
throw new MetaMorpheusException("Digestion parameters must be of type DigestionParams. Not yet implemented for Rna Digestion");

Check warning on line 99 in MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs

View check run for this annotation

Codecov / codecov/patch

MetaMorpheus/EngineLayer/Indexing/IndexingEngine.cs#L99

Added line #L99 was not covered by tests

int maxThreadsPerFile = CommonParameters.MaxThreadsToUsePerFile;
int[] threads = Enumerable.Range(0, maxThreadsPerFile).ToArray();
Parallel.ForEach(threads, (i) =>
Expand All @@ -103,7 +109,7 @@
// Stop loop if canceled
if (GlobalVariables.StopLoops) { return; }

localPeptides.AddRange(ProteinList[i].Digest(CommonParameters.DigestionParams, FixedModifications, VariableModifications, SilacLabels, TurnoverLabels));
localPeptides.AddRange(ProteinList[i].Digest(digestionParams, FixedModifications, VariableModifications, SilacLabels, TurnoverLabels));

progress++;
var percentProgress = (int)((progress / ProteinList.Count) * 100);
Expand All @@ -130,7 +136,7 @@
{
precursorIndex = CreateNewPrecursorIndex(peptides);
}
bool addInteriorTerminalModsToPrecursorIndex = GeneratePrecursorIndex && CommonParameters.DigestionParams.Protease.Name.Contains("single");
bool addInteriorTerminalModsToPrecursorIndex = GeneratePrecursorIndex && CommonParameters.DigestionParams.DigestionAgent.Name.Contains("single");
List<Modification> terminalModifications = addInteriorTerminalModsToPrecursorIndex ?
NonSpecificEnzymeSearchEngine.GetVariableTerminalMods(CommonParameters.DigestionParams.FragmentationTerminus, VariableModifications) :
null;
Expand Down
Loading