public override bool CreateVariantEffect(Variant variant, VariantEffects variantEffects) { if (!Intersects(variant)) { return(false); } Transcript tr = (Transcript)Parent; bool coding = tr.IsProteinCoding(); // Different analysis for coding or non-coding bool exonAnnotated = false; if (!coding || variant.isInterval() || !variant.isVariant()) { // Non-coding or non-variant? Just annotate as 'exon' variantEffects.AddEffect(variant, this, EffectType.EXON, ""); exonAnnotated = true; } else if (tr.IsCds(variant)) { // Is it a coding transcript and the variant is within the CDS? // => We need codon analysis CodonChange codonChange = CodonChange.Factory(variant, tr, variantEffects); codonChange.ChangeCodon(); exonAnnotated = true; } // Any splice site effect to add? //for (SpliceSite ss : spliceSites) // if (ss.intersects(variant)) ss.variantEffect(variant, variantEffects); return(exonAnnotated); }
/// <summary> /// CDS length (negative if there is none) /// </summary> /// <returns></returns> public long GetCdsLength() { Transcript tr = GetTranscript(); return(tr != null && tr.IsProteinCoding() ? tr.RetrieveCodingSequence().Count : -1); }
protected CodonChangeStructural(Variant variant, Transcript transcript, VariantEffects variantEffects) : base(variant, transcript, variantEffects) { coding = transcript.IsProteinCoding(); // || Config.get().isTreatAllAsProteinCoding(); CountAffectedExons(); }