Skip to content

Commit fdd45a4

Browse files
committed
Allow TagPcrSummary to run without designing primers
1 parent 6ed20c7 commit fdd45a4

File tree

1 file changed

+38
-9
lines changed

1 file changed

+38
-9
lines changed

SequenceAnalysis/src/org/labkey/sequenceanalysis/run/preprocessing/TagPcrSummaryStep.java

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package org.labkey.sequenceanalysis.run.preprocessing;
22

33
import au.com.bytecode.opencsv.CSVReader;
4-
import org.apache.commons.lang3.StringUtils;
54
import org.apache.log4j.Logger;
5+
import org.jetbrains.annotations.Nullable;
6+
import org.json.JSONObject;
67
import org.labkey.api.data.CompareType;
78
import org.labkey.api.data.Container;
89
import org.labkey.api.data.ContainerManager;
@@ -57,12 +58,21 @@ public TagPcrSummaryStep(PipelineStepProvider provider, PipelineContext ctx)
5758
private static final String CACHE_KEY = "tagPcrBlastMap";
5859

5960
private static final String MIN_ALIGNMENTS = "minAlignments";
61+
private static final String OUTPUT_GENBANK = "outputGenbank";
62+
private static final String DESIGN_PRIMERS = "designPrimers";
63+
6064
public static class Provider extends AbstractAnalysisStepProvider<TagPcrSummaryStep>
6165
{
6266
public Provider()
6367
{
6468
super("Tag-PCR", "Tag-PCR Integration Sites", null, "This will produce a table summarizing unique alignments in this BAM. It was originally created to summarize genomic insertions.", Arrays.asList(
65-
ToolParameterDescriptor.create(MIN_ALIGNMENTS, "Min Alignments", "The minimum number of alignments to export a position", "ldk-integerfield", null, 2)
69+
ToolParameterDescriptor.create(MIN_ALIGNMENTS, "Min Alignments", "The minimum number of alignments to export a position", "ldk-integerfield", null, 2),
70+
ToolParameterDescriptor.create(OUTPUT_GENBANK, "Create Genbank Output", "If selected, this will output a genbank file summarizing amplicons and primers", "checkbox", new JSONObject(){{
71+
put("checked", true);
72+
}}, true),
73+
ToolParameterDescriptor.create(DESIGN_PRIMERS, "Design Primers", "If selected, Primer3 will be used to design primers to flank integration sites", "checkbox", new JSONObject(){{
74+
put("checked", true);
75+
}}, true)
6676
), null, null);
6777
}
6878

@@ -119,12 +129,25 @@ public Output performAnalysisPerSampleRemote(Readset rs, File inputBam, Referenc
119129

120130
Map<Integer, File> blastDbs = getCachedBlastDbs(getPipelineCtx().getSequenceSupport());
121131

132+
boolean designPrimers = getProvider().getParameterByName(DESIGN_PRIMERS).extractValue(getPipelineCtx().getJob(), getProvider(), getStepIdx(), Boolean.class, true);
133+
boolean outputGenbank = getProvider().getParameterByName(OUTPUT_GENBANK).extractValue(getPipelineCtx().getJob(), getProvider(), getStepIdx(), Boolean.class, true);
134+
122135
TagPcrWrapper wrapper = new TagPcrWrapper(getPipelineCtx().getLogger());
123136

124137
String basename = SequenceAnalysisService.get().getUnzippedBaseName(inputBam.getName());
125138
File siteTable = new File(outputDir, basename + ".sites.txt");
126-
File primerTable = new File(outputDir, basename + ".primers.txt");
127-
File genbank = new File(outputDir, basename + ".sites.gb");
139+
140+
File primerTable = null;
141+
if (designPrimers)
142+
{
143+
primerTable = new File(outputDir, basename + ".primers.txt");
144+
}
145+
146+
File genbank = null;
147+
if (outputGenbank)
148+
{
149+
genbank = new File(outputDir, basename + ".sites.gb");
150+
}
128151
File metrics = getMetricsFile(inputBam, getPipelineCtx().getSourceDirectory());
129152

130153
wrapper.execute(inputBam, referenceGenome.getWorkingFastaFile(), siteTable, primerTable, genbank, metrics, blastDbs.get(referenceGenome.getGenomeId()));
@@ -254,7 +277,7 @@ public TagPcrWrapper(Logger log)
254277
super(log);
255278
}
256279

257-
public void execute(File bamFile, File referenceFasta, File outputTable, File primerTable, File genbankOutput, File metricsTable, File blastDbBase) throws PipelineJobException
280+
public void execute(File bamFile, File referenceFasta, File outputTable, @Nullable File primerTable, @Nullable File genbankOutput, File metricsTable, File blastDbBase) throws PipelineJobException
258281
{
259282
List<String> args = new ArrayList<>();
260283
args.addAll(getBaseArgs());
@@ -270,11 +293,17 @@ public void execute(File bamFile, File referenceFasta, File outputTable, File pr
270293
args.add("--output-table");
271294
args.add(outputTable.getPath());
272295

273-
args.add("--primer-pair-table");
274-
args.add(primerTable.getPath());
296+
if (primerTable != null)
297+
{
298+
args.add("--primer-pair-table");
299+
args.add(primerTable.getPath());
300+
}
275301

276-
args.add("--genbank-output");
277-
args.add(genbankOutput.getPath());
302+
if (genbankOutput != null)
303+
{
304+
args.add("--genbank-output");
305+
args.add(genbankOutput.getPath());
306+
}
278307

279308
args.add("--metrics-table");
280309
args.add(metricsTable.getPath());

0 commit comments

Comments
 (0)