public void Set(Interval marker, EffectType effectType, EffectImpact effectImpact, string message) { SetMarker(marker); // Use setter because it takes care of warnings SetEffectType(effectType); SetEffectImpact(effectImpact); Message = message; }
/// <summary> /// One or more exons fully included (no partial overlap) /// </summary> private void exons() { Interval cdsMarker = null; if (Transcript.IsProteinCoding()) { cdsMarker = Transcript.CdsMarker(); } foreach (Exon ex in Transcript.Exons) { if (Variant.Intersects(ex)) { EffectImpact impact = EffectImpact.LOW; // Is the variant affecting a coding part of the exon? // If so, then this is a HIGH impact effect. if (cdsMarker != null && Variant.Intersect(ex).Intersects(cdsMarker)) { impact = EffectImpact.HIGH; } // Is the whole exon inverted or just part of it? EffectType effType = Variant.Includes(ex) ? EffectType.EXON_INVERSION : EffectType.EXON_INVERSION_PARTIAL; EffectNoCodon(ex, effType, impact); } } }
protected override void Exons() { if (BeyondTranscript()) { // Is the effect of a duplication beyond transcript's end? // Then it probably does not have much impact EffectImpact impact = coding ? EffectImpact.LOW : EffectImpact.MODIFIER; if (exonFull > 0) { EffectNoCodon(Transcript, EffectType.EXON_DUPLICATION, impact); } if (exonPartial > 0) { EffectNoCodon(Transcript, EffectType.EXON_DUPLICATION_PARTIAL, impact); } return; } if (coding) { ExonsCoding(); } else { ExonsNoncoding(); } }
/// <summary> /// Add an effect /// </summary> /// <param name="marker"></param> /// <param name="effectType"></param> /// <param name="effectImpact"></param> /// <param name="codonsOld"></param> /// <param name="codonsNew"></param> /// <param name="codonNum"></param> /// <param name="codonIndex"></param> /// <param name="allowReplace"></param> /// <returns></returns> private VariantEffect Effect(Interval marker, EffectType effectType, EffectImpact effectImpact, string codonsOld, string codonsNew, int codonNum, int codonIndex, bool allowReplace) { // Create and add variant affect long cDnaPos = Transcript.BaseNumber2MRnaPos(Variant.OneBasedStart); VariantEffect varEff = new VariantEffect(Variant, marker, effectType, effectImpact, codonsOld, codonsNew, codonNum, codonIndex, cDnaPos); VariantEffects.AddEffect(varEff); // Are there any additional effects? Sometimes a new effect arises from setting codons (e.g. FRAME_SHIFT disrupts a STOP codon) EffectType addEffType = AdditionalEffect(codonsOld, codonsNew, codonNum, codonIndex); if (addEffType != EffectType.NONE && addEffType != effectType) { if (allowReplace && addEffType.CompareTo(effectType) < 0) { // Replace main effect (using default impact) varEff.SetEffect(addEffType); } else { // Add effect to list (using default impact) varEff.AddEffect(addEffType); } } return(varEff); }
/// <summary> /// Add an effect /// </summary> /// <param name="variant"></param> /// <param name="marker"></param> /// <param name="effectType"></param> /// <param name="effectImpact"></param> /// <param name="message"></param> private void AddEffect(Variant variant, Interval marker, EffectType effectType, EffectImpact effectImpact, String message) { VariantEffect effNew = new VariantEffect(variant); effNew.Set(marker, effectType, effectImpact, message); AddEffect(effNew); }
public void SetEffectImpact(EffectImpact effectImpact) { EffectImpacts.Clear(); EffectImpacts.Add(effectImpact); }
public VariantEffect(Variant variant, Interval marker, EffectType effectType, EffectImpact effectImpact, string codonsOld, string codonsNew, int codonNum, int codonIndex, long cDnaPos) { Variant = variant; EffectTypes = new List <EffectType>(); EffectImpacts = new List <EffectImpact>(); Set(marker, effectType, effectImpact, ""); SetCodons(codonsOld, codonsNew, codonNum, codonIndex); CDnaPos = cDnaPos; }
protected VariantEffect EffectNoCodon(Interval marker, EffectType effectType, EffectImpact effectImpact) { return(Effect(marker, effectType, effectImpact, "", "", -1, -1, false)); }