Example #1
0
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
Example #2
0
def binning (raw, k):
  uncorr = _merge_bin (k, raw)
  err = st.err(uncorr) * 2
  return st.mean (uncorr), err