From a0e00bba8a272bbcb88da6e213ff37558694e3c1 Mon Sep 17 00:00:00 2001 From: Orli Cohen Date: Mon, 18 Jul 2022 13:01:07 -0400 Subject: [PATCH] finished table analysis and added documentation --- .../tools/reference/CompareReferences.java | 66 ++++++----- .../tools/reference/ReferencePair.java | 21 ++++ .../reference/ReferenceSequenceTable.java | 66 +++++++---- .../CompareReferencesIntegrationTest.java | 19 ++-- .../ReferenceSequenceTableUnitTest.java | 103 +++++++++++++++++- ...equence.dict => hg19mini_missingchr1.dict} | 0 ...uence.fasta => hg19mini_missingchr1.fasta} | 0 ...sta.fai => hg19mini_missingchr1.fasta.fai} | 0 8 files changed, 211 insertions(+), 64 deletions(-) rename src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/{hg19mini_missingsequence.dict => hg19mini_missingchr1.dict} (100%) rename src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/{hg19mini_missingsequence.fasta => hg19mini_missingchr1.fasta} (100%) rename src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/{hg19mini_missingsequence.fasta.fai => hg19mini_missingchr1.fasta.fai} (100%) diff --git a/src/main/java/org/broadinstitute/hellbender/tools/reference/CompareReferences.java b/src/main/java/org/broadinstitute/hellbender/tools/reference/CompareReferences.java index 962e362b859..0bcdc115348 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/reference/CompareReferences.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/reference/CompareReferences.java @@ -29,13 +29,20 @@ public class CompareReferences extends GATKTool { @Argument(fullName = "references-to-compare", shortName = "refcomp", doc = "Reference sequence file(s) to compare.") private List references; - @Argument(fullName = StandardArgumentDefinitions.OUTPUT_LONG_NAME, shortName = StandardArgumentDefinitions.OUTPUT_SHORT_NAME, doc = "", optional = true) + /** + * Output file will be written here. + * + * Note: If no output file provided, table will print to standard output. + */ + @Argument(fullName = StandardArgumentDefinitions.OUTPUT_LONG_NAME, shortName = StandardArgumentDefinitions.OUTPUT_SHORT_NAME, doc = "If provided, file to output table.", optional = true) private GATKPath output; - @Argument(fullName = "md5-calculation-mode", shortName = "md5-calculation-mode", doc = "", optional = true) + @Argument(fullName = "md5-calculation-mode", shortName = "md5-calculation-mode", doc = "MD5CalculationMode indicating method of MD5 calculation.", optional = true) private MD5CalculationMode md5CalculationMode = MD5CalculationMode.USE_DICT; + @Argument(fullName = "display-sequences-by-name", doc = "If provided, the table by sequence name will be printed.", optional = true) + private boolean displaySequencesByName = false; - @Argument(fullName = "display-only-differing-sequences", shortName = "", doc = "", optional = true) + @Argument(fullName = "display-only-differing-sequences", doc = "If provided, only display sequence names ", optional = true) private boolean onlyDisplayDifferingSequences = false; public enum MD5CalculationMode { @@ -75,19 +82,24 @@ public void traverse(){ writeTableToFileOutput(table); } - //displayMissingEntries(table); - listDifferentSequenceSameName(table); - //writeTableToStdOutput(table); + if(displaySequencesByName){ + tableBySequenceName(table); + } List refs = new ArrayList<>(); refs.addAll(referenceSources.keySet()); - //table.generateReferencePairs(refs); + List referencePairs = table.analyzeTable(); for(ReferencePair pair : referencePairs){ System.out.println(pair); } } + /** + * Given a table, write table to standard output. + * + * @param table + */ private void writeTableToStdOutput(ReferenceSequenceTable table){ // print header List columnNames = table.getColumnNames(); @@ -110,6 +122,11 @@ private void writeTableToStdOutput(ReferenceSequenceTable table){ } } + /** + * Given a table, write table to file output. + * + * @param table + */ private void writeTableToFileOutput(ReferenceSequenceTable table) { TableColumnCollection columns = new TableColumnCollection(table.getColumnNames()); try(CompareReferences.CompareReferencesOutputTableWriter writer = new CompareReferences.CompareReferencesOutputTableWriter(output.toPath(), columns)){ @@ -128,33 +145,12 @@ public Object onTraversalSuccess() { return null; } - public void displayMissingEntries(ReferenceSequenceTable table) { - boolean noMissingEntries = true; - String output = ""; - int currRow = 0; - - for(ReferenceSequenceTable.TableRow row : table){ - currRow++; - ReferenceSequenceTable.TableEntry[] entries = row.getEntries(); - - for(int i = 0; i < entries.length; i++){ - if(entries[i].isEmpty()){ - output += String.format("Row %d: Missing entry in %s column.\n", currRow, entries[i].getColumnName()); - noMissingEntries = false; - } - } - } - - if(noMissingEntries){ - output += "No missing entries.\n"; - } - else{ - output += "References are not an exact match. See table output for details.\n"; - } - System.out.println(output); - } - - public void listDifferentSequenceSameName(ReferenceSequenceTable table){ + /** + * Given a table, write table by sequence name to standard output + * + * @param table + */ + public void tableBySequenceName(ReferenceSequenceTable table){ List output = new ArrayList<>(); output.add("Sequence \tMD5 \tReference\n"); @@ -175,7 +171,7 @@ public void listDifferentSequenceSameName(ReferenceSequenceTable table){ System.out.println(); } - public List displayBySequenceName(Set rows, String sequenceName){ + private List displayBySequenceName(Set rows, String sequenceName){ List output = new ArrayList<>(); output.add(sequenceName); for(ReferenceSequenceTable.TableRow row : rows) { diff --git a/src/main/java/org/broadinstitute/hellbender/tools/reference/ReferencePair.java b/src/main/java/org/broadinstitute/hellbender/tools/reference/ReferencePair.java index 1046a8d9f89..ba92677962b 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/reference/ReferencePair.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/reference/ReferencePair.java @@ -51,6 +51,11 @@ public String getRef2(){ return ref2.toPath().getFileName().toString(); } + /** + * Displays a ReferencePair's status set + * + * @return the status set as a formatted String + */ public String statusAsString(){ String output = ""; for(Status status : analysis){ @@ -59,6 +64,10 @@ public String statusAsString(){ return output; } + public EnumSet getStatus(){ + return analysis; + } + public String toString(){ return String.format("REFERENCE PAIR: %s, %s\nStatus:\n%s", ReferenceSequenceTable.getReferenceDisplayName(ref1), @@ -66,4 +75,16 @@ public String toString(){ statusAsString()); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ReferencePair that = (ReferencePair) o; + return Objects.equals(ref1, that.ref1) && Objects.equals(ref2, that.ref2); + } + + @Override + public int hashCode() { + return Objects.hash(ref1, ref2); + } } diff --git a/src/main/java/org/broadinstitute/hellbender/tools/reference/ReferenceSequenceTable.java b/src/main/java/org/broadinstitute/hellbender/tools/reference/ReferenceSequenceTable.java index 96f97dd56f5..c93b4b4525b 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/reference/ReferenceSequenceTable.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/reference/ReferenceSequenceTable.java @@ -60,6 +60,12 @@ public List getColumnNames() { return columnNames; } + /** + * Given a GATKPath, return the name of the file as a String. + * + * @param reference The path to a reference. + * @return the name of the reference as a String. + */ public static String getReferenceDisplayName(GATKPath reference){ return reference.toPath().getFileName().toString(); } @@ -68,6 +74,9 @@ public Map getColumnIndices() { return columnIndices; } + /** + * Construct 2 tables of references: one keyed by MD5, one keyed by sequence name. + */ public void build() { tableByMD5 = new LinkedHashMap<>(); tableBySequenceName = new LinkedHashMap<>(); @@ -102,19 +111,22 @@ public Set getAllSequenceNames(){ return tableBySequenceName.keySet(); } - // number of rows in md5 keyed table - public int size(){ - int size = 0; - for(TableRow row : this){ - size++; - } - return size; - } - + /** + * Given an MD5, returns its corresponding row + * + * @param md5 The MD5 as a String + * @return the corresponding TableRow from the tableByMD5 + */ public TableRow queryByMD5(String md5){ return tableByMD5.get(md5); } + /** + * Given a sequence name, returns the set of its corresponding rows + * + * @param sequenceName The sequence name as a String + * @return the set of TableRows that contain the sequence name + */ public Set queryBySequenceName(String sequenceName){ return tableBySequenceName.get(sequenceName) == null ? Collections.emptySet() : tableBySequenceName.get(sequenceName); } @@ -146,7 +158,12 @@ private String calculateMD5(SAMSequenceRecord record, ReferenceDataSource source return md5; } - public List generateReferencePairs(List references){ + /** + * Generate ReferencePairs for pairwise comparison of all references present in the table + * + * @return the list of ReferencePairs for every pair of references + */ + public List generateReferencePairs(){ List referencePairs = new ArrayList<>(); for(int i = 0; i < references.size(); i++){ for(int j = i + 1; j < references.size(); j++){ @@ -156,8 +173,20 @@ public List generateReferencePairs(List references){ return referencePairs; } + /** + * Analyze the table by doing a pairwise comparison for all table references. Generates all ReferencePairs, then analyzes + * each pair and assigns it an analysis as a set of the following statuses: + * EXACT_MATCH, + * DIFFER_IN_SEQUENCE_NAMES, + * DIFFER_IN_SEQUENCE, + * DIFFER_IN_SEQUENCES_PRESENT, + * SUPERSET, + * SUBSET + * + * @return list of ReferencePairs with updated status sets + */ public List analyzeTable(){ - List refPairs = generateReferencePairs(references); + List refPairs = generateReferencePairs(); for(TableRow row : tableByMD5.values()) { for(ReferencePair pair : refPairs) { @@ -198,7 +227,7 @@ public List analyzeTable(){ if(ref1Value.getColumnValue().equals(MISSING_ENTRY)){ subset = true; } - else{ + else if(ref2Value.getColumnValue().equals(MISSING_ENTRY)){ superset = true; } } @@ -215,12 +244,12 @@ public List analyzeTable(){ if(superset ^ subset){ pair.removeStatus(ReferencePair.Status.DIFFER_IN_SEQUENCES_PRESENT); - } - if(superset && !subset){ - pair.addStatus(ReferencePair.Status.SUPERSET); - } else if(subset && !superset) { - pair.addStatus(ReferencePair.Status.SUBSET); + if(superset && !subset){ + pair.addStatus(ReferencePair.Status.SUPERSET); + } else if(subset && !superset) { + pair.addStatus(ReferencePair.Status.SUBSET); + } } } return refPairs; @@ -263,9 +292,6 @@ public int hashCode() { } public class TableRow { - -// private static final int MD5_COLUMN_INDEX = 0; -// private static final int LENGTH_COLUMN_INDEX = 1; private final String md5; private final TableEntry[] entries; private final int length; diff --git a/src/test/java/org/broadinstitute/hellbender/tools/reference/CompareReferencesIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/reference/CompareReferencesIntegrationTest.java index d53aa16cd14..b1f2c122596 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/reference/CompareReferencesIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/reference/CompareReferencesIntegrationTest.java @@ -99,33 +99,36 @@ public void testCompareReferencesUseDictMD5MissingValue() throws IOException{ runCommandLine(args); } - @Test + // The following three tests run the tool on different combinations of reference files + // and produce output to stdout for the sake of manually inspecting outputs. + // Disabled, as no actual assertions made. + + @Test(enabled = false) public void testCompareReferencesToStdOutput() throws IOException{ final File ref1 = new File(getToolTestDataDir() + "hg19mini.fasta"); - final File ref2 = new File(getToolTestDataDir() + "hg19mini_missingsequence.fasta"); + final File ref2 = new File(getToolTestDataDir() + "hg19mini_missingchr1.fasta"); final String[] args = new String[] {"-R", ref1.getAbsolutePath() , "-refcomp", ref2.getAbsolutePath()}; runCommandLine(args); } - @Test + @Test(enabled = false) public void testCompareReferencesMultipleReferencesStdOut() throws IOException{ final File ref1 = new File(getToolTestDataDir() + "hg19mini.fasta"); final File ref2 = new File(getToolTestDataDir() + "hg19mini_1renamed.fasta"); final File ref3 = new File(getToolTestDataDir() + "hg19mini_chr2snp.fasta"); - final File ref4 = new File(getToolTestDataDir() + "hg19mini_missingsequence.fasta"); + final File ref4 = new File(getToolTestDataDir() + "hg19mini_missingchr1.fasta"); final String[] args = new String[] {"-R", ref1.getAbsolutePath() , "-refcomp", ref2.getAbsolutePath(), "-refcomp", ref3.getAbsolutePath(), - "-refcomp", ref4.getAbsolutePath(), - }; + "-refcomp", ref4.getAbsolutePath()}; runCommandLine(args); } - @Test + @Test(enabled = false) public void testCompareReferencesMissingSequencesStdOut() throws IOException{ final File ref1 = new File(getToolTestDataDir() + "hg19mini.fasta"); final File ref2 = new File(getToolTestDataDir() + "hg19mini_missingchr3.fasta"); - final File ref3 = new File(getToolTestDataDir() + "hg19mini_missingsequence.fasta"); + final File ref3 = new File(getToolTestDataDir() + "hg19mini_missingchr1.fasta"); final String[] args = new String[] {"-R", ref1.getAbsolutePath() , "-refcomp", ref2.getAbsolutePath(), "-refcomp", ref3.getAbsolutePath()}; runCommandLine(args); diff --git a/src/test/java/org/broadinstitute/hellbender/tools/reference/ReferenceSequenceTableUnitTest.java b/src/test/java/org/broadinstitute/hellbender/tools/reference/ReferenceSequenceTableUnitTest.java index 617458119a7..1bf63a1c4d8 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/reference/ReferenceSequenceTableUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/reference/ReferenceSequenceTableUnitTest.java @@ -56,6 +56,7 @@ public void testQueryByMD5(String md5, int length, ReferenceSequenceTable table) @DataProvider(name = "testQueryBySequenceNameData") public Object[][] testQueryBySequenceNameData() { return new Object[][]{ + // sequence name, expected number of rows, table new Object[]{ "2", 2, tableGenerator(Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta"), new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_chr2snp.fasta")), @@ -101,6 +102,7 @@ public void testQueryBySequenceName(String expectedSequenceName, int expectedRow @DataProvider(name = "testGenerateReferencePairsData") public Object[][] testGenerateReferencePairsData() { return new Object[][]{ + // references, expected number of pairs new Object[]{ Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta"), new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_chr2snp.fasta")), 1 @@ -116,9 +118,108 @@ public Object[][] testGenerateReferencePairsData() { @Test(dataProvider = "testGenerateReferencePairsData") public void testGenerateReferencePairs(List references, int expectedPairs){ ReferenceSequenceTable table = tableGenerator(references, CompareReferences.MD5CalculationMode.USE_DICT); - List pairs = table.generateReferencePairs(references); + List pairs = table.generateReferencePairs(); Assert.assertEquals(pairs.size(), expectedPairs); } + @DataProvider(name = "testAnalyzeTableTwoRefsData") + public Object[][] testAnalyzeTableTwoReferencesData(){ + return new Object[][]{ + // table, set of expected statuses + new Object[]{ tableGenerator(Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_chr2snp.fasta")), + CompareReferences.MD5CalculationMode.USE_DICT), + new HashSet<>(Arrays.asList(ReferencePair.Status.DIFFER_IN_SEQUENCE)) + }, + new Object[]{ tableGenerator(Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_1renamed.fasta")), + CompareReferences.MD5CalculationMode.USE_DICT), + new HashSet<>(Arrays.asList(ReferencePair.Status.DIFFER_IN_SEQUENCE_NAMES)) + }, + new Object[]{ tableGenerator(Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr3.fasta")), + CompareReferences.MD5CalculationMode.USE_DICT), + new HashSet<>(Arrays.asList(ReferencePair.Status.SUPERSET)) + }, + new Object[]{ tableGenerator(Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr3.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta")), + CompareReferences.MD5CalculationMode.USE_DICT), + new HashSet<>(Arrays.asList(ReferencePair.Status.SUBSET)) + }, + new Object[]{ tableGenerator(Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr1.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr3.fasta")), + CompareReferences.MD5CalculationMode.USE_DICT), + new HashSet<>(Arrays.asList(ReferencePair.Status.DIFFER_IN_SEQUENCES_PRESENT)) + }, + new Object[]{ tableGenerator(Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta")), + CompareReferences.MD5CalculationMode.USE_DICT), + new HashSet<>(Arrays.asList(ReferencePair.Status.EXACT_MATCH)) + }, + new Object[]{ tableGenerator(Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_chr2snp.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr3.fasta")), + CompareReferences.MD5CalculationMode.USE_DICT), + new HashSet<>(Arrays.asList(ReferencePair.Status.DIFFER_IN_SEQUENCES_PRESENT, ReferencePair.Status.DIFFER_IN_SEQUENCE)) + }, + }; + } + + @Test(dataProvider = "testAnalyzeTableTwoRefsData") + public void testAnalyzeTableTwoReferences(ReferenceSequenceTable table, Set expectedStatus){ + List refPairs = table.analyzeTable(); + for(ReferencePair pair : refPairs){ + Assert.assertEquals(pair.getStatus(), expectedStatus); + } + } + + + public Map> manuallySetReferencePairStatus(){ + ReferenceSequenceTable table = tableGenerator(Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_1renamed.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_chr2snp.fasta")), + CompareReferences.MD5CalculationMode.USE_DICT); + + ReferencePair refPair1 = new ReferencePair(table, new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_1renamed.fasta")); + refPair1.removeStatus(ReferencePair.Status.EXACT_MATCH); + refPair1.addStatus(ReferencePair.Status.DIFFER_IN_SEQUENCE_NAMES); + + ReferencePair refPair2 = new ReferencePair(table, new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_chr2snp.fasta")); + refPair2.removeStatus(ReferencePair.Status.EXACT_MATCH); + refPair2.addStatus(ReferencePair.Status.DIFFER_IN_SEQUENCE); + + ReferencePair refPair3 = new ReferencePair(table, new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_1renamed.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_chr2snp.fasta")); + refPair3.removeStatus(ReferencePair.Status.EXACT_MATCH); + refPair3.addStatus(ReferencePair.Status.DIFFER_IN_SEQUENCE_NAMES); + refPair3.addStatus(ReferencePair.Status.DIFFER_IN_SEQUENCE); + + Map> referencePairStatuses = new HashMap<>(); + referencePairStatuses.put(refPair1, refPair1.getStatus()); + referencePairStatuses.put(refPair2, refPair2.getStatus()); + referencePairStatuses.put(refPair3, refPair3.getStatus()); + + return referencePairStatuses; + } + + @DataProvider(name = "testAnalyzeTableMultipleRefsData") + public Object[][] testAnalyzeTableMultipleReferencesData(){ + return new Object[][]{ + new Object[]{tableGenerator(Arrays.asList(new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_1renamed.fasta"), + new GATKPath("src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_chr2snp.fasta")), + CompareReferences.MD5CalculationMode.USE_DICT), manuallySetReferencePairStatus()}, + }; + } + + @Test(dataProvider = "testAnalyzeTableMultipleRefsData") + public void testAnalyzeTableMultipleReferences(ReferenceSequenceTable table, Map> expectedStatus){ + List refPairs = table.analyzeTable(); + for(ReferencePair pair : refPairs){ ; + Assert.assertEquals(pair.getStatus(), expectedStatus.get(pair)); + } + } + } diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingsequence.dict b/src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr1.dict similarity index 100% rename from src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingsequence.dict rename to src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr1.dict diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingsequence.fasta b/src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr1.fasta similarity index 100% rename from src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingsequence.fasta rename to src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr1.fasta diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingsequence.fasta.fai b/src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr1.fasta.fai similarity index 100% rename from src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingsequence.fasta.fai rename to src/test/resources/org/broadinstitute/hellbender/tools/reference/CompareReferences/hg19mini_missingchr1.fasta.fai