def iterate(img, pos): DD = 8 residual = 5000 ntry = 0 prev_centroid = np.array([5e9, 5e9]) new_pos = pos[:] print pos while (residual > 0.2) and (ntry < 10): pos = map(np.round, new_pos) # SA = filter(dat[pos[0] - DD:pos[0] + DD , pos[1]-DD : pos[1] +DD]) SA = dat[pos[0] - DD : pos[0] + DD, pos[1] - DD : pos[1] + DD] new_centroid = C.wm(SA) new_pos[1] = pos[1] + (new_centroid[0] - DD) new_pos[0] = pos[0] + (new_centroid[1] - DD) residual = np.sqrt(np.sum((new_centroid - prev_centroid) ** 2)) prev_centroid = new_centroid print new_pos, new_centroid - DD, ntry, residual ntry += 1 return np.array(new_pos), new_centroid, DD, SA
obj = FF[0].header['OBJECT'] if "Hg" not in obj: print "skipping" continue dat = Bias.remove(FF) DD = 8 cms = [] for i in range(len(positions)): p = positions[i] SA = dat[p[0]-DD:p[0]+DD , p[1]-DD:p[1]+DD] SA -= np.median(SA) centroid = C.wm(SA) cms.append([p[1] - centroid[1] + DD, p[0] - centroid[0] + DD]) if len(files) == 1: '''This is for debugging purposes''' print "fig", p pl.figure() pl.imshow(SA) pl.plot(centroid[0], centroid[1], 'o') if False: pl.figure() pl.plot(np.mean(SA, axis=0), 'b', drawstyle='steps-mid') pl.plot(np.mean(SA, axis=1), 'r', drawstyle='steps-mid') pl.axvline(centroid[0],color='blue') pl.axvline(centroid[1],color='red')