public void DetermineIntronicEffect_IsStartSpliceSite()
        {
            var positionalEffect = new TranscriptPositionalEffect();

            positionalEffect.DetermineIntronicEffect(_otherTranscriptRegions, new Interval(300, 303), VariantType.deletion);
            Assert.True(positionalEffect.IsStartSpliceSite);
        }
        public void DetermineIntronicEffect_IsEndSpliceSite()
        {
            var positionalEffect = new TranscriptPositionalEffect();

            positionalEffect.DetermineIntronicEffect(_otherTranscriptRegions, new Interval(400, 400), VariantType.SNV);
            Assert.True(positionalEffect.IsEndSpliceSite);
        }
        public void DetermineIntronicEffect_IsWithinFrameshiftIntron()
        {
            var positionalEffect = new TranscriptPositionalEffect();

            positionalEffect.DetermineIntronicEffect(_otherTranscriptRegions, new Interval(702, 705), VariantType.deletion);
            Assert.True(positionalEffect.IsWithinFrameshiftIntron);
        }
        public void DetermineIntronicEffect_IsWithinSpliceSiteRegion()
        {
            var       positionalEffect = new TranscriptPositionalEffect();
            IInterval variant          = new Interval(298, 302);

            positionalEffect.DetermineIntronicEffect(_otherTranscriptRegions, variant, VariantType.deletion);
            Assert.True(positionalEffect.IsWithinSpliceSiteRegion);
        }
        public void DetermineIntronicEffect_IsWithinFrameshiftIntron_NotInSpliceSite()
        {
            var positionalEffect = new TranscriptPositionalEffect();

            positionalEffect.DetermineIntronicEffect(_otherTranscriptRegions, new Interval(701, 709), VariantType.deletion);
            Assert.True(positionalEffect.IsWithinFrameshiftIntron);
            Assert.False(positionalEffect.IsStartSpliceSite);
            Assert.False(positionalEffect.IsEndSpliceSite);
        }
        private static VariantEffect GetVariantEffect(ITranscript transcript, ISimpleVariant variant, IMappedPositions mappedPositions, string refAminoAcids, string altAminoAcids, string refCodons, string altCodons, bool insertionInStartAndNoImpact)
        {
            var positionalEffect = new TranscriptPositionalEffect();

            positionalEffect.DetermineIntronicEffect(transcript.Introns, variant, variant.Type);
            positionalEffect.DetermineExonicEffect(transcript, variant, mappedPositions, variant.AltAllele, insertionInStartAndNoImpact);

            var variantEffect = new VariantEffect(positionalEffect, variant, transcript, refAminoAcids,
                                                  altAminoAcids,
                                                  refCodons, altCodons, mappedPositions.ProteinInterval.Start);

            return(variantEffect);
        }
        public void DetermineIntronicEffect_IsWithinIntron()
        {
            IInterval variant          = new Interval(300, 302);
            var       positionalEffect = new TranscriptPositionalEffect();

            positionalEffect.DetermineIntronicEffect(_otherTranscriptRegions, variant, VariantType.deletion);
            Assert.False(positionalEffect.IsWithinIntron);

            IInterval variant2          = new Interval(303, 303);
            var       positionalEffect2 = new TranscriptPositionalEffect();

            positionalEffect2.DetermineIntronicEffect(_otherTranscriptRegions, variant2, VariantType.deletion);
            Assert.True(positionalEffect2.IsWithinIntron);
        }
        private static TranscriptPositionalEffect GetPositionalEffect(ITranscript transcript, ISimpleVariant variant,
                                                                      IMappedPosition position, string refAminoAcid, string altAminoAcid, int coveredCdnaStart,
                                                                      int coveredCdnaEnd, int coveredCdsStart, int coveredCdsEnd)
        {
            bool startCodonInsertionWithNoImpact = variant.Type == VariantType.insertion &&
                                                   position.ProteinStart <= 1 &&
                                                   altAminoAcid.EndsWith(refAminoAcid);

            var positionalEffect = new TranscriptPositionalEffect();

            positionalEffect.DetermineIntronicEffect(transcript.TranscriptRegions, variant, variant.Type);
            positionalEffect.DetermineExonicEffect(transcript, variant, position, coveredCdnaStart, coveredCdnaEnd,
                                                   coveredCdsStart, coveredCdsEnd, variant.AltAllele, startCodonInsertionWithNoImpact);
            return(positionalEffect);
        }
        public void DetermineIntronicEffect_NotWithinFrameshiftIntron()
        {
            var transcriptRegions = new ITranscriptRegion[]
            {
                new TranscriptRegion(TranscriptRegionType.Exon, 1, 201342300, 201342340, 1, 186),
                new TranscriptRegion(TranscriptRegionType.Intron, 1, 201342340, 201342343, 186, 187),
                new TranscriptRegion(TranscriptRegionType.Exon, 2, 201342344, 201342400, 187, 349)
            };

            IInterval variant          = new Interval(201342344, 201342344);
            var       positionalEffect = new TranscriptPositionalEffect();

            positionalEffect.DetermineIntronicEffect(transcriptRegions, variant, VariantType.SNV);

            Assert.True(positionalEffect.IsWithinSpliceSiteRegion);
        }
        public void DetermineIntronicEffect_NullIntrons()
        {
            var positionalEffect = new TranscriptPositionalEffect();

            positionalEffect.DetermineIntronicEffect(null, new Interval(400, 400), VariantType.SNV);

            Assert.False(positionalEffect.IsEndSpliceSite);
            Assert.False(positionalEffect.IsStartSpliceSite);
            Assert.False(positionalEffect.IsWithinFrameshiftIntron);
            Assert.False(positionalEffect.IsWithinIntron);
            Assert.False(positionalEffect.IsWithinSpliceSiteRegion);
            Assert.False(positionalEffect.HasExonOverlap);
            Assert.False(positionalEffect.AfterCoding);
            Assert.False(positionalEffect.BeforeCoding);
            Assert.False(positionalEffect.WithinCdna);
            Assert.False(positionalEffect.WithinCds);
            Assert.False(positionalEffect.HasFrameShift);
            Assert.False(positionalEffect.IsCoding);
        }