package net.sf.cram.fasta; import htsjdk.samtools.reference.IndexedFastaSequenceFile; import htsjdk.samtools.reference.ReferenceSequence; import htsjdk.samtools.reference.ReferenceSequenceFile; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertNotNull; import java.io.File; import java.io.FileNotFoundException; public class TestRandomAccess { private ReferenceSequenceFile f1; private ReferenceSequenceFile f2; private String seq; public TestRandomAccess(File file1, File file2, String seq) throws FileNotFoundException { this.seq = seq; f1 = new BGZF_ReferenceSequenceFile(file1); f2 = new IndexedFastaSequenceFile(file2); } public void test() throws FileNotFoundException { // ReferenceSequence s1 = f1.getSequence(seq); // assertNotNull(s1); // ReferenceSequence s2 = f2.getSequence(seq); // assertNotNull(s2); // // assertArrayEquals(s1.getBases(), s2.getBases()); int end = 249249621; for (int start = Math.max(1, end - 200); start < end; start++) { System.out.printf("%s:%d\t", seq, start); for (int stop = start; stop < start + 200 && stop <= end; stop++) { ReferenceSequence t1 = f1.getSubsequenceAt(seq, start, stop); assertNotNull(t1); ReferenceSequence t2 = f2.getSubsequenceAt(seq, start, stop); assertNotNull(t2); assertArrayEquals(t1.getBases(), t2.getBases()); // byte[] ss1 = Arrays.copyOfRange(s1.getBases(), start - 1, // stop); // assertArrayEquals(ss1, t1.getBases()); // // byte[] ss2 = Arrays.copyOfRange(s2.getBases(), start - 1, // stop); // assertArrayEquals(ss2, t2.getBases()); } System.out.println("OK"); } System.out.println("All OK."); } public static void main(String[] args) throws FileNotFoundException { File file1 = new File(args[0]); File file2 = new File(args[1]); String seq = args[2]; new TestRandomAccess(file1, file2, seq).test(); } }