# max_hbd.py # take multiple hbd files from same individuals/markers (different seeds) and create a file with max hbd prob import sys if len(sys.argv)<2: for i in range(50): print "*", print print >> sys.stderr, "This program takes Beagle HBD files from multiple seeds and finds the maximum HBD probability at each position for each individual." print print >> sys.stderr, "Usage: python max_hbd.py file1.hbd file2.hbd ... (pipe output to selected file)" for i in range(50): print "*", print raise SystemExit nfiles = len(sys.argv)-1 ibdfile = [] for i in range(nfiles): ibdfile.append(open(sys.argv[i+1])) def median(floatlist): floatlist.sort() nvals = len(floatlist) if nvals % 2 == 1: return floatlist[(nvals-1)/2] else: return (floatlist[nvals/2 - 1] + floatlist[nvals/2])/2 for j in range(1): x = ibdfile[0].readline() print x, for i in range(1,nfiles): ibdfile[i].readline() for line in ibdfile[0].xreadlines(): bits = line.split() print bits[0], otherlines = [] for i in range(1,nfiles): otherlines.append(ibdfile[i].readline().split()) n = (len(bits)-1) for j in range(n): ibdprobs = [float(bits[j+1])] for i in range(nfiles-1): ibdprobs.append(float(otherlines[i][j+1])) print "%.3f" % (max(ibdprobs)), print