Skip to content

Commit 02b932b

Browse files
authored
Merge pull request #177 from bimberlabinternal/24.11_fb_merge
Merge discvr-24.7 to discvr-24.11
2 parents 459e008 + a33ee84 commit 02b932b

File tree

7 files changed

+67
-113
lines changed

7 files changed

+67
-113
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/PrimeseqModule.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@ protected void init()
7272
@Override
7373
protected void doStartupAfterSpringConfig(ModuleContext moduleContext)
7474
{
75-
SequencePipelineService.get().registerResourceSettings(new ExacloudResourceSettings());
76-
7775
SystemMaintenance.addTask(new ClusterMaintenanceTask());
7876

7977
ClusterService.get().registerResourceAllocator(new BlastPipelineJobResourceAllocator.Factory());
@@ -109,6 +107,8 @@ public PipelineStartup()
109107
}
110108
else
111109
{
110+
SequencePipelineService.get().registerResourceSettings(new ExacloudResourceSettings());
111+
112112
SequencePipelineService.get().registerPipelineStep(new BismarkWrapper.Provider());
113113
SequencePipelineService.get().registerPipelineStep(new BismarkWrapper.MethylationExtractorProvider());
114114

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: 29 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;
@@ -55,30 +57,47 @@ public Collection<String> getDockerVolumes(Container c)
5557
Set<String> volumes = new HashSet<>();
5658
volumes.add("/home/groups/prime-seq");
5759
volumes.add("/home/exacloud/gscratch");
60+
volumes.add("/mnt/scratch");
5861

5962
PipeRoot pr = PipelineService.get().findPipelineRoot(c);
6063
if (pr != null && pr.getRootPath().exists())
6164
{
62-
if (pr.getRootPath().getPath().startsWith("/home/groups/"))
63-
{
64-
String folderName = pr.getRootPath().getPath().replaceAll("^/home/groups/", "").split("/")[0];
65-
volumes.add("/home/groups/" + folderName);
66-
}
65+
volumes.add(convertHomeGroups(pr.getRootPath()).getPath());
6766
}
6867

6968
if (c.isWorkbook())
7069
{
7170
PipeRoot pr2 = PipelineService.get().findPipelineRoot(c.getParent());
7271
if (pr2 != null && pr2.getRootPath().exists())
7372
{
74-
if (pr2.getRootPath().getPath().startsWith("/home/groups/"))
75-
{
76-
String folderName = pr2.getRootPath().getPath().replaceAll("^/home/groups/", "").split("/")[0];
77-
volumes.add("/home/groups/" + folderName);
78-
}
73+
volumes.add(convertHomeGroups(pr2.getRootPath()).getPath());
7974
}
8075
}
8176

8277
return volumes;
8378
}
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+
input = input.isDirectory() ? input : input.getParentFile();
96+
if (input.getPath().startsWith("/home/exacloud/gscratch"))
97+
{
98+
return new File("/home/exacloud/gscratch");
99+
}
100+
101+
return convertHomeGroups(input);
102+
}
84103
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@ private void possiblyAddQOS(PipelineJob job, RemoteExecutionEngine engine, List<
595595

596596
private String getPartition(PipelineJob job)
597597
{
598-
return needsGPUs(job) ? "gpu" : "exacloud";
598+
return needsGPUs(job) ? "gpu" : "batch";
599599
}
600600

601601
private Long getFileSize(PipelineJob job)

0 commit comments

Comments
 (0)