/// <summary>
        /// Reads the given stream up to the end, returning the data as a byte
        /// array, using the given buffer for transferring data. Note that the
        /// current contents of the buffer is ignored, so the buffer needn't
        /// be cleared beforehand.
        /// </summary>
        public static byte[] ReadFully(this Stream input, byte[] buffer)
        {
            if (buffer == null)
            {
                throw new ArgumentNullException(nameof(buffer));
            }

            if (input == null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            if (buffer.Length == 0)
            {
                throw new ArgumentException("Buffer has length of 0");
            }

            // We could do all our own work here, but using MemoryStream is easier
            // and likely to be just as efficient.
            using (var tempStream = MemoryStreamManager.GetStream())
            {
                CopyTo(input, tempStream, buffer);
                // No need to copy the buffer if it's the right size
                if (tempStream.Length == tempStream.GetBuffer().Length)
                {
                    return(tempStream.GetBuffer());
                }
                // Okay, make a copy that's the right size
                return(tempStream.ToArray());
            }
        }
Example #2
0
        public void LibraryNoIonsTest()
        {
            var streamManager = new MemoryStreamManager();
            var loader        = new LibraryLoadTest.TestLibraryLoader {
                StreamManager = streamManager
            };

            // Create X! Hunter library with 20 lowest intensity peaks in NIST library
            LibraryLoadTest.CreateHunterFile(streamManager, loader, LibraryLoadTest.TEXT_LIB_YEAST_NIST, true);

            var hunterSpec = new XHunterLibSpec("Yeast (X!)", LibraryLoadTest.PATH_HUNTER_LIB);

            // For serialization, add the library spec to the settings
            TestLibraryList = new SpectralLibraryList {
                hunterSpec
            };

            var libraryManager = new LibraryManager {
                StreamManager = streamManager
            };
            var docContainer = new TestDocumentContainer();

            SrmSettings settings = SrmSettingsList.GetDefault();

            settings = settings.ChangePeptideLibraries(l => l.ChangeLibrarySpecs(new LibrarySpec[] { hunterSpec }));

            int         startRev;
            SrmDocument docLoaded = CreateLibraryDocument(settings, ExampleText.TEXT_FASTA_YEAST_LIB, false,
                                                          docContainer, libraryManager, out startRev);

            // Peptides should have been chosen, but no transitions, since the spectra are garbage
            AssertEx.IsDocumentState(docLoaded, startRev, 2, 4, 0);
        }
        public HybridStreamManager(string path, int maxMemoryStreamSize, int maxStreamSize)
        {
            if (maxMemoryStreamSize >= maxStreamSize)
                throw new ArgumentException("Max memory stream size must be less than the max stream size");

            _diskStreamManager = new DiskStreamManager(path, maxStreamSize);
            _memoryStreamManager = new MemoryStreamManager(maxMemoryStreamSize);
        }
Example #4
0
 public static Assembly GetLoadedAssemblyFromDefinition(AssemblyDefinition assemblyDefinition)
 {
     using (var ms = MemoryStreamManager.GetStream())
     {
         assemblyDefinition.Write(ms);
         return(Assembly.Load(ms.GetBuffer()));
     }
 }
Example #5
0
        public static MemoryStream CopyToNewMemoryStream(this Stream stream)
        {
            var ms = MemoryStreamManager.GetStream();

            stream.CopyTo(ms);
            ms.Position = 0;
            return(ms);
        }
Example #6
0
        public static async Task <MemoryStream> CopyToNewMemoryStreamAsync(this Stream stream)
        {
            var ms = MemoryStreamManager.GetStream();
            await stream.CopyToAsync(ms);

            ms.Position = 0;
            return(ms);
        }
 public byte[] RecyclableMemoryStream()
 {
     using (var ms = MemoryStreamManager.GetStream())
     {
         _formatter.WriteToStream(_persionData, ms);
         return(ms.ToArray());
     }
 }
Example #8
0
        public static byte[] Compress <TXmlDto>(TXmlDto from)
        {
            using (var ms = MemoryStreamManager.GetStream())
            {
                CompressToStream(from, ms);

                return(ms.ToArray());
            }
        }
Example #9
0
        protected override Block ReadBlock(int index, [NotNull] PipelineInfo pipelineInfo)
        {
            var uncompressedStream = MemoryStreamManager.GetStream("Uncompressed");

            SourceStream.CopyBlockTo(uncompressedStream, pipelineInfo.BlockSize);
            uncompressedStream.Position = 0;

            return(new Block(index, uncompressedStream));
        }
            public override async Task <object> DeserializeAsync(Stream input)
            {
                using var buffer = MemoryStreamManager.GetStream();

                await input.CopyToAsync(buffer).ConfigureAwait(false);

                return(await this.deserializer
                       .DeserializeAsync(
                           new ReadOnlyMemory <byte>(buffer.GetBuffer(), 0, (int)buffer.Length),
                           false,
                           Confluent.Kafka.SerializationContext.Empty)
                       .ConfigureAwait(false));
            }
            public override async Task <object> DeserializeAsync(Stream input, ISerializerContext context)
            {
                using var buffer = MemoryStreamManager.GetStream();

                await input.CopyToAsync(buffer).ConfigureAwait(false);

                return(await this.deserializer
                       .DeserializeAsync(
                           new ReadOnlyMemory <byte>(buffer.GetBuffer(), 0, (int)buffer.Length),
                           false,
                           new SerializationContext(MessageComponentType.Value, context.Topic))
                       .ConfigureAwait(false));
            }
        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));
        }
        /// <inheritdoc />
        public sealed override object DeepCopyObject(object source)
        {
            if (null == source)
            {
                return(null);
            }

            var formatter = new BinaryFormatter();

            using (var ms = MemoryStreamManager.GetStream())
            {
                formatter.Serialize(ms, source);
                ms.Seek(0, System.IO.SeekOrigin.Begin);
                return(formatter.Deserialize(ms));
            }
        }
Example #14
0
        /// <inheritdoc />
        public sealed override object DeepCopyObject(object source)
        {
            if (source == null)
            {
                return(null);
            }

            var type = source.GetType();

            using (var ms = MemoryStreamManager.GetStream())
            {
                _copier.Serialize(source, ms);
                ms.Seek(0, System.IO.SeekOrigin.Begin);
                return(_copier.Deserialize(ms));
            }
        }
Example #15
0
        /// <summary>Tries to create a copy of source.</summary>
        /// <param name="source">The item to create a copy of</param>
        /// <returns>The copy</returns>
        public virtual object DeepCopyObject(object source)
        {
            if (source == null)
            {
                return(null);
            }

            var type = source.GetType();

            using (var ms = MemoryStreamManager.GetStream())
            {
                WriteToStream(type, source, ms, Encoding.UTF8);
                ms.Seek(0, System.IO.SeekOrigin.Begin);
                return(ReadFromStream(type, ms, Encoding.UTF8));
            }
        }
Example #16
0
        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);
        }
Example #17
0
        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));
        }
        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);
        }
Example #19
0
        public void HunterLoadLibrary()
        {
            var streamManager = new MemoryStreamManager();
            var loader        = new TestLibraryLoader {
                StreamManager = streamManager
            };

            Library libNist = CreateHunterFile(streamManager, loader, TEXT_LIB_YEAST_NIST);

            Assert.AreEqual(1, streamManager.BinaryFiles.Count);

            var librarySpecHunter = new XHunterLibSpec("Yeast (X!)", PATH_HUNTER_LIB);

            Library libHunter = librarySpecHunter.LoadLibrary(loader);

            CheckLibrary(libHunter, 20);

            Assert.IsFalse(libNist.IsSameLibrary(libHunter));
        }
Example #20
0
        public void BiblioSpecLoadLibrary()
        {
            var streamManager = new MemoryStreamManager();
            var loader        = new TestLibraryLoader {
                StreamManager = streamManager
            };

            Library libNist = CreateBiblioFile(streamManager, loader, TEXT_LIB_YEAST_NIST);

            Assert.AreEqual(1, streamManager.BinaryFiles.Count);

            var librarySpecBiblio = new BiblioSpecLibSpec("Yeast (BS)", PATH_BIBLIOSPEC_LIB);

            Library libBiblioSpec = librarySpecBiblio.LoadLibrary(loader);

            CheckLibrary(libBiblioSpec, 100);

            Assert.IsFalse(libNist.IsSameLibrary(libBiblioSpec));
        }
 public static string SerializeToString <T>(T from)
 {
     try
     {
         using (var ms = MemoryStreamManager.GetStream())
         {
             using (var xw = XmlWriter.Create(ms, XmlWriterSettings))
             {
                 var serializer = new DataContractSerializer(from.GetType());
                 serializer.WriteObject(xw, from);
                 xw.Flush();
                 return(ms.ReadToEnd());
             }
         }
     }
     catch (Exception ex)
     {
         throw new SerializationException($"Error serializing object of type {@from.GetType().FullName}", ex);
     }
 }
Example #22
0
        protected override Block ReadBlock(int index, PipelineInfo pipelineInfo)
        {
            var position = ReadInt32();

            if (position < 0 || position >= pipelineInfo.BlockCount)
            {
                throw new PipelineException("Source file corrupted.");
            }

            var compressedLength = ReadInt32();

            if (compressedLength <= 0)
            {
                throw new PipelineException("Source file corrupted.");
            }

            var compressedStream = MemoryStreamManager.GetStream("Compressed");

            SourceStream.CopyBlockTo(compressedStream, compressedLength);
            compressedStream.Position = 0;

            return(new Block(position, compressedStream));
        }
Example #23
0
        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));
        }
Example #24
0
        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));
        }
Example #25
0
 public SwappingStream(Stream existing)
 {
     Stream  = existing ?? MemoryStreamManager.GetStream();
     Swapped = Stream is not MemoryStream;
 }
Example #26
0
 public SwappingStream(byte[] bytes)
 {
     Stream  = MemoryStreamManager.GetStream(bytes);
     Swapped = false;
 }
Example #27
0
        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));
        }
Example #28
0
        public void HunterLoadLibrary()
        {
            var streamManager = new MemoryStreamManager();
            var loader = new TestLibraryLoader { StreamManager = streamManager };

            Library libNist = CreateHunterFile(streamManager, loader, TEXT_LIB_YEAST_NIST);

            Assert.AreEqual(1, streamManager.BinaryFiles.Count);

            var librarySpecHunter = new XHunterLibSpec("Yeast (X!)", PATH_HUNTER_LIB);

            Library libHunter = librarySpecHunter.LoadLibrary(loader);
            CheckLibrary(libHunter, 20);

            Assert.IsFalse(libNist.IsSameLibrary(libHunter));
        }
Example #29
0
        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;
        }
Example #30
0
 public static Library CreateBiblioFile(MemoryStreamManager streamManager, ILoadMonitor loader, string nistText)
 {
     return(CreateLibraryFile(streamManager, loader, nistText,
                              (sm, lib) => BiblioSpecLibrary.Write(sm, PATH_BIBLIOSPEC_LIB, lib)));
 }
Example #31
0
 public static Library CreateHunterFile(MemoryStreamManager streamManager, ILoadMonitor loader, string nistText)
 {
     return(CreateHunterFile(streamManager, loader, nistText, false));
 }
Example #32
0
 public static Library CreateHunterFile(MemoryStreamManager streamManager, ILoadMonitor loader,
                                        string nistText, bool lowIntensity)
 {
     return(CreateLibraryFile(streamManager, loader, nistText,
                              (sm, lib) => XHunterLibrary.Write(sm, PATH_HUNTER_LIB, lib, lowIntensity)));
 }
Example #33
0
        private void HandleSplitMessage(PlayerNetworkSession playerSession, SplitPartPackage splitMessage)
        {
            int spId    = splitMessage.SplitId;
            int spIdx   = splitMessage.SplitIdx;
            int spCount = splitMessage.SplitCount;

            Int24       sequenceNumber        = splitMessage.DatagramSequenceNumber;
            Reliability reliability           = splitMessage.Reliability;
            Int24       reliableMessageNumber = splitMessage.ReliableMessageNumber;
            Int24       orderingIndex         = splitMessage.OrderingIndex;
            byte        orderingChannel       = splitMessage.OrderingChannel;

            SplitPartPackage[] spPackets;
            bool haveEmpty = false;

            // Need sync for this part since they come very fast, and very close in time.
            // If no synk, will often detect complete message two times (or more).
            lock (playerSession.Splits)
            {
                if (!playerSession.Splits.ContainsKey(spId))
                {
                    playerSession.Splits.TryAdd(spId, new SplitPartPackage[spCount]);
                }

                spPackets = playerSession.Splits[spId];
                if (spPackets[spIdx] != null)
                {
                    Log.Debug("Already had splitpart (resent). Ignore this part.");
                    return;
                }
                spPackets[spIdx] = splitMessage;

                for (int i = 0; i < spPackets.Length; i++)
                {
                    haveEmpty = haveEmpty || spPackets[i] == null;
                }
            }

            if (!haveEmpty)
            {
                Log.DebugFormat("Got all {0} split packages for split ID: {1}", spCount, spId);

                SplitPartPackage[] waste;
                playerSession.Splits.TryRemove(spId, out waste);

                using (MemoryStream stream = MemoryStreamManager.GetStream())
                {
                    for (int i = 0; i < spPackets.Length; i++)
                    {
                        SplitPartPackage splitPartPackage = spPackets[i];
                        byte[]           buf = splitPartPackage.Message;
                        if (buf == null)
                        {
                            Log.Error("Expected bytes in splitpart, but got none");
                            continue;
                        }

                        stream.Write(buf, 0, buf.Length);
                        splitPartPackage.PutPool();
                    }

                    byte[] buffer = stream.ToArray();
                    try
                    {
                        ConnectedPackage newPackage = ConnectedPackage.CreateObject();
                        newPackage._datagramSequenceNumber = sequenceNumber;
                        newPackage._reliability            = reliability;
                        newPackage._reliableMessageNumber  = reliableMessageNumber;
                        newPackage._orderingIndex          = orderingIndex;
                        newPackage._orderingChannel        = (byte)orderingChannel;
                        newPackage._hasSplit = false;

                        Package fullMessage = PackageFactory.CreatePackage(buffer[0], buffer, "raknet") ??
                                              new UnknownPackage(buffer[0], buffer);
                        fullMessage.DatagramSequenceNumber = sequenceNumber;
                        fullMessage.Reliability            = reliability;
                        fullMessage.ReliableMessageNumber  = reliableMessageNumber;
                        fullMessage.OrderingIndex          = orderingIndex;
                        fullMessage.OrderingChannel        = orderingChannel;

                        newPackage.Messages = new List <Package>();
                        newPackage.Messages.Add(fullMessage);

                        Log.Debug(
                            $"Assembled split package {newPackage._reliability} message #{newPackage._reliableMessageNumber}, Chan: #{newPackage._orderingChannel}, OrdIdx: #{newPackage._orderingIndex}");
                        HandleConnectedPackage(playerSession, newPackage);
                        newPackage.PutPool();
                    }
                    catch (Exception e)
                    {
                        Log.Error("Error during split message parsing", e);
                        if (Log.IsDebugEnabled)
                        {
                            Log.Debug($"0x{buffer[0]:x2}\n{Package.HexDump(buffer)}");
                        }
                        playerSession.Disconnect("Bad package received from client.", false);
                    }
                }
            }
        }
Example #34
0
        public void BiblioSpecLoadLibrary()
        {
            var streamManager = new MemoryStreamManager();
            var loader = new TestLibraryLoader { StreamManager = streamManager };

            Library libNist = CreateBiblioFile(streamManager, loader, TEXT_LIB_YEAST_NIST);

            Assert.AreEqual(1, streamManager.BinaryFiles.Count);

            var librarySpecBiblio = new BiblioSpecLibSpec("Yeast (BS)", PATH_BIBLIOSPEC_LIB);

            Library libBiblioSpec = librarySpecBiblio.LoadLibrary(loader);
            CheckLibrary(libBiblioSpec, 100);

            Assert.IsFalse(libNist.IsSameLibrary(libBiblioSpec));
        }
        public void LibraryNoIonsTest()
        {
            var streamManager = new MemoryStreamManager();
            var loader = new LibraryLoadTest.TestLibraryLoader { StreamManager = streamManager };

            // Create X! Hunter library with 20 lowest intensity peaks in NIST library
            LibraryLoadTest.CreateHunterFile(streamManager, loader, LibraryLoadTest.TEXT_LIB_YEAST_NIST, true);

            var hunterSpec = new XHunterLibSpec("Yeast (X!)", LibraryLoadTest.PATH_HUNTER_LIB);

            // For serialization, add the library spec to the settings
            TestLibraryList = new SpectralLibraryList { hunterSpec };

            var libraryManager = new LibraryManager { StreamManager = streamManager };
            var docContainer = new TestDocumentContainer();

            SrmSettings settings = SrmSettingsList.GetDefault();
            settings = settings.ChangePeptideLibraries(l => l.ChangeLibrarySpecs(new LibrarySpec[] { hunterSpec }));

            int startRev;
            SrmDocument docLoaded = CreateLibraryDocument(settings, ExampleText.TEXT_FASTA_YEAST_LIB, false,
                docContainer, libraryManager, out startRev);
            // Peptides should have been chosen, but no transitions, since the spectra are garbage
            AssertEx.IsDocumentState(docLoaded, startRev, 2, 4, 0);
        }
Example #36
0
 public static Library CreateHunterFile(MemoryStreamManager streamManager, ILoadMonitor loader, string nistText)
 {
     return CreateHunterFile(streamManager, loader, nistText, false);
 }
Example #37
0
 public static Library CreateBiblioFile(MemoryStreamManager streamManager, ILoadMonitor loader, string nistText)
 {
     return CreateLibraryFile(streamManager, loader, nistText,
         (sm, lib) => BiblioSpecLibrary.Write(sm, PATH_BIBLIOSPEC_LIB, lib));
 }
Example #38
0
        public static void WriteQueryString(TextWriter writer, object instance)
        {
            try
            {
                JsState.QueryStringMode = true;
                var i             = 0;
                var typedInstance = (T)instance;
                foreach (var propertyWriter in PropertyWriters)
                {
                    var propertyValue = propertyWriter.GetterFn(typedInstance);
                    if (propertyValue == null)
                    {
                        continue;
                    }

                    if (i++ > 0)
                    {
                        writer.Write('&');
                    }

                    var propertyType = propertyValue.GetType();
                    var strValue     = propertyValue as string;
                    var isEnumerable = strValue == null &&
                                       !propertyType.IsValueType &&
                                       propertyType.HasInterface(typeof(IEnumerable));

                    if (QueryStringSerializer.ComplexTypeStrategy != null)
                    {
                        var nonEnumerableUserType = !isEnumerable && (propertyType.IsUserType() || propertyType.IsInterface);
                        if (nonEnumerableUserType || propertyType.IsOrHasGenericInterfaceTypeOf(typeof(IDictionary <,>)))
                        {
                            if (QueryStringSerializer.ComplexTypeStrategy(writer, propertyWriter.PropertyName, propertyValue))
                            {
                                continue;
                            }
                        }
                    }

                    Serializer.WritePropertyName(writer, propertyWriter.PropertyName);
                    writer.Write('=');

                    if (strValue != null)
                    {
                        writer.Write(strValue.UrlEncode());
                    }
                    else if (!isEnumerable)
                    {
                        propertyWriter.WriteFn(writer, propertyValue);
                    }
                    else
                    {
                        //Trim brackets in top-level lists in QueryStrings, e.g: ?a=[1,2,3] => ?a=1,2,3
                        using (var ms = MemoryStreamManager.GetStream())
                        {
                            var enumerableWriter = new StreamWriter(ms); //ms disposed in using
                            propertyWriter.WriteFn(enumerableWriter, propertyValue);
                            enumerableWriter.Flush();
                            var output = ms.ReadToEnd();
                            output = output.Trim(ArrayBrackets);
                            writer.Write(output);
                        }
                    }
                }
            }
            finally
            {
                JsState.QueryStringMode = false;
            }
        }
Example #39
0
 public static Library CreateHunterFile(MemoryStreamManager streamManager, ILoadMonitor loader,
     string nistText, bool lowIntensity)
 {
     return CreateLibraryFile(streamManager, loader, nistText,
         (sm, lib) => XHunterLibrary.Write(sm, PATH_HUNTER_LIB, lib, lowIntensity));
 }
Example #40
0
        private void HandleQuery(byte[] receiveBytes, IPEndPoint senderEndpoint)
        {
            if (!Config.GetProperty("EnableQuery", false))
            {
                return;
            }

            if (receiveBytes[0] != 0xFE || receiveBytes[1] != 0xFD)
            {
                return;
            }

            byte packetId = receiveBytes[2];

            switch (packetId)
            {
            case 0x09:
            {
                byte[] buffer = new byte[17];
                // ID
                buffer[0] = 0x09;

                // Sequence number
                buffer[1] = receiveBytes[3];
                buffer[2] = receiveBytes[4];
                buffer[3] = receiveBytes[5];
                buffer[4] = receiveBytes[6];

                // Textual representation of int32 (token) with null terminator
                string str = new Random().Next().ToString(CultureInfo.InvariantCulture) + "\x00";
                Buffer.BlockCopy(str.ToCharArray(), 0, buffer, 5, 11);

                _listener.Send(buffer, buffer.Length, senderEndpoint);
                break;
            }

            case 0x00:
            {
                using (var stream = MemoryStreamManager.GetStream())
                {
                    bool isFullStatRequest = receiveBytes.Length == 15;
                    if (Log.IsInfoEnabled)
                    {
                        Log.InfoFormat("Full request: {0}", isFullStatRequest);
                    }

                    // ID
                    stream.WriteByte(0x00);

                    // Sequence number
                    stream.WriteByte(receiveBytes[3]);
                    stream.WriteByte(receiveBytes[4]);
                    stream.WriteByte(receiveBytes[5]);
                    stream.WriteByte(receiveBytes[6]);

                    //{
                    //	string str = "splitnum\0";
                    //	byte[] bytes = Encoding.ASCII.GetBytes(str.ToCharArray());
                    //	stream.Write(bytes, 0, bytes.Length);
                    //}

                    MotdProvider.GetMotd(ServerInfo, senderEndpoint);                             // Force update the player counts :-)

                    var data = new Dictionary <string, string>
                    {
                        { "splitnum", "" + (char)128 },
                        { "hostname", "Minecraft PE Server" },
                        { "gametype", "SMP" },
                        { "game_id", "MINECRAFTPE" },
                        { "version", "0.15.0" },
                        { "server_engine", "MiNET v1.0.0" },
                        { "plugins", "MiNET v1.0.0" },
                        { "map", "world" },
                        { "numplayers", MotdProvider.NumberOfPlayers.ToString() },
                        { "maxplayers", MotdProvider.MaxNumberOfPlayers.ToString() },
                        { "whitelist", "off" },
                        //{"hostip", "192.168.0.1"},
                        //{"hostport", "19132"}
                    };

                    foreach (KeyValuePair <string, string> valuePair in data)
                    {
                        string key   = valuePair.Key + "\x00" + valuePair.Value + "\x00";
                        byte[] bytes = Encoding.ASCII.GetBytes(key.ToCharArray());
                        stream.Write(bytes, 0, bytes.Length);
                    }

                    {
                        string str   = "\x00\x01player_\x00\x00";
                        byte[] bytes = Encoding.ASCII.GetBytes(str.ToCharArray());
                        stream.Write(bytes, 0, bytes.Length);
                    }

                    // End the stream with 0 byte
                    stream.WriteByte(0);
                    var buffer = stream.ToArray();
                    _listener.Send(buffer, buffer.Length, senderEndpoint);
                }
                break;
            }

            default:
                return;
            }
        }
        public void TestLibraryRankedSpectrumInfoSpeed()
        {
            var         testFilesDir = new TestFilesDir(TestContext, @"Test\LibraryRankedSpectrumInfoSpeedTest.zip");
            SrmDocument srmDocument;

            using (var stream = File.OpenRead(testFilesDir.GetTestPath("LibraryRankedSpectrumInfoSpeedTest.sky")))
            {
                srmDocument = (SrmDocument) new XmlSerializer(typeof(SrmDocument)).Deserialize(stream);
            }

            var unloadedLibrary = srmDocument.Settings.PeptideSettings.Libraries.Libraries.FirstOrDefault();

            Assert.IsNotNull(unloadedLibrary);
            var streamManager = new MemoryStreamManager();
            var loader        = new LibraryLoadTest.TestLibraryLoader {
                StreamManager = streamManager
            };
            var librarySpec = unloadedLibrary.CreateSpec(testFilesDir.GetTestPath("LibraryRankedSpectrumInfoSpeedTest.blib"));
            var library     = librarySpec.LoadLibrary(loader);

            Assert.IsTrue(library.IsLoaded);
            var peptideLibraries = srmDocument.Settings.PeptideSettings.Libraries.ChangeLibraries(new[] { library });

            var settingsWithLibraries =
                srmDocument.Settings.ChangePeptideSettings(
                    srmDocument.Settings.PeptideSettings.ChangeLibraries(peptideLibraries));

            // List of peptides to test with: <peptide sequence, description, expected # of matched ions, expected ranked ions>
            Tuple <string, string, int, double[]>[] testPeptides = new[]
            {
                // ReSharper disable StringLiteralTypo
                Tuple.Create("MEIVK", "Short Peptide",
                             20, new[] { 131.1, 147.1, 187.1 }),
                Tuple.Create("EIYYTPDPSELAAKEEPAKEEAPAPTPAASAPAPAAAAPAPVAAAAPAAAAAEIADEPVK", "Long Peptide",
                             55, new[] { 587.4, 771.4, 900.5 }),
                Tuple.Create("LVGFT[+80]FR", "Short Peptide with 1 Neutral Loss",
                             24, new[] { 305.1334, 322.0948, 325.2004 }),
                Tuple.Create("DLKEILSGFHNAGPVAGAGAASGAAAAGGDAAAEEEKEEEAAEES[+80]DDDMGFGLFD",
                             "Long peptide with 1 Neutral Loss",
                             43, new[] { 790.1161, 825.5901, 889.6103 }),
                Tuple.Create("MLPTS[+80]VS[+80]R", "Short peptide with 2 neutral losses",
                             36, new[] { 305.6439, 340.5001, 343.2071 }),
                Tuple.Create("RNPDFEDDDFLGGDFDEDEIDEESS[+80]EEEEEEKT[+80]QKK", "Long peptide with 2 neutral losses",
                             65, new[] { 483.2214, 552.9168, 626.2743 })
                // ReSharper restore StringLiteralTypo
            };

            Console.Out.WriteLine();
            foreach (var tuple in testPeptides)
            {
                var peptideDocNode = srmDocument.Molecules.FirstOrDefault(pep => pep.ModifiedSequenceDisplay == tuple.Item1);
                Assert.IsNotNull(peptideDocNode, "Could not find peptide {0}", tuple.Item1);
                var transitionGroup = peptideDocNode.TransitionGroups.FirstOrDefault();
                Assert.IsNotNull(transitionGroup);
                var spectrum = library
                               .GetSpectra(new LibKey(peptideDocNode.ModifiedTarget, transitionGroup.PrecursorAdduct),
                                           transitionGroup.LabelType, LibraryRedundancy.all).FirstOrDefault();
                Assert.IsNotNull(spectrum);

                var startTime = DateTime.UtcNow;
                LibraryRankedSpectrumInfo libraryRankedSpectrum = null;
                int repeatCount = 50;
                for (int i = 0; i < repeatCount; i++)
                {
                    libraryRankedSpectrum = LibraryRankedSpectrumInfo.NewLibraryRankedSpectrumInfo(spectrum.SpectrumPeaksInfo,
                                                                                                   transitionGroup.LabelType, transitionGroup, settingsWithLibraries, peptideDocNode.ExplicitMods,
                                                                                                   false, TransitionGroup.MAX_MATCHED_MSMS_PEAKS);
                    Assert.IsNotNull(libraryRankedSpectrum);
                }
                var endTime = DateTime.UtcNow;

                Console.Out.WriteLine("Time to get LibraryRankedSpectrumInfo for {0} {1} times: {2}", tuple.Item2, repeatCount, endTime.Subtract(startTime));
                Assert.IsNotNull(libraryRankedSpectrum);
                var rankedMzs = libraryRankedSpectrum.PeaksRanked.Select(peak => Math.Round(peak.ObservedMz, 4)).Take(3).ToArray();
                Console.Out.WriteLine("{0} matched peaks. First {1}/{2} ranked peaks: {{ {3} }}",
                                      libraryRankedSpectrum.PeaksMatched.Count(), rankedMzs.Length,
                                      libraryRankedSpectrum.PeaksRanked.Count(), string.Join(",", rankedMzs));
                if (!IsRecording)
                {
                    CollectionAssert.AreEqual(tuple.Item4, rankedMzs);
                    Assert.AreEqual(tuple.Item3, libraryRankedSpectrum.PeaksMatched.Count());
                }
            }
        }