def minimize(args): f_index, g_index = args pol_f_index = f_index[-2:] pol_g_index = g_index[-2:] data = dataFromShared() f = data[f_index] g = data[g_index] df, dg = dArraysFromShared() df = df[pol_f_index] dg = dg[pol_g_index] fmin = lambda tau: -correlate(tau, f, g, df, dg) appr = -f.argmax() + g.argmax() halfwidth = np.sum(f < f.max() / 2) / 2 try: return brent(fmin, brack=(appr - halfwidth, appr, appr + halfwidth)) except ValueError: return -123.4
import time chan = 180 f = np.loadtxt("/home/gleb/code/C/fit_spectra/sp.dat") pos = np.unravel_index(np.argmax(f), f.shape) print pos, f.shape findex = 123 gindex = 13 shift = 13 g = np.roll(f[gindex], shift) f = f[findex] print f.shape df = np.diff(f) dg = np.diff(g) fmin = lambda tau: -correlate(tau, f, g, df, dg) halfwidth = np.sum(f < f.max() / 2) / 2 appr = -f.argmax() + g.argmax() t = time.time() res = brent(fmin, brack=(appr-halfwidth,appr,appr+halfwidth)) t2 = time.time() print t2 - t res2 = leastsq(fmin, x0=[appr], disp=0) print time.time() - t2 # res = pool.map(minimize, TASKS, chunksize=340) print res, res2 # fit = np.poly1d(np.polyfit(np.arange(len(f[0])), f[0], 12)) plt.plot(f, label='f') plt.plot(g, label='g') plt.plot(np.roll(g, int(-res)), label='res')