public void NistLoadLibrary() { var streamManager = new MemoryStreamManager(); streamManager.TextFiles.Add(PATH_NIST_LIB, TEXT_LIB_YEAST_NIST); var loader = new TestLibraryLoader { StreamManager = streamManager }; var librarySpec = new NistLibSpec("Yeast (NIST)", PATH_NIST_LIB); Library lib1 = librarySpec.LoadLibrary(loader); CheckLibrary(lib1, 100); Assert.AreEqual(streamManager.BinaryFiles.Count, 1); Assert.IsTrue(streamManager.IsCached(PATH_NIST_LIB, PATH_NIST_LIB_CACHE)); // Corrupt the cache, and make sure it still possible to get // a valid library. byte[] cacheBytes = streamManager.BinaryFiles[PATH_NIST_LIB_CACHE]; int len = cacheBytes.Length; byte[] corruptedBytes = new byte[len / 2]; Array.Copy(cacheBytes, corruptedBytes, corruptedBytes.Length); streamManager.BinaryFiles[PATH_NIST_LIB_CACHE] = corruptedBytes; Library lib2 = librarySpec.LoadLibrary(loader); CheckLibrary(lib2, 100); Assert.AreEqual(len, streamManager.BinaryFiles[PATH_NIST_LIB_CACHE].Length); Assert.IsTrue(lib1.IsSameLibrary(lib2)); Assert.AreEqual(0, lib1.CompareRevisions(lib2)); }
public void NistLoadLibrary() { var streamManager = new MemoryStreamManager(); streamManager.TextFiles.Add(PATH_NIST_LIB, TEXT_LIB_YEAST_NIST + TEXT_LIB_BICINE_NIST); var loader = new TestLibraryLoader { StreamManager = streamManager }; var expectedFragmentAnnotations = new Dictionary <int, List <SpectrumPeakAnnotation> > { { 3, MakeTestPeakAnnotation(Adduct.M_PLUS, 41.027f, "testfrag3", "85/86") }, { 44, MakeTestPeakAnnotation(Adduct.M_PLUS, 128.070f, "testfrag_next_to_last", "83/86") }, { 45, MakeTestPeakAnnotation(Adduct.M_PLUS, 146.081f, "testfrag_last", "85/86 note") }, }; var librarySpec = new NistLibSpec("Yeast (NIST)", PATH_NIST_LIB); Library lib1 = librarySpec.LoadLibrary(loader); CheckLibrary(lib1, 100); CheckLibrary(lib1, 46, KEYS_LIB_BICENE_NIST); Assert.AreEqual(streamManager.BinaryFiles.Count, 1); Assert.IsTrue(streamManager.IsCached(PATH_NIST_LIB, PATH_NIST_LIB_CACHE)); // Corrupt the cache, and make sure it still possible to get // a valid library. byte[] cacheBytes = streamManager.BinaryFiles[PATH_NIST_LIB_CACHE]; int len = cacheBytes.Length; byte[] corruptedBytes = new byte[len / 2]; Array.Copy(cacheBytes, corruptedBytes, corruptedBytes.Length); streamManager.BinaryFiles[PATH_NIST_LIB_CACHE] = corruptedBytes; // Check small molecule library with spectrum attributes TestSpectrumPeakAnnotations(); // First, a quick low-level unit test of annotations handler class Library lib2 = librarySpec.LoadLibrary(loader); CheckLibrary(lib2, 100); CheckLibrary(lib2, 46, KEYS_LIB_BICENE_NIST, expectedFragmentAnnotations); Assert.AreEqual(len, streamManager.BinaryFiles[PATH_NIST_LIB_CACHE].Length); Assert.IsTrue(lib1.IsSameLibrary(lib2)); Assert.AreEqual(0, lib1.CompareRevisions(lib2)); }
private static Library CreateLibraryFile(MemoryStreamManager streamManager, ILoadMonitor loader, string nistText, Action <IStreamManager, Library> write) { streamManager.TextFiles[PATH_NIST_LIB] = nistText; var librarySpec = new NistLibSpec("Temporary (NIST)", PATH_NIST_LIB); Library libNist = librarySpec.LoadLibrary(loader); Assert.IsNotNull(libNist); write(streamManager, libNist); streamManager.TextFiles.Remove(PATH_NIST_LIB); streamManager.Delete(PATH_NIST_LIB_CACHE); return(libNist); }
public static SrmDocument CreateNISTLibraryDocument(string textFasta, bool peptideList, string textLib, out LibraryManager libraryManager, out TestDocumentContainer docContainer, out int startRev) { var streamManager = new MemoryStreamManager(); streamManager.TextFiles.Add(LibraryLoadTest.PATH_NIST_LIB, textLib); var librarySpec = new NistLibSpec("Yeast (NIST)", LibraryLoadTest.PATH_NIST_LIB); // For serialization, add the library spec to the settings TestLibraryList = new SpectralLibraryList { librarySpec }; libraryManager = new LibraryManager { StreamManager = streamManager }; docContainer = new TestDocumentContainer(); SrmSettings settings = SrmSettingsList.GetDefault0_6(); settings = settings.ChangePeptideLibraries(l => l.ChangeLibrarySpecs(new[] { librarySpec })); return CreateLibraryDocument(settings, textFasta, peptideList, docContainer, libraryManager, out startRev); }
public static SrmDocument CreateNISTLibraryDocument(string textFasta, bool peptideList, string textLib, out LibraryManager libraryManager, out TestDocumentContainer docContainer, out int startRev) { var streamManager = new MemoryStreamManager(); streamManager.TextFiles.Add(LibraryLoadTest.PATH_NIST_LIB, textLib); var librarySpec = new NistLibSpec("Yeast (NIST)", LibraryLoadTest.PATH_NIST_LIB); // For serialization, add the library spec to the settings TestLibraryList = new SpectralLibraryList { librarySpec }; libraryManager = new LibraryManager { StreamManager = streamManager }; docContainer = new TestDocumentContainer(); SrmSettings settings = SrmSettingsList.GetDefault0_6(); settings = settings.ChangePeptideLibraries(l => l.ChangeLibrarySpecs(new[] { librarySpec })); return(CreateLibraryDocument(settings, textFasta, peptideList, docContainer, libraryManager, out startRev)); }
public bool SetLibrary(string name, string path, bool append = true) { if (string.IsNullOrWhiteSpace(path)) { _out.WriteLine(Resources.CommandLine_SetLibrary_Error__Cannot_set_library_name_without_path_); return false; } else if (!File.Exists(path)) { _out.WriteLine(Resources.CommandLine_SetLibrary_Error__The_file__0__does_not_exist_, path); return false; } else if (path.EndsWith(BiblioSpecLiteSpec.EXT_REDUNDANT)) { _out.WriteLine(Resources.CommandLine_SetLibrary_Error__The_file__0__appears_to_be_a_redundant_library_); return false; } if (string.IsNullOrWhiteSpace(name)) name = Path.GetFileNameWithoutExtension(path); LibrarySpec librarySpec; string ext = Path.GetExtension(path); if (Equals(ext, BiblioSpecLiteSpec.EXT)) librarySpec = new BiblioSpecLiteSpec(name, path); else if (Equals(ext, BiblioSpecLibSpec.EXT)) librarySpec = new BiblioSpecLibSpec(name, path); else if (Equals(ext, XHunterLibSpec.EXT)) librarySpec = new XHunterLibSpec(name, path); else if (Equals(ext, NistLibSpec.EXT)) librarySpec = new NistLibSpec(name, path); else if (Equals(ext, SpectrastSpec.EXT)) librarySpec = new SpectrastSpec(name, path); else { _out.WriteLine(Resources.CommandLine_SetLibrary_Error__The_file__0__is_not_a_supported_spectral_library_file_format_, path); return false; } // Check for conflicting names foreach (var docLibrarySpec in _doc.Settings.PeptideSettings.Libraries.LibrarySpecs) { if (docLibrarySpec.Name == librarySpec.Name || docLibrarySpec.FilePath == librarySpec.FilePath) { _out.WriteLine(Resources.CommandLine_SetLibrary_Error__The_library_you_are_trying_to_add_conflicts_with_a_library_already_in_the_file_); return false; } } var librarySpecs = append ? new List<LibrarySpec>(_doc.Settings.PeptideSettings.Libraries.LibrarySpecs) { librarySpec } : new List<LibrarySpec>{ librarySpec }; SrmSettings newSettings = _doc.Settings.ChangePeptideLibraries(l => l.ChangeLibrarySpecs(librarySpecs)); _doc = _doc.ChangeSettings(newSettings); return true; }
public void LibraryMultipleTest() { var streamManager = new MemoryStreamManager(); var loader = new LibraryLoadTest.TestLibraryLoader { StreamManager = streamManager }; // Create library files const string hunterText = LibraryLoadTest.TEXT_LIB_YEAST_NIST1 + "\n" + LibraryLoadTest.TEXT_LIB_YEAST_NIST2; LibraryLoadTest.CreateHunterFile(streamManager, loader, hunterText); const string biblioText = LibraryLoadTest.TEXT_LIB_YEAST_NIST2 + "\n" + LibraryLoadTest.TEXT_LIB_YEAST_NIST3; LibraryLoadTest.CreateBiblioFile(streamManager, loader, biblioText); const string nistText = LibraryLoadTest.TEXT_LIB_YEAST_NIST3 + "\n" + LibraryLoadTest.TEXT_LIB_YEAST_NIST4; streamManager.TextFiles.Add(LibraryLoadTest.PATH_NIST_LIB, nistText); var hunterSpec = new XHunterLibSpec("Yeast (X!)", LibraryLoadTest.PATH_HUNTER_LIB); var bilbioSpec = new BiblioSpecLibSpec("Yeast (BS)", LibraryLoadTest.PATH_BIBLIOSPEC_LIB); var nistSpec = new NistLibSpec("Yeast (NIST)", LibraryLoadTest.PATH_NIST_LIB); // For serialization, add the library spec to the settings TestLibraryList = new SpectralLibraryList { hunterSpec, bilbioSpec, nistSpec }; var libraryManager = new LibraryManager { StreamManager = streamManager }; var docContainer = new TestDocumentContainer(); SrmSettings settings = SrmSettingsList.GetDefault(); settings = settings.ChangePeptideLibraries(l => l.ChangeLibrarySpecs(new LibrarySpec[] { hunterSpec, bilbioSpec, nistSpec })); int startRev; SrmDocument docLoaded = CreateLibraryDocument(settings, ExampleText.TEXT_FASTA_YEAST_LIB, false, docContainer, libraryManager, out startRev); AssertEx.IsDocumentState(docLoaded, startRev, 2, 4, 12); Assert.IsTrue(HasLibraryInfo(docLoaded, typeof(XHunterSpectrumHeaderInfo))); Assert.IsTrue(HasLibraryInfo(docLoaded, typeof(BiblioSpecSpectrumHeaderInfo))); Assert.IsTrue(HasLibraryInfo(docLoaded, typeof(NistSpectrumHeaderInfo))); // Remove the rank 1 transition from each transition group TransitionDocNode[] transitionNodes = docLoaded.PeptideTransitions.ToArray(); for (int i = 0; i < transitionNodes.Length; i++) { var nodeTran = transitionNodes[i]; if (nodeTran.LibInfo.Rank != 1) { continue; } var path = docLoaded.GetPathTo((int)SrmDocument.Level.TransitionGroups, i / 3); docLoaded = (SrmDocument)docLoaded.RemoveChild(path, nodeTran); ++startRev; } AssertEx.IsDocumentState(docLoaded, startRev, 2, 4, 8); // Make sure this can be serialized and deserialized without causing // a recalculation of the nodes in the tree. AssertEx.Serializable(docLoaded, (doc1, doc2) => ValidateLibraryDocs(doc1, doc2, libraryManager)); }
private static Library CreateLibraryFile(MemoryStreamManager streamManager, ILoadMonitor loader, string nistText, Action<IStreamManager, Library> write) { streamManager.TextFiles[PATH_NIST_LIB] = nistText; var librarySpec = new NistLibSpec("Temporary (NIST)", PATH_NIST_LIB); Library libNist = librarySpec.LoadLibrary(loader); Assert.IsNotNull(libNist); write(streamManager, libNist); streamManager.TextFiles.Remove(PATH_NIST_LIB); streamManager.Delete(PATH_NIST_LIB_CACHE); return libNist; }
public void NistLoadLibrary() { var streamManager = new MemoryStreamManager(); streamManager.TextFiles.Add(PATH_NIST_LIB, TEXT_LIB_YEAST_NIST); var loader = new TestLibraryLoader {StreamManager = streamManager}; var librarySpec = new NistLibSpec("Yeast (NIST)", PATH_NIST_LIB); Library lib1 = librarySpec.LoadLibrary(loader); CheckLibrary(lib1, 100); Assert.AreEqual(streamManager.BinaryFiles.Count, 1); Assert.IsTrue(streamManager.IsCached(PATH_NIST_LIB, PATH_NIST_LIB_CACHE)); // Corrupt the cache, and make sure it still possible to get // a valid library. byte[] cacheBytes = streamManager.BinaryFiles[PATH_NIST_LIB_CACHE]; int len = cacheBytes.Length; byte[] corruptedBytes = new byte[len/2]; Array.Copy(cacheBytes, corruptedBytes, corruptedBytes.Length); streamManager.BinaryFiles[PATH_NIST_LIB_CACHE] = corruptedBytes; Library lib2 = librarySpec.LoadLibrary(loader); CheckLibrary(lib2, 100); Assert.AreEqual(len, streamManager.BinaryFiles[PATH_NIST_LIB_CACHE].Length); Assert.IsTrue(lib1.IsSameLibrary(lib2)); Assert.AreEqual(0, lib1.CompareRevisions(lib2)); }
public void LibraryMultipleTest() { var streamManager = new MemoryStreamManager(); var loader = new LibraryLoadTest.TestLibraryLoader { StreamManager = streamManager }; // Create library files const string hunterText = LibraryLoadTest.TEXT_LIB_YEAST_NIST1 + "\n" + LibraryLoadTest.TEXT_LIB_YEAST_NIST2; LibraryLoadTest.CreateHunterFile(streamManager, loader, hunterText); const string biblioText = LibraryLoadTest.TEXT_LIB_YEAST_NIST2 + "\n" + LibraryLoadTest.TEXT_LIB_YEAST_NIST3; LibraryLoadTest.CreateBiblioFile(streamManager, loader, biblioText); const string nistText = LibraryLoadTest.TEXT_LIB_YEAST_NIST3 + "\n" + LibraryLoadTest.TEXT_LIB_YEAST_NIST4; streamManager.TextFiles.Add(LibraryLoadTest.PATH_NIST_LIB, nistText); var hunterSpec = new XHunterLibSpec("Yeast (X!)", LibraryLoadTest.PATH_HUNTER_LIB); var bilbioSpec = new BiblioSpecLibSpec("Yeast (BS)", LibraryLoadTest.PATH_BIBLIOSPEC_LIB); var nistSpec = new NistLibSpec("Yeast (NIST)", LibraryLoadTest.PATH_NIST_LIB); // For serialization, add the library spec to the settings TestLibraryList = new SpectralLibraryList { hunterSpec, bilbioSpec, nistSpec }; var libraryManager = new LibraryManager { StreamManager = streamManager }; var docContainer = new TestDocumentContainer(); SrmSettings settings = SrmSettingsList.GetDefault(); settings = settings.ChangePeptideLibraries(l => l.ChangeLibrarySpecs(new LibrarySpec[] { hunterSpec, bilbioSpec, nistSpec })); int startRev; SrmDocument docLoaded = CreateLibraryDocument(settings, ExampleText.TEXT_FASTA_YEAST_LIB, false, docContainer, libraryManager, out startRev); AssertEx.IsDocumentState(docLoaded, startRev, 2, 4, 12); Assert.IsTrue(HasLibraryInfo(docLoaded, typeof(XHunterSpectrumHeaderInfo))); Assert.IsTrue(HasLibraryInfo(docLoaded, typeof(BiblioSpecSpectrumHeaderInfo))); Assert.IsTrue(HasLibraryInfo(docLoaded, typeof(NistSpectrumHeaderInfo))); // Remove the rank 1 transition from each transition group TransitionDocNode[] transitionNodes = docLoaded.PeptideTransitions.ToArray(); for (int i = 0; i < transitionNodes.Length; i++) { var nodeTran = transitionNodes[i]; if (nodeTran.LibInfo.Rank != 1) continue; var path = docLoaded.GetPathTo((int) SrmDocument.Level.TransitionGroups, i/3); docLoaded = (SrmDocument) docLoaded.RemoveChild(path, nodeTran); ++startRev; } AssertEx.IsDocumentState(docLoaded, startRev, 2, 4, 8); // Make sure this can be serialized and deserialized without causing // a recalculation of the nodes in the tree. AssertEx.Serializable(docLoaded, (doc1, doc2) => ValidateLibraryDocs(doc1, doc2, libraryManager)); }