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

N-glyco search improvements #2322

Merged
merged 29 commits into from
Feb 12, 2024
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
1aeb4a8
reverted filtering method for psms passed to FlashLFQ
Alexander-Sol Feb 28, 2023
1312c5d
Merge branch 'Alexander-Sol-FilteringHotfix'
Mar 10, 2023
1230534
Merge remote-tracking branch 'upstream/master'
Mar 15, 2023
58a2e8a
Merge remote-tracking branch 'upstream/master'
Mar 23, 2023
9339535
Merge remote-tracking branch 'upstream/master'
trishorts Mar 28, 2023
c967b61
Merge branch 'master' of https://github.com/trishorts/MetaMorpheus
trishorts Mar 28, 2023
c624070
Merge remote-tracking branch 'upstream/master'
trishorts Jul 10, 2023
3682d10
Merge remote-tracking branch 'upstream/master'
trishorts Aug 3, 2023
32763af
Merge remote-tracking branch 'upstream/master'
trishorts Aug 14, 2023
bd18b72
Merge remote-tracking branch 'upstream/master'
trishorts Oct 17, 2023
b6b921f
Merge remote-tracking branch 'upstream/master'
trishorts Nov 28, 2023
7e92b65
refactor glycospsmwriter and split from xlwriter
trishorts Dec 8, 2023
b955499
fix unit tests
trishorts Dec 8, 2023
8e1d77d
rename N and O glyco test classes
trishorts Dec 8, 2023
418091d
refactor is patially working
trishorts Dec 8, 2023
2432a1c
files written to correct directory
trishorts Dec 11, 2023
cd7bea1
now with glyco protein parsimony and writing all quantified proteins
trishorts Dec 11, 2023
21f77ed
nglycoBugged
trishorts Dec 11, 2023
e197099
n glyco output is correct now i think
trishorts Dec 13, 2023
9bc0bf1
yo
trishorts Dec 13, 2023
c27ad3d
Merge remote-tracking branch 'upstream/master' into nGlycanNeedsTabsI…
trishorts Dec 13, 2023
7ac8d59
fix unit tests
trishorts Dec 13, 2023
fc4dde8
fix more unit tests
trishorts Dec 13, 2023
fc2a48c
dont need glyco stuff in writexl anymore
trishorts Dec 13, 2023
7f2c2b6
n glyco individual file unit test
trishorts Dec 14, 2023
da6a76b
Merge remote-tracking branch 'upstream/master' into nGlycanNeedsTabsI…
trishorts Dec 14, 2023
95b68f3
Merge branch 'master' into nGlycanNeedsTabsInOutput
trishorts Dec 15, 2023
cf3f073
Merge branch 'master' into nGlycanNeedsTabsInOutput
trishorts Jan 11, 2024
de61bf9
Merge branch 'master' into nGlycanNeedsTabsInOutput
trishorts Feb 12, 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
2 changes: 1 addition & 1 deletion MetaMorpheus/EngineLayer/FdrAnalysis/FdrAnalysisEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,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;
Expand Down
172 changes: 60 additions & 112 deletions MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -140,119 +140,40 @@
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");
Expand Down Expand Up @@ -328,31 +249,25 @@

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];

Expand All @@ -377,16 +292,14 @@
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);
Expand All @@ -397,10 +310,45 @@

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

Check warning on line 338 in MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs

View check run for this annotation

Codecov / codecov/patch

MetaMorpheus/EngineLayer/GlycoSearch/GlycoSpectralMatch.cs#L336-L338

Added lines #L336 - L338 were not covered by tests
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<string, string> MatchedIonDataDictionary(List<MatchedFragmentIon> matchedFragmentIons)
{
Dictionary<string, string> s = new Dictionary<string, string>();
Expand Down
Loading