Skip to content

Commit cb4ed81

Browse files
committed
Add option to keep VCF calls for DeepVariant
1 parent a208193 commit cb4ed81

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

SequenceAnalysis/src/org/labkey/sequenceanalysis/analysis/DeepVariantHandler.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
9797
action.addInput(so.getFile(), "Input BAM File");
9898

9999
File outputFile = new File(ctx.getOutputDir(), FileUtil.getBaseName(so.getFile()) + ".g.vcf.gz");
100+
File outputFileVcf = new File(ctx.getOutputDir(), FileUtil.getBaseName(so.getFile()) + ".vcf.gz");
100101

101102
DeepVariantAnalysis.DeepVariantWrapper wrapper = new DeepVariantAnalysis.DeepVariantWrapper(job.getLogger());
102103
wrapper.setOutputDir(ctx.getOutputDir());
@@ -123,7 +124,8 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
123124
throw new PipelineJobException("Missing binVersion");
124125
}
125126

126-
wrapper.execute(so.getFile(), referenceGenome.getWorkingFastaFile(), outputFile, ctx.getFileManager(), binVersion, args);
127+
boolean retainVcf = ctx.getParams().optBoolean("retainVcf", false);
128+
wrapper.execute(so.getFile(), referenceGenome.getWorkingFastaFile(), outputFile, retainVcf, ctx.getFileManager(), binVersion, args);
127129

128130
action.addOutput(outputFile, "gVCF File", false);
129131

@@ -137,6 +139,19 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
137139

138140
ctx.addSequenceOutput(o);
139141

142+
if (retainVcf)
143+
{
144+
SequenceOutputFile vcf = new SequenceOutputFile();
145+
vcf.setName(outputFileVcf.getName());
146+
vcf.setFile(outputFileVcf);
147+
vcf.setLibrary_id(so.getLibrary_id());
148+
vcf.setCategory("DeepVariant VCF File");
149+
vcf.setReadset(so.getReadset());
150+
vcf.setDescription("DeepVariant Version: " + binVersion);
151+
152+
ctx.addSequenceOutput(vcf);
153+
}
154+
140155
ctx.addActions(action);
141156
}
142157

SequenceAnalysis/src/org/labkey/sequenceanalysis/run/analysis/DeepVariantAnalysis.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ public static List<ToolParameterDescriptor> getToolDescriptors()
7070
}}, "X,Y"),
7171
ToolParameterDescriptor.create("binVersion", "DeepVariant Version", "The version of DeepVariant to run, which is passed to their docker container", "textfield", new JSONObject(){{
7272
put("allowBlank", false);
73-
}}, "1.6.0")
73+
}}, "1.6.0"),
74+
ToolParameterDescriptor.create("retainVcf", "Retain VCF", "If selected, the VCF with called genotypes will be retained", "checkbox", null, false)
7475
);
7576
}
7677

@@ -153,9 +154,11 @@ public Output performAnalysisPerSampleRemote(Readset rs, File inputBam, Referenc
153154
throw new PipelineJobException("Missing binVersion");
154155
}
155156

157+
boolean retainVcf = getProvider().getParameterByName("retainVcf").extractValue(getPipelineCtx().getJob(), getProvider(), getStepIdx(), Boolean.class, false);
158+
156159
getWrapper().setOutputDir(outputDir);
157160
getWrapper().setWorkingDir(outputDir);
158-
getWrapper().execute(inputBam, referenceGenome.getWorkingFastaFile(), outputFile, output, binVersion, args);
161+
getWrapper().execute(inputBam, referenceGenome.getWorkingFastaFile(), outputFile, retainVcf, output, binVersion, args);
159162

160163
output.addOutput(outputFile, "gVCF File");
161164
output.addSequenceOutput(outputFile, outputFile.getName(), "DeepVariant gVCF File", rs.getReadsetId(), null, referenceGenome.getGenomeId(), "DeepVariant Version: " + binVersion);
@@ -164,6 +167,17 @@ public Output performAnalysisPerSampleRemote(Readset rs, File inputBam, Referenc
164167
output.addOutput(idxFile, "VCF Index");
165168
}
166169

170+
if (retainVcf)
171+
{
172+
File outputFileVcf = new File(outputDir, FileUtil.getBaseName(inputBam) + ".vcf.gz");
173+
if (!outputFileVcf.exists())
174+
{
175+
throw new PipelineJobException("Missing expected file: " + outputFileVcf.getPath());
176+
}
177+
178+
output.addSequenceOutput(outputFile, outputFileVcf.getName(), "DeepVariant VCF File", rs.getReadsetId(), null, referenceGenome.getGenomeId(), "DeepVariant Version: " + binVersion);
179+
}
180+
167181
return output;
168182
}
169183

@@ -206,12 +220,15 @@ private File ensureLocalCopy(File input, File workingDirectory, PipelineOutputTr
206220
}
207221
}
208222

209-
public void execute(File inputBam, File refFasta, File outputGvcf, PipelineOutputTracker tracker, String binVersion, List<String> extraArgs) throws PipelineJobException
223+
public void execute(File inputBam, File refFasta, File outputGvcf, boolean retainVcf, PipelineOutputTracker tracker, String binVersion, List<String> extraArgs) throws PipelineJobException
210224
{
211225
File workDir = outputGvcf.getParentFile();
212226
File outputVcf = new File(outputGvcf.getPath().replaceAll(".g.vcf", ".vcf"));
213-
tracker.addIntermediateFile(outputVcf);
214-
tracker.addIntermediateFile(new File(outputVcf.getPath() + ".tbi"));
227+
if (!retainVcf)
228+
{
229+
tracker.addIntermediateFile(outputVcf);
230+
tracker.addIntermediateFile(new File(outputVcf.getPath() + ".tbi"));
231+
}
215232

216233
File inputBamLocal = ensureLocalCopy(inputBam, workDir, tracker);
217234
ensureLocalCopy(SequenceUtil.getExpectedIndex(inputBam), workDir, tracker);

0 commit comments

Comments
 (0)