Esempio n. 1
0
        [InlineData(VariantType.run_of_homozygosity, false)]           // no change
        public void NeedsTranscriptVariant_NoConsequences_EvaluateByVariantType(VariantType variantType, bool expectedResult)
        {
            var  consequences   = new List <ConsequenceTag>();
            bool observedResult = Consequences.NeedsTranscriptVariant(variantType, consequences);

            Assert.Equal(expectedResult, observedResult);
        }
Esempio n. 2
0
        public void DetermineRegularoryVariantEffects(bool isAmplification, bool isAblation)
        {
            var featureEffect = new Mock <IFeatureVariantEffects>();

            featureEffect.Setup(x => x.Ablation()).Returns(isAblation);
            featureEffect.Setup(x => x.Amplification()).Returns(isAmplification);

            var consequence = new Consequences(null, featureEffect.Object);

            consequence.DetermineRegulatoryVariantEffects();
            var observedConsequences = consequence.GetConsequences();

            Assert.Contains(ConsequenceTag.regulatory_region_variant, observedConsequences);
            if (isAblation)
            {
                Assert.Contains(ConsequenceTag.regulatory_region_ablation, observedConsequences);
            }
            else
            {
                Assert.DoesNotContain(ConsequenceTag.regulatory_region_ablation, observedConsequences);
            }

            if (isAmplification)
            {
                Assert.Contains(ConsequenceTag.regulatory_region_amplification, observedConsequences);
            }
            else
            {
                Assert.DoesNotContain(ConsequenceTag.regulatory_region_amplification, observedConsequences);
            }
        }
        public static IAnnotatedTranscript GetAnnotatedTranscript(int variantEnd, ITranscript transcript)
        {
            bool isDownStream = variantEnd < transcript.Start == transcript.Gene.OnReverseStrand;
            List <ConsequenceTag> consequences = Consequences.DetermineFlankingVariantEffects(isDownStream);

            return(new AnnotatedTranscript(transcript, null, null, null, null, null, null, null, null, null, consequences, false));
        }
Esempio n. 4
0
        public void DetermineFlankingVariantEffects(bool isDownStreamVariant, ConsequenceTag expectedConsequence)
        {
            List <ConsequenceTag> observedConsequences = Consequences.DetermineFlankingVariantEffects(isDownStreamVariant);

            Assert.Single(observedConsequences);
            Assert.Equal(expectedConsequence, observedConsequences[0]);
        }
Esempio n. 5
0
        private void AddConsequence(ConsequencesTypeConsequence consequence)
        {
            if (consequence != null)
            {
                IEnumerable <string> scopes     = null;
                IEnumerable <string> impacts    = null;
                Evaluation           likelihood = Evaluation.Unknown;

                var s = consequence.Scope?.ToArray();
                if (s?.Any() ?? false)
                {
                    scopes = s.Select(x => x.GetXmlEnumLabel());
                }

                var i = consequence.Impact?.ToArray();
                if (i?.Any() ?? false)
                {
                    impacts = i.Select(x => x.GetXmlEnumLabel());
                }

                if (Enum.TryParse <Evaluation>(consequence.Likelihood.ToString(), out var l))
                {
                    likelihood = l;
                }

                var notes = consequence.Note?.ConvertToString();

                if (Consequences == null)
                {
                    Consequences = new List <Consequence>();
                }

                Consequences.Add(new Consequence(scopes, impacts, likelihood, notes));
            }
        }
Esempio n. 6
0
        public void Define_rule()
        {
            var conditions = new RuleCondition[]
            {
                Conditions.Equal((Order x) => x.Name, "JOE"),
                Conditions.GreaterThan((Order x) => x.Amount, 10000.0m),
            };

            var consequences = new RuleConsequence[]
            {
                Consequences.Delegate <Order>((session, x) => { _result = x; }),
                Consequences.Delegate <Order>((session, x) => { _resultB = x; }),
            };

            _rule  = new OdoyuleRule("RuleA", conditions, consequences);
            _rule2 = new OdoyuleRule("RuleB", conditions, consequences);

            conditions = new RuleCondition[]
            {
                Conditions.Equal((Account a) => a.Name, "JOE"),
            };

            consequences = new RuleConsequence[]
            {
                Consequences.Delegate((Session session, Account a) => { }),
            };

            _rule3 = new OdoyuleRule("RuleC", conditions, consequences);
        }
Esempio n. 7
0
        private void AnnotateAltAllele(VariantFeature variant, VariantAlternateAllele altAllele, Transcript transcript)
        {
            // handle upstream or downstream transcripts
            if (!Overlap.Partial(transcript.Start, transcript.End, altAllele.Start, altAllele.End))
            {
                return;
            }

            var ta = new TranscriptAnnotation
            {
                AlternateAllele         = altAllele,
                HasValidCdnaCodingStart = false,
                HasValidCdsStart        = false
            };

            MapCdnaCoordinates(transcript, ta, altAllele);
            _pianoVariant.CreateAnnotationObject(transcript, altAllele);

            GetCodingAnnotations(transcript, ta, _compressedSequence);
            var consequence = new Consequences(new VariantEffect(ta, transcript, variant.InternalCopyNumberType));

            consequence.DetermineVariantEffects(variant.InternalCopyNumberType);

            _pianoVariant.FinalizeAndAddAnnotationObject(transcript, ta, consequence.GetConsequenceStrings());
        }
Esempio n. 8
0
 private void AddConsequences(JsonObject jsonObject)
 {
     if (Consequences.Count == 0)
     {
         Consequences.Add(ConsequenceTag.transcript_variant);
     }
     jsonObject.AddStringValues("consequence", Consequences?.Select(ConsequenceUtil.GetConsequence));
 }
        private static List <ConsequenceTag> GetConsequences(IInterval transcript, IVariant variant)
        {
            var featureEffect = new FeatureVariantEffects(transcript, variant.Type, variant, true);
            var consequence   = new Consequences(null, featureEffect);

            consequence.DetermineStructuralVariantEffect(variant);
            return(consequence.GetConsequences());
        }
Esempio n. 10
0
        [InlineData(ConsequenceTag.short_tandem_repeat_contraction, true)] // parallel
        public void NeedsTranscriptVariant_STR(ConsequenceTag consequence, bool expectedResult)
        {
            var consequences = new List <ConsequenceTag> {
                consequence
            };
            bool observedResult = Consequences.NeedsTranscriptVariant(VariantType.unknown, consequences);

            Assert.Equal(expectedResult, observedResult);
        }
        private static IEnumerable <ConsequenceTag> GetConsequences(IInterval transcript, ISimpleVariant variant,
                                                                    bool hasGeneFusionAnnotation)
        {
            var featureEffect = new FeatureVariantEffects(transcript, variant.Type, variant, true);
            var consequence   = new Consequences(null, featureEffect);

            consequence.DetermineStructuralVariantEffect(variant.Type, hasGeneFusionAnnotation);
            return(consequence.GetConsequences());
        }
        public static IAnnotatedTranscript GetAnnotatedTranscript(int variantEnd, ITranscript transcript)
        {
            var isDownStream = variantEnd < transcript.Start == transcript.Gene.OnReverseStrand;
            var consequence  = new Consequences();

            consequence.DetermineFlankingVariantEffects(isDownStream);
            return(new AnnotatedTranscript(transcript, null, null, null, null, null, null, null, null, null,
                                           consequence.GetConsequences(), false));
        }
Esempio n. 13
0
        public void NeedsTranscriptVariant_Tier2_MatureMirnaVariant()
        {
            var consequences = new List <ConsequenceTag> {
                ConsequenceTag.mature_miRNA_variant
            };
            bool observedResult = Consequences.NeedsTranscriptVariant(VariantType.unknown, consequences);

            Assert.False(observedResult);
        }
        public static void Delegate <T>(this ThenConfigurator <T> configurator, Action <T> callback)
            where T : class
        {
            DelegateConsequence <T> consequence = Consequences.Delegate <T>((session, fact) => callback(fact));

            var consequenceConfigurator = new RuleConsequenceConfiguratorImpl <T>(consequence);

            configurator.AddConfigurator(consequenceConfigurator);
        }
Esempio n. 15
0
        public override ScriptStats GetStatistics()
        {
            ScriptStats s = new ScriptStats();

            s.IfThen++;
            s.Add(slot.GetStatistics());
            s.Add(Consequences.GetStatistics());
            return(s);
        }
Esempio n. 16
0
        public static IAnnotatedRegulatoryRegion Annotate(IVariant variant, IRegulatoryRegion regulatoryRegion)
        {
            var featureEffect = new FeatureVariantEffects(regulatoryRegion, variant.Type, variant, variant.IsStructuralVariant);

            var consequence = new Consequences(null, featureEffect);

            consequence.DetermineRegulatoryVariantEffects();
            return(new AnnotatedRegulatoryRegion(regulatoryRegion, consequence.GetConsequences()));
        }
        private static List <ConsequenceTag> GetConsequences(IInterval transcript, bool onReverseStrand, IVariant variant)
        {
            OverlapType         overlapType         = Intervals.Utilities.GetOverlapType(transcript.Start, transcript.End, variant.Start, variant.End);
            EndpointOverlapType endpointOverlapType = Intervals.Utilities.GetEndpointOverlapType(transcript.Start, transcript.End, variant.Start, variant.End);
            var featureEffect = new FeatureVariantEffects(overlapType, endpointOverlapType, onReverseStrand, variant.Type, true);
            var consequence   = new Consequences(variant.Type, null, featureEffect);

            consequence.DetermineStructuralVariantEffect(variant);
            return(consequence.GetConsequences());
        }
Esempio n. 18
0
        public void DetermineFlankingVariantEffects(bool isDownStreamVariant, ConsequenceTag expectedConsequence)
        {
            var consequence = new Consequences();

            consequence.DetermineFlankingVariantEffects(isDownStreamVariant);
            var observedConsequences = consequence.GetConsequences();

            Assert.Single(observedConsequences);
            Assert.Equal(expectedConsequence, observedConsequences[0]);
        }
Esempio n. 19
0
        private static List <ConsequenceTag> GetConsequences(ITranscript transcript, IVariant variant, VariantEffect variantEffect)
        {
            var featureEffect = new FeatureVariantEffects(transcript, variant.Type, variant.Start, variant.End,
                                                          variant.Behavior.StructuralVariantConsequence);

            var consequence = new Consequences(variantEffect, featureEffect);

            consequence.DetermineSmallVariantEffects();
            return(consequence.GetConsequences());
        }
Esempio n. 20
0
        public void SerializeJson(StringBuilder sb)
        {
            var jsonObject = new JsonObject(sb);

            sb.Append(JsonObject.OpenBrace);
            jsonObject.AddStringValue("transcript", Transcript.Id.WithVersion);
            jsonObject.AddStringValue("bioType", GetBioType(Transcript.BioType));
            jsonObject.AddStringValue("codons", GetAlleleString(ReferenceCodons, AlternateCodons));
            jsonObject.AddStringValue("aminoAcids", GetAlleleString(ReferenceAminoAcids, AlternateAminoAcids));

            if (MappedPosition != null)
            {
                jsonObject.AddStringValue("cdnaPos", GetRangeString(MappedPosition.CdnaStart, MappedPosition.CdnaEnd));
                jsonObject.AddStringValue("cdsPos", GetRangeString(MappedPosition.CdsStart, MappedPosition.CdsEnd));
                jsonObject.AddStringValue("exons", GetFractionString(MappedPosition.ExonStart, MappedPosition.ExonEnd, Transcript.NumExons));
                jsonObject.AddStringValue("introns", GetFractionString(MappedPosition.IntronStart, MappedPosition.IntronEnd, Transcript.NumExons - 1));
                jsonObject.AddStringValue("proteinPos", GetRangeString(MappedPosition.ProteinStart, MappedPosition.ProteinEnd));
            }

            var geneId = Transcript.Source == Source.Ensembl
                ? Transcript.Gene.EnsemblId.ToString()
                : Transcript.Gene.EntrezGeneId.ToString();

            jsonObject.AddStringValue("geneId", geneId);
            jsonObject.AddStringValue("hgnc", Transcript.Gene.Symbol);
            jsonObject.AddStringValues("consequence", Consequences?.Select(ConsequenceUtil.GetConsequence));
            jsonObject.AddStringValue("hgvsc", HgvsCoding);
            jsonObject.AddStringValue("hgvsp", HgvsProtein);
            jsonObject.AddStringValue("geneFusion", GeneFusionAnnotation?.ToString(), false);

            jsonObject.AddBoolValue("isCanonical", Transcript.IsCanonical);

            jsonObject.AddDoubleValue("polyPhenScore", PolyPhen?.Score);

            jsonObject.AddStringValue("polyPhenPrediction", PolyPhen?.Prediction);
            if (Transcript.Translation != null)
            {
                jsonObject.AddStringValue("proteinId", Transcript.Translation.ProteinId.WithVersion);
            }

            jsonObject.AddDoubleValue("siftScore", Sift?.Score);

            jsonObject.AddStringValue("siftPrediction", Sift?.Prediction);

            if (PluginData != null)
            {
                foreach (var pluginData in PluginData)
                {
                    jsonObject.AddStringValue(pluginData.Name, pluginData.GetJsonString(), false);
                }
            }

            sb.Append(JsonObject.CloseBrace);
        }
        public static void Add <T, TFact>(this ThenConfigurator <T> configurator,
                                          Func <T, TFact> factFactory)
            where T : class
            where TFact : class
        {
            AddFactConsequence <T, TFact> consequence = Consequences.Add(factFactory);

            var consequenceConfigurator = new RuleConsequenceConfiguratorImpl <T>(consequence);

            configurator.AddConfigurator(consequenceConfigurator);
        }
Esempio n. 22
0
        public static IAnnotatedRegulatoryRegion Annotate(IVariant variant, IRegulatoryRegion regulatoryRegion)
        {
            OverlapType overlapType = Intervals.Utilities.GetOverlapType(regulatoryRegion.Start, regulatoryRegion.End,
                                                                         variant.Start, variant.End);
            EndpointOverlapType endpointOverlapType =
                Intervals.Utilities.GetEndpointOverlapType(regulatoryRegion.Start, regulatoryRegion.End, variant.Start, variant.End);
            var featureEffect = new FeatureVariantEffects(overlapType, endpointOverlapType, false, variant.Type, variant.IsStructuralVariant);

            var consequence = new Consequences(VariantType.unknown, null, featureEffect);

            consequence.DetermineRegulatoryVariantEffects();
            return(new AnnotatedRegulatoryRegion(regulatoryRegion, consequence.GetConsequences()));
        }
Esempio n. 23
0
        public override Moveable DeepCopy()
        {
            IfControl copy = new IfControl();

            if (Condition != null)
            {
                copy.Condition = Condition.DeepCopy();
            }

            copy.Consequences = Consequences.DeepCopy();

            return(copy);
        }
Esempio n. 24
0
        public static FactDesigner <T> Add <T, TAdd>(this FactDesigner <T> designer, Func <TAdd> factFactory)
            where T : class
            where TAdd : class
        {
            designer.Then(then =>
            {
                AddFactConsequence <T, TAdd> consequence = Consequences.Add <T, TAdd>(x => factFactory());

                var consequenceConfigurator = new RuleConsequenceConfigurator <T>(consequence);

                then.AddConfigurator(consequenceConfigurator);
            });

            return(designer);
        }
Esempio n. 25
0
        public void Define_rule()
        {
            var conditions = new RuleCondition[]
            {
                Conditions.Equal((Order x) => x.Name, "JOE"),
            };

            var consequences = new RuleConsequence[]
            {
                Consequences.Delegate <Order>((session, x) => { _result = x; }),
            };

            Rule rule = new OdoyuleRule("RuleA", conditions, consequences);

            _engine = RulesEngineFactory.New(x => x.Add(rule));
        }
Esempio n. 26
0
        public override void AssignImage(ImageProvider imageProvider)
        {
            if (imageProvider == null)
            {
                throw new ArgumentNullException("imageProvider");
            }

            if (Condition != null)
            {
                Condition.AssignImage(imageProvider);
            }
            if (Consequences != null)
            {
                Consequences.AssignImage(imageProvider);
            }
        }
Esempio n. 27
0
        public void Define_rule()
        {
            var conditions = new RuleCondition[]
            {
                Conditions.GreaterThan((Order x) => x.Amount, 10000.0m),
            };

            var consequences = new RuleConsequence[]
            {
                Consequences.Delegate <Order>((session, x) => { _result = x; }),
            };

            Rule rule = new OdoyuleRule("RuleA", conditions, consequences);

            _engine = RulesEngineFactory.New(x => x.Add(rule));
        }
Esempio n. 28
0
        public void Define_rule()
        {
            var conditions = new[]
            {
                Conditions.NotNull((Order x) => x.Customer),
            };

            var consequences = new[]
            {
                Consequences.Delegate((Order o) => _result = o),
            };

            Rule rule = new SemanticRule("RuleA", conditions, consequences);

            _engine = RulesEngineFactory.New(x => x.Add(rule));
        }
Esempio n. 29
0
        public void Define_rule()
        {
            var conditions = new[]
            {
                Conditions.GreaterThan((Order x) => x.Amount, 10000.0m),
            };

            var consequences = new[]
            {
                Consequences.Delegate((Order o) => _result = o),
            };

            Rule rule = new SemanticRule("RuleA", conditions, consequences);

            _engine = RulesEngineFactory.New(x => x.Add(rule));
        }
Esempio n. 30
0
        public void DetermineSmallVariantEffects_tier1()
        {
            var featureEffect = new Mock <IFeatureVariantEffects>();

            featureEffect.Setup(x => x.Ablation()).Returns(true);
            featureEffect.Setup(x => x.Amplification()).Returns(true);

            var variantEffect = new Mock <IVariantEffect>();
            var consequence   = new Consequences(variantEffect.Object, featureEffect.Object);

            consequence.DetermineSmallVariantEffects();
            var observedConsequences = consequence.GetConsequences();

            Assert.Equal(2, observedConsequences.Count);
            Assert.Equal(ConsequenceTag.transcript_ablation, observedConsequences[0]);
            Assert.Equal(ConsequenceTag.transcript_amplification, observedConsequences[1]);
        }