Exemple #1
0
 public JasixNode(IExtendedBinaryReader reader)
 {
     _start = reader.ReadOptInt32();
     //on disk we will store the end as an offset to save space
     _end         = _start + reader.ReadOptInt32();
     FileLocation = reader.ReadOptInt64();
 }
        private static IntervalArray <T>[] ReadIntervals <T>(IExtendedBinaryReader reader, Func <T> readMethod) where T : IInterval
        {
            var numRefSeqs     = reader.ReadOptInt32();
            var intervalArrays = new IntervalArray <T> [numRefSeqs];

            for (int refSeqIndex = 0; refSeqIndex < numRefSeqs; refSeqIndex++)
            {
                var numItems = reader.ReadOptInt32();
                if (numItems == 0)
                {
                    continue;
                }

                var intervals = new Interval <T> [numItems];

                for (int i = 0; i < numItems; i++)
                {
                    var item = readMethod();
                    intervals[i] = new Interval <T>(item.Start, item.End, item);
                }

                intervalArrays[refSeqIndex] = new IntervalArray <T>(intervals);
            }

            CheckGuard(reader);
            return(intervalArrays);
        }
Exemple #3
0
        public static IInterval Read(IExtendedBinaryReader reader)
        {
            int start = reader.ReadOptInt32();
            int end   = reader.ReadOptInt32();

            return(new Interval(start, end));
        }
Exemple #4
0
        private static Interval <long> ReadInterval(IExtendedBinaryReader reader)
        {
            var begin    = reader.ReadOptInt32();
            var end      = reader.ReadOptInt32();
            var position = reader.ReadOptInt64();

            return(new Interval <long>(begin, end, position));
        }
Exemple #5
0
        public static CompactId Read(IExtendedBinaryReader reader)
        {
            var id      = (IdType)reader.ReadByte();
            var version = reader.ReadByte();
            var info    = reader.ReadUInt32();

            return(new CompactId(id, version, info));
        }
Exemple #6
0
        // ReSharper disable once UnusedParameter.Local
        private static void CheckString(IExtendedBinaryReader reader, string expectedString)
        {
            string s = reader.ReadAsciiString();

            Assert.NotNull(s);
            Assert.Equal(expectedString.Length, s.Length);
            Assert.Equal(expectedString, s);
        }
        /// <summary>
        /// check if the section guard is in place
        /// </summary>
        internal static void CheckGuard(IExtendedBinaryReader reader)
        {
            uint observedGuard = reader.ReadUInt32();

            if (observedGuard != CacheConstants.GuardInt)
            {
                throw new InvalidDataException($"Expected a guard integer ({CacheConstants.GuardInt}), but found another value: ({observedGuard})");
            }
        }
Exemple #8
0
        /// <summary>
        /// reads the regulatory element data from the binary reader
        /// </summary>
        public static IRegulatoryRegion Read(IExtendedBinaryReader reader, IDictionary <ushort, IChromosome> chromosomeIndexDictionary)
        {
            var refIndex = reader.ReadOptUInt16();
            int start    = reader.ReadOptInt32();
            int end      = reader.ReadOptInt32();
            var type     = (RegulatoryRegionType)reader.ReadByte();
            var id       = CompactId.Read(reader);

            return(new RegulatoryRegion(chromosomeIndexDictionary[refIndex], start, end, id, type));
        }
        internal static T[] ReadItems <T>(IExtendedBinaryReader reader, Func <T> readMethod)
        {
            var numItems = reader.ReadOptInt32();
            var items    = new T[numItems];

            for (int i = 0; i < numItems; i++)
            {
                items[i] = readMethod();
            }
            CheckGuard(reader);
            return(items);
        }
Exemple #10
0
        public static IGene Read(IExtendedBinaryReader reader, IDictionary <ushort, IChromosome> indexToChromosome)
        {
            ushort referenceIndex  = reader.ReadOptUInt16();
            int    start           = reader.ReadOptInt32();
            int    end             = reader.ReadOptInt32();
            bool   onReverseStrand = reader.ReadBoolean();
            string symbol          = reader.ReadAsciiString();
            int    hgncId          = reader.ReadOptInt32();
            var    entrezId        = CompactId.Read(reader);
            var    ensemblId       = CompactId.Read(reader);

            return(new Gene(indexToChromosome[referenceIndex], start, end, onReverseStrand, symbol, hgncId, entrezId, ensemblId));
        }
Exemple #11
0
        private static T[] ReadIndices <T>(IExtendedBinaryReader reader, T[] cachedItems)
        {
            int numItems = reader.ReadOptInt32();
            var items    = new T[numItems];

            for (int i = 0; i < numItems; i++)
            {
                var index = reader.ReadOptInt32();
                items[i] = cachedItems[index];
            }

            return(items);
        }
Exemple #12
0
        public static IAnnotatedGene Read(IExtendedBinaryReader reader)
        {
            var geneName         = reader.ReadAsciiString();
            var annotationLength = reader.ReadOptInt32();
            var annotations      = new IGeneAnnotationSource[annotationLength];

            for (int i = 0; i < annotationLength; i++)
            {
                annotations[i] = GeneAnnotationSource.Read(reader);
            }

            return(geneName == NullGene ? null : new AnnotatedGene(geneName, annotations));
        }
        public static IGeneAnnotationSource Read(IExtendedBinaryReader reader)
        {
            var dataSource       = reader.ReadAsciiString();
            var isArray          = reader.ReadBoolean();
            var jsonStringLength = reader.ReadOptInt32();
            var jsonStrings      = new string[jsonStringLength];

            for (int i = 0; i < jsonStringLength; i++)
            {
                jsonStrings[i] = reader.ReadString();
            }

            return(new GeneAnnotationSource(dataSource, jsonStrings, isArray));
        }
Exemple #14
0
        private JasixIndex(IExtendedBinaryReader reader) : this()
        {
            var version = reader.ReadOptInt32();

            if (version != JasixCommons.Version)
            {
                throw new InvalidDataException($"Invalid Jasix version: Observed {version}, expected{JasixCommons.Version}");
            }

            HeaderLine = reader.ReadAsciiString();
            var count = reader.ReadOptInt32();

            for (var i = 0; i < count; i++)
            {
                var chrIndex = new JasixChrIndex(reader);
                _chrIndices[chrIndex.ReferenceSequence] = chrIndex;
            }
        }
Exemple #15
0
        private void ReadBlockOffsets(IExtendedBinaryReader reader)
        {
            var numEntries = reader.ReadOptInt32();

            _blockOffsets = new ISaIndexOffset[numEntries];

            int oldPosition    = 0;
            int oldBlockOffset = 0;

            for (int i = 0; i < numEntries; i++)
            {
                var deltaPosition    = reader.ReadOptInt32();
                var deltaBlockOffset = reader.ReadOptInt32();

                var position    = oldPosition + deltaPosition;
                var blockOffset = oldBlockOffset + deltaBlockOffset;

                _blockOffsets[i] = new SaIndexOffset(position, blockOffset);

                oldPosition    = position;
                oldBlockOffset = blockOffset;
            }
        }
Exemple #16
0
        public JasixChrIndex(IExtendedBinaryReader reader) : this("")
        {
            ReferenceSequence = reader.ReadAsciiString();
            var count = reader.ReadOptInt32();

            for (var i = 0; i < count; i++)
            {
                _nodes.Add(new JasixNode(reader));
            }

            var intervalCount = reader.ReadOptInt32();

            if (intervalCount == 0)
            {
                return;
            }

            for (var i = 0; i < intervalCount; i++)
            {
                _largeVariants.Add(ReadInterval(reader));
            }

            _intervalArray = new IntervalArray <long>(_largeVariants.ToArray());
        }