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')