コード例 #1
0
    def _beam_map_single(self, bl_index, f_index):

        p_stokes = [
            0.5 * np.array([[1.0, 0.0], [0.0, 1.0]]),
            0.5 * np.array([[1.0, 0.0], [0.0, -1.0]]),
            0.5 * np.array([[0.0, 1.0], [1.0, 0.0]]),
            0.5 * np.array([[0.0, -1.0J], [1.0J, 0.0]])
        ]

        # Get beam maps for each feed.
        feedi, feedj = self.uniquepairs[bl_index]
        beami, beamj = self.beam(feedi, f_index), self.beam(feedj, f_index)

        # Get baseline separation and fringe map.
        uv = self.baselines[bl_index] / self.wavelengths[f_index]
        fringe = visibility.fringe(self._angpos, self.zenith, uv)

        pow_stokes = [
            np.sum(beami * np.dot(beamj.conjugate(), polproj), axis=1) *
            self._horizon for polproj in p_stokes
        ]

        # Calculate the solid angle of each beam
        pxarea = (4 * np.pi / beami.shape[0])

        om_i = np.sum(np.abs(beami)**2 * self._horizon[:, np.newaxis]) * pxarea
        om_j = np.sum(np.abs(beamj)**2 * self._horizon[:, np.newaxis]) * pxarea

        omega_A = (om_i * om_j)**0.5

        # Calculate the complex visibility transfer function
        cv_stokes = [p * (2 * fringe / omega_A) for p in pow_stokes]

        return cv_stokes
コード例 #2
0
ファイル: telescope.py プロジェクト: TianlaiProject/tlpipe
    def _beam_map_single(self, bl_index, f_index):

        p_stokes = [ 0.5 * np.array([[1.0,   0.0], [0.0,  1.0]]),
                     0.5 * np.array([[1.0,   0.0], [0.0, -1.0]]),
                     0.5 * np.array([[0.0,   1.0], [1.0,  0.0]]),
                     0.5 * np.array([[0.0, -1.0J], [1.0J, 0.0]]) ]

        # Get beam maps for each feed.
        feedi, feedj = self.uniquepairs[bl_index]
        beami, beamj = self.beam(feedi, f_index), self.beam(feedj, f_index)

        # Get baseline separation and fringe map.
        uv = self.baselines[bl_index] / self.wavelengths[f_index]
        fringe = visibility.fringe(self._angpos, self.zenith, uv)

        pow_stokes = [ np.sum(beami * np.dot(beamj.conjugate(), polproj), axis=1) * self._horizon for polproj in p_stokes]

        # Calculate the solid angle of each beam
        pxarea = (4*np.pi / beami.shape[0])

        om_i = np.sum(np.abs(beami)**2 * self._horizon[:, np.newaxis]) * pxarea
        om_j = np.sum(np.abs(beamj)**2 * self._horizon[:, np.newaxis]) * pxarea

        omega_A = (om_i * om_j)**0.5

        # Calculate the complex visibility transfer function
        cv_stokes = [ p * (2 * fringe / omega_A) for p in pow_stokes ]

        return cv_stokes
コード例 #3
0
ファイル: telescope.py プロジェクト: TianlaiProject/tlpipe
    def _beam_map_single(self, bl_index, f_index):

        # Get beam maps for each feed.
        feedi, feedj = self.uniquepairs[bl_index]
        beami, beamj = self.beam(feedi, f_index), self.beam(feedj, f_index)

        # Get baseline separation and fringe map.
        uv = self.baselines[bl_index] / self.wavelengths[f_index]
        fringe = visibility.fringe(self._angpos, self.zenith, uv)

        pxarea = (4 * np.pi / beami.shape[0])

        # Beam solid angle (integrate over beam^2 - equal area pixels)
        om_i = np.sum(np.abs(beami)**2 * self._horizon) * pxarea
        om_j = np.sum(np.abs(beamj)**2 * self._horizon) * pxarea

        omega_A = (om_i * om_j)**0.5

        # Calculate the complex visibility transfer function
        cvis = self._horizon * fringe * beami * beamj.conjugate() / omega_A

        return [ cvis ]
コード例 #4
0
    def _beam_map_single(self, bl_index, f_index):

        # Get beam maps for each feed.
        feedi, feedj = self.uniquepairs[bl_index]
        beami, beamj = self.beam(feedi, f_index), self.beam(feedj, f_index)

        # Get baseline separation and fringe map.
        uv = self.baselines[bl_index] / self.wavelengths[f_index]
        fringe = visibility.fringe(self._angpos, self.zenith, uv)

        pxarea = (4 * np.pi / beami.shape[0])

        # Beam solid angle (integrate over beam^2 - equal area pixels)
        om_i = np.sum(np.abs(beami)**2 * self._horizon) * pxarea
        om_j = np.sum(np.abs(beamj)**2 * self._horizon) * pxarea

        omega_A = (om_i * om_j)**0.5

        # Calculate the complex visibility transfer function
        cvis = self._horizon * fringe * beami * beamj.conjugate() / omega_A

        return [cvis]