Skip to content

Commit 2474e50

Browse files
committed
support lofreq's indelqual step
1 parent 9f75f5e commit 2474e50

File tree

3 files changed

+82
-0
lines changed

3 files changed

+82
-0
lines changed

SequenceAnalysis/src/org/labkey/sequenceanalysis/SequenceAnalysisModule.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
import org.labkey.sequenceanalysis.run.bampostprocessing.DiscardUnmappedReadsStep;
9494
import org.labkey.sequenceanalysis.run.bampostprocessing.FixMateInformationStep;
9595
import org.labkey.sequenceanalysis.run.bampostprocessing.IndelRealignerStep;
96+
import org.labkey.sequenceanalysis.run.bampostprocessing.LofreqIndelQualStep;
9697
import org.labkey.sequenceanalysis.run.bampostprocessing.MarkDuplicatesStep;
9798
import org.labkey.sequenceanalysis.run.bampostprocessing.MarkDuplicatesWithMateCigarStep;
9899
import org.labkey.sequenceanalysis.run.bampostprocessing.RnaSeQCStep;
@@ -264,6 +265,7 @@ public static void registerPipelineSteps()
264265
SequencePipelineService.get().registerPipelineStep(new SortSamStep.Provider());
265266
SequencePipelineService.get().registerPipelineStep(new SplitNCigarReadsStep.Provider());
266267
SequencePipelineService.get().registerPipelineStep(new ClipOverlappingAlignmentsWrapper.ClipOverlappingAlignmentsStep.Provider());
268+
SequencePipelineService.get().registerPipelineStep(new LofreqIndelQualStep.Provider());
267269

268270
//analysis
269271
SequencePipelineService.get().registerPipelineStep(new SequenceBasedTypingAnalysis.Provider());

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,32 @@ public File execute(File input, File outputVcf, File fasta, @Nullable Integer th
514514
return outputVcf;
515515
}
516516

517+
public File addIndelQuals(File inputBam, File outputBam, File fasta) throws PipelineJobException
518+
{
519+
List<String> args = new ArrayList<>();
520+
args.add(getExe().getPath());
521+
args.add("indelqual");
522+
523+
args.add("--dindel");
524+
525+
args.add("--ref");
526+
args.add(fasta.getPath());
527+
528+
args.add("--out");
529+
args.add(outputBam.getPath());
530+
531+
args.add(inputBam.getPath());
532+
533+
execute(args);
534+
535+
if (!outputBam.exists())
536+
{
537+
throw new PipelineJobException("Unable to find file: " + outputBam.getPath());
538+
}
539+
540+
return outputBam;
541+
}
542+
517543
private File getExe()
518544
{
519545
return SequencePipelineService.get().getExeForPackage("LOFREQPATH", "lofreq");
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package org.labkey.sequenceanalysis.run.bampostprocessing;
2+
3+
import org.labkey.api.pipeline.PipelineJobException;
4+
import org.labkey.api.sequenceanalysis.model.Readset;
5+
import org.labkey.api.sequenceanalysis.pipeline.AbstractPipelineStepProvider;
6+
import org.labkey.api.sequenceanalysis.pipeline.BamProcessingOutputImpl;
7+
import org.labkey.api.sequenceanalysis.pipeline.BamProcessingStep;
8+
import org.labkey.api.sequenceanalysis.pipeline.PipelineContext;
9+
import org.labkey.api.sequenceanalysis.pipeline.PipelineStepProvider;
10+
import org.labkey.api.sequenceanalysis.pipeline.ReferenceGenome;
11+
import org.labkey.api.sequenceanalysis.pipeline.SequencePipelineService;
12+
import org.labkey.api.sequenceanalysis.run.AbstractCommandPipelineStep;
13+
import org.labkey.api.util.FileUtil;
14+
import org.labkey.sequenceanalysis.run.analysis.LofreqAnalysis;
15+
16+
import java.io.File;
17+
import java.util.Collections;
18+
19+
public class LofreqIndelQualStep extends AbstractCommandPipelineStep<LofreqAnalysis.LofreqWrapper> implements BamProcessingStep
20+
{
21+
public LofreqIndelQualStep(PipelineStepProvider provider, PipelineContext ctx)
22+
{
23+
super(provider, ctx, new LofreqAnalysis.LofreqWrapper(ctx.getLogger()));
24+
}
25+
26+
public static class Provider extends AbstractPipelineStepProvider<MarkDuplicatesStep>
27+
{
28+
public Provider()
29+
{
30+
super("LofreqIndelQual", "Lofreq Indelqual", "Lofreq", "This runs lofreq's indelqual, which adds indel qualities necessary to call somatic indels.", Collections.emptyList(), null, "http://csb5.github.io/lofreq/");
31+
}
32+
33+
@Override
34+
public MarkDuplicatesStep create(PipelineContext ctx)
35+
{
36+
return new MarkDuplicatesStep(this, ctx);
37+
}
38+
}
39+
40+
@Override
41+
public Output processBam(Readset rs, File inputBam, ReferenceGenome referenceGenome, File outputDirectory) throws PipelineJobException
42+
{
43+
BamProcessingOutputImpl output = new BamProcessingOutputImpl();
44+
getWrapper().setOutputDir(outputDirectory);
45+
46+
File outputBam = new File(outputDirectory, FileUtil.getBaseName(inputBam) + ".lofreqindel.bam");
47+
output.addIntermediateFile(outputBam);
48+
output.setBAM(getWrapper().addIndelQuals(inputBam, outputBam, referenceGenome.getWorkingFastaFile()));
49+
50+
SequencePipelineService.get().ensureBamIndex(outputBam, getPipelineCtx().getLogger(), false);
51+
52+
return output;
53+
}
54+
}

0 commit comments

Comments
 (0)