private static string ProcessChromosome(Dictionary <string, int> chromRefIds, string outMultiPath, List <string> taskDirectories, string chrom, GeminiMultiOptions options) { // TODO either officially deprecate non-multiprocess-processing and remove this, or consolidate this with the Gemini calling code from Gemini/Program.cs var outdir = Path.Combine(outMultiPath, chrom); var refId = chromRefIds[chrom]; var intermediate = string.IsNullOrEmpty(options.GeminiSampleOptions.IntermediateDir) ? null : Path.Combine(options.GeminiSampleOptions.IntermediateDir, chrom); var geminiSampleOptions = new GeminiSampleOptions { InputBam = options.InputBam, OutputFolder = outdir, OutputBam = Path.Combine(outdir, "out.bam"), IntermediateDir = intermediate, RefId = refId }; // Gemini defaults different than stitcher defaults options.StitcherOptions.NifyUnstitchablePairs = false; // Set stitcher pair-filter-level duplicate filtering if skip and remove dups, to save time options.StitcherOptions.FilterDuplicates = options.GeminiOptions.SkipAndRemoveDups; var dataSourceFactory = new GeminiDataSourceFactory(options.StitcherOptions, options.GeminiOptions.GenomePath, options.GeminiOptions.SkipAndRemoveDups, refId, Path.Combine(outdir, "Regions.txt"), debug: options.GeminiOptions.Debug); var dataOutputFactory = new GeminiDataOutputFactory(options.StitcherOptions.NumThreads); var samtoolsWrapper = new SamtoolsWrapper(options.GeminiOptions.SamtoolsPath, options.GeminiOptions.IsWeirdSamtools); var geminiWorkflow = new GeminiWorkflow(dataSourceFactory, dataOutputFactory, options.GeminiOptions, geminiSampleOptions, options.RealignmentOptions, options.StitcherOptions, options.OutputDirectory, options.RealignmentAssessmentOptions, options.IndelFilteringOptions, samtoolsWrapper); Directory.CreateDirectory(outdir); geminiWorkflow.Execute(); //var logger = new Illumina.CG.Common.Logging.Logger(taskLogDir, $"GeminiTaskLog_{chrom}.txt"); //var task = _taskCreator.GetCliTask(cmdLineList.ToArray(), chrom, exePath, outdir, chromRefIds[chrom], logger, // string.IsNullOrEmpty(_options.GeminiSampleOptions.IntermediateDir) // ? null // : Path.Combine(_options.GeminiSampleOptions.IntermediateDir, chrom)); //tasks.Add(task); Console.WriteLine($"Completed Gemini Workflow for {chrom}"); var path = (Path.Combine(outdir, "merged.bam.sorted.bam")); taskDirectories.Add(outdir); //paths[refId] = path; return(path); }
private static void Execute(List <BamAlignment> alignments, List <ReadPair> reads, GeminiOptions geminiOptions, StitcherOptions stitcherOptions, List <ReadPair> lonerpairs = null) { var mockOutcomesWriter = new Mock <IOutcomesWriter>(); var mockDataOutputFactory = DataflowMocks.MockDataOutputFactory(alignments); var mockTextWriter = new Mock <ITextWriter>(); mockDataOutputFactory.Setup(x => x.GetTextWriter(It.IsAny <string>())) .Returns(mockTextWriter.Object); var mockReader = DataflowMocks.MockReader(); var mockReadPairSource = DataflowMocks.MockDataSource(reads, lonerpairs); var mockDataSourceFactory = DataflowMocks.MockDataSourceFactory(mockReader, mockReadPairSource); var mockSamtoolsWrapper = new Mock <ISamtoolsWrapper>(); var geminiSampleOptions = new GeminiSampleOptions() { RefId = 1, OutputFolder = "OutFolder" }; var geminiWorkflow = new GeminiWorkflow(mockDataSourceFactory.Object, mockDataOutputFactory.Object, geminiOptions, geminiSampleOptions, new RealignmentOptions(), stitcherOptions, "outdir", new RealignmentAssessmentOptions(), new IndelFilteringOptions(), mockSamtoolsWrapper.Object); geminiWorkflow.Execute(); }