Exemplo n.º 1
0
 def getUnique(self, pcentre):
     pcentre = np.radians(pcentre)
     ra = pcentre[0]
     dec = pcentre[1]
     xyzrot = np.zeros(self.xyz.shape)
     xyzrot[:,
            0] = np.sin(ra) * self.xyz[:, 0] + np.cos(ra) * self.xyz[:, 1]
     xyzrot[:, 1] = -np.sin(dec) * np.cos(ra) * self.xyz[:, 0] + np.sin(
         dec) * np.sin(ra) * self.xyz[:, 1] + np.cos(dec) * self.xyz[:, 2]
     xyzrot[:, 2] = np.cos(dec) * np.cos(ra) * self.xyz[:, 0] - np.cos(
         dec) * np.sin(ra) * self.xyz[:, 1] + np.sin(dec) * self.xyz[:, 2]
     uvwpos = np.zeros((self.nvis, 3))
     uvwpos[:, 0] = utils.diffcomb(xyzrot[:, 0])
     uvwpos[:, 1] = utils.diffcomb(xyzrot[:, 1])
     uvwpos[:, 2] = utils.diffcomb(xyzrot[:, 2])
     uvw = uvwpos
     unique_uvw = unique_rows(np.round(uvw, decimals=3))
     nunique = unique_uvw.shape[0]
     #generate a dictionary between each baseline and unique baseline
     unique_dictionary = {}
     for mm in range(uvw.shape[0]):
         row = np.where((np.round(uvw[mm, :], decimals=3) == np.round(
             unique_uvw, decimals=3)).all(axis=1))[0][0]
         unique_dictionary[mm] = row
     return nunique, unique_dictionary, unique_uvw, uvw
Exemplo n.º 2
0
    def chgphasecentre(self,pcentre):
        if(not(self.driftMode)):
            self.pcentre=pcentre
            pcentre=np.radians(pcentre)
            ra=pcentre[0]
            dec=pcentre[1]
            xyzrot=np.zeros(self.xyz.shape)
            xyzrot[:,0]=np.sin(ra)*self.xyz[:,0]+np.cos(ra)*self.xyz[:,1]
            xyzrot[:,1]=-np.sin(dec)*np.cos(ra)*self.xyz[:,0]+np.sin(dec)*np.sin(ra)*self.xyz[:,1]+np.cos(dec)*self.xyz[:,2]
            xyzrot[:,2]=np.cos(dec)*np.cos(ra)*self.xyz[:,0]-np.cos(dec)*np.sin(ra)*self.xyz[:,1]+np.sin(dec)*self.xyz[:,2]
            uvwpos=np.zeros((self.nvis,3))
            uvwpos[:,0]=utils.diffcomb(xyzrot[:,0])
            uvwpos[:,1]=utils.diffcomb(xyzrot[:,1])
            uvwpos[:,2]=utils.diffcomb(xyzrot[:,2])
            self.uvw=uvwpos
            self.unique_uvw=unique_rows(np.around(self.uvw,decimals=3))
            #        for mm in range(self.unique_uvw.shape[0]):
            #            self.redundancy_uvw[mm]=self.uvw[(self.uvw==self.unique_uvw[mm,:]).any(axis=1),:].shape[0]
            self.nunique=self.unique_uvw.shape[0]
#            print self.nunique
            self.model_true=np.zeros((len(self.freqs),self.nunique),dtype=complex)
            #        plt.scatter(uvwpos[:,0],uvwpos[:,1])
            #        plt.show()
            #        plt.close()
        else:
            self.pcentre=np.array([self.lst,self.lat])
            #print 'pcenter='+str(self.pcenter)
        return
Exemplo n.º 3
0
 def chgphasecentre(self, pcentre):
     if (not (self.driftMode)):
         self.pcentre = pcentre
         pcentre = np.radians(pcentre)
         ra = pcentre[0]
         dec = pcentre[1]
         xyzrot = np.zeros(self.xyz.shape)
         xyzrot[:,
                0] = np.sin(ra) * self.xyz[:, 0] + np.cos(ra) * self.xyz[:,
                                                                         1]
         xyzrot[:, 1] = -np.sin(dec) * np.cos(ra) * self.xyz[:, 0] + np.sin(
             dec) * np.sin(ra) * self.xyz[:, 1] + np.cos(dec) * self.xyz[:,
                                                                         2]
         xyzrot[:, 2] = np.cos(dec) * np.cos(ra) * self.xyz[:, 0] - np.cos(
             dec) * np.sin(ra) * self.xyz[:, 1] + np.sin(dec) * self.xyz[:,
                                                                         2]
         uvwpos = np.zeros((self.nvis, 3))
         uvwpos[:, 0] = utils.diffcomb(xyzrot[:, 0])
         uvwpos[:, 1] = utils.diffcomb(xyzrot[:, 1])
         uvwpos[:, 2] = utils.diffcomb(xyzrot[:, 2])
         self.uvw = uvwpos
         self.unique_uvw = unique_rows(np.around(self.uvw, decimals=3))
         #        for mm in range(self.unique_uvw.shape[0]):
         #            self.redundancy_uvw[mm]=self.uvw[(self.uvw==self.unique_uvw[mm,:]).any(axis=1),:].shape[0]
         self.nunique = self.unique_uvw.shape[0]
         #            print self.nunique
         self.model_true = np.zeros((len(self.freqs), self.nunique),
                                    dtype=complex)
         #        plt.scatter(uvwpos[:,0],uvwpos[:,1])
         #        plt.show()
         #        plt.close()
     else:
         self.pcentre = np.array([self.lst, self.lat])
         #print 'pcenter='+str(self.pcenter)
     return
Exemplo n.º 4
0
 def getUnique(self,pcentre):
     pcentre=np.radians(pcentre)
     ra=pcentre[0]
     dec=pcentre[1]
     xyzrot=np.zeros(self.xyz.shape)
     xyzrot[:,0]=np.sin(ra)*self.xyz[:,0]+np.cos(ra)*self.xyz[:,1]
     xyzrot[:,1]=-np.sin(dec)*np.cos(ra)*self.xyz[:,0]+np.sin(dec)*np.sin(ra)*self.xyz[:,1]+np.cos(dec)*self.xyz[:,2]
     xyzrot[:,2]=np.cos(dec)*np.cos(ra)*self.xyz[:,0]-np.cos(dec)*np.sin(ra)*self.xyz[:,1]+np.sin(dec)*self.xyz[:,2]
     uvwpos=np.zeros((self.nvis,3))
     uvwpos[:,0]=utils.diffcomb(xyzrot[:,0])
     uvwpos[:,1]=utils.diffcomb(xyzrot[:,1])
     uvwpos[:,2]=utils.diffcomb(xyzrot[:,2])
     uvw=uvwpos
     unique_uvw=unique_rows(np.round(uvw,decimals=3))
     nunique=unique_uvw.shape[0]
     #generate a dictionary between each baseline and unique baseline
     unique_dictionary={}
     for mm in range(uvw.shape[0]):
         row=np.where((np.round(uvw[mm,:],decimals=3)==np.round(unique_uvw,decimals=3)).all(axis=1))[0][0]
         unique_dictionary[mm]=row
     return nunique,unique_dictionary,unique_uvw,uvw