Пример #1
0
 public TranscriptRegion(TranscriptRegionType type, ushort id, int start, int end, int cdnaStart, int cdnaEnd)
 {
     Type      = type;
     Id        = id;
     Start     = start;
     End       = end;
     CdnaStart = cdnaStart;
     CdnaEnd   = cdnaEnd;
 }
 private static int FindLast(ITranscriptRegion[] regions, TranscriptRegionType desiredType, int startIndex,
                             int endIndex)
 {
     for (int i = endIndex; i >= startIndex; i--)
     {
         if (regions[i].Type == desiredType)
         {
             return(i);
         }
     }
     return(-1);
 }
Пример #3
0
        public static ITranscriptRegion Read(BufferedBinaryReader reader)
        {
            TranscriptRegionType type = (TranscriptRegionType)reader.ReadByte();
            ushort id           = reader.ReadOptUInt16();
            int    genomicStart = reader.ReadOptInt32();
            int    genomicEnd   = reader.ReadOptInt32();

            int cdnaStart = reader.ReadOptInt32();
            int cdnaEnd   = reader.ReadOptInt32();

            return(new TranscriptRegion(type, id, genomicStart, genomicEnd, cdnaStart, cdnaEnd));
        }
        private static (int Start, int End) FindDesiredRegionIds(this ITranscriptRegion[] regions,
                                                                 TranscriptRegionType desiredType, int startIndex, int endIndex)
        {
            var regionStart   = FindFirst(regions, desiredType, startIndex, endIndex);
            var newStartIndex = regionStart != -1 ? regionStart : startIndex;
            var regionEnd     = FindLast(regions, desiredType, newStartIndex, endIndex);

            var startId = regionStart == -1 ? -1 : regions[regionStart].Id;
            var endId   = regionEnd == -1 ? -1 : regions[regionEnd].Id;

            if (endId < startId)
            {
                Swap.Int(ref startId, ref endId);
            }
            return(startId, endId);
        }
Пример #5
0
        private static List <MutableTranscriptRegion> AddCoords(this List <MutableTranscriptRegion> regions, TranscriptRegionType targetRegionType, bool onReverseStrand)
        {
            for (var regionIndex = 0; regionIndex < regions.Count; regionIndex++)
            {
                var region = regions[regionIndex];
                if (region.Type != targetRegionType)
                {
                    continue;
                }
                var coords = regions.GetExonCoords(regionIndex, onReverseStrand);
                region.CdnaStart = coords.CdnaStart;
                region.CdnaEnd   = coords.CdnaEnd;
            }

            return(regions);
        }
Пример #6
0
        private static List <MutableTranscriptRegion> AddIds(this List <MutableTranscriptRegion> regions,
                                                             IReadOnlyList <IdInterval> intervals, TranscriptRegionType targetRegionType, TranscriptRegionType matchRegionType)
        {
            if (intervals == null)
            {
                return(regions);
            }

            foreach (var region in regions)
            {
                if (region.Type != targetRegionType)
                {
                    continue;
                }

                int regionMidPoint = region.Start + (region.End - region.Start >> 1);

                int index = intervals.BinarySearch(regionMidPoint);
                if (index < 0)
                {
                    continue;
                }

                var intron = intervals[index];
                region.Type = matchRegionType;
                region.Id   = intron.Id;
            }

            return(regions);
        }