@Test public static void testGetLevelForBin() { Assert.assertEquals(csi.getLevelForBin(bin1), 0); Assert.assertEquals(csi.getLevelForBin(bin2), 1); Assert.assertEquals(csi.getLevelForBin(bin3), 0); Assert.assertEquals(csi.getLevelForBin(bin4), 1); Assert.assertEquals(csi.getLevelForBin(bin5), 2); Assert.assertEquals(csi.getLevelForBin(bin6), 4); Assert.assertEquals(csi.getLevelForBin(bin7), 3); Assert.assertEquals(csi.getLevelForBin(bin8), 5); Assert.assertEquals(ucsi.getLevelForBin(bin1), 0); Assert.assertEquals(ucsi.getLevelForBin(bin2), 1); Assert.assertEquals(ucsi.getLevelForBin(bin3), 0); Assert.assertEquals(ucsi.getLevelForBin(bin4), 1); Assert.assertEquals(ucsi.getLevelForBin(bin5), 2); Assert.assertEquals(ucsi.getLevelForBin(bin6), 4); Assert.assertEquals(ucsi.getLevelForBin(bin7), 3); Assert.assertEquals(ucsi.getLevelForBin(bin8), 5); Assert.assertEquals(ucsi.getLevelForBin(bin9), 6); }
@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); }
final int binLevel = getLevelForBin(bin); final int firstLocusInBin = getFirstLocusInBin(bin); long minimumOffset = bin instanceof BinWithOffset ? ((BinWithOffset)bin).getlOffset() : 0L;