Skip to content

Commit a5a2621

Browse files
committed
Additional support for VCF indexing
1 parent 29ca7a3 commit a5a2621

File tree

7 files changed

+46
-49
lines changed

7 files changed

+46
-49
lines changed

SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/run/AbstractDiscvrSeqWrapper.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ public AbstractDiscvrSeqWrapper(Logger log)
1010
super(log);
1111
}
1212

13+
@Override
14+
protected String getPackageName()
15+
{
16+
return "DISCVRSEQPATH";
17+
}
18+
1319
@Override
1420
protected String getJarName()
1521
{

SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/run/AbstractGatk4Wrapper.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import htsjdk.variant.utils.SAMSequenceDictionaryExtractor;
44
import org.apache.commons.lang3.StringUtils;
55
import org.apache.logging.log4j.Logger;
6-
import org.apache.logging.log4j.LogManager;
6+
import org.jetbrains.annotations.Nullable;
77
import org.labkey.api.pipeline.PipelineJobException;
88
import org.labkey.api.pipeline.PipelineJobService;
99
import org.labkey.api.sequenceanalysis.SequenceAnalysisService;
@@ -36,7 +36,7 @@ protected String getJarName()
3636

3737
protected File getJAR()
3838
{
39-
String path = PipelineJobService.get().getConfigProperties().getSoftwarePackagePath("GATKPATH");
39+
String path = PipelineJobService.get().getConfigProperties().getSoftwarePackagePath(getPackageName());
4040
if (path != null)
4141
{
4242
return new File(path);
@@ -56,7 +56,7 @@ public void setMaxRamOverride(Integer maxRamOverride)
5656
_maxRamOverride = maxRamOverride;
5757
}
5858

59-
protected void addJavaHomeToEnvironment()
59+
public void addJava8HomeToEnvironment()
6060
{
6161
//since GATK requires java8, set JAVA_HOME to match this:
6262
File java8 = new File(SequencePipelineService.get().getJava8FilePath()).getParentFile();
@@ -98,13 +98,28 @@ public String getVersionString() throws PipelineJobException
9898
}
9999

100100
public List<String> getBaseArgs()
101+
{
102+
return getBaseArgs(null);
103+
}
104+
105+
protected String getPackageName()
106+
{
107+
return "GATKPATH";
108+
}
109+
110+
public List<String> getBaseArgs(@Nullable String toolName)
101111
{
102112
List<String> args = new ArrayList<>();
103113
args.add(SequencePipelineService.get().getJava8FilePath());
104114
args.addAll(SequencePipelineService.get().getJavaOpts(_maxRamOverride));
105115
args.add("-jar");
106116
args.add(getJAR().getPath());
107117

118+
if (toolName != null)
119+
{
120+
args.add(toolName);
121+
}
122+
108123
return args;
109124
}
110125

Lines changed: 1 addition & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,11 @@
11
package org.labkey.api.sequenceanalysis.run;
22

33
import org.apache.logging.log4j.Logger;
4-
import org.apache.logging.log4j.LogManager;
5-
import org.labkey.api.pipeline.PipelineJobService;
6-
import org.labkey.api.sequenceanalysis.pipeline.SequencePipelineService;
7-
import org.labkey.api.sequenceanalysis.run.AbstractCommandWrapper;
8-
import java.io.File;
9-
import java.util.ArrayList;
10-
import java.util.List;
114

12-
public class DISCVRSeqRunner extends AbstractCommandWrapper
5+
public class DISCVRSeqRunner extends AbstractDiscvrSeqWrapper
136
{
147
public DISCVRSeqRunner(Logger log)
158
{
169
super(log);
1710
}
18-
19-
protected String getJarName()
20-
{
21-
return "DISCVRSeq.jar";
22-
}
23-
24-
protected File getJar()
25-
{
26-
String path = PipelineJobService.get().getConfigProperties().getSoftwarePackagePath("DISCVRSEQPATH");
27-
if (path != null)
28-
{
29-
return new File(path);
30-
}
31-
32-
path = PipelineJobService.get().getConfigProperties().getSoftwarePackagePath(SequencePipelineService.SEQUENCE_TOOLS_PARAM);
33-
if (path == null)
34-
{
35-
path = PipelineJobService.get().getAppProperties().getToolsDirectory();
36-
}
37-
38-
return path == null ? new File(getJarName()) : new File(path, getJarName());
39-
40-
}
41-
42-
public List<String> getBaseArgs(String toolName)
43-
{
44-
List<String> args = new ArrayList<>();
45-
args.add(SequencePipelineService.get().getJava8FilePath());
46-
args.addAll(SequencePipelineService.get().getJavaOpts());
47-
args.add("-jar");
48-
args.add(getJar().getPath());
49-
args.add(toolName);
50-
51-
return args;
52-
}
5311
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ public File ensureVcfIndex(File vcf, Logger log, boolean forceRecreate) throws I
275275
}
276276
else
277277
{
278-
Index idx = IndexFactory.createDynamicIndex(vcf, new VCFCodec());
278+
Index idx = vcf.getName().toLowerCase().endsWith(".gz") ? IndexFactory.createIndex(vcf, new VCFCodec(), IndexFactory.IndexType.TABIX) : IndexFactory.createDynamicIndex(vcf, new VCFCodec());
279279
idx.writeBasedOnFeatureFile(vcf);
280280
if (!expectedIdx.exists())
281281
{

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,11 @@ public String getJava8FilePath()
272272
java8Home = StringUtils.trimToNull(System.getenv("JDK_18"));
273273
}
274274

275+
if (java8Home == null && StringUtils.trimToNull(System.getenv("JAVA_HOME_8")) != null)
276+
{
277+
java8Home = StringUtils.trimToNull(System.getenv("JAVA_HOME_8"));
278+
}
279+
275280
if (java8Home != null)
276281
{
277282
File ret = new File(java8Home, "bin");

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,11 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
230230

231231
private File runPbsvCall(JobContext ctx, List<File> inputs, ReferenceGenome genome, String outputBaseName, @Nullable String contig, boolean jobCompleted) throws PipelineJobException
232232
{
233+
if (contig != null)
234+
{
235+
ctx.getJob().setStatus(PipelineJob.TaskStatus.running, "Processing: " + contig);
236+
}
237+
233238
if (inputs.isEmpty())
234239
{
235240
throw new PipelineJobException("No inputs provided");

jbrowse/src/org/labkey/jbrowse/model/JsonFile.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,7 @@ public File prepareResource(Logger log, boolean throwIfNotPrepared, boolean forc
856856

857857
// Ensure index check runs even if file was already gzipped:
858858
File idx = new File(targetFile.getPath() + ".tbi");
859-
if (needsGzip() && (forceReprocess || !idx.exists()))
859+
if (targetFile.getName().toLowerCase().endsWith(".gz") && (forceReprocess || !idx.exists()))
860860
{
861861
createIndex(targetFile, log, idx, throwIfNotPrepared);
862862
}
@@ -935,11 +935,13 @@ public File prepareResource(Logger log, boolean throwIfNotPrepared, boolean forc
935935
return targetFile;
936936
}
937937

938-
private void prepareLuceneIndex(Logger log)
938+
private void prepareLuceneIndex(Logger log) throws PipelineJobException
939939
{
940940
log.debug("Generating VCF full text index for file: " + getExpData().getFile().getName());
941941

942942
DISCVRSeqRunner runner = new DISCVRSeqRunner(log);
943+
runner.addJava8HomeToEnvironment();
944+
943945
List<String> args = runner.getBaseArgs("VcfToLuceneIndexer");
944946
args.add("-V");
945947
args.add(getExpData().getFile().getPath());
@@ -977,6 +979,8 @@ private void prepareLuceneIndex(Logger log)
977979
args.add(field);
978980
}
979981
}
982+
983+
runner.execute(args);
980984
}
981985

982986
protected void createIndex(File finalLocation, Logger log, File idx, boolean throwIfNotPrepared) throws PipelineJobException
@@ -1001,6 +1005,10 @@ else if (TRACK_TYPES.gtf.getFileType().isType(finalLocation) || TRACK_TYPES.gff.
10011005
Index index = IndexFactory.createIndex(finalLocation.toPath(), new Gff3Codec(), IndexFactory.IndexType.TABIX);
10021006
index.write(idx);
10031007
}
1008+
else if (TRACK_TYPES.vcf.getFileType().isType(finalLocation))
1009+
{
1010+
SequenceAnalysisService.get().ensureVcfIndex(finalLocation, log);
1011+
}
10041012
else
10051013
{
10061014
log.warn("Cannot create tabix index on windows!");

0 commit comments

Comments
 (0)