/// <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));
            }
        }
Ejemplo n.º 2
0
        /// <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");
            }

            IUpdater updater              = null;
            var      outputFiles          = new List <string>();
            var      transcriptDataSource = bundle.Cache.Header.TranscriptSource.ToString();

            if (_useTranscriptUpdater)
            {
                var transcripts = GetDesiredTranscripts(bundle, ConfigurationSettings.TranscriptIds);
                if (transcripts.Count == 0)
                {
                    throw new UserErrorException($"Unable to find the desired transcript: {ConfigurationSettings.TranscriptIds}");
                }

                var transcriptId = ConfigurationSettings.TranscriptIds.First();
                var transcript   = transcripts[0];

                updater = new TranscriptUpdater(transcriptId, transcript.ReferenceIndex, transcriptDataSource);
            }
            else if (_useMultiTranscriptUpdater)
            {
                var transcripts = GetDesiredTranscripts(bundle, ConfigurationSettings.TranscriptIds);
                if (transcripts.Count < 2)
                {
                    throw new UserErrorException($"Unable to find two or more transcripts: {ConfigurationSettings.TranscriptIds}");
                }

                var ids = new List <string>();
                ids.AddRange(ConfigurationSettings.TranscriptIds);

                updater = new MultiTranscriptUpdater(ids, transcriptDataSource);
            }
            else if (_usePositionUpdater)
            {
                var refIndex = bundle.Sequence.Renamer.GetReferenceIndex(ConfigurationSettings.ReferenceName);
                updater = new PositionUpdater(refIndex, ConfigurationSettings.ReferencePosition,
                                              ConfigurationSettings.ReferenceAllele, ConfigurationSettings.AlternateAllele, transcriptDataSource);
            }
            else if (_usePositionRangeUpdater)
            {
                var refIndex = bundle.Sequence.Renamer.GetReferenceIndex(ConfigurationSettings.ReferenceName);
                updater = new PositionRangeUpdater(refIndex, ConfigurationSettings.ReferencePosition,
                                                   ConfigurationSettings.ReferenceEndPosition, transcriptDataSource);
            }

            if (updater == null)
            {
                throw new NullReferenceException("The IUpdater is null.");
            }

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