Skip to content

Commit e72af54

Browse files
committed
Support GatherVcfsCloudWrapper
1 parent 869f213 commit e72af54

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.labkey.sequenceanalysis.run.variant;
2+
3+
import org.apache.logging.log4j.Logger;
4+
import org.labkey.api.pipeline.PipelineJobException;
5+
import org.labkey.api.sequenceanalysis.run.AbstractGatk4Wrapper;
6+
import org.labkey.api.writer.PrintWriters;
7+
8+
import java.io.File;
9+
import java.io.IOException;
10+
import java.io.PrintWriter;
11+
import java.util.ArrayList;
12+
import java.util.List;
13+
14+
public class GatherVcfsCloudWrapper extends AbstractGatk4Wrapper
15+
{
16+
public GatherVcfsCloudWrapper(Logger log)
17+
{
18+
super(log);
19+
}
20+
21+
public void gatherVcfs(File output, List<File> inputVcfs) throws PipelineJobException
22+
{
23+
List<String> args = new ArrayList<>(getBaseArgs());
24+
args.add("-O");
25+
args.add(output.getPath());
26+
27+
File argFile = new File(output.getParentFile(), "inputs.list");
28+
try (PrintWriter writer = PrintWriters.getPrintWriter(argFile))
29+
{
30+
inputVcfs.forEach(f -> writer.println(f.getPath()));
31+
}
32+
catch (IOException e)
33+
{
34+
throw new PipelineJobException(e);
35+
}
36+
37+
execute(args);
38+
39+
argFile.delete();
40+
}
41+
}

SequenceAnalysis/src/org/labkey/sequenceanalysis/util/SequenceUtil.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.labkey.api.util.StringUtilsLabKey;
4646
import org.labkey.api.writer.PrintWriters;
4747
import org.labkey.sequenceanalysis.run.util.BgzipRunner;
48+
import org.labkey.sequenceanalysis.run.variant.GatherVcfsCloudWrapper;
4849

4950
import java.io.BufferedReader;
5051
import java.io.File;
@@ -466,6 +467,33 @@ public static File combineVcfs(List<File> files, ReferenceGenome genome, File ou
466467
}
467468

468469
public static File combineVcfs(List<File> files, ReferenceGenome genome, File outputGzip, Logger log, boolean multiThreaded, @Nullable Integer compressionLevel, boolean showTotals, boolean sortAfterMerge) throws PipelineJobException
470+
{
471+
if (sortAfterMerge)
472+
{
473+
return combineVcfsUsingZcat(files, genome, outputGzip, log, multiThreaded, compressionLevel, showTotals, sortAfterMerge);
474+
}
475+
else
476+
{
477+
log.info("Combining VCFs using GatherVcfsCloudWrapper");
478+
new GatherVcfsCloudWrapper(log).gatherVcfs(outputGzip, files);
479+
480+
File idx = new File(outputGzip.getPath() + ".tbi");
481+
if (!idx.exists())
482+
{
483+
throw new PipelineJobException("Unable to find output: " + idx.getPath());
484+
}
485+
486+
if (showTotals)
487+
{
488+
log.info("total variants: " + SequenceAnalysisService.get().getVCFLineCount(outputGzip, log, false));
489+
log.info("passing variants: " + SequenceAnalysisService.get().getVCFLineCount(outputGzip, log, true));
490+
}
491+
492+
return outputGzip;
493+
}
494+
}
495+
496+
private static File combineVcfsUsingZcat(List<File> files, ReferenceGenome genome, File outputGzip, Logger log, boolean multiThreaded, @Nullable Integer compressionLevel, boolean showTotals, boolean sortAfterMerge) throws PipelineJobException
469497
{
470498
log.info("combining VCFs: ");
471499

0 commit comments

Comments
 (0)