Пример #1
0
 def test_get_reds(self):
     antpos = np.array([[0.,0,0],[1,0,0],[2,0,0],[3,0,0]])
     reds = [[(0,1),(1,2),(2,3)],[(0,2),(1,3)]]
     i = Oi.RedundantInfo()
     i.init_from_reds(reds,antpos)
     reds2 = i.get_reds()
     self.assertEqual(reds, reds2)
Пример #2
0
 def test_tofromnpz(self):
     i1 = Oi.RedundantInfoLegacy()
     i1.fromfile_txt(redinfo_psa32)
     i2 = Oi.RedundantInfo()
     i1.to_npz(tmpnpz)
     i2.from_npz(tmpnpz)
     self.assertTrue(i1.get_reds() == i2.get_reds())
Пример #3
0
 def test_basic_getsetitem(self):
     i = Oi.RedundantInfo()
     i.nAntenna = 32
     self.assertEqual(i.nAntenna, 32)
     self.assertEqual(i['nAntenna'], 32)
     i['nAntenna'] = 64
     self.assertEqual(i.nAntenna, 64)
     self.assertEqual(i['nAntenna'], 64)
Пример #4
0
 def test_tofrom_reds(self):
     i1 = Oi.RedundantInfoLegacy()
     i1.fromfile_txt(redinfo_psa32)
     reds = i1.get_reds()
     antpos = i1.get_antpos()
     i2 = Oi.RedundantInfo()
     i2.init_from_reds(reds, antpos)
     self.assertTrue(np.all(i1.antloc == i2.antloc))
     self.assertTrue(np.all(i1.bl2d[i1.ublindex] == i2.bl2d[i2.ublindex]))
Пример #5
0
 def test_large_info_IO(self):
     calibrator = Oc.RedundantCalibrator(150)
     calibrator.compute_redundantinfo()
     calibrator.write_redundantinfo(infotestpath, verbose=VERBOSE)
     info2 = Oi.RedundantInfo(filename=infotestpath)
     self.assertEqual(calibrator.Info.nAntenna, info2.nAntenna)
     self.assertEqual(calibrator.Info.nBaseline, info2.nBaseline)
     self.assertEqual(calibrator.Info.get_reds(), info2.get_reds())
     os.remove(infotestpath)
Пример #6
0
 def test_init_from_reds(self):
     antpos = np.array([[0.,0,0],[1,0,0],[2,0,0],[3,0,0]])
     reds = [[(0,1),(1,2),(2,3)],[(0,2),(1,3)]]
     i = Oi.RedundantInfo()
     i.init_from_reds(reds,antpos)
     self.assertEqual(i.nAntenna,4)
     self.assertTrue(np.all(i.antloc == antpos))
     self.assertEqual(i.nBaseline,5)
     self.assertEqual(i.ublcount[0],3)
     self.assertEqual(i.ublcount[1],2)
     self.assertTrue(np.all(i.ublindex == np.arange(5,dtype=np.int32)))
     self.assertTrue(np.all(i.ubl[0] == np.array([1.,0,0],dtype=np.float32)))
     self.assertTrue(np.all(i.ubl[1] == np.array([2.,0,0],dtype=np.float32)))
Пример #7
0
 def test_order_data(self):
     antpos = np.array([[0.,0,0],[1,0,0],[2,0,0],[3,0,0]])
     reds = [[(0,1),(1,2),(2,3)],[(0,2),(1,3)]]
     i = Oi.RedundantInfo()
     i.init_from_reds(reds,antpos)
     dd = {
         (0,1):np.array([[0,1j]]),
         (1,2):np.array([[0,1j]]),
         (2,3):np.array([[0,1j]]),
         (2,0):np.array([[0,1j]]),
         (1,3):np.array([[0,1j]]),
     }
     d = i.order_data(dd)
     self.assertTrue(np.all(d[...,0] == np.array([[0,1j]])))
     self.assertTrue(np.all(d[...,1] == np.array([[0,1j]])))
     self.assertTrue(np.all(d[...,2] == np.array([[0,1j]])))
     self.assertTrue(np.all(d[...,3] == np.array([[0,1j]]).conj()))
     self.assertTrue(np.all(d[...,4] == np.array([[0,1j]])))
Пример #8
0
# #        plt.scatter(uniqueBaselines[:,0]/1.0/Separation, uniqueBaselines[:,1]/1.0/Separation,c=np.minimum(redundancy,100000),s=40)
#     plt.scatter(uniqueBaselines[:,0]/1.0/1.5, uniqueBaselines[:,1]/1.0/1.5,s=40,c=np.log10(np.minimum(redundancy,40)))
#     plt.xlim(-350,350); plt.ylim(-350,350)
# #        plt.colorbar()
#     plt.title('Baseline Redundancy')
#     #datacursor(display='single',formatter="x={x:.4f}\ny={y:.4f}".format)
#     #plt.axis('equal')
#     return np.asarray(positions), np.asarray(positions[0:nCore])

# if __name__ == "__main__":
#     positions,corePos = HexArray(hexNum = 11, SplitCore = True, SplitCoreOutriggers = True, CutDownTo = None, SpreadOut128 = False)

if True:
    import omnical.info as oi
    import omnical.arrayinfo as oai
    redundantInfo = oi.RedundantInfo()
    positions = np.asarray(positions)
    reds = oai.compute_reds(positions)
    redundantInfo.init_from_reds(reds, positions)

    AtransA = redundantInfo.At.dot(redundantInfo.At.T).toarray()
    BtransB = redundantInfo.Bt.dot(redundantInfo.Bt.T).toarray()
    gainVariances = np.diag(
        np.linalg.pinv(AtransA)[0:len(positions), 0:len(positions)])
    print "Gain and phase modes that can't be Omnicaled:"
    print[
        len(XtransX) - np.linalg.matrix_rank(XtransX, tol=1e-10)
        for XtransX in [AtransA, BtransB]
    ]
    plt.figure(3)
    plt.clf()
Пример #9
0
    plt.xlim(-300, 300)
    plt.ylim(-300, 300)
    plt.savefig(prefix + 'base.png', dpi=300)
#%%
else:
    plt.figure(1, figsize=(8, 8))
    plt.clf()
    plt.scatter(np.asarray(positions)[:, 0], np.asarray(positions)[:, 1])
    plt.xlabel('Position (m)')
    plt.ylabel('Position (m)')
    plt.axis('square')

if False:
    import omnical.info as oi
    import omnical.arrayinfo as oai
    redundantInfo = oi.RedundantInfo()
    positions = np.asarray(positions)
    reds = oai.compute_reds(positions)
    redundantInfo.init_from_reds(reds, positions)

    AtransA = redundantInfo.At.dot(redundantInfo.At.T).toarray()
    BtransB = redundantInfo.Bt.dot(redundantInfo.Bt.T).toarray()
    gainVariances = np.diag(
        np.linalg.pinv(AtransA)[0:len(positions), 0:len(positions)])
    print "Gain and phase modes that can't be Omnicaled:"
    print[
        len(XtransX) - np.linalg.matrix_rank(XtransX, tol=1e-10)
        for XtransX in [AtransA, BtransB]
    ]
    #%%
    plt.figure(3)