package htsjdk.tribble.readers; import htsjdk.tribble.TestUtils; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Set; import static org.testng.AssertJUnit.assertTrue; /** * Created by IntelliJ IDEA. * User: jrobinso * Date: Jul 6, 2010 * Time: 8:57:40 PM * To change this template use File | Settings | File Templates. */ public class TabixReaderTest { static String tabixFile = TestUtils.DATA_DIR + "tabix/trioDup.vcf.gz"; static TabixReader tabixReader; static List<String> sequenceNames; @BeforeClass public void setup() throws IOException { tabixReader = new TabixReader(tabixFile); sequenceNames = new ArrayList<String>(tabixReader.getChromosomes()); } @AfterClass public void teardown() throws Exception { tabixReader.close(); } @Test public void testSequenceNames() { String[] expectedSeqNames = new String[24]; for (int i = 1; i < 24; i++) { expectedSeqNames[i - 1] = String.valueOf(i); } expectedSeqNames[22] = "X"; expectedSeqNames[23] = "Y"; Assert.assertEquals(expectedSeqNames.length, sequenceNames.size()); for (String s : expectedSeqNames) { Assert.assertTrue(sequenceNames.contains(s)); } } @Test public void testSequenceSet() { Set<String> chroms= tabixReader.getChromosomes(); Assert.assertFalse(chroms.isEmpty()); Assert.assertTrue(chroms.contains("1")); Assert.assertFalse(chroms.contains("MT")); } @Test public void testIterators() throws IOException { TabixReader.Iterator iter=tabixReader.query("1", 1, 400); Assert.assertNotNull(iter); Assert.assertNotNull(iter.next()); Assert.assertNull(iter.next()); iter=tabixReader.query("UN", 1, 100); Assert.assertNotNull(iter); Assert.assertNull(iter.next()); iter=tabixReader.query("UN:1-100"); Assert.assertNotNull(iter); Assert.assertNull(iter.next()); iter=tabixReader.query("1:10-1"); Assert.assertNotNull(iter); Assert.assertNull(iter.next()); iter=tabixReader.query(999999,9,9); Assert.assertNotNull(iter); Assert.assertNull(iter.next()); iter=tabixReader.query("1",Integer.MAX_VALUE-1,Integer.MAX_VALUE); Assert.assertNotNull(iter); 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); Assert.assertNull(iter.next()); iter=tabixReader.query("1",pos_snp_in_vcf_chr1-1,pos_snp_in_vcf_chr1-1); Assert.assertNotNull(iter); Assert.assertNull(iter.next()); iter=tabixReader.query("1",pos_snp_in_vcf_chr1+1,pos_snp_in_vcf_chr1+1); Assert.assertNotNull(iter); Assert.assertNull(iter.next()); } /** * Test reading a local tabix file * * @throws java.io.IOException */ @Test public void testLocalQuery() throws IOException { TabixIteratorLineReader lineReader = new TabixIteratorLineReader( tabixReader.query(tabixReader.chr2tid("4"), 320, 330)); int nRecords = 0; String nextLine; while ((nextLine = lineReader.readLine()) != null) { assertTrue(nextLine.startsWith("4")); nRecords++; } assertTrue(nRecords > 0); } /** * Test reading a tabix file over http * * @throws java.io.IOException */ @Test public void testRemoteQuery() throws IOException { String tabixFile = "http://www.broadinstitute.org/igvdata/test/tabix/trioDup.vcf.gz"; TabixReader tabixReader = new TabixReader(tabixFile); TabixIteratorLineReader lineReader = new TabixIteratorLineReader( tabixReader.query(tabixReader.chr2tid("4"), 320, 330)); int nRecords = 0; String nextLine; while ((nextLine = lineReader.readLine()) != null) { assertTrue(nextLine.startsWith("4")); nRecords++; } assertTrue(nRecords > 0); } }