Source code for sequana.wigtools

[docs] def yield_bigwig_by_chromosome(filename): """Yield ``(chrom, entries)`` from a binary BigWig file. :: for chrom, entries in yield_bigwig_by_chromosome("coverage.bw"): print(f"Chromosome: {chrom}, {len(entries)} entries") print(entries[:3]) Each ``entries`` is a list of ``(start, value)`` tuples, one per interval stored in the BigWig (e.g. one per ``bamCoverage`` bin). ``pyBigWig`` is imported lazily. """ try: import pyBigWig except ImportError: # pragma: no cover raise ImportError( "Reading BigWig files requires the 'pyBigWig' package. " "Install it with 'pip install pyBigWig'." ) bw = pyBigWig.open(str(filename)) try: for chrom in bw.chroms(): intervals = bw.intervals(chrom) if not intervals: # pragma: no cover continue current_data = [(start, value) for start, end, value in intervals] yield chrom, current_data finally: bw.close()