/// <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); }