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(URI uri) throws IOException { bbReader = new BBFileReader(NetworkUtils.getNeatPathFromURI(uri), new TribbleStream(uri)); if (!bbReader.isBigWigFile()) { throw new IOException("Input is not a BigWig file."); } }
/** * Open file * @param fileName */ void open(String fileName) { try { label = Gpr.removeExt(Gpr.baseName(fileName)); // Open file BBFileReader readerBb = new BBFileReader(fileName); BBFileHeader bbFileHdr = readerBb.getBBFileHeader(); // Get header if (!bbFileHdr.isHeaderOK()) throw new IOException("Bad header for file '" + fileName + "'"); // Sanity check if (!bbFileHdr.isBigBed()) throw new RuntimeException("Unrecognized header type for file '" + fileName + "' (expecting BigBed)"); // Get file type iterator = readerBb.getBigBedIterator(); } catch (Exception e) { throw new RuntimeException("Error loading file '" + fileName + "'.", e); } }
public void loadBWFile(ResourceLocator locator, List<Track> newTracks, Genome genome) throws IOException { String trackName = locator.getTrackName(); String trackId = locator.getPath(); String path = locator.getPath(); BBFileReader reader = new BBFileReader(path); BigWigDataSource bigwigSource = new BigWigDataSource(reader, genome); if (reader.isBigWigFile()) { DataSourceTrack track = new DataSourceTrack(locator, trackId, trackName, bigwigSource); newTracks.add(track); } else if (reader.isBigBedFile()) { if (locator.getPath().contains("RRBS_cpgMethylation") || locator.getPath().contains("BiSeq_cpgMethylation") || (reader.getAutoSql() != null && reader.getAutoSql().startsWith("table BisulfiteSeq"))) { loadMethylTrack(locator, reader, newTracks, genome); } else { FeatureTrack track = new FeatureTrack(locator, trackId, trackName, bigwigSource); newTracks.add(track); } } else { throw new RuntimeException("Unknown BIGWIG type: " + locator.getPath()); } }
private static String initRegionFromBigWig(String bigWigFile) throws IOException{ BBFileReader reader= new BBFileReader(bigWigFile); if(! reader.isBigWigFile()){ System.err.println("File " + bigWigFile + " is not bigWig."); throw new RuntimeException(); } String region= reader.getChromosomeNames().get(0); // Just get chrom to start with for(String chrom : reader.getChromosomeNames()){ BigWigIterator iter = reader.getBigWigIterator(chrom, 0, chrom, Integer.MAX_VALUE, false); if(iter.hasNext()){ WigItem x = iter.next(); region= x.getChromosome() + ":" + (x.getStartBase() + 1); reader.close(); return region; } } reader.close(); return region; }
private static String initRegionFromBigBed(String bigBedFile) throws IOException{ BBFileReader reader= new BBFileReader(bigBedFile); if(! reader.isBigBedFile()){ System.err.println("File " + bigBedFile + " is not bigBed."); throw new RuntimeException(); } String region= reader.getChromosomeNames().get(0); // Just get chrom to start with for(String chrom : reader.getChromosomeNames()){ BigBedIterator iter = reader.getBigBedIterator(chrom, 0, chrom, Integer.MAX_VALUE, false); if(iter.hasNext()){ BedFeature x= (BedFeature) iter.next(); region= x.getChromosome() + ":" + (x.getStartBase() + 1); reader.close(); return region; } } reader.close(); return region; }
public void testZillerQuery() throws Exception { String testFile = "path-to-test-file.bb"; String chr = "chr7"; int start = 26133475; int end = 27333475; Genome genome = null; BBFileReader reader = new BBFileReader(testFile); MethylDataSource source = new BBMethylDataSource(reader, BBMethylDataSource.Type.ZILLER, genome); Iterator<MethylScore> iter = source.query(chr, start, end); // Should find at least 1 score. assertTrue(iter.hasNext()); while (iter.hasNext()) { MethylScore score = iter.next(); assertTrue(score.getEnd() >= start && score.getStart() <= end); assertTrue(score.getScore() >= 0 && score.getScore() <= 100); } }
this.bigBedReader = new BBFileReader(filename); // or url for remote access. if(!this.bigBedReader.getBBFileHeader().isBigBed()){ throw new RuntimeException("File " + filename + " is not bigBed.");
Genome genome = null; BBFileReader reader = new BBFileReader(testFile); MethylDataSource source = new BBMethylDataSource(reader, BBMethylDataSource.Type.ZILLER, genome); Iterator<MethylScore> iter = source.query(chr, start, end);
@Test public void canReadBigWigFromRemote() throws IOException{ // String urlStr= "http://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncodeHaibTfbs/wgEncodeHaibTfbsA549Atf3V0422111Etoh02RawRep1.bigWig"; String urlStr= "http://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncodeHaibTfbs/wgEncodeHaibTfbsA549Cebpbsc150V0422111RawRep1.bigWig"; BBFileReader reader=new BBFileReader(urlStr); System.out.println(reader.getChromosomeNames()); BigWigIterator iter = reader.getBigWigIterator("chr1", 1000000, "chr1", 2000000, true); while(iter.hasNext()){ System.out.println(iter.next().getStartBase()); } System.out.println("NEW"); iter = reader.getBigWigIterator("chr10", 1000000, "chr10", 2000000, true); while(iter.hasNext()){ System.out.println(iter.next().getStartBase()); } reader.close(); }
/** * Read bigWig from local file or remote URL. * @param filename Filename or URL to access * @param gc Query coordinates and size of printable window * @throws IOException * @throws InvalidRecordException * @throws InvalidGenomicCoordsException * @throws SQLException * @throws ClassNotFoundException */ public TrackWiggles(String filename, GenomicCoords gc, int bdgDataColIdx) throws IOException, InvalidRecordException, InvalidGenomicCoordsException, ClassNotFoundException, SQLException{ this.setFilename(filename); this.setWorkFilename(filename); this.bdgDataColIdx= bdgDataColIdx; this.setTrackFormat(Utils.getFileTypeFromName(this.getWorkFilename())); if(this.getTrackFormat().equals(TrackFormat.BIGWIG)){ this.setTrackFormat(TrackFormat.BIGWIG); this.bigWigReader=new BBFileReader(this.getWorkFilename()); // or url for remote access. if(!this.bigWigReader.getBBFileHeader().isBigWig()){ throw new RuntimeException("Invalid file type " + this.getWorkFilename()); } } else if(this.getTrackFormat().equals(TrackFormat.BEDGRAPH) && ! Utils.hasTabixIndex(filename)){ String tabixBdg= this.tabixBedgraphToTmpFile(filename); this.setWorkFilename(tabixBdg); } this.setGc(gc); };
int end = 10001754; BBFileReader reader = new BBFileReader(testFile); MethylDataSource source = new BBMethylDataSource(reader, BBMethylDataSource.Type.USC, genome); Iterator<MethylScore> iter = source.query(chr, start, end);
@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); } } } }