public CanvasSmallPedigreeOutput Run(CanvasSmallPedigreeInput input, IDirectoryLocation sandbox, IFileMover fileMover) { var output = _wrapper.Run(input, sandbox); _move(output, fileMover); return(_load(input)); }
public CanvasSmallPedigreeOutput Run(CanvasSmallPedigreeInput input, IDirectoryLocation sampleSandbox) { if (!_annotationFileProvider.IsSupported(input.GenomeMetadata)) { _logger.Info($"Skipping Canvas: unsupported reference genome '{input.GenomeMetadata.Name}'"); return(null); } if (!_annotationFileProvider.CustomDbSnpVcf(input.GenomeMetadata) && input.Vcf == null) { _logger.Info($"Skipping Canvas. A dbSNP VCF file was not provided and no small variant VCF file is available"); return(null); } var commandLine = new StringBuilder("SmallPedigree-WGS"); commandLine.Append(GetMultiSampleCommandLine(input.Samples, input.GenomeMetadata, input.Vcf, sampleSandbox)); // use sample vcf by default (performance could be similar with dbSNP vcf though) var bAlleleVcf = input.Vcf.VcfFile; var bAlleleVcfOptionName = SingleSampleCommonOptionsParser.SampleBAlleleVcfOptionName; if (_annotationFileProvider.CustomDbSnpVcf(input.GenomeMetadata)) { bAlleleVcf = _annotationFileProvider.GetDbSnpVcf(input.GenomeMetadata); bAlleleVcfOptionName = SingleSampleCommonOptionsParser.PopulationBAlleleVcfOptionName; } commandLine.Append($" --{bAlleleVcfOptionName} \"{bAlleleVcf}\""); var ploidyInfos = input.Samples.SelectData(sample => sample.PloidyInfo); var ploidyVcf = _canvasPloidyVcfCreator.CreatePloidyVcf(ploidyInfos, input.GenomeMetadata, sampleSandbox); if (ploidyVcf != null) { commandLine.Append($" --{SmallPedigreeOptionsParser.PloidyVcfOptionName} \"{ploidyVcf.VcfFile}\""); } var moreCustomParameters = new Dictionary <string, string>(); // common cnv feature disabled by default due to CANV-397 // string canvasPedigreeCallerParam = $@"--commoncnvs {_annotationFileProvider.GetCanvasAnnotationFile(input.GenomeMetadata, "commoncnvs.bed")}"; // moreCustomParameters["CanvasPedigreeCaller"] = canvasPedigreeCallerParam; commandLine.Append(_singleSampleInputCommandLineBuilder.GetCustomParameters(moreCustomParameters)); commandLine = _singleSampleInputCommandLineBuilder.MergeCustomCanvasParameters(commandLine); // use Proband or, when proband is not available, first sample as pedigree id var pedigreeId = input.Samples.Where(x => x.Value.SampleType == SampleType.Proband).Select(x => x.Key.Id).FirstOrDefault(); if (pedigreeId.IsNullOrEmpty()) { pedigreeId = input.Samples.First().Key.Id; } var job = new JobInfo(_runtimeExecutable.FullName, _canvasExe + " " + commandLine, "Canvas_" + pedigreeId); return(_workDoer.DoWork(WorkResourceRequest.CreateExact(1, 8), job, GetCanvasOutput(input.Samples, sampleSandbox)).Await()); }
private CanvasSmallPedigreeOutput Load(CanvasSmallPedigreeInput input) { var intermediateOutputs = input.Samples.SelectData((info, sample) => { var stub = GetStub(info.Id); var coverageAndVariantFrequency = SingleSampleCallset.GetCoverageAndVariantFrequencyOutput(stub); if (!_canvasWorkerFactory.IncludeIntermediateResults()) { return(new IntermediateOutput(coverageAndVariantFrequency, null, null, null)); } var partitioned = SingleSampleCallset.GetPartitionedPath(stub); var variantFrequencies = SingleSampleCallset.GetVfSummaryPath(stub); var variantFrequenciesBaf = SingleSampleCallset.GetVfSummaryPath(stub); return(new IntermediateOutput(coverageAndVariantFrequency, variantFrequencies, variantFrequenciesBaf, partitioned)); }); return(new CanvasSmallPedigreeOutput(new Vcf(GetCnvVcf()), intermediateOutputs)); }
private CanvasSmallPedigreeOutput Load(CanvasSmallPedigreeInput input) { var intermediateOutputs = input.Samples.SelectData((info, sample) => { var stub = GetSingleSampleOutputStub(info); var coverageAndVariantFrequency = SingleSampleCallset.GetCoverageAndVariantFrequencyOutput(stub); var singleSampleVcf = new Vcf(SingleSampleCallset.GetVcfOutput(stub)); var partitioned = SingleSampleCallset.GetPartitionedPath(stub); var variantFrequencies = SingleSampleCallset.GetVfSummaryPath(stub); var variantFrequenciesBaf = SingleSampleCallset.GetVfSummaryBafPath(stub); var coverageBigwig = SingleSampleCallset.GetCoverageBigWig(stub); var bAlleleBedgraph = SingleSampleCallset.GetBAlleleBedGraph(stub); var copyNumberBedgraph = SingleSampleCallset.GetCopyNumberBedGraph(stub); return(new IntermediateOutput(singleSampleVcf, coverageAndVariantFrequency, variantFrequencies, variantFrequenciesBaf, partitioned, coverageBigwig, bAlleleBedgraph, copyNumberBedgraph)); }); return(new CanvasSmallPedigreeOutput(new Vcf(GetPedigreeVcf()), intermediateOutputs)); }
public CanvasSmallPedigreeOutput Run(CanvasSmallPedigreeInput input, IDirectoryLocation sampleSandbox) { if (!_annotationFileProvider.IsSupported(input.GenomeMetadata)) { _logger.Info($"Skipping Canvas: unsupported reference genome '{input.GenomeMetadata.Name}'"); return(null); } if (!_annotationFileProvider.CustomDbSnpVcf(input.GenomeMetadata) && input.Vcf == null) { _logger.Info($"Skipping Canvas. A dbSNP VCF file was not provided and no small variant VCF file is available"); return(null); } var commandLine = new StringBuilder("SmallPedigree-WGS"); commandLine.Append(GetMultiSampleCommandLine(input.Samples, input.GenomeMetadata, input.Vcf, sampleSandbox)); // use sample vcf by default (performance could be similar with dbSNP vcf though) var bAlleleVcf = input.Vcf.VcfFile; var bAlleleVcfOptionName = SingleSampleCommonOptionsParser.SampleBAlleleVcfOptionName; if (_annotationFileProvider.CustomDbSnpVcf(input.GenomeMetadata)) { bAlleleVcf = _annotationFileProvider.GetDbSnpVcf(input.GenomeMetadata); bAlleleVcfOptionName = SingleSampleCommonOptionsParser.PopulationBAlleleVcfOptionName; } commandLine.Append($" --{bAlleleVcfOptionName} \"{bAlleleVcf}\""); var ploidyInfos = input.Samples.SelectData(sample => sample.PloidyInfo); var ploidyVcf = _canvasPloidyVcfCreator.CreatePloidyVcf(ploidyInfos, input.GenomeMetadata, sampleSandbox); if (ploidyVcf != null) { commandLine.Append($" --{SmallPedigreeOptionsParser.PloidyVcfOptionName} \"{ploidyVcf.VcfFile}\""); } var canvasPartitionParam = $@"--commoncnvs {_annotationFileProvider.GetCanvasAnnotationFile(input.GenomeMetadata, "commoncnvs.bed")}"; var moreCustomParameters = new Dictionary <string, string> { ["CanvasPartition"] = canvasPartitionParam }; commandLine.Append(_singleSampleInputCommandLineBuilder.GetCustomParameters(moreCustomParameters)); commandLine = _singleSampleInputCommandLineBuilder.MergeCustomCanvasParameters(commandLine); // use Proband or, when proband is not available, first sample as pedigree id var pedigreeId = input.Samples.Where(x => x.Value.SampleType == SampleType.Proband).Select(x => x.Key.Id).FirstOrDefault(); if (pedigreeId.IsNullOrEmpty()) { pedigreeId = input.Samples.First().Key.Id; } var singleSampleJob = new UnitOfWork() { ExecutablePath = CrossPlatform.IsThisLinux() ? _runtimeExecutable.FullName : _canvasExe.FullName, CommandLine = CrossPlatform.IsThisLinux() ? _canvasExe + " " + commandLine : commandLine.ToString(), LoggingFolder = _workManager.LoggingFolder.FullName, LoggingStub = "Canvas_" + pedigreeId, }; _workManager.DoWorkSingleThread(singleSampleJob); var sampleBams = input.Samples.SelectData(sample => sample.Bam); return(GetCanvasOutput(sampleBams, sampleSandbox)); }
public CanvasSmallPedigreeOutput Run(CanvasSmallPedigreeInput input, IDirectoryLocation sandbox, IFileMover fileMover) { _logger.Info("Canvas is disabled."); return(null); }