import argparse import os import re from glob import glob if __name__ == '__main__': parser = argparse.ArgumentParser('Given a directory, get all the bigwig files and make trackDb file for UCSC track hub.') parser.add_argument('--bw_directory', help='Name of directory where Bigwig files are.') parser.add_argument('--url', help='Name of URL where these files will be available.') parser.add_argument('--output_file', help='Name of output file to output UCSC text to.') args = parser.parse_args() template = """track %s type bigWig bigDataUrl %s/%s shortLabel %s longLabel %s visibility full autoScale off viewLimits 0:4 maxHeightPixels 50 """ file_list = glob(os.path.join(args.bw_directory, '*.bw')) if len(file_list) < 1: raise ValueError('No BW files found in specified directory %s' % args.bw_directory) with open(args.output_file, 'w') as output_file: for bw_file in file_list: args.url = args.url.strip('/') bw_name = os.path.join(args.bw_directory.split('/')[-1], bw_file.split('/')[-1]) track_name = bw_name.replace('.', '-') track_name = bw_name.replace('.bw', '') track_text = template % (track_name, args.url, bw_file, track_name, track_name) output_file.write(track_text + '\n')