def test_unpack_calpar(self): calpar = np.zeros((2,3,Oc.calpar_size(self.info.nAntenna, len(self.info.ublcount))), dtype=np.float32) m,g,v = Oc.unpack_calpar(self.info,calpar) self.assertEqual(m['iter'].shape, (2,3)) self.assertTrue(np.all(m['iter'] == 0)) self.assertTrue(np.all(m['chisq'] == 0)) self.assertEqual(len(g), 32) for i in xrange(32): self.assertTrue(np.all(g[i] == 1)) # 1 b/c 10**0 = 1 self.assertEqual(len(v), len(self.info.ublcount)) ubls = {} for i,j in v: n = self.info.bl1dmatrix[i,j] ubls[self.info.bltoubl[n]] = n for u in xrange(len(self.info.ublcount)): self.assertTrue(ubls.has_key(u))
def test_pack_calpar(self): calpar = np.zeros((2,3,Oc.calpar_size(self.info.nAntenna, len(self.info.ublcount))), dtype=np.float32) self.assertTrue(np.all(Oc.pack_calpar(self.info,calpar) == 0)) self.assertRaises(AssertionError, Oc.pack_calpar, self.info, calpar[...,:-1]) bp = np.array([[1+2j,3+4j,5+6j],[2+1j,4+3j,6+5j]]) amp,phs = np.log10(np.abs(bp)), np.angle(bp) gains = {0:bp} Oc.pack_calpar(self.info,calpar,gains=gains) self.assertTrue(np.allclose(calpar[...,3+0], amp)) self.assertTrue(np.allclose(calpar[...,32+3+0],phs)) calpar *= 0 gains = {1:bp[0]} Oc.pack_calpar(self.info,calpar,gains=gains) self.assertTrue(np.allclose(calpar[0,:,3+1], amp[0])) self.assertTrue(np.allclose(calpar[1,:,3+1], amp[0])) self.assertTrue(np.allclose(calpar[0,:,32+3+1],phs[0])) self.assertTrue(np.allclose(calpar[1,:,32+3+1],phs[0])) vis = {(0,16):bp} Oc.pack_calpar(self.info,calpar,vis=vis) self.assertTrue(np.allclose(calpar[...,3+2*32+2*12], bp.real)) self.assertTrue(np.allclose(calpar[...,3+2*32+2*12+1], bp.imag))