private void writeDatasets() throws IOException { for (TDFDataset dataset : datasetCache.values()) { long position = bytesWritten; BufferedByteWriter buffer = new BufferedByteWriter(); dataset.write(buffer); write(buffer.getBytes()); int nBytes = (int) (bytesWritten - position); datasetIndex.put(dataset.getName(), new IndexEntry(position, nBytes)); } }
public TDFTile readTile(TDFDataset ds, int tileNumber) { try { if (tileNumber >= ds.tilePositions.length) { // TODO - return empty tile return null; } long position = ds.tilePositions[tileNumber]; if (position < 0) { // Indicates empty tile // TODO -- return an empty tile? return null; } int nBytes = ds.tileSizes[tileNumber]; byte[] buffer = readBytes(position, nBytes); if (compressed) { buffer = CompressionUtils.decompress(buffer); } return TileFactory.createTile(buffer, trackNames.length); } catch (IOException ex) { String tileName = ds.getName() + "[" + tileNumber + "]"; log.error("Error reading data tile: " + tileName, ex); throw new RuntimeException("System error occured while reading tile: " + tileName); } }
private void writeDatasets() throws IOException { for (TDFDataset dataset : datasetCache.values()) { long position = bytesWritten; BufferedByteWriter buffer = new BufferedByteWriter(); dataset.write(buffer); write(buffer.getBytes()); int nBytes = (int) (bytesWritten - position); datasetIndex.put(dataset.getName(), new IndexEntry(position, nBytes)); } }
public TDFTile readTile(TDFDataset ds, int tileNumber) { try { if (tileNumber >= ds.tilePositions.length) { // TODO - return empty tile return null; } long position = ds.tilePositions[tileNumber]; if (position < 0) { // Indicates empty tile // TODO -- return an empty tile? return null; } int nBytes = ds.tileSizes[tileNumber]; //fis.seek(position); //byte[] buffer = new byte[nBytes]; //readFully(buffer); byte[] buffer = readBytes(position, nBytes); if (compressed) { buffer = compressionUtils.decompress(buffer); } return TileFactory.createTile(buffer, trackNames.length); } catch (IOException ex) { String tileName = ds.getName() + "[" + tileNumber + "]"; log.error("Error reading data tile: " + tileName, ex); throw new RuntimeException("System error occured while reading tile: " + tileName); } }
synchronized TDFTile getTile(int t) { String key = getName() + "_" + t; TDFTile tile = null; if (!cache.containsKey(key)) { tile = reader.readTile(this, t); cache.put(key, tile); } else { tile = cache.get(key); } return tile; }
synchronized TDFTile getTile(int t) { String key = getName() + "_" + t; TDFTile tile = null; if (!cache.containsKey(key)) { tile = reader.readTile(this, t); cache.put(key, tile); } else { tile = cache.get(key); } return tile; }
String dsName = datasets.get(wf).getName(); try { writer.writeTile(dsName, tileNumber, tile);
String dsName = datasets.get(wf).getName(); try { writer.writeTile(dsName, tileNumber, tile);
@Test public void testReader() throws Exception { String url = "http://data.broadinstitute.org/igvdata/encode/hg18/broadHistone/SignalK562H3k4me3.tdf"; TDFReader reader = new TDFReader(new ResourceLocator(url)); int version = reader.getVersion(); assertEquals(3, version); assertTrue(reader.compressed); String [] trackNames = reader.getTrackNames(); int nTracks = trackNames.length; assertEquals(1, nTracks); String trackName = trackNames[0]; assertEquals(trackName, "SignalK562H3k4me3.wig.gz"); Set<String> chrNames = reader.getChromosomeNames(); int nChromosomes = chrNames.size(); assertEquals(24, nChromosomes); String datasetName = "/chr1/z0/mean"; TDFDataset dataset = reader.getDataset(datasetName); assertEquals(datasetName, dataset.getName()); TDFTile tile = reader.readTile(dataset, 0); assertNotNull(tile); } }