import sys
import numpy as np

def autocorrelation_time(x, max_lag):
    x = x - np.mean(x)
    autocorr = np.correlate(x, x, mode='full')[len(x)-1:]
    autocorr /= autocorr[0]
    cutoff = np.exp(-1)
    idx = len(autocorr) - np.argmax(autocorr[::-1] > cutoff)
    return min(idx, len(autocorr))

def get_tau(filename):
    try:
        data = np.loadtxt(filename, skiprows=1)
        print(f"Loaded data from {filename}: {data[:5]}...")  # Print first few entries of data
        tau = autocorrelation_time(data, 500)
        return tau * 2
    except Exception as e:
        print(f"Error processing {filename}: {e}", file=sys.stderr)
        return None

taus = []
for i in range(_NODES_):
    tau_value = get_tau(f'../{i+1}.dat')
    if tau_value is not None:
        taus.append(tau_value)

if taus:
    print(f"Mean tau: {np.mean(taus)}")
else:
    print("No tau values calculated.")
