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);
                }
            }
        }
예제 #3
0
        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();
            }
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <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;
 }
예제 #8
0
 protected VariantEffect EffectNoCodon(Interval marker, EffectType effectType, EffectImpact effectImpact)
 {
     return(Effect(marker, effectType, effectImpact, "", "", -1, -1, false));
 }