@Test (expectedExceptions = SAMException.class) public static void testGetLevelSizeFail1() { csi.getLevelSize(6); }
@Test (expectedExceptions = SAMException.class) public static void testGetLevelSizeFail12() { csi.getLevelSize(7); }
@Test public static void testGetLevelSizeOK() { Assert.assertEquals(csi.getLevelSize(0), 1); Assert.assertEquals(csi.getLevelSize(1), 8); Assert.assertEquals(csi.getLevelSize(2), 64); Assert.assertEquals(csi.getLevelSize(3), 512); Assert.assertEquals(csi.getLevelSize(4), 4096); Assert.assertEquals(csi.getLevelSize(5), 32768); Assert.assertEquals(ucsi.getLevelSize(0), 1); Assert.assertEquals(ucsi.getLevelSize(1), 8); Assert.assertEquals(ucsi.getLevelSize(2), 64); Assert.assertEquals(ucsi.getLevelSize(3), 512); Assert.assertEquals(ucsi.getLevelSize(4), 4096); Assert.assertEquals(ucsi.getLevelSize(5), 32768); Assert.assertEquals(ucsi.getLevelSize(6), 262144); }
@Override public int getFirstLocusInBin(Bin bin) { if(bin == null || bin.getBinNumber() > getMaxBins()) { throw new SAMException("Tried to get first locus for invalid bin: " + bin); } int level = getLevelForBin(bin); int firstBinOnLevel = getFirstBinInLevelForCSI(level); int levelSize = getLevelSize(level); return (bin.getBinNumber() - firstBinOnLevel)*(getMaxSpan()/levelSize) + 1; }
@Override public int getLastLocusInBin(Bin bin) { if(bin == null || bin.getBinNumber() > getMaxBins()) { throw new SAMException("Tried to get last locus for invalid bin: " + bin); } int level = getLevelForBin(bin); int firstBinOnLevel = getFirstBinInLevelForCSI(level); int levelSize = getLevelSize(level); return (bin.getBinNumber() - firstBinOnLevel + 1)*(getMaxSpan()/levelSize); }
while(--currentBinLevel >= 0) { final int binStart = getFirstBinInLevelForCSI(currentBinLevel); final int binWidth = getMaxSpan()/getLevelSize(currentBinLevel); final int parentBinNumber = firstLocusInBin/binWidth + binStart; final Bin parentBin = queryResults.getBins().getBin(parentBinNumber);