def alter_clos(pairings, bm_intpl, cutoff=0.): clos_app = {} cnt = 0 #print "alter_clos: len(pairings)=", len(pairings) for key in pairings: cnt = cnt+1 #if (cnt/20)*20 == cnt: # print 'alter_clos: Processing key %d out of %d:' % (cnt,len(pairings)) L = len(pairings[key]) for i in range(L): # get the points pairwise for j in range(i+1,L): pt1,pt2 = pairings[key][i],pairings[key][j] if pt1[0] == pt2[0]: #print "alter_clos: ignore self-correlating baseline: ", pt1[0] continue duv = tuple(x - y for x,y in zip(pt1[2], pt2[2])) val = export_beam.get_overlap(bm_intpl,*duv) blkey = (pt1[0],pt2[0]) #if blkey==((92,112),(0,91)) or blkey==((0,91),(92,112)): print blkey,val, duv clos_app[blkey] = clos_app.get(blkey,[])+[(val,pt1[1],pt2[1],pt1[2])] for blkey in clos_app.keys(): N = len(clos_app[blkey]) #if N > 10: # print "Found simultaneously redundant baseline:", blkey # del clos_app[blkey] # continue max,max_val = 0,0. for i in range(N): if max_val < abs(clos_app[blkey][i][0]): max,max_val = i, abs(clos_app[blkey][i][0]) clos_app[blkey] = clos_app[blkey][max] return clos_app
def pair_sort(pairings, bm_intpl, cutoff=0.): sorted = [] for key in pairings: L = len(pairings[key]) for i in range(L): # get the points pairwise for j in range(i+1,L): pt1,pt2 = pairings[key][i],pairings[key][j] duv = tuple(x - y for x,y in zip(pt1[2], pt2[2])) val = export_beam.get_overlap(bm_intpl,*duv) if abs(val) > cutoff: sorted.append((val,(pt1[0],pt1[1]),(pt2[0],pt2[1]),pt1[2])) quick_sort.quick_sort(sorted,0,len(sorted)-1) return sorted
def get_corr(aa, src, bm_intpl, t1,t2, bl1, bl2): aa.set_jultime(t1) src.compute(aa) if src.alt>0: uvw1 = aa.gen_uvw(*bl1,src=src).flatten() if uvw1[0] < 0: uvw1 = -uvw1 else: return 0 #if src below horizon, will break out of while loop aa.set_jultime(t2) src.compute(aa) if src.alt>0: uvw2 = aa.gen_uvw(*bl2,src=src).flatten() if uvw2[0] < 0: uvw2 = -uvw2 duv = (uvw1[0]-uvw2[0],uvw1[1]-uvw2[1]) else: return 0 #print n.sqrt(duv[0]*duv[0]+duv[1]*duv[1]) return export_beam.get_overlap(bm_intpl,*duv), (uvw1,uvw2)
def alter_clos_p1(ev, que,freq,fbmamp,clos_app): while not ev.is_set(): try: arr = que.get(block=True, timeout=1) except(mp.queues.Empty): continue L = len(arr) print L for i in range(L): # get the points pairwise for j in range(i+1,L): pt1,pt2 = arr[i],arr[j] if pt1[0] == pt2[0]: #print "alter_clos: ignore self-correlating baseline: ", pt1[0] continue duv = tuple(x - y for x,y in zip(pt1[2], pt2[2])) val = export_beam.get_overlap(freq,fbmamp,*duv) blkey = (pt1[0],pt2[0]) #if blkey==((92,112),(0,91)) or blkey==((0,91),(92,112)): print blkey,val, duv clos_app[blkey] = clos_app.get(blkey,[])+[(val,pt1[1],pt2[1],pt1[2])] #print "exiting parallel 1" #if que.empty(): print "queue is empty" return
#u0,v0,w0 = aa.gen_uvw(ant1,ant2,src=src) #u0,v0 = u0[0][0], v0[0][0] #if u0<0: u0,v0 = -u0,-v0 u1,v1,w1 = aa.gen_uvw(ant3,ant4,src=src) u1,v1 = u1[0][0], v1[0][0] if u1<0: u1,v1 = -u1,-v1 u,v = u0-u1,v0-v1 U.append(u) V.append(v) U,V = n.array(U), n.array(V) U,V = U.flatten(), V.flatten() ntop = n.array([X,Y,Z]) bmp = export_beam.beam_real(aa[ant1], ntop, shape0, 'x') freq, fbmamp = export_beam.beam_fourier(bmp, d, 400) val = export_beam.get_overlap(freq,fbmamp,U,V) fig = p.figure() ax1 = fig.add_subplot(121) p.plot(times,val) ax1.set_xlabel('jultime',size=12) ax1.set_ylabel('FT(A^2)',size=12) #p.plot(TIME,U) #p.plot(TIME,V) ax2 = fig.add_subplot(122) p.plot(U,V) ax2.set_xlabel('U',size=12) ax2.set_ylabel('v',size=12) plt.show()
fig = p.figure() ax1 = fig.add_subplot(121) im1 = ax1.imshow(bmp, interpolation='nearest', extent=rax) ax1.set_xlabel('l') ax1.set_ylabel('m') cbar1 = p.colorbar(im1,fraction=0.046, pad=0.04) ax2 = fig.add_subplot(122) ax2.set_xlabel('u') ax2.set_ylabel('v') im2 = plt.imshow(fbmamp[f_range[:,None],f_range], interpolation='nearest', extent=freqax) cbar2 = p.colorbar(im2,fraction=0.046, pad=0.04) fig2 = p.figure() u_range = n.linspace(-3,3,100) f = export_beam.beam_interpol(freq,fbmamp) z = export_beam.get_overlap(f, u_range,u_range) #z = z/n.amax(n.abs(z)) U,V = n.meshgrid(u_range,u_range) #z = abs(z) ax3 = fig2.add_subplot(121,projection='3d') ax3.set_xlabel('u') ax3.set_ylabel('v') surf = ax3.plot_surface(U,V,z,cmap=cm.coolwarm) #p.colorbar(surf, shrink=0.5, aspect=5) ax4 = fig2.add_subplot(122) ax4.set_xlabel('u') ax4.set_ylabel('FT') for v in [0.,1.]: z = export_beam.get_overlap(f,u_range,v)
src.compute(aa) #u0,v0,w0 = aa.gen_uvw(ant1,ant2,src=src) #u0,v0 = u0[0][0], v0[0][0] #if u0<0: u0,v0 = -u0,-v0 u1, v1, w1 = aa.gen_uvw(ant3, ant4, src=src) u1, v1 = u1[0][0], v1[0][0] if u1 < 0: u1, v1 = -u1, -v1 u, v = u0 - u1, v0 - v1 U.append(u) V.append(v) U, V = n.array(U), n.array(V) U, V = U.flatten(), V.flatten() ntop = n.array([X, Y, Z]) bmp = export_beam.beam_real(aa[ant1], ntop, shape0, 'x') freq, fbmamp = export_beam.beam_fourier(bmp, d, 400) val = export_beam.get_overlap(freq, fbmamp, U, V) fig = p.figure() ax1 = fig.add_subplot(121) p.plot(times, val) ax1.set_xlabel('jultime', size=12) ax1.set_ylabel('FT(A^2)', size=12) #p.plot(TIME,U) #p.plot(TIME,V) ax2 = fig.add_subplot(122) p.plot(U, V) ax2.set_xlabel('U', size=12) ax2.set_ylabel('v', size=12) plt.show()
im1 = ax1.imshow(bmp, interpolation='nearest', extent=rax) ax1.set_xlabel('l') ax1.set_ylabel('m') cbar1 = p.colorbar(im1, fraction=0.046, pad=0.04) ax2 = fig.add_subplot(122) ax2.set_xlabel('u') ax2.set_ylabel('v') im2 = plt.imshow(fbmamp[f_range[:, None], f_range], interpolation='nearest', extent=freqax) cbar2 = p.colorbar(im2, fraction=0.046, pad=0.04) fig2 = p.figure() u_range = n.linspace(-3, 3, 100) f = export_beam.beam_interpol(freq, fbmamp) z = export_beam.get_overlap(f, u_range, u_range) #z = z/n.amax(n.abs(z)) U, V = n.meshgrid(u_range, u_range) #z = abs(z) ax3 = fig2.add_subplot(111, projection='3d') ax3.set_xlabel('u') ax3.set_ylabel('v') surf = ax3.plot_surface(U, V, z, cmap=cm.coolwarm) #p.colorbar(surf, shrink=0.5, aspect=5) #ax4 = fig2.add_subplot(122) #ax4.set_xlabel('u') #ax4.set_ylabel('FT') #for v in [0.,1.]: # z = export_beam.get_overlap(f,u_range,v) # curv, = p.plot(u_range,z,label='v= %f' % v)