#!/usr/bin/env python # -*- coding: latin-1 -*- '''Take an histone bed file and calculate 1kb window centered.''' EPILOG = ''' For more details: %(prog)s --help ''' import numpy import pybedtools import argparse import os from subprocess import Popen from pybedtools.featurefuncs import midpoint from pybedtools.featurefuncs import extend_fields def get_args(): parser = argparse.ArgumentParser( description=__doc__, epilog=EPILOG, formatter_class=argparse.RawDescriptionHelpFormatter, ) parser.add_argument('-e', '--enhancers', help="The enhancers file to make 1kb window around center", required = True) args = parser.parse_args() return args def rename_generator(bed_file,prefix): for i, feature in enumerate(pybedtools.BedTool(bed_file)): feature.name = prefix + '_{0}'.format(i + 1) yield feature def main(): args = get_args() # Read in bedtools: enhancers = pybedtools.BedTool(args.enhancers) # Sort if not sorted enhancers_sorted = enhancers.sort() enhancers_extend = enhancers_sorted.each(extend_fields, n=4) enhancers_renamed = pybedtools.BedTool(rename_generator(enhancers_extend,"H")) enhancers_renamed.saveas("enhancers_renamed.bed") enhancers_renamed = pybedtools.BedTool("enhancers_renamed.bed") enhancers_mp = enhancers_renamed.each(midpoint) chromsizes = pybedtools.helpers.chromsizes("hg19") enhancers_1kb = enhancers_mp.slop(l=500, r=500, g=chromsizes) enhancers_1kb.saveas("enhancers_1kb.bed") if __name__ == '__main__': main()