Example #1
0
        public static RoundedEntryPrediction[] GetRoundedEntryPredictions(this string[] predictionStrings)
        {
            var predictions  = new RoundedEntryPrediction[predictionStrings.Length];
            var currentIndex = 0;

            foreach (string s in predictionStrings)
            {
                predictions[currentIndex++] = s.GetRoundedEntryPrediction();
            }
            return(predictions);
        }
        public (PredictionCacheStaging Sift, PredictionCacheStaging PolyPhen) CreatePredictionCaches(
            Dictionary <ushort, List <MutableTranscript> > transcriptsByRefIndex, PredictionReader siftReader,
            PredictionReader polyphenReader, int numRefSeqs)
        {
            _logger.Write("- converting prediction strings... ");

            var siftRoundedPredictionsPerRef     = new RoundedEntryPrediction[numRefSeqs][];
            var polyPhenRoundedPredictionsPerRef = new RoundedEntryPrediction[numRefSeqs][];

            for (ushort refIndex = 0; refIndex < numRefSeqs; refIndex++)
            {
                var sift     = siftReader.GetPredictionData();
                var polyphen = polyphenReader.GetPredictionData();

                if (sift.Chromosome.Index != refIndex || polyphen.Chromosome.Index != refIndex)
                {
                    throw new InvalidDataException(
                              $"Found mismatch between transcript chromosome index ({refIndex}) and prediction chromosome indices (SIFT: {sift.Chromosome.Index}, PolyPhen: {polyphen.Chromosome.Index}.");
                }

                if (!transcriptsByRefIndex.TryGetValue(refIndex, out var refTranscripts))
                {
                    continue;
                }

                var(siftPredictions, polyPhenPredictions) = ProcessReference(refTranscripts,
                                                                             sift.TranscriptToPredictionIndex, polyphen.TranscriptToPredictionIndex, sift.PredictionData,
                                                                             polyphen.PredictionData);

                siftRoundedPredictionsPerRef[refIndex]     = siftPredictions;
                polyPhenRoundedPredictionsPerRef[refIndex] = polyPhenPredictions;
            }

            _logger.WriteLine("finished.");

            var siftStaging     = BuildCacheStaging("SIFT", siftRoundedPredictionsPerRef, numRefSeqs);
            var polyPhenStaging = BuildCacheStaging("PolyPhen", polyPhenRoundedPredictionsPerRef, numRefSeqs);

            return(siftStaging, polyPhenStaging);
        }