Skip to content

Commit c3badb7

Browse files
committed
Automatically index VariantFiltration mask files
1 parent 633b4f7 commit c3badb7

File tree

4 files changed

+66
-2
lines changed

4 files changed

+66
-2
lines changed

SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/SequenceAnalysisService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ static public void setInstance(SequenceAnalysisService instance)
6161

6262
abstract public void registerReadsetHandler(SequenceOutputHandler<SequenceOutputHandler.SequenceReadsetProcessor> handler);
6363

64-
//abstract public File createTabixIndex(File input, @Nullable Logger log) throws PipelineJobException;
65-
6664
abstract public void registerDataProvider(SequenceDataProvider p);
6765

6866
abstract public List<NavItem> getNavItems(Container c, User u, SequenceDataProvider.SequenceNavItemCategory category);
@@ -102,4 +100,6 @@ static public void setInstance(SequenceAnalysisService instance)
102100
abstract public String getScriptPath(String moduleName, String path) throws PipelineJobException;
103101

104102
abstract public void sortGxf(Logger log, File input, @Nullable File output) throws PipelineJobException;
103+
104+
abstract public void ensureFeatureFileIndex(File input, Logger log) throws PipelineJobException;
105105
}

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.labkey.sequenceanalysis;
22

3+
import htsjdk.samtools.util.FileExtensions;
34
import htsjdk.tribble.Tribble;
45
import htsjdk.tribble.index.Index;
56
import htsjdk.tribble.index.IndexFactory;
@@ -47,6 +48,7 @@
4748
import org.labkey.sequenceanalysis.run.util.BgzipRunner;
4849
import org.labkey.sequenceanalysis.run.util.FastaIndexer;
4950
import org.labkey.sequenceanalysis.run.util.GxfSorter;
51+
import org.labkey.sequenceanalysis.run.util.IndexFeatureFileWrapper;
5052
import org.labkey.sequenceanalysis.run.util.TabixRunner;
5153
import org.labkey.sequenceanalysis.util.ReferenceLibraryHelperImpl;
5254
import org.labkey.sequenceanalysis.util.SequenceUtil;
@@ -485,4 +487,36 @@ public void sortGxf(Logger log, File input, @Nullable File output) throws Pipeli
485487
{
486488
new GxfSorter(log).sortGxf(input, output);
487489
}
490+
491+
@Override
492+
public void ensureFeatureFileIndex(File input, Logger log) throws PipelineJobException
493+
{
494+
if (SequenceUtil.FILETYPE.bed.getFileType().isType(input))
495+
{
496+
File expected = new File(input.getPath() + FileExtensions.TRIBBLE_INDEX);
497+
if (expected.exists())
498+
{
499+
log.debug("index exists: " + expected.getPath());
500+
}
501+
else
502+
{
503+
new IndexFeatureFileWrapper(log).ensureFeatureFileIndex(input);
504+
}
505+
}
506+
else if (SequenceUtil.FILETYPE.vcf.getFileType().isType(input))
507+
{
508+
try
509+
{
510+
ensureVcfIndex(input, log);
511+
}
512+
catch (IOException e)
513+
{
514+
throw new PipelineJobException(e);
515+
}
516+
}
517+
else
518+
{
519+
throw new IllegalArgumentException("Unexpected input file type, cannot index: " + input.getName());
520+
}
521+
}
488522
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.labkey.sequenceanalysis.run.util;
2+
3+
import org.apache.log4j.Logger;
4+
import org.labkey.api.pipeline.PipelineJobException;
5+
import org.labkey.api.sequenceanalysis.run.AbstractGatk4Wrapper;
6+
7+
import java.io.File;
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
11+
public class IndexFeatureFileWrapper extends AbstractGatk4Wrapper
12+
{
13+
public IndexFeatureFileWrapper(Logger log)
14+
{
15+
super(log);
16+
}
17+
18+
public void ensureFeatureFileIndex(File input) throws PipelineJobException
19+
{
20+
List<String> args1 = new ArrayList<>(getBaseArgs());
21+
args1.add("IndexFeatureFile");
22+
args1.add("-I");
23+
args1.add(input.getPath());
24+
execute(args1);
25+
}
26+
}

SequenceAnalysis/src/org/labkey/sequenceanalysis/run/variant/VariantFiltrationStep.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.labkey.api.exp.api.ExperimentService;
88
import org.labkey.api.pipeline.PipelineJob;
99
import org.labkey.api.pipeline.PipelineJobException;
10+
import org.labkey.api.sequenceanalysis.SequenceAnalysisService;
1011
import org.labkey.api.sequenceanalysis.pipeline.AbstractVariantProcessingStepProvider;
1112
import org.labkey.api.sequenceanalysis.pipeline.CommandLineParam;
1213
import org.labkey.api.sequenceanalysis.pipeline.PipelineContext;
@@ -115,6 +116,9 @@ public Output processVariants(File inputVCF, File outputDirectory, ReferenceGeno
115116
{
116117
throw new PipelineJobException("file not found for dataId: " + mask.opt("fileId"));
117118
}
119+
120+
SequenceAnalysisService.get().ensureFeatureFileIndex(maskData, getPipelineCtx().getLogger());
121+
118122
params.add(maskData.getPath());
119123
}
120124

0 commit comments

Comments
 (0)