public static IList <IAnnotatedTranscript> GetAnnotatedTranscripts(IVariant variant, ITranscript[] transcriptCandidates, ISequence compressedSequence, IPredictionCache siftCache, IPredictionCache polyphenCache, ITranscript[] geneFusionCandidates = null) { var annotatedTranscripts = new List <IAnnotatedTranscript>(); foreach (var transcript in transcriptCandidates) { if (transcript.Id.IsPredictedTranscript()) { continue; } var annotationStatus = DecideAnnotationStatus(variant, transcript, variant.Behavior); var annotatedTranscript = GetAnnotatedTranscript(variant, compressedSequence, transcript, annotationStatus, siftCache, polyphenCache, geneFusionCandidates); if (annotatedTranscript != null) { annotatedTranscripts.Add(annotatedTranscript); } } return(annotatedTranscripts); }
public static void GetAnnotatedTranscripts(IVariant variant, ITranscript[] transcriptCandidates, ISequence compressedSequence, IList <IAnnotatedTranscript> annotatedTranscripts, ISet <string> overlappingGenes, IList <IOverlappingTranscript> overlappingTranscripts, IPredictionCache siftCache, IPredictionCache polyphenCache, ITranscript[] geneFusionCandidates = null) { foreach (var transcript in transcriptCandidates) { var annotationStatus = DecideAnnotationStatus(variant, transcript, variant.Behavior, transcript.Gene); if (annotationStatus != Status.NoAnnotation && variant.Behavior.ReportOverlappingGenes) { overlappingGenes.Add(transcript.Gene.Symbol); } if (variant.Behavior.NeedVerboseTranscripts) { AddOverlappingTranscript(annotationStatus, transcript, variant, overlappingTranscripts); } var annotatedTranscript = GetAnnotatedTranscript(variant, compressedSequence, transcript, annotationStatus, siftCache, polyphenCache, geneFusionCandidates); if (annotatedTranscript != null) { annotatedTranscripts.Add(annotatedTranscript); } } }
private static PredictionScore GetPredictionScore(int proteinPosition, char newAminoAcid, IPredictionCache predictionCache, int predictionIndex) { return(predictionIndex == -1 ? null : predictionCache?.GetProteinFunctionPrediction(predictionIndex, newAminoAcid, proteinPosition)); }
private void LoadPredictionCaches(ushort refIndex) { if (refIndex == _currentRefIndex) { return; } if (refIndex == ushort.MaxValue) { ClearCache(); return; } _siftCache = _siftReader.Read(refIndex); _polyphenCache = _polyphenReader.Read(refIndex); _currentRefIndex = refIndex; }
public static IList <IAnnotatedTranscript> GetAnnotatedTranscripts(IVariant variant, ITranscript[] transcriptCandidates, ISequence compressedSequence, IPredictionCache siftCache, IPredictionCache polyphenCache) { var annotatedTranscripts = new List <IAnnotatedTranscript>(); foreach (var transcript in transcriptCandidates) { var annotationStatus = DecideAnnotationStatus(variant, transcript, variant.Behavior, variant.Chromosome.FlankingLength); var annotatedTranscript = GetAnnotatedTranscript(variant, compressedSequence, transcript, annotationStatus, siftCache, polyphenCache); if (annotatedTranscript != null) { annotatedTranscripts.Add(annotatedTranscript); } } return(annotatedTranscripts); }
private static IAnnotatedTranscript GetAnnotatedTranscript(IVariant variant, ISequence compressedSequence, ITranscript transcript, Status annotationStatus, IPredictionCache siftCache, IPredictionCache polyphenCache, ITranscript[] geneFusionCandidates) { IAnnotatedTranscript annotatedTranscript = null; // ReSharper disable once SwitchStatementMissingSomeCases switch (annotationStatus) { case Status.FlankingAnnotation: annotatedTranscript = FlankingTranscriptAnnotator.GetAnnotatedTranscript(variant.End, transcript); break; case Status.ReducedAnnotation: annotatedTranscript = ReducedTranscriptAnnotator.GetAnnotatedTranscript(transcript, variant, geneFusionCandidates); break; case Status.CompleteOverlapAnnotation: annotatedTranscript = ReducedTranscriptAnnotator.GetCompleteOverlapTranscript(transcript); break; case Status.RohAnnotation: annotatedTranscript = RohTranscriptAnnotator.GetAnnotatedTranscript(transcript); break; case Status.FullAnnotation: var acidsProvider = variant.Chromosome.UcscName == "chrM" ? MitoAminoAcidsProvider : AminoAcidsProvider; annotatedTranscript = FullTranscriptAnnotator.GetAnnotatedTranscript(transcript, variant, compressedSequence, siftCache, polyphenCache, acidsProvider); break; } return(annotatedTranscript); }
private static (PredictionScore Sift, PredictionScore PolyPhen) GetPredictionScores(IMappedPosition position, string refAminoAcid, string altAminoAcid, IPredictionCache siftCache, IPredictionCache polyphenCache, int siftIndex, int polyphenIndex) { if (!NeedPredictionScore(position.ProteinStart, position.ProteinEnd, refAminoAcid, altAminoAcid) || position.ProteinStart == -1) { return(null, null); } var newAminoAcid = altAminoAcid[0]; var siftScore = GetPredictionScore(position.ProteinStart, newAminoAcid, siftCache, siftIndex); var polyphenScore = GetPredictionScore(position.ProteinStart, newAminoAcid, polyphenCache, polyphenIndex); return(siftScore, polyphenScore); }
public static IAnnotatedTranscript GetAnnotatedTranscript(ITranscript transcript, IVariant leftShiftedVariant, ISequence refSequence, IPredictionCache siftCache, IPredictionCache polyphenCache, AminoAcids aminoAcids) { var rightShiftedVariant = VariantRotator.Right(leftShiftedVariant, transcript, refSequence, transcript.Gene.OnReverseStrand); var leftAnnotation = AnnotateTranscript(transcript, leftShiftedVariant, aminoAcids, refSequence); var rightAnnotation = ReferenceEquals(leftShiftedVariant, rightShiftedVariant) ? leftAnnotation : AnnotateTranscript(transcript, rightShiftedVariant, aminoAcids, refSequence); var consequences = GetConsequences(transcript, leftShiftedVariant, leftAnnotation.VariantEffect); var hgvsCoding = HgvsCodingNomenclature.GetHgvscAnnotation(transcript, rightShiftedVariant, refSequence, rightAnnotation.Position.RegionStartIndex, rightAnnotation.Position.RegionEndIndex); var hgvsProtein = HgvsProteinNomenclature.GetHgvsProteinAnnotation(transcript, rightAnnotation.RefAminoAcids, rightAnnotation.AltAminoAcids, rightAnnotation.TranscriptAltAllele, rightAnnotation.Position, rightAnnotation.VariantEffect, rightShiftedVariant, refSequence, hgvsCoding, leftShiftedVariant.Chromosome.UcscName == "chrM"); var predictionScores = GetPredictionScores(leftAnnotation.Position, leftAnnotation.RefAminoAcids, leftAnnotation.AltAminoAcids, siftCache, polyphenCache, transcript.SiftIndex, transcript.PolyPhenIndex); return(new AnnotatedTranscript(transcript, leftAnnotation.RefAminoAcids, leftAnnotation.AltAminoAcids, leftAnnotation.RefCodons, leftAnnotation.AltCodons, leftAnnotation.Position, hgvsCoding, hgvsProtein, predictionScores.Sift, predictionScores.PolyPhen, consequences, false)); }
private void ClearCache() { _siftCache = null; _polyphenCache = null; _currentRefIndex = ushort.MaxValue; }