def binning_prof (raw, knum=200, NBmin=100, plot=True): 'Do binning analysis.\ knum: number of bin-length to be simulated. (k=bin size)\ NBmin: minimum number of bins.\ Return: [uncorrelate_data(NBmin)], [bin_size(knum)], [auto_correlation_time(knum)]' uncorr_data, ks, corrtime, err = [], [], [], [] # Calcualte kmax and kmin, bin length is graw as n*kmin, n=1,2,... kmax = len(raw) / NBmin if kmax == 0: kmax = 1 kmin = kmax / knum if kmin == 0: kmin = 1 knum = kmax / kmin # Mearge the bin with length k=kmin basedata = _merge_bin (kmin, raw) # Get "_ks" and "_corrtime". "_uncorr_data" remains with the largest bin-length. var0 = st.var (raw) for q in range(1, knum+1): uncorr_data = _merge_bin (q, basedata) k, var = q*kmin, st.var (uncorr_data) err.append ([k,st.err(uncorr_data)]) ks.append (k) corrtime.append (_auto_corr_time (k, var, var0)) if plot: pl.plot (ks, corrtime, marker='.') pl.xlabel ('bin size') pl.ylabel ('auto correlation time') pl.show() return uncorr_data, ks, corrtime
def binning (raw, k): uncorr = _merge_bin (k, raw) err = st.err(uncorr) * 2 return st.mean (uncorr), err