def runOne(args): path = utl.outpath + 'markov/simulations/' utl.mkdir(path) numExp = int(1e5) nu0, s = args print nu0, s for i, batch in enumerate(utl.batch(range(numExp), 10000)): print; print i, batch[0], batch[-1] a = pd.concat(map(lambda x: Simulation.simulateSingleLoci(nu0=nu0, s=s)[[1, 10, 100]], batch), axis=1).T a.to_pickle(path + 'nu{:E}.s{:E}.{}.df'.format(nu0, s, i))
def computeLikelihoodReal(args): """ Args: (it's more convenient for multiprocessing) args: a list of [R,s,h]. R: is a dataframe for which each row is a position and columns are allele frequencies. ColumnsLevels= [REP, TIME] , IndexLevels=[CHROM,POS] s: is selection strength h: is overdominance Returns: a series containing likelihood of timeseries for the specific values of s and h. """ CD, E, s, h = args if s==0:s=int(0) print 'Computing for {} SNPs for s={} h={}'.format(CD.shape[0], s, h); sys.stdout.flush() powers = pd.Series(pd.Series(CD[r].columns).diff().values[1:] for r in range(3)) T = pd.read_pickle(utl.outpath + 'transition/real/S{:E}.H{:E}.df'.format(np.round(s, 2), h)) # likes = computeLikelihoodRealBatch((CD, E, T, powers)) args = map(lambda x: (x, E, T, powers), utl.batch(CD, int(3e5))); likes = pd.concat(map(computeLikelihoodRealBatch, args)) likes.name = (s, h) return likes
def computeLikelihoodReal(args): CD, E, T = args powers = pd.Series(pd.Series(CD[r].columns).diff().values[1:] for r in range(3)) args = map(lambda x: (x, E, T, powers), utl.batch(CD, int(3e5))); likes = pd.concat(map(mkv.computeLikelihoodRealBatch, args)) return likes