private static void LoadModifications() { _AllModsKnown = new List <Modification>(); _AllModTypesKnown = new HashSet <string>(); ErrorsReadingMods = new List <string>(); AllModsKnownDictionary = new Dictionary <string, Modification>(); UnimodDeserialized = Loaders.LoadUnimod(Path.Combine(DataDir, @"Data", @"unimod.xml")).ToList(); PsiModDeserialized = Loaders.LoadPsiMod(Path.Combine(DataDir, @"Data", @"PSI-MOD.obo.xml")); var formalChargesDictionary = Loaders.GetFormalChargesDictionary(PsiModDeserialized); UniprotDeseralized = Loaders.LoadUniprot(Path.Combine(DataDir, @"Data", @"ptmlist.txt"), formalChargesDictionary).ToList(); foreach (var modFile in Directory.GetFiles(Path.Combine(DataDir, @"Mods"))) { AddMods(PtmListLoader.ReadModsFromFile(modFile, out var errorMods), false); } AddMods(UniprotDeseralized.OfType <Modification>(), false); AddMods(UnimodDeserialized.OfType <Modification>(), false); foreach (Modification mod in AllModsKnown) { if (!AllModsKnownDictionary.ContainsKey(mod.IdWithMotif)) { AllModsKnownDictionary.Add(mod.IdWithMotif, mod); } // no error thrown if multiple mods with this ID are present - just pick one } ProteaseMods = UsefulProteomicsDatabases.PtmListLoader.ReadModsFromFile(Path.Combine(DataDir, @"Mods", @"ProteaseMods.txt"), out var errors).ToList(); ProteaseDictionary.Dictionary = ProteaseDictionary.LoadProteaseDictionary(Path.Combine(DataDir, @"ProteolyticDigestion", @"proteases.tsv"), ProteaseMods); }
public void FilesLoading() { Loaders.LoadElements(Path.Combine(TestContext.CurrentContext.TestDirectory, "elements.dat")); Loaders.LoadUnimod(Path.Combine(TestContext.CurrentContext.TestDirectory, "unimod_tables.xml")); Loaders.LoadPsiMod(Path.Combine(TestContext.CurrentContext.TestDirectory, "PSI-MOD.obo.xml")); Loaders.LoadUniprot(Path.Combine(TestContext.CurrentContext.TestDirectory, "ptmlist.txt")); }
public void FilesLoading() { Loaders.LoadElements(Path.Combine(TestContext.CurrentContext.TestDirectory, "elements2.dat")); var unimodMods = Loaders.LoadUnimod(Path.Combine(TestContext.CurrentContext.TestDirectory, "unimod_tables2.xml")).ToList(); Assert.AreEqual(2, (unimodMods.First(b => b.id.Equals("HexNAc(2) on N at Any")) as ModificationWithMass).neutralLosses.Count); var psiModDeserialized = Loaders.LoadPsiMod(Path.Combine(TestContext.CurrentContext.TestDirectory, "PSI-MOD.obo2.xml")); // N6,N6,N6-trimethyllysine var trimethylLysine = psiModDeserialized.Items.OfType <UsefulProteomicsDatabases.Generated.oboTerm>().First(b => b.id.Equals("MOD:00083")); Assert.AreEqual("1+", trimethylLysine.xref_analog.First(b => b.dbname.Equals("FormalCharge")).name); // Phosphoserine Assert.IsFalse(psiModDeserialized.Items.OfType <UsefulProteomicsDatabases.Generated.oboTerm>().First(b => b.id.Equals("MOD:00046")).xref_analog.Any(b => b.dbname.Equals("FormalCharge"))); Dictionary <string, int> formalChargesDictionary = Loaders.GetFormalChargesDictionary(psiModDeserialized); var uniprotPtms = Loaders.LoadUniprot(Path.Combine(TestContext.CurrentContext.TestDirectory, "ptmlist2.txt"), formalChargesDictionary).ToList(); using (StreamWriter w = new StreamWriter(Path.Combine(TestContext.CurrentContext.TestDirectory, "test.txt"))) { foreach (var nice in uniprotPtms) { w.WriteLine(nice.ToString()); w.WriteLine("//"); } foreach (var nice in unimodMods) { w.WriteLine(nice.ToString()); w.WriteLine("//"); } } var sampleModList = PtmListLoader.ReadModsFromFile(Path.Combine(TestContext.CurrentContext.TestDirectory, "test.txt")).ToList(); string stringRepresentation = "ID (3R)-3-hydroxyarginine\r\nMT UniProt\r\nPP Anywhere.\r\nDR RESID; AA0601\r\nDR PSI-MOD; MOD:01956\r\nDR UniProt; PTM-0476\r\nTG R\r\nMM 15.994915\r\nCF O"; Assert.AreEqual(stringRepresentation, sampleModList.First().ToString()); // N,N,N-trimethylalanine var thisMod = sampleModList.First(b => b.id.Equals(@"N,N,N-trimethylalanine")) as ModificationWithMass; Assert.IsTrue(thisMod.monoisotopicMass > 42); Assert.IsTrue(thisMod.monoisotopicMass < 43); }
public void FilesLoading() //delete mzLib\Test\bin\x64\Debug to update your local unimod list { Loaders.LoadElements(); string uniModPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "unimod_tables2.xml"); string psiModPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "PSI-MOD.obo2.xml"); string uniProtPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "ptmlist2.txt"); // UniModPTMs var unimodMods = Loaders.LoadUnimod(uniModPath).ToList(); Assert.AreEqual(2677, unimodMods.Count); // UniMod PTM list may be updated at some point, causing the unit test to fail List <Modification> myList = unimodMods.Where(m => m.OriginalId.Equals("HexNAc(2)")).ToList(); Modification testMod = myList.First(); int neutralLossCount = 0; if (testMod.NeutralLosses.Count != 0) { foreach (KeyValuePair <MassSpectrometry.DissociationType, List <double> > item in testMod.NeutralLosses) { foreach (double loss in item.Value) { neutralLossCount++; } } } Assert.AreEqual(2, neutralLossCount); // PsiMod PTMs var psiModDeserialized = Loaders.LoadPsiMod(psiModPath); // N6,N6,N6-trimethyllysine var trimethylLysine = psiModDeserialized.Items.OfType <UsefulProteomicsDatabases.Generated.oboTerm>().First(b => b.id.Equals("MOD:00083")); Assert.AreEqual("1+", trimethylLysine.xref_analog.First(b => b.dbname.Equals("FormalCharge")).name); // Phosphoserine Assert.IsFalse(psiModDeserialized.Items.OfType <UsefulProteomicsDatabases.Generated.oboTerm>().First(b => b.id.Equals("MOD:00046")).xref_analog.Any(b => b.dbname.Equals("FormalCharge"))); Dictionary <string, int> formalChargesDictionary = Loaders.GetFormalChargesDictionary(psiModDeserialized); // UniProt PTMs var uniprotPtms = Loaders.LoadUniprot(uniProtPath, formalChargesDictionary).ToList(); Assert.AreEqual(345, uniprotPtms.Count()); // UniProt PTM list may be updated at some point, causing the unit test to fail // write UniProt and UniMod PTMs to a file using (StreamWriter w = new StreamWriter(Path.Combine(TestContext.CurrentContext.TestDirectory, "test.txt"))) { foreach (var nice in uniprotPtms) { w.WriteLine(nice.ToString()); w.WriteLine("//"); } foreach (var nice in unimodMods) { w.WriteLine(nice.ToString()); w.WriteLine("//"); } } // read in the file and make sure that it has the same number of PTMs var sampleModList = PtmListLoader.ReadModsFromFile(Path.Combine(TestContext.CurrentContext.TestDirectory, "test.txt"), out var errors).ToList(); Assert.AreEqual(uniprotPtms.Count + unimodMods.Count, sampleModList.Count()); List <Modification> myOtherList = new List <Modification>(); foreach (Modification mod in sampleModList) { if (mod.IdWithMotif != null && mod.IdWithMotif.Contains("Acetyl")) { myOtherList.Add(mod); } } var thisMod = myOtherList.First(); Assert.IsTrue(thisMod.MonoisotopicMass > 42); Assert.IsTrue(thisMod.MonoisotopicMass < 43); File.Delete(uniModPath); File.Delete(psiModPath); File.Delete(uniProtPath); }