if __name__=="__main__": if len(sys.argv)==1: print "Usage: "+sys.argv[0]+" annotation.tab/bed genomesize *.bed" print " Find the nearest annotation for given bed." else: # check file if '.tab' in sys.argv[1]: ftype='gene' else: ftype='bed' # initiation annotations. annos={} #for chrom in IO.genomeSize('hg19'): for chrom in Utils.genomeSize(sys.argv[2]): if ftype=='bed': annos[chrom]=BedList() else: annos[chrom]=GeneBedList() # read annotations. for anno in IO.BioReader(sys.argv[1],ftype=ftype): if annos.has_key(anno.chrom): annos[anno.chrom].append(anno) # sort for chrom in annos: annos[chrom].sort() # Find nearest annoations
p._optionals.title = "Options" p.add_argument("-i","--input",dest='ifname',type=str,metavar="input.bed",required=True,help="Input file. Can be stdin.") p.add_argument("-f","--format",dest="ftype",type=str,metavar="bed",default="bed",help="Format of input file. Default is 'bed'. Can be 'bed3', 'bedgraph', 'bed','peak','wig', 'sam2bed' or 'genepred'.") p.add_argument("-g","--genome",dest='genome',type=str,metavar="Genome",default=None,help="Genome version (hg19, mm10 .etc) or genome size file with chrom and size in each line.") p.add_argument("-u","--up",dest="up",type=int,metavar="upstream",default=0,help="bps extended to upstream. If minus, trim the 5' end.") p.add_argument("-d","--down",dest="down",type=int,metavar="downstream",default=0,help="bps extended to downstream. If minus, trim the 3' end.") p.add_argument("-o","--output",dest="ofname",type=str,metavar="output.bed",default="stdout",help="Output file. Default is stdout.") if len(sys.argv)==1: sys.exit(p.print_help()) args = p.parse_args() return args # ------------------------------------ # Classes # ------------------------------------ # ------------------------------------ # Main # ------------------------------------ if __name__=="__main__": # Get parameters args=argParser() fh = IO.mopen(args.ofname, 'w') if args.genome: genome=Utils.genomeSize(args.genome) for item in IO.BioReader(args.ifname,args.ftype): tbed=item.extend(args.up,args.down, args.genome) print >> fh, tbed IO.mclose(fh)