Example #1
0
        public void Serialization()
        {
            ICytogeneticBands expectedCytogeneticBands = GetCytogeneticBands();
            ICytogeneticBands observedCytogeneticBands;

            using (var ms = new MemoryStream())
            {
                using (var writer = new ExtendedBinaryWriter(ms, Encoding.UTF8, true))
                {
                    expectedCytogeneticBands.Write(writer);
                }

                ms.Seek(0, SeekOrigin.Begin);

                using (var reader = new ExtendedBinaryReader(ms))
                {
                    var bands = CytogeneticBands.Read(reader);
                    observedCytogeneticBands = new CytogeneticBands(bands, _renamer);
                }
            }

            var expectedCytogeneticBand = expectedCytogeneticBands.GetCytogeneticBand(10, 88400000, 92900000);
            var observedCytogeneticBand = observedCytogeneticBands.GetCytogeneticBand(10, 88400000, 92900000);

            Assert.NotNull(observedCytogeneticBand);
            Assert.Equal(expectedCytogeneticBand, observedCytogeneticBand);
        }
Example #2
0
        private static void WriteReference(ILogger logger, string outputPath, CompressedSequenceReader reader,
                                           IChromosome chromosome, string referenceBases, int offset)
        {
            logger.Write("- writing reference bases... ");
            var cytogeneticBands = new CytogeneticBands(reader.CytogeneticBands);

            using (var writer = new CompressedSequenceWriter(FileUtilities.GetCreateStream(outputPath),
                                                             reader.ReferenceMetadataList, cytogeneticBands, reader.Assembly))
            {
                writer.Write(chromosome.EnsemblName, referenceBases, offset);
            }
            logger.WriteLine("finished.");
        }
Example #3
0
        /// <summary>
        /// loads the header
        /// </summary>
        private void LoadHeader()
        {
            // grab the index and masked intervals offsets
            _indexOffset           = _reader.ReadInt64();
            _maskedIntervalsOffset = _reader.ReadInt64();

            // skip the creation time
            _reader.ReadOptInt64();

            // grab the reference metadata
            int numRefSeqs = _reader.ReadOptInt32();

            for (int i = 0; i < numRefSeqs; i++)
            {
                Metadata.Add(ReferenceMetadata.Read(_reader));
            }

            // update the chromosome renamer
            _compressedSequence.Renamer.AddReferenceMetadata(Metadata);

            // read the cytogenetic bands
            _compressedSequence.CytogeneticBands = new CytogeneticBands(CytogeneticBands.Read(_reader), _compressedSequence.Renamer);

            // read the genome assembly
            _compressedSequence.GenomeAssembly = (GenomeAssembly)_reader.ReadByte();

            // grab the data start tag
            ulong dataStartTag = _reader.ReadUInt64();

            if (dataStartTag != CompressedSequenceCommon.DataStartTag)
            {
                throw new UserErrorException($"The data start tag does not match the expected values: Obs: {dataStartTag} vs Exp: {CompressedSequenceCommon.DataStartTag}");
            }

            _dataStartOffset = _stream.Position;
        }
Example #4
0
 public ReferenceSequenceProvider(Stream stream)
 {
     _currentChromosome = new EmptyChromosome(string.Empty);
     _sequenceReader    = new CompressedSequenceReader(stream);
     _cytogeneticBands  = new CytogeneticBands(_sequenceReader.CytogeneticBands);
 }