Example #1
0
        private static IInterval[] ConstructCdsIntervalsFromTranscript(ITranscript transcript)
        {
            var cdsIntervals = new List <IInterval>();

            if (transcript.Translation == null)
            {
                return(null);
            }

            ICodingRegion            codingRegion = transcript.Translation.CodingRegion;
            List <ITranscriptRegion> exonRegions  = transcript.TranscriptRegions.Where(x => x.Type == TranscriptRegionType.Exon).ToList();

            if (codingRegion == null)
            {
                return(null);                       // no coding region
            }
            foreach (var exonRegion in exonRegions) // assume the exon regions are ordered
            {
                var exonCodingRegion = exonRegion.Intersects(codingRegion);
                if (exonCodingRegion.Start == -1)
                {
                    continue;
                }
                cdsIntervals.Add(new Interval(exonCodingRegion.Start, exonCodingRegion.End));
            }
            return(cdsIntervals.ToArray());
        }
Example #2
0
 private static bool CodingRegionEquals(ICodingRegion x, ICodingRegion y)
 {
     return(x.Start == y.Start &&
            x.End == y.End &&
            x.CdnaStart == y.CdnaStart &&
            x.CdnaEnd == y.CdnaEnd &&
            x.Length == y.Length);
 }
Example #3
0
        private static ITranslation GetTranslation(ICodingRegion oldCodingRegion, int cdsLength, CompactId proteinId,
                                                   string peptideSeq)
        {
            var codingRegion = new CodingRegion(oldCodingRegion.Start, oldCodingRegion.End, oldCodingRegion.CdnaStart,
                                                oldCodingRegion.CdnaEnd, cdsLength);

            return(new Translation(codingRegion, proteinId, peptideSeq));
        }
Example #4
0
 private static string GetCodingFromCdna(ICodingRegion codingRegion, ISequence cdnaSequence)
 {
     if (codingRegion == null)
     {
         return(null);
     }
     return(cdnaSequence.Substring(codingRegion.CdnaStart - 1, codingRegion.CdnaEnd - codingRegion.CdnaStart + 1));
 }
 private static int GetCdsPosition(ICodingRegion codingRegion, int cdnaPosition, byte startExonPhase)
 {
     if (codingRegion == null || cdnaPosition < codingRegion.CdnaStart ||
         cdnaPosition > codingRegion.CdnaEnd)
     {
         return(-1);
     }
     return(cdnaPosition - codingRegion.CdnaStart + startExonPhase + 1);
 }
Example #6
0
 public CodingSequence(ISequence compressedSequence, ICodingRegion codingRegion, ITranscriptRegion[] regions,
                       bool geneOnReverseStrand, byte startExonPhase)
 {
     _codingRegion        = codingRegion;
     _regions             = regions;
     _geneOnReverseStrand = geneOnReverseStrand;
     _startExonPhase      = startExonPhase;
     _compressedSequence  = compressedSequence;
 }
Example #7
0
        public CodingSequence(ISequence compressedSequence, ICodingRegion codingRegion, ITranscriptRegion[] regions,
                              bool onReverseStrand, byte startExonPhase, IRnaEdit[] rnaEdits)
        {
            string cdnaSequence =
                new CdnaSequence(compressedSequence, codingRegion, regions, onReverseStrand, rnaEdits)
                .GetCdnaSequence();
            int cdsLen = codingRegion.CdnaEnd - codingRegion.CdnaStart + 1;

            _sequence = new string('N', startExonPhase) + cdnaSequence.Substring(codingRegion.CdnaStart - 1, cdsLen);
        }
Example #8
0
        public CdnaSequence(ISequence compressedSequence, ICodingRegion codingRegion, ITranscriptRegion[] regions,
                            bool onReverseStrand, IRnaEdit[] rndEdits)
        {
            _codingRegion       = codingRegion;
            _regions            = regions;
            _rnaEdits           = rndEdits;
            _onReverseStrand    = onReverseStrand;
            _compressedSequence = compressedSequence;

            _sequence = GetCdnaSequence();
        }
        public static (int CdsStart, int CdsEnd) GetCdsPositions(ICodingRegion codingRegion, int cdnaStart,
                                                                 int cdnaEnd, byte startExonPhase, bool isInsertion)
        {
            int cdsStart = GetCdsPosition(codingRegion, cdnaStart, startExonPhase);
            int cdsEnd   = GetCdsPosition(codingRegion, cdnaEnd, startExonPhase);

            // silence CDS for insertions that occur just after the coding region
            if (isInsertion && codingRegion != null && (cdnaEnd == codingRegion.CdnaEnd || cdnaStart == codingRegion.CdnaStart))
            {
                cdsStart = -1;
                cdsEnd   = -1;
            }

            return(cdsStart, cdsEnd);
        }
        private static IMappedPosition GetMappedPosition(ITranscriptRegion[] regions, ITranscriptRegion startRegion,
                                                         int startIndex, ITranscriptRegion endRegion, int endIndex, IInterval variant, bool onReverseStrand,
                                                         ICodingRegion codingRegion, byte startExonPhase, bool isInsertion)
        {
            (int cdnaStart, int cdnaEnd) = MappedPositionUtilities.GetCdnaPositions(startRegion, endRegion, variant, onReverseStrand, isInsertion);
            if (onReverseStrand)
            {
                Swap.Int(ref cdnaStart, ref cdnaEnd);
            }

            (int cdsStart, int cdsEnd) = MappedPositionUtilities.GetCdsPositions(codingRegion, cdnaStart, cdnaEnd,
                                                                                 startExonPhase, isInsertion);

            int proteinStart = MappedPositionUtilities.GetProteinPosition(cdsStart);
            int proteinEnd   = MappedPositionUtilities.GetProteinPosition(cdsEnd);

            (int exonStart, int exonEnd, int intronStart, int intronEnd) = regions.GetExonsAndIntrons(startIndex, endIndex);

            return(new MappedPosition(cdnaStart, cdnaEnd, cdsStart, cdsEnd, proteinStart, proteinEnd, exonStart,
                                      exonEnd, intronStart, intronEnd, startIndex, endIndex));
        }
Example #11
0
 public MutableTranscript(IChromosome chromosome, int start, int end, string id, byte version, string ccdsId,
                          string refSeqId, BioType bioType, bool isCanonical, ICodingRegion codingRegion, string proteinId,
                          byte proteinVersion, string peptideSequence, Source source, MutableGene gene, MutableExon[] exons,
                          int startExonPhase, int totalExonLength, IInterval[] introns, MutableTranscriptRegion[] cdnaMaps,
                          string siftData, string polyphenData, string translateableSequence, IInterval[] microRnas,
                          bool cdsStartNotFound, bool cdsEndNotFound, int[] selenocysteinePositions, IRnaEdit[] rnaEdits,
                          string bamEditStatus)
 {
     Chromosome              = chromosome;
     Start                   = start;
     End                     = end;
     Id                      = id;
     Version                 = version;
     CcdsId                  = ccdsId;
     RefSeqId                = refSeqId;
     BioType                 = bioType;
     IsCanonical             = isCanonical;
     CodingRegion            = codingRegion;
     ProteinId               = proteinId;
     ProteinVersion          = proteinVersion;
     PeptideSequence         = peptideSequence;
     Source                  = source;
     Gene                    = gene;
     Exons                   = exons;
     StartExonPhase          = startExonPhase;
     TotalExonLength         = totalExonLength;
     Introns                 = introns;
     CdnaMaps                = cdnaMaps;
     SiftData                = siftData;
     PolyphenData            = polyphenData;
     TranslateableSequence   = translateableSequence;
     MicroRnas               = microRnas;
     CdsStartNotFound        = cdsStartNotFound;
     CdsEndNotFound          = cdsEndNotFound;
     SelenocysteinePositions = selenocysteinePositions;
     RnaEdits                = rnaEdits;
     BamEditStatus           = bamEditStatus;
 }
        public static (int CdsStart, int CdsEnd, int ProteinStart, int ProteinEnd) GetCoveredCdsAndProteinPositions(int coveredCdnaStart, int coveredCdnaEnd,
                                                                                                                    byte startExonPhase, ICodingRegion codingRegion)
        {
            if (codingRegion == null ||
                coveredCdnaEnd < codingRegion.CdnaStart ||
                coveredCdnaStart > codingRegion.CdnaEnd ||
                coveredCdnaStart == -1 && coveredCdnaEnd == -1)
            {
                return(-1, -1, -1, -1);
            }

            int beginOffset = startExonPhase - codingRegion.CdnaStart + 1;
            int start       = coveredCdnaStart + beginOffset;
            int end         = coveredCdnaEnd + beginOffset;

            return(start, end, GetProteinPosition(start), GetProteinPosition(end));
        }
Example #13
0
 private void WriteTranslation(ICodingRegion codingRegion, string proteinId, byte proteinVersion, string peptideSequence) =>
 _writer.WriteLine($"Translation\t{proteinId}\t{proteinVersion}\t{codingRegion.Start}\t{codingRegion.End}\t{codingRegion.CdnaStart}\t{codingRegion.CdnaEnd}\t{peptideSequence}");
Example #14
0
 public Translation(ICodingRegion codingRegion, CompactId proteinId, string peptideSeq)
 {
     CodingRegion = codingRegion;
     ProteinId    = proteinId;
     PeptideSeq   = peptideSeq;
 }
Example #15
0
        public static (int Start, int End) GetCoveredCdsPositions(int coveredCdnaStart, int coveredCdnaEnd,
                                                                  byte startExonPhase, ICodingRegion codingRegion)
        {
            if (codingRegion == null ||
                coveredCdnaEnd < codingRegion.CdnaStart ||
                coveredCdnaStart > codingRegion.CdnaEnd ||
                coveredCdnaStart == -1 && coveredCdnaEnd == -1)
            {
                return(-1, -1);
            }

            int beginOffset = startExonPhase - codingRegion.CdnaStart + 1;
            var start       = coveredCdnaStart + beginOffset;
            var end         = coveredCdnaEnd + beginOffset;

            return(start, end);
        }