Пример #1
0
        /// <summary>
        /// Deletion analysis using full transcript information. This is done only when the variant affects more than one exons.
        /// </summary>
        protected override void Exons()
        {
            if (exonFull == 0 && exonPartial == 1)
            {
                // Variant partially affects only one exon?
                // => Use the standard (by exon) method
                codonChangeSuper();
                return;
            }
            else if (exonFull > 0)
            {
                // Full exons deleted
                ExonLoss();

                // Only whole exons deleted? We are done
                if (exonPartial == 0)
                {
                    return;
                }
            }

            //---
            // A combination of partial and full exons affected
            //---
            CodonsRefAlt();
            EffectType effType;
            int        lenDiff = cdsAlt.Length - cdsRef.Length;

            if (lenDiff % CODON_SIZE != 0)
            {
                effType = EffectType.FRAME_SHIFT;
            }
            else if (CodonStartIndex == 0)
            {
                effType = EffectType.CODON_DELETION;
            }
            else
            {
                if (CodonsAlternate == "" || CodonsReference.StartsWith(CodonsAlternate))
                {
                    effType = EffectType.CODON_DELETION;
                }
                else
                {
                    effType = EffectType.CODON_CHANGE_PLUS_CODON_DELETION;
                }
            }

            // Assign to first exon
            foreach (Exon ex in Transcript.Exons)
            {
                if (Variant.Includes(ex) || Variant.Intersects(ex))
                {
                    Exon = ex;
                    break;
                }
            }

            // Add variant effect
            Effect(Exon, effType, false);
        }