def test_collating(self): xengs = [sim.XEngine(nant=NANT,npol=1,nchan=2048,engine_id=x) \ for x in range(NANT)] xstreams = [x.get_pkt_stream() for x in xengs] timestamp = None while True: for x in xstreams: pkt = x.next() if timestamp is None: timestamp = pkt.timestamp if pkt.timestamp != timestamp: break self.cb.collate_packet(pkt) if pkt.timestamp != timestamp: break dbuf,fbuf = self.cb.get_buffer() self.assertEqual(len(n.where(dbuf == 0)), 1) dbuf = n.array([sim.decode_32bit(d) for d in dbuf]) # nwin, nchan, npol, bls, r/i, fields dbuf.shape = (1, 2048, 1, len(self.cb.xeng_bl_order()), 2, 5) # Check real/imag self.assertTrue(n.all(dbuf[...,0,3] == 0)) self.assertTrue(n.all(dbuf[...,1,3] == 1)) # Check pol self.assertTrue(n.all(dbuf[...,0,:,2] == 0)) # Check chan chans = n.arange(2048) ; chans.shape = (1,2048,1,1,1) self.assertTrue(n.all(dbuf[...,4] == chans)) # Check bl blorder = n.array([(i,j) for j in range(NANT) for i in range(j+1)]) iorder = blorder[:,0]; iorder.shape = (1,1,1,iorder.size,1) jorder = blorder[:,1]; jorder.shape = (1,1,1,jorder.size,1) self.assertTrue(n.all(dbuf[...,0] == iorder)) self.assertTrue(n.all(dbuf[...,1] == jorder))
def test_collating(self): xengs = [sim.XEngine(nant=NANT,npol=1,nchan=2048,engine_id=x) \ for x in range(NANT)] xstreams = [x.get_pkt_stream() for x in xengs] timestamp = None while True: for x in xstreams: pkt = x.next() if timestamp is None: timestamp = pkt.timestamp if pkt.timestamp != timestamp: break self.cb.collate_packet(pkt) if pkt.timestamp != timestamp: break dbuf, fbuf = self.cb.get_buffer() self.assertEqual(len(n.where(dbuf == 0)), 1) dbuf = n.array([sim.decode_32bit(d) for d in dbuf]) # nwin, nchan, npol, bls, r/i, fields dbuf.shape = (1, 2048, 1, len(self.cb.xeng_bl_order()), 2, 5) # Check real/imag self.assertTrue(n.all(dbuf[..., 0, 3] == 0)) self.assertTrue(n.all(dbuf[..., 1, 3] == 1)) # Check pol self.assertTrue(n.all(dbuf[..., 0, :, 2] == 0)) # Check chan chans = n.arange(2048) chans.shape = (1, 2048, 1, 1, 1) self.assertTrue(n.all(dbuf[..., 4] == chans)) # Check bl blorder = n.array([(i, j) for j in range(NANT) for i in range(j + 1)]) iorder = blorder[:, 0] iorder.shape = (1, 1, 1, iorder.size, 1) jorder = blorder[:, 1] jorder.shape = (1, 1, 1, jorder.size, 1) self.assertTrue(n.all(dbuf[..., 0] == iorder)) self.assertTrue(n.all(dbuf[..., 1] == jorder))
def callback(i,j,pol,t,data,flags): self.assertEqual(data.shape, (2048,)) self.assertEqual(flags.shape, (2048,)) self.assertTrue(data.flags.owndata) self.assertTrue(flags.flags.owndata) data_r = n.array([sim.decode_32bit(d) \ for d in data.real.astype(n.int32)]) data_i = n.array([sim.decode_32bit(d) \ for d in data.imag.astype(n.int32)]) #print i,j,pol,t,flags.sum(), #print data_r[0,:], data_i[0,:] self.assertTrue(n.all(data_r[:,0] == i)) # not enough dynamic range in float to resolve j #self.assertTrue(n.all(data_r[:,1] == j)) self.assertTrue(n.all(data_r[:,2] == pol)) self.assertTrue(n.all(data_r[:,3] == 0)) self.assertTrue(n.all(data_r[:,4] == n.arange(2048))) self.assertTrue(n.all(data_i[:,0] == i)) # not enough dynamic range in float to resolve j #self.assertTrue(n.all(data_i[:,1] == j)) self.assertTrue(n.all(data_i[:,2] == pol)) self.assertTrue(n.all(data_i[:,3] == 1)) self.assertTrue(n.all(data_i[:,4] == n.arange(2048)))
def callback(i, j, pol, t, data, flags): self.assertEqual(data.shape, (2048, )) self.assertEqual(flags.shape, (2048, )) self.assertTrue(data.flags.owndata) self.assertTrue(flags.flags.owndata) data_r = n.array([sim.decode_32bit(d) \ for d in data.real.astype(n.int32)]) data_i = n.array([sim.decode_32bit(d) \ for d in data.imag.astype(n.int32)]) #print i,j,pol,t,flags.sum(), #print data_r[0,:], data_i[0,:] self.assertTrue(n.all(data_r[:, 0] == i)) # not enough dynamic range in float to resolve j #self.assertTrue(n.all(data_r[:,1] == j)) self.assertTrue(n.all(data_r[:, 2] == pol)) self.assertTrue(n.all(data_r[:, 3] == 0)) self.assertTrue(n.all(data_r[:, 4] == n.arange(2048))) self.assertTrue(n.all(data_i[:, 0] == i)) # not enough dynamic range in float to resolve j #self.assertTrue(n.all(data_i[:,1] == j)) self.assertTrue(n.all(data_i[:, 2] == pol)) self.assertTrue(n.all(data_i[:, 3] == 1)) self.assertTrue(n.all(data_i[:, 4] == n.arange(2048)))