Пример #1
0
        /// <summary>
        /// updates a regulatory region
        /// mini-cache filename example: ENSR00000079256_chr1_Ensembl72_reg.ndb
        /// </summary>
        public UpdateStatus Update(DataBundle bundle, string outputCacheDir, ushort desiredVepVersion, List <string> outputFiles)
        {
            var regulatoryElement = MiniCacheUtilities.GetDesiredRegulatoryElement(bundle, _regulatoryId);

            if (regulatoryElement == null)
            {
                return(UpdateStatus.IdNotFound);
            }

            bundle.Load(regulatoryElement.ReferenceIndex);

            var outputCache = CreateCache(bundle.Cache.Header, new[] { regulatoryElement });

            var outputStub = GetOutputStub(outputCacheDir, _regulatoryId,
                                           bundle.Sequence.Renamer.UcscReferenceNames[regulatoryElement.ReferenceIndex], TranscriptDataSource,
                                           desiredVepVersion);

            var refIndices = new HashSet <ushort> {
                regulatoryElement.ReferenceIndex
            };

            MiniCacheUtilities.WriteTranscriptCache(outputCache, outputStub, outputFiles);
            MiniCacheUtilities.WriteEmptyBases(bundle, refIndices, outputStub, outputFiles);

            return(UpdateStatus.Current);
        }
Пример #2
0
        /// <summary>
        /// updates a transcript
        /// mini-cache filename example: ENST00000255416_chr1_Ensembl79.ndb
        /// </summary>
        public UpdateStatus Update(DataBundle bundle, string outputCacheDir, ushort desiredVepVersion, List <string> outputFiles)
        {
            var transcript = MiniCacheUtilities.GetDesiredTranscript(bundle, _transcriptId, RefIndex);

            if (transcript == null)
            {
                return(UpdateStatus.IdNotFound);
            }

            var packets = new List <TranscriptPacket> {
                new TranscriptPacket(transcript)
            };

            foreach (var packet in packets)
            {
                bundle.Load(packet.ReferenceIndex);

                packet.SiftPrediction = packet.Transcript.SiftIndex == -1
                    ? null
                    : bundle.SiftCache.Predictions[packet.Transcript.SiftIndex];

                packet.PolyPhenPrediction = packet.Transcript.PolyPhenIndex == -1
                    ? null
                    : bundle.PolyPhenCache.Predictions[packet.Transcript.PolyPhenIndex];
            }

            var numRefSeqs = bundle.Sequence.Renamer.NumRefSeqs;

            var sift     = PredictionUtilities.GetStaging(bundle, true, packets, numRefSeqs);
            var polyphen = PredictionUtilities.GetStaging(bundle, false, packets, numRefSeqs);

            PredictionUtilities.FixIndices(packets);

            var outputCache = MiniCacheUtilities.CreateCache(bundle.Cache.Header, packets);

            var outputStub = GetOutputStub(outputCacheDir, _transcriptId,
                                           bundle.Sequence.Renamer.UcscReferenceNames[transcript.ReferenceIndex], TranscriptDataSource,
                                           desiredVepVersion);

            MiniCacheUtilities.WriteTranscriptCache(outputCache, outputStub, outputFiles);
            MiniCacheUtilities.WritePredictionCaches(sift, polyphen, outputStub, outputFiles);
            MiniCacheUtilities.WriteBases(bundle, packets, outputStub, outputFiles);

            return(UpdateStatus.Current);
        }
Пример #3
0
        /// <summary>
        /// updates a position
        /// mini-cache filename example: chr1_713044_755966_RefSeq79_pos.ndb
        /// </summary>
        public UpdateStatus Update(DataBundle bundle, string outputCacheDir, ushort desiredVepVersion, List <string> outputFiles)
        {
            bundle.Load(RefIndex);

            string vcfLine     = $"{bundle.Sequence.Renamer.UcscReferenceNames[RefIndex]}\t{_position}\t.\tC\t<CN0>\t100\tPASS\tEND={_endPosition};SVTYPE=CNV";
            var    transcripts = MiniCacheUtilities.GetTranscriptsByVcf(bundle, vcfLine);

            if (transcripts == null)
            {
                return(UpdateStatus.IdNotFound);
            }

            var packets = transcripts.Select(transcript => new TranscriptPacket(transcript)).ToList();

            foreach (var packet in packets)
            {
                bundle.Load(packet.ReferenceIndex);

                packet.SiftPrediction = packet.Transcript.SiftIndex == -1
                    ? null
                    : bundle.SiftCache.Predictions[packet.Transcript.SiftIndex];

                packet.PolyPhenPrediction = packet.Transcript.PolyPhenIndex == -1
                    ? null
                    : bundle.PolyPhenCache.Predictions[packet.Transcript.PolyPhenIndex];
            }

            var numRefSeqs = bundle.Sequence.Renamer.NumRefSeqs;

            var sift     = PredictionUtilities.GetStaging(bundle, true, packets, numRefSeqs);
            var polyphen = PredictionUtilities.GetStaging(bundle, false, packets, numRefSeqs);

            PredictionUtilities.FixIndices(packets);

            var outputCache = MiniCacheUtilities.CreateCache(bundle.Cache.Header, packets);

            var outputStub = GetOutputStub(outputCacheDir, bundle.Sequence.Renamer.UcscReferenceNames[RefIndex],
                                           _position, _endPosition, TranscriptDataSource, desiredVepVersion);

            MiniCacheUtilities.WriteTranscriptCache(outputCache, outputStub, outputFiles);
            MiniCacheUtilities.WritePredictionCaches(sift, polyphen, outputStub, outputFiles);
            MiniCacheUtilities.WriteBases(bundle, packets, outputStub, outputFiles);

            return(UpdateStatus.Current);
        }
        /// <summary>
        /// executes the program
        /// </summary>
        protected override void ProgramExecution()
        {
            var bundle = GetDataBundle(ConfigurationSettings.InputReferencePath, ConfigurationSettings.InputPrefix);
            var header = bundle.Cache.Header.Custom as GlobalCustomHeader;

            if (header == null)
            {
                throw new InvalidCastException("Unable to cast the custom header as a GlobalCustomHeader");
            }

            var regulatoryElement = MiniCacheUtilities.GetDesiredRegulatoryElement(bundle, ConfigurationSettings.RegulatoryElementId);

            if (regulatoryElement == null)
            {
                throw new UserErrorException($"Unable to find the desired regulatory element: {ConfigurationSettings.RegulatoryElementId}");
            }

            var updater = new RegulatoryUpdater(ConfigurationSettings.RegulatoryElementId,
                                                regulatoryElement.ReferenceIndex, bundle.Cache.Header.TranscriptSource.ToString());

            var outputFiles = new List <string>();
            var status      = updater.Update(bundle, ConfigurationSettings.OutputDirectory, header.VepVersion, outputFiles);

            UnitTestResourceCrawler.CleanupFiles(status, new List <string>(), outputFiles);

            if (status != UpdateStatus.Current)
            {
                throw new UserErrorException($"Unable to create the mini-cache file. Status: {status}");
            }

            Console.WriteLine();
            Console.WriteLine("- created the following files:");
            foreach (var path in outputFiles)
            {
                Console.WriteLine(Path.GetFileNameWithoutExtension(path));
            }
        }