private static void dumpTileData(TDFReader reader, String chrName, TDFTile tile, PrintStream ps) { int nTracks = reader.getTrackNames().length; int nBins = tile.getSize(); if (nBins > 0) { for (int b = 0; b < nBins; b++) { ps.print(chrName); ps.print("\t" + tile.getStartPosition(b)); ps.print("\t" + tile.getEndPosition(b)); for (int t = 0; t < nTracks; t++) { ps.print("\t" + tile.getValue(t, b)); } ps.println(); } } }
for (TDFTile rawTile : rawTiles) { if (rawTile != null && rawTile.getSize() > 0) { for (int i = 0; i < rawTile.getSize(); i++) { int s = rawTile.getStartPosition(i); int e = Math.max(s, rawTile.getEndPosition(i) - 1); break; float v = rawTile.getValue(trackNumber, i); if (!Float.isNaN(v)) { v *= normalizationFactor; for (TDFTile rawTile : rawTiles) { int size = rawTile.getSize(); if (rawTile != null && size > 0) { int[] starts = rawTile.getStart(); int[] ends = rawTile.getEnd(); String[] features = rawTile.getNames(); float[] values = rawTile.getData(trackNumber);
assertEquals(start + i * span, dsTile.getStartPosition(i), 1.0e-6); for (int j = 0; j < 10; j++) { assertEquals(data[i][j], dsTile.getValue(i, j), 1.0e-6);
public List<TDFTile> getTiles(int startLocation, int endLocation) { List<TDFTile> tiles = new ArrayList(); int startTile = (int) (startLocation / tileWidth); int endTile = (int) (endLocation / tileWidth); for (int t = startTile; t <= endTile; t++) { TDFTile tile = getTile(t); if (tile != null && tile.getSize() > 0) { tiles.add(tile); } } return tiles; }
public void writeTile(String dsId, int tileNumber, TDFTile tile) throws IOException { TDFDataset dataset = datasetCache.get(dsId); if (dataset == null) { throw new java.lang.NoSuchFieldError("Dataset: " + dsId + " doese not exist. " + "Call createDataset first"); } long pos = bytesWritten; if (tileNumber < dataset.tilePositions.length) { dataset.tilePositions[tileNumber] = pos; // Write the tile contents to a byte buffer first, so we can optionally gzip it BufferedByteWriter buffer = new BufferedByteWriter(); tile.writeTo(buffer); byte[] bytes = buffer.getBytes(); if (compressed) { bytes = compressionUtils.compress(bytes); } write(bytes); int nBytes = bytes.length; dataset.tileSizes[tileNumber] = nBytes; } else { // The occasional tile number == tile array size is expected, but tile // numbers larger than that are not if (tileNumber > dataset.tilePositions.length) { System.out.println("Unexpected tile number: " + tileNumber + " (max of " + dataset.tilePositions.length + " expected)."); } } }
public List<TDFTile> getTiles(int startLocation, int endLocation) { List<TDFTile> tiles = new ArrayList(); int startTile = (int) (startLocation / tileWidth); int endTile = (int) (endLocation / tileWidth); for (int t = startTile; t <= endTile; t++) { TDFTile tile = getTile(t); if (tile != null && tile.getSize() > 0) { tiles.add(tile); } } return tiles; }
public void writeTile(String dsId, int tileNumber, TDFTile tile) throws IOException { TDFDataset dataset = datasetCache.get(dsId); if (dataset == null) { throw new java.lang.NoSuchFieldError("Dataset: " + dsId + " doese not exist. " + "Call createDataset first"); } long pos = bytesWritten; if (tileNumber < dataset.tilePositions.length) { dataset.tilePositions[tileNumber] = pos; // Write the tile contents to a byte buffer first, so we can optionally gzip it BufferedByteWriter buffer = new BufferedByteWriter(); tile.writeTo(buffer); byte[] bytes = buffer.getBytes(); if (compressed) { bytes = CompressionUtils.compress(bytes); } write(bytes); int nBytes = bytes.length; //tile.writeTo(fos); //int nBytes = (int) (fos.bytesWritten() - pos); // bytes.length; dataset.tileSizes[tileNumber] = nBytes; } else { // The occasional tile number == tile array size is expected, but tile // numbers larger than that are not if (tileNumber > dataset.tilePositions.length) { System.out.println("Unexpected tile number: " + tileNumber + " (max of " + dataset.tilePositions.length + " expected)."); } } }
} else { int nTracks = reader.getTrackNames().length; int nBins = tile.getSize(); if (nBins > 0) { for (int b = 0; b < nBins; b++) { int start = tile.getStartPosition(b); int end = tile.getEndPosition(b); if (start > endLocation) { break; System.out.print(tile.getStartPosition(b)); for (int t = 0; t < nTracks; t++) { System.out.print("\t" + tile.getValue(t, b));
private List<LocusScore> getWGRawScores() { List<LocusScore> scores = new ArrayList(10000); for (String chr : genome.getAllChromosomeNames()) { Chromosome c = genome.getChromosome(chr); String dsName = "/" + chr + "/raw"; TDFDataset rawDataset = reader.getDataset(dsName); if (rawDataset != null) { List<TDFTile> rawTiles = rawDataset.getTiles(0, c.getLength()); if (rawTiles.size() > 0) { for (TDFTile rawTile : rawTiles) { // Tile of raw data if (rawTile != null && rawTile.getSize() > 0) { for (int i = 0; i < rawTile.getSize(); i++) { int s = genome.getGenomeCoordinate(chr, rawTile.getStartPosition(i)); int e = genome.getGenomeCoordinate(chr, Math.max(s, rawTile.getEndPosition(i) - 1)); float v = rawTile.getValue(trackNumber, i); if (!Float.isNaN(v)) { v *= normalizationFactor; } scores.add(new BasicScore(s, e, v)); } } } } } } return scores; }
for (TDFTile tile : tiles) { if (tile.getSize() > 0) { for (int i = 0; i < tile.getSize(); i++) { float v = tile.getValue(trackNumber, i); if (!Float.isNaN(v)) { v *= normalizationFactor; scores.add(new BasicScore(tile.getStartPosition(i), tile.getEndPosition(i), v));
List<TDFTile> tiles = ds.getTiles(r.getFrom(), rangeEnd); for (TDFTile t : tiles) { for (int i = 0; i < t.getSize() && nextPos <= rangeEnd; i++) { int datumEnd = t.getEndPosition(i); if (nextPos < datumEnd) { int datumStart = t.getStartPosition(i); float datum = t.getValue(0, i); LOG.debug("Tile " + i + " from " + datumStart + " to " + datumEnd + "=" + datum); while (nextPos < datumEnd && nextPos <= rangeEnd) {
throw new RuntimeException("More than one track found in tdf file " + ibfFile); int nBins = tile.getSize(); if (nBins > 0) { for (int b = 0; b < nBins; b++) { int start = tile.getStartPosition(b); int end = tile.getEndPosition(b); if (start > endLocation) { break; int tileStartPos= tile.getStartPosition(b); float tileValue= tile.getValue(0, b); int idx= Utils.getIndexOfclosestValue(tileStartPos+1, genomeToScreenMapping); // Where should this position be mapped on screen? screenWiggleLocusInfoList.get(idx).increment(tileValue);
private void testTile(String inputFile, int start, int end) throws IOException { String file1 = TestUtils.TMP_OUTPUT_DIR + "file1.tdf"; String file2 = TestUtils.TMP_OUTPUT_DIR + "file2.tdf"; //todo Compare 2 outputs more meaningfully String[] args = {"toTDF", "-z", "1", "--windowFunctions", "min", inputFile, file1, hg18id}; igvTools.run(args); FeatureDB.clearFeatures(); Runtime.getRuntime().gc(); args = new String[]{"toTDF", "-z", "1", "--windowFunctions", "max", inputFile, file2, hg18id}; igvTools.run(args); String dsName = "/chr1/raw"; TDFDataset ds1 = TDFReader.getReader(file1).getDataset(dsName); TDFDataset ds2 = TDFReader.getReader(file2).getDataset(dsName); TDFTile t1 = ds1.getTiles(start, end).get(0); TDFTile t2 = ds2.getTiles(start, end).get(0); int nPts = t1.getSize(); assertEquals(nPts, t2.getSize()); for (int i = 0; i < nPts; i++) { assertTrue(t1.getStartPosition(i) < t1.getEndPosition(i)); assertEquals(t1.getStartPosition(i), t2.getStartPosition(i)); assertTrue(t1.getValue(0, i) <= t2.getValue(0, i)); if (i < nPts - 1) { assertTrue(t1.getStartPosition(i) < t1.getStartPosition(i + 1)); } } (new File(file1)).delete(); (new File(file2)).delete(); }