Source code for pybedtools.contrib.bigbed

import os
import subprocess
import six
import pybedtools


[docs]def bigbed(x, genome, output, blockSize=256, itemsPerSlot=512, bedtype=None, _as=None, unc=False, tab=False): """ Converts a BedTool object to a bigBed format and returns the new filename. `x` is a BedTool object `genome` is an assembly string `output` is the name of the bigBed file to create. Other args are passed to bedToBigBed. In particular, `bedtype` (which becomes the "-type=" argument) is automatically handled for you if it is kept as the default None. Assumes that a recent version of bedToBigBed from UCSC is on the path. """ if isinstance(x, six.string_types): x = pybedtools.BedTool(x) if not isinstance(x.fn, six.string_types): x = x.saveas() chromsizes = pybedtools.chromsizes_to_file(pybedtools.chromsizes(genome)) if bedtype is None: bedtype = 'bed%s' % x.field_count() cmds = [ 'bedToBigBed', x.fn, chromsizes, output, '-blockSize=%s' % blockSize, '-itemsPerSlot=%s' % itemsPerSlot, '-type=%s' % bedtype ] if unc: cmds.append('-unc') if tab: cmds.append('-tab') if _as: cmds.append('-as=%s' % _as) p = subprocess.Popen(cmds, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = p.communicate() if p.returncode: raise ValueError("cmds: %s\nstderr:%s\nstdout:%s" % (" ".join(cmds), stderr, stdout)) return output
[docs]def bigbed_to_bed(fn, chrom=None, start=None, end=None, maxItems=None): cmds = [ 'bigBedToBed', fn] if chrom is not None: cmds.extend(['-chrom', chrom]) if start is not None: cmds.extend(['-start', start]) if end is not None: cmds.extend(['-end', end]) if maxItems is not None: cmds.extend(['-maxItems', maxItems]) outfn = pybedtools.BedTool._tmp() cmds.append(outfn) p = subprocess.Popen(cmds, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = p.communicate() if p.returncode: raise ValueError("cmds: %s\nstderr:%s\nstdout:%s" % (" ".join(cmds), stderr, stdout)) return pybedtools.BedTool(outfn)