private void init() throws IOException { FileUtils.checkPath(this.bigWigFilePath); bbFileReader = new BBFileReader(this.bigWigFilePath.toString()); zoomWindowSizes = new ArrayList<>(); for (int zoomLevel = 1; zoomLevel <= bbFileReader.getZoomLevelCount(); zoomLevel++) { zoomWindowSizes.add(bbFileReader.getZoomLevels().getZoomLevelHeader(zoomLevel).getReductionLevel()); } }
public BigWigDataSource(BBFileReader reader, Genome genome) throws IOException { super(genome); this.reader = reader; this.levels = reader.getZoomLevels(); this.wholeGenomeScores = new HashMap<>(); if (reader.isBigWigFile()) initMinMax(); // Assume 1000 pixel screen, pick visibility level to be @ highest resolution zoom. // TODO -- something smarter, like scaling by actual density if (levels != null && levels.getZoomHeaderCount() > 0) { BBZoomLevelHeader firstLevel = levels.getZoomLevelHeaders().get(0); // Highest res featureVisiblityWindow = firstLevel.getReductionLevel() * 2000; } if (genome != null) { Collection<String> chrNames = reader.getChromosomeNames(); for (String chr : chrNames) { String igvChr = genome.getCanonicalChrName(chr); if (igvChr != null && !igvChr.equals(chr)) { chrNameMap.put(igvChr, chr); } } } bedCodec = new IGVBEDCodec(genome); }
@Test public void testBigBed() throws IOException { String path = TestUtils.DATA_DIR + "bb/chr21.refseq.bb"; BBFileReader bbReader = new BBFileReader(path); BBFileHeader bbFileHdr = bbReader.getBBFileHeader(); assertTrue(bbFileHdr.isBigBed()); String chr = "chr21"; int start = 26490012; int end = 42182827; for (BBZoomLevelHeader header : bbReader.getZoomLevels().getZoomLevelHeaders()) { assertNotNull(header); ZoomLevelIterator zlIter = bbReader.getZoomLevelIterator(header.getZoomLevel(), chr, start, chr, end, false); while (zlIter.hasNext()) { ZoomDataRecord rec = zlIter.next(); int n = rec.getBasesCovered(); if (n > 0) { assertEquals(chr, rec.getChromName()); assertTrue(rec.getChromEnd() >= start && rec.getChromStart() <= end); } } } }