public static Dictionary <string, GlycoProteinParsimony> ProteinLevelGlycoParsimony(List <GlycoSpectralMatch> allPsmsGly) { //key: proPosId Dictionary <string, GlycoProteinParsimony> localizedGlycan = new Dictionary <string, GlycoProteinParsimony>(); foreach (var gsm in allPsmsGly) { if (gsm.IsContaminant || gsm.IsDecoy) { continue; } if (gsm.LocalizedGlycan.Count > 0) { foreach (var local in gsm.LocalizedGlycan) { int proteinPos = local.Item1 + gsm.OneBasedStartResidueInProtein.Value - 2; string proPosId = gsm.ProteinAccession + "-" + proteinPos.ToString() + "-" + local.Item2; double prob = -1; if (gsm.SiteSpeciLocalProb != null && gsm.SiteSpeciLocalProb.ContainsKey(local.Item1)) { prob = gsm.SiteSpeciLocalProb[local.Item1].Where(p => p.Item1 == local.Item2).FirstOrDefault().Item2; } if (!localizedGlycan.ContainsKey(proPosId)) { GlycoProteinParsimony gpp = new GlycoProteinParsimony(gsm.ProteinAccession, proteinPos, gsm.BaseSequence[local.Item1 - 2], local.Item3, gsm.FdrInfo.QValue, gsm.LocalizationLevel, prob); localizedGlycan.Add(proPosId, gpp); } else { bool islocalized = (local.Item3 || localizedGlycan[proPosId].IsLocalized); double minQValue = localizedGlycan[proPosId].MinQValue > gsm.FdrInfo.QValue ? gsm.FdrInfo.QValue : localizedGlycan[proPosId].MinQValue; double maxProb = localizedGlycan[proPosId].MaxProbability > prob ? localizedGlycan[proPosId].MaxProbability : prob; var localLevel = localizedGlycan[proPosId].BestLocalizeLevel < gsm.LocalizationLevel ? localizedGlycan[proPosId].BestLocalizeLevel : gsm.LocalizationLevel; localizedGlycan[proPosId].IsLocalized = islocalized; localizedGlycan[proPosId].MinQValue = minQValue; localizedGlycan[proPosId].BestLocalizeLevel = localLevel; localizedGlycan[proPosId].MaxProbability = maxProb; } } } } return(localizedGlycan); }
public MyTaskResults Run(string OutputFolder, List <DbForTask> dbFilenameList, List <string> currentRawFileList, string taskId, FileSpecificParameters[] fileSettingsList, List <GlycoSpectralMatch> allPsms, CommonParameters commonParameters, GlycoSearchParameters glycoSearchParameters, List <Protein> proteinList, List <Modification> variableModifications, List <Modification> fixedModifications, List <string> localizeableModificationTypes, MyTaskResults MyTaskResults) { if (glycoSearchParameters.GlycoSearchType == GlycoSearchType.NGlycanSearch) { var allPsmsSingle = allPsms.Where(p => p.NGlycan == null).OrderByDescending(p => p.Score).ToList(); SingleFDRAnalysis(allPsmsSingle, commonParameters, new List <string> { taskId }); var writtenFileSingle = Path.Combine(OutputFolder, "single" + ".psmtsv"); WriteFile.WritePsmGlycoToTsv(allPsmsSingle, writtenFileSingle, 1); FinishedWritingFile(writtenFileSingle, new List <string> { taskId }); var allPsmsGly = allPsms.Where(p => p.NGlycan != null).OrderByDescending(p => p.Score).ToList(); SingleFDRAnalysis(allPsmsGly, commonParameters, new List <string> { taskId }); var writtenFileNGlyco = Path.Combine(OutputFolder, "nglyco" + ".psmtsv"); WriteFile.WritePsmGlycoToTsv(allPsmsGly, writtenFileNGlyco, 3); FinishedWritingFile(writtenFileNGlyco, new List <string> { taskId }); return(MyTaskResults); } else if (glycoSearchParameters.GlycoSearchType == GlycoSearchType.OGlycanSearch) { var allPsmsSingle = allPsms.Where(p => p.Routes == null).OrderByDescending(p => p.Score).ToList(); SingleFDRAnalysis(allPsmsSingle, commonParameters, new List <string> { taskId }); var writtenFileSingle = Path.Combine(OutputFolder, "single" + ".psmtsv"); WriteFile.WritePsmGlycoToTsv(allPsmsSingle, writtenFileSingle, 1); FinishedWritingFile(writtenFileSingle, new List <string> { taskId }); var allPsmsGly = allPsms.Where(p => p.Routes != null).OrderByDescending(p => p.Score).ToList(); SingleFDRAnalysis(allPsmsGly, commonParameters, new List <string> { taskId }); var writtenFileOGlyco = Path.Combine(OutputFolder, "oglyco" + ".psmtsv"); WriteFile.WritePsmGlycoToTsv(allPsmsGly, writtenFileOGlyco, 2); FinishedWritingFile(writtenFileOGlyco, new List <string> { taskId }); var ProteinLevelLocalization = GlycoProteinParsimony.ProteinLevelGlycoParsimony(allPsmsGly.Where(p => p.ProteinAccession != null && p.OneBasedStartResidueInProtein.HasValue).ToList()); var seen_oglyco_localization_file = Path.Combine(OutputFolder, "seen_oglyco_localization" + ".tsv"); WriteFile.WriteSeenProteinGlycoLocalization(ProteinLevelLocalization, seen_oglyco_localization_file); FinishedWritingFile(seen_oglyco_localization_file, new List <string> { taskId }); var protein_oglyco_localization_file = Path.Combine(OutputFolder, "protein_oglyco_localization" + ".tsv"); WriteFile.WriteProteinGlycoLocalization(ProteinLevelLocalization, protein_oglyco_localization_file); FinishedWritingFile(protein_oglyco_localization_file, new List <string> { taskId }); return(MyTaskResults); } else { var allPsmsSingle = allPsms.Where(p => p.NGlycan == null && p.Routes == null).OrderByDescending(p => p.Score).ToList(); SingleFDRAnalysis(allPsmsSingle, commonParameters, new List <string> { taskId }); var writtenFileSingle = Path.Combine(OutputFolder, "single" + ".psmtsv"); WriteFile.WritePsmGlycoToTsv(allPsmsSingle, writtenFileSingle, 1); FinishedWritingFile(writtenFileSingle, new List <string> { taskId }); var allPsmsNGly = allPsms.Where(p => p.NGlycan != null).OrderByDescending(p => p.Score).ToList(); SingleFDRAnalysis(allPsmsNGly, commonParameters, new List <string> { taskId }); var writtenFileNGlyco = Path.Combine(OutputFolder, "nglyco" + ".psmtsv"); WriteFile.WritePsmGlycoToTsv(allPsmsNGly, writtenFileNGlyco, 3); FinishedWritingFile(writtenFileNGlyco, new List <string> { taskId }); var allPsmsOGly = allPsms.Where(p => p.Routes != null).OrderByDescending(p => p.Score).ToList(); SingleFDRAnalysis(allPsmsOGly, commonParameters, new List <string> { taskId }); var writtenFileOGlyco = Path.Combine(OutputFolder, "oglyco" + ".psmtsv"); WriteFile.WritePsmGlycoToTsv(allPsmsOGly, writtenFileOGlyco, 2); FinishedWritingFile(writtenFileOGlyco, new List <string> { taskId }); return(MyTaskResults); } }