From da5e567b73c2139e3cfb5847a4b33ad7588bab94 Mon Sep 17 00:00:00 2001 From: Phillip Dexheimer Date: Tue, 17 Jun 2014 23:38:03 -0400 Subject: [PATCH] Added functionality to CatVariants to process .list files with -V - Pivotal 70305712 --- .../gatk/tools/CatVariants.java | 25 +++++++++++++++++++ .../tools/CatVariantsIntegrationTest.java | 5 ++++ 2 files changed, 30 insertions(+) diff --git a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/CatVariants.java b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/CatVariants.java index 631e8e015..43403ab79 100644 --- a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/CatVariants.java +++ b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/CatVariants.java @@ -38,6 +38,7 @@ import org.broadinstitute.gatk.utils.commandline.Output; import org.broadinstitute.gatk.utils.commandline.CommandLineProgram; import org.broadinstitute.gatk.utils.help.DocumentedGATKFeature; import org.broadinstitute.gatk.utils.help.HelpConstants; +import org.broadinstitute.gatk.utils.text.XReadLines; import org.broadinstitute.gatk.utils.variant.GATKVCFIndexType; import org.broadinstitute.gatk.utils.variant.GATKVCFUtils; import htsjdk.variant.bcf2.BCF2Codec; @@ -196,6 +197,28 @@ public class CatVariants extends CommandLineProgram { return reader; } + /** + * Replaces any .list files in rawFileList with the files named in said .list file + * @param rawFileList the original file list, possibly including .list files + * @return a new List, with .list files replaced + */ + private List parseVariantList(final List rawFileList) { + final List result = new ArrayList<>(rawFileList.size()); + for (final File rawFile : rawFileList) { + if (rawFile.getName().endsWith(".list")) { + try { + for (final String line : new XReadLines(rawFile, true)) + result.add(new File(line)); + } catch (IOException e) { + throw new UserException.CouldNotReadInputFile(rawFile, e); + } + } else { + result.add(rawFile); + } + } + return result; + } + @Override protected int execute() throws Exception { BasicConfigurator.configure(); @@ -208,6 +231,8 @@ public class CatVariants extends CommandLineProgram { throw new UserException("Couldn't load provided reference sequence file " + refFile, e); } + variant = parseVariantList(variant); + Comparator> positionComparator = new PositionComparator(); Queue> priorityQueue; diff --git a/public/gatk-tools-public/src/test/java/org/broadinstitute/gatk/tools/CatVariantsIntegrationTest.java b/public/gatk-tools-public/src/test/java/org/broadinstitute/gatk/tools/CatVariantsIntegrationTest.java index 849267317..07ac8ab5d 100644 --- a/public/gatk-tools-public/src/test/java/org/broadinstitute/gatk/tools/CatVariantsIntegrationTest.java +++ b/public/gatk-tools-public/src/test/java/org/broadinstitute/gatk/tools/CatVariantsIntegrationTest.java @@ -78,6 +78,11 @@ public class CatVariantsIntegrationTest { for (String extension : AbstractFeatureReader.BLOCK_COMPRESSED_EXTENSIONS) new CatVariantsTestProvider("CatVariantsTest1.vcf" + extension, "CatVariantsTest2.vcf" + extension, BaseTest.createTempFile("CatVariantsTest", ".vcf" + extension), "33f728ac5c70ce2994f3619a27f47088"); + //Test list parsing functionality + new CatVariantsTestProvider("CatVariantsTest1.list", "CatVariantsTest2.vcf", BaseTest.createTempFile("CatVariantsTest", ".vcf"), "d0d81eb7fd3905256c4ac7c0fc480094"); + new CatVariantsTestProvider("CatVariantsTest1.vcf", "CatVariantsTest2.list", BaseTest.createTempFile("CatVariantsTest", ".vcf"), "d0d81eb7fd3905256c4ac7c0fc480094"); + new CatVariantsTestProvider("CatVariantsTest1.list", "CatVariantsTest2.list", BaseTest.createTempFile("CatVariantsTest", ".vcf"), "d0d81eb7fd3905256c4ac7c0fc480094"); + return CatVariantsTestProvider.getTests(CatVariantsTestProvider.class); }