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