From 0e4e15ab0cf6cd29e8adb64c4c7588bc3672690d Mon Sep 17 00:00:00 2001 From: Mark Fleharty Date: Mon, 14 Jan 2019 15:57:54 -0500 Subject: [PATCH] Responding to David R's comments --- .../htsjdk/tribble/readers/TabixReader.java | 20 +++++++------- .../tribble/readers/TabixReaderTest.java | 26 ++++++++++++++++--- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/main/java/htsjdk/tribble/readers/TabixReader.java b/src/main/java/htsjdk/tribble/readers/TabixReader.java index 4520c0f7a7..66b5babcb2 100644 --- a/src/main/java/htsjdk/tribble/readers/TabixReader.java +++ b/src/main/java/htsjdk/tribble/readers/TabixReader.java @@ -447,15 +447,15 @@ public String next() throws IOException { /** * Get an iterator for an interval specified by the sequence id and begin and end coordinates - * @param tid Sequence id - * @param beg beginning of interval, genomic coords - * @param end end of interval, genomic coords - * @return an iterator over the lines within the specified interval + * @param tid Sequence id, if non-existent returns EOF_ITERATOR + * @param beg beginning of interval, genomic coords (0-based, closed-open) + * @param end end of interval, genomic coords (0-based, closed-open) + * @return an iterator over the specified interval */ public Iterator query(final int tid, final int beg, final int end) { TPair64[] off, chunks; long min_off; - if (tid < 0 || beg < 0 || end < 0 || tid >= this.mIndex.length) return EOF_ITERATOR; + if (tid < 0 || beg < 0 || end <= 0 || tid >= this.mIndex.length) return EOF_ITERATOR; TIndex idx = mIndex[tid]; int[] bins = new int[MAX_BIN]; int i, l, n_off, n_bins = reg2bins(beg, end, bins); @@ -510,7 +510,7 @@ public Iterator query(final int tid, final int beg, final int end) { * * @see #parseReg(String) * @param reg A region string of the form acceptable by {@link #parseReg(String)} - * @return + * @return an iterator over the specified interval */ public Iterator query(final String reg) { int[] x = parseReg(reg); @@ -518,15 +518,15 @@ public Iterator query(final String reg) { } /** - * + * Get an iterator for an interval specified by the sequence id and begin and end coordinates * @see #parseReg(String) * @param reg a chromosome * @param start start interval * @param end end interval - * @return a tabix iterator + * @return a tabix iterator over the specified interval */ - public Iterator query(final String reg,int start,int end) { - int tid=this.chr2tid(reg); + public Iterator query(final String reg, int start, int end) { + int tid = this.chr2tid(reg); return query(tid, start, end); } diff --git a/src/test/java/htsjdk/tribble/readers/TabixReaderTest.java b/src/test/java/htsjdk/tribble/readers/TabixReaderTest.java index 7033c26adc..f530369a5d 100644 --- a/src/test/java/htsjdk/tribble/readers/TabixReaderTest.java +++ b/src/test/java/htsjdk/tribble/readers/TabixReaderTest.java @@ -96,16 +96,35 @@ public void testIterators() throws IOException { Assert.assertNotNull(iter); Assert.assertNull(iter.next()); - iter=tabixReader.query("1",-1,Integer.MAX_VALUE); + iter = tabixReader.query("1", -1, Integer.MAX_VALUE); Assert.assertNotNull(iter); Assert.assertNull(iter.next()); - iter=tabixReader.query("1",Integer.MAX_VALUE,-1); + iter = tabixReader.query("1", Integer.MAX_VALUE, -1); Assert.assertNotNull(iter); Assert.assertNull(iter.next()); + iter = tabixReader.query("1", Integer.MAX_VALUE, 0); + Assert.assertNotNull(iter); + Assert.assertNull(iter.next()); + + iter = tabixReader.query("1:100-1000"); + Assert.assertNotNull(iter); + Assert.assertNotNull(iter.next()); + Assert.assertNull(iter.next()); + final int pos_snp_in_vcf_chr1=327; - + + iter = tabixReader.query("1:" + pos_snp_in_vcf_chr1 + "-" + pos_snp_in_vcf_chr1); + Assert.assertNotNull(iter); + Assert.assertNotNull(iter.next()); + Assert.assertNull(iter.next()); + + iter = tabixReader.query("1:" + pos_snp_in_vcf_chr1); + Assert.assertNotNull(iter); + Assert.assertNotNull(iter.next()); + Assert.assertNull(iter.next()); + iter=tabixReader.query("1",pos_snp_in_vcf_chr1,pos_snp_in_vcf_chr1); Assert.assertNotNull(iter); Assert.assertNotNull(iter); @@ -165,7 +184,6 @@ public void testRemoteQuery() throws IOException { nRecords++; } Assert.assertTrue(nRecords > 0); - } /**