Exemplo n.º 1
0
        /// <summary>
        /// assigns the reference and alternate codons [TranscriptVariationAllele.pm:259 codon]
        /// </summary>
        public static void Assign(TranscriptAnnotation ta, Transcript transcript, ICompressedSequence compressedSequence)
        {
            // sanity check: make sure this is a coding region
            if (!(ta.HasValidCdsEnd && ta.HasValidCdsStart))
            {
                ta.ReferenceCodon = null;
                ta.AlternateCodon = null;
                return;
            }

            // calculate necessary coordinates and lengths
            int aminoAcidStart = ta.ProteinBegin * 3 - 2;
            int aminoAcidEnd   = ta.ProteinEnd * 3;

            int prefixLen = ta.CodingDnaSequenceBegin - aminoAcidStart;
            int suffixLen = aminoAcidEnd - ta.CodingDnaSequenceEnd;

            var codingSequence = new CodingSequence(compressedSequence, transcript.Translation.CodingRegion.GenomicStart,
                                                    transcript.Translation.CodingRegion.GenomicEnd, transcript.CdnaMaps, transcript.Gene.OnReverseStrand,
                                                    transcript.StartExonPhase);
            var aminoAcidSeq = codingSequence.Sequence();

            int start1 = aminoAcidStart - 1;
            int start2 = aminoAcidEnd - suffixLen;

            int maxSuffixLen = aminoAcidSeq.Length - start2;

            bool atTailEnd = false;

            if (suffixLen > maxSuffixLen)
            {
                suffixLen = maxSuffixLen;
                atTailEnd = true;
            }

            if (start1 < 0)
            {
                start1 = 0;
            }
            if (start2 < 0)
            {
                start2 = 0;
            }
            if (prefixLen < 0)
            {
                prefixLen = 0;
            }

            string prefix = start1 + prefixLen < aminoAcidSeq.Length
                ? aminoAcidSeq.Substring(start1, prefixLen).ToLower()
                : "AAA";

            string suffix = suffixLen > 0
                ? aminoAcidSeq.Substring(start2, suffixLen).ToLower()
                : "";

            ta.HasFrameShift  = false;
            ta.ReferenceCodon = GetCodon(ta.TranscriptReferenceAllele, prefix, suffix, ref ta.HasFrameShift, atTailEnd);
            ta.AlternateCodon = GetCodon(ta.TranscriptAlternateAllele, prefix, suffix, ref ta.HasFrameShift, atTailEnd);
        }
Exemplo n.º 2
0
        /// <summary>O
        /// sets the amino acids given the reference and variant codons
        /// </summary>
        public void Assign(TranscriptAnnotation transcriptAnnotation)
        {
            if (string.IsNullOrEmpty(transcriptAnnotation.ReferenceCodon) &&
                string.IsNullOrEmpty(transcriptAnnotation.AlternateCodon))
            {
                return;
            }

            // sanity check: return null if either codon contains Ns
            if (transcriptAnnotation.ReferenceCodon.Contains("N") ||
                transcriptAnnotation.AlternateCodon.Contains("N"))
            {
                return;
            }

            transcriptAnnotation.ReferenceAminoAcids = TranslateBases(transcriptAnnotation.ReferenceCodon, false);
            transcriptAnnotation.AlternateAminoAcids = TranslateBases(transcriptAnnotation.AlternateCodon, false);
        }