Skip to content

Commit 15811a6

Browse files
committed
Signficiant refactor of docker in pipeline jobs to migrate everything to DockerWrapper and improve handling of input file locations
1 parent 5d29dc5 commit 15811a6

File tree

5 files changed

+62
-110
lines changed

5 files changed

+62
-110
lines changed

primeseq/resources/external/comb-p/Dockerfile

Lines changed: 0 additions & 10 deletions
This file was deleted.

primeseq/resources/external/comb-p/combpWrapper.sh

Lines changed: 0 additions & 21 deletions
This file was deleted.

primeseq/src/org/labkey/primeseq/analysis/MethylationRateComparisonHandler.java

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,19 @@
2929
import org.labkey.api.security.User;
3030
import org.labkey.api.sequenceanalysis.SequenceOutputFile;
3131
import org.labkey.api.sequenceanalysis.pipeline.PipelineContext;
32+
import org.labkey.api.sequenceanalysis.pipeline.PipelineOutputTracker;
3233
import org.labkey.api.sequenceanalysis.pipeline.SequenceAnalysisJobSupport;
3334
import org.labkey.api.sequenceanalysis.pipeline.SequenceOutputHandler;
3435
import org.labkey.api.sequenceanalysis.pipeline.SequencePipelineService;
3536
import org.labkey.api.sequenceanalysis.run.AbstractCommandWrapper;
3637
import org.labkey.api.sequenceanalysis.run.CommandWrapper;
38+
import org.labkey.api.sequenceanalysis.run.DockerWrapper;
3739
import org.labkey.api.util.FileType;
3840
import org.labkey.api.util.FileUtil;
3941
import org.labkey.api.util.Pair;
4042
import org.labkey.api.view.ActionURL;
4143
import org.labkey.api.writer.PrintWriters;
4244
import org.labkey.primeseq.PrimeseqModule;
43-
import org.labkey.primeseq.pipeline.CombpRunner;
4445

4546
import java.io.BufferedReader;
4647
import java.io.File;
@@ -487,8 +488,7 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
487488
Double seed = ctx.getParams().optDouble("seed", 0.05);
488489
Integer step = ctx.getParams().optInt("step", 100);
489490

490-
CombpRunner combp = new CombpRunner(ctx.getLogger());
491-
File outBed = combp.runCompP(finalOut, ctx.getOutputDir(), dist, seed, step);
491+
File outBed = runCompP(finalOut, ctx.getOutputDir(), dist, seed, step, ctx, ctx.getFileManager());
492492
SequenceOutputFile so2 = new SequenceOutputFile();
493493
so2.setName("Comb-p: " + ctx.getJob().getDescription());
494494
so2.setDescription("Comb-p: " + jobDescription);
@@ -726,4 +726,36 @@ else if (i2.compareTo(il) > 0)
726726
}
727727
}
728728
}
729+
730+
private File runCompP(File inputBed, File outputDir, int dist, double seed, int stepSize, PipelineContext ctx, PipelineOutputTracker tracker) throws PipelineJobException
731+
{
732+
// See: https://github.com/bbimber/combpdocker
733+
DockerWrapper wrapper = new DockerWrapper("bbimber/combpdocker", ctx.getLogger(), ctx);
734+
File outputPrefix = new File(outputDir, FileUtil.getBaseName(inputBed) + ".combp");
735+
736+
List<String> args = new ArrayList<>();
737+
args.add("comb-p");
738+
args.add("pipeline");
739+
args.add("-c");
740+
args.add("5");
741+
args.add("--dist");
742+
args.add(String.valueOf(dist));
743+
args.add("--step");
744+
args.add(String.valueOf(stepSize));
745+
args.add("--seed");
746+
args.add(String.valueOf(seed));
747+
args.add("--p");
748+
args.add(outputPrefix.getPath());
749+
args.add(inputBed.getPath());
750+
751+
wrapper.executeWithDocker(args, ctx.getWorkingDirectory(), tracker, Arrays.asList(inputBed));
752+
753+
File outputBed = new File(outputPrefix.getPath() + ".regions.bed");
754+
if (!outputBed.exists())
755+
{
756+
throw new PipelineJobException("Unable to find expected output: " + outputBed.getPath());
757+
}
758+
759+
return outputBed;
760+
}
729761
}

primeseq/src/org/labkey/primeseq/pipeline/CombpRunner.java

Lines changed: 0 additions & 66 deletions
This file was deleted.

primeseq/src/org/labkey/primeseq/pipeline/ExacloudResourceSettings.java

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.labkey.primeseq.pipeline;
22

3+
import org.jetbrains.annotations.Nullable;
34
import org.json.JSONObject;
45
import org.labkey.api.data.Container;
56
import org.labkey.api.module.ModuleLoader;
@@ -9,6 +10,7 @@
910
import org.labkey.api.sequenceanalysis.pipeline.ToolParameterDescriptor;
1011
import org.labkey.primeseq.PrimeseqModule;
1112

13+
import java.io.File;
1214
import java.util.Arrays;
1315
import java.util.Collection;
1416
import java.util.HashSet;
@@ -60,26 +62,41 @@ public Collection<String> getDockerVolumes(Container c)
6062
PipeRoot pr = PipelineService.get().findPipelineRoot(c);
6163
if (pr != null && pr.getRootPath().exists())
6264
{
63-
if (pr.getRootPath().getPath().startsWith("/home/groups/"))
64-
{
65-
String folderName = pr.getRootPath().getPath().replaceAll("^/home/groups/", "").split("/")[0];
66-
volumes.add("/home/groups/" + folderName);
67-
}
65+
volumes.add(convertHomeGroups(pr.getRootPath()).getPath());
6866
}
6967

7068
if (c.isWorkbook())
7169
{
7270
PipeRoot pr2 = PipelineService.get().findPipelineRoot(c.getParent());
7371
if (pr2 != null && pr2.getRootPath().exists())
7472
{
75-
if (pr2.getRootPath().getPath().startsWith("/home/groups/"))
76-
{
77-
String folderName = pr2.getRootPath().getPath().replaceAll("^/home/groups/", "").split("/")[0];
78-
volumes.add("/home/groups/" + folderName);
79-
}
73+
volumes.add(convertHomeGroups(pr2.getRootPath()).getPath());
8074
}
8175
}
8276

8377
return volumes;
8478
}
79+
80+
private File convertHomeGroups(File input)
81+
{
82+
input = input.isDirectory() ? input : input.getParentFile();
83+
if (input.getPath().startsWith("/home/groups/"))
84+
{
85+
String folderName = input.getPath().replaceAll("^/home/groups/", "").split("/")[0];
86+
return new File("/home/groups/" + folderName);
87+
}
88+
89+
return input;
90+
}
91+
92+
@Override
93+
public @Nullable File inferDockerVolume(File input)
94+
{
95+
if (input.getPath().startsWith("/home/exacloud/gscratch"))
96+
{
97+
return new File("/home/exacloud/gscratch");
98+
}
99+
100+
return convertHomeGroups(input);
101+
}
85102
}

0 commit comments

Comments
 (0)