コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
 private static PredictionScore GetPredictionScore(int proteinPosition, char newAminoAcid,
                                                   IPredictionCache predictionCache, int predictionIndex)
 {
     return(predictionIndex == -1
         ? null
         : predictionCache?.GetProteinFunctionPrediction(predictionIndex, newAminoAcid, proteinPosition));
 }
コード例 #4
0
 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;
 }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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));
        }
コード例 #9
0
 private void ClearCache()
 {
     _siftCache       = null;
     _polyphenCache   = null;
     _currentRefIndex = ushort.MaxValue;
 }