Skip to content

Commit 62c5b7e

Browse files
authored
Improve logic around VCF index creation (#172)
1 parent 52ecb8a commit 62c5b7e

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

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

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -253,16 +253,10 @@ public File ensureVcfIndex(File vcf, Logger log, boolean forceRecreate) throws I
253253
try
254254
{
255255
FileType gz = new FileType(".gz");
256-
File expected = new File(vcf.getPath() + FileExtensions.TRIBBLE_INDEX);
257-
File tbi = new File(vcf.getPath() + ".tbi");
258-
259-
if (!forceRecreate && expected.exists())
260-
{
261-
return expected;
262-
}
263-
else if (!forceRecreate && tbi.exists())
256+
File expectedIdx = gz.isType(vcf) ? new File(vcf.getPath() + ".tbi") : new File(vcf.getPath() + FileExtensions.TRIBBLE_INDEX);
257+
if (!forceRecreate && expectedIdx.exists())
264258
{
265-
return tbi;
259+
return expectedIdx;
266260
}
267261
else
268262
{
@@ -272,15 +266,23 @@ else if (!forceRecreate && tbi.exists())
272266
{
273267
TabixRunner r = new TabixRunner(log);
274268
r.execute(vcf);
269+
if (!expectedIdx.exists())
270+
{
271+
throw new PipelineJobException("Expected index was not created: " + expectedIdx.getPath());
272+
}
275273

276-
return tbi;
274+
return expectedIdx;
277275
}
278276
else
279277
{
280278
Index idx = IndexFactory.createDynamicIndex(vcf, new VCFCodec());
281279
idx.writeBasedOnFeatureFile(vcf);
280+
if (!expectedIdx.exists())
281+
{
282+
throw new PipelineJobException("Expected index was not created: " + expectedIdx.getPath());
283+
}
282284

283-
return expected;
285+
return expectedIdx;
284286
}
285287
}
286288
}

0 commit comments

Comments
 (0)