# max_ibd.py # take multiple ibd files from same individuals/markers (different seeds) and create a file with one column per pair, with max ibd prob import sys if len(sys.argv)<2: for i in range(50): print "*", print print >> sys.stderr, "This program takes Beagle IBD files from multiple seeds and finds the maximum IBD probability at each position for each pair of individuals."; print print >> sys.stderr, "Usage: python max_ibd.py file1.ibd file2.ibd ... (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])) for j in range(2): x = ibdfile[0].readline().split() print x[0], for y in x[1::4]: print y, print for i in range(1,nfiles): ibdfile[i].readline(); 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()) npairs = (len(bits)-1)/4 for j in range(npairs): ibdprobs = [float(bits[j*4+1])] for i in range(nfiles-1): ibdprobs.append(float(otherlines[i][j*4+1])) print "%.3f" % (max(ibdprobs)), print