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); }