示例#1
0
 def test_ceil_to_odd_valid_angle(self):
     a = VAngle(4.2)
     b = utils.ceil_to_odd(a)
     self.assertEqual(a.original_unit, b.original_unit)
     self.assertEqual(a.sexa, b.sexa)
     self.assertEqual(b.deg, 5)
     a = VAngle(5.2)
     b = utils.ceil_to_odd(a)
     self.assertEqual(b.deg, 7)
示例#2
0
 def test_ceil_to_odd_valid_angle(self):
     a = VAngle(4.2)
     b = utils.ceil_to_odd(a)
     self.assertEqual(a.original_unit, b.original_unit)
     self.assertEqual(a.sexa, b.sexa)
     self.assertEqual(b.deg, 5)
     a = VAngle(5.2)
     b = utils.ceil_to_odd(a)
     self.assertEqual(b.deg, 7)
示例#3
0
文件: maps.py 项目: discos/basie
 def _get_spacing(self, receiver, frequency):
     self.beamsize = VAngle(receiver.get_beamsize(max(frequency)))
     if receiver.is_multifeed() and receiver.has_derotator:
         #we can exploit multifeed derotator optimization 
         logger.info("applying multifeed derotator optimization for map generation")
         if not isinstance(self.spacing, VAngle):
             approx_spacing = self.beamsize / self.spacing
             scans_per_interleave = ceil(receiver.interleave / approx_spacing)
             if not scans_per_interleave == self.spacing:
                 #logger.warning("Rounding to {0} scans per interleave".format(scans_per_interleave))
                 pass
             self.spacing = receiver.interleave / scans_per_interleave
             logger.info("Spacing subscans by {0}".format(self.spacing))
         else:
             if (self.spacing > (receiver.interleave / 2)):
                 logger.warning("Spacing is too high, map will be undersampled")
             scans_per_interleave = floor(receiver.interleave / self.spacing)
         #this is necessary for tsys and offsets
         self.beamsize = receiver.feed_extent * 2
         if scans_per_interleave == 0:
             logger.warning("Spacing is too high for this receiver")
             scans_per_interleave = 1
             self.spacing = 0
         major_spacing = receiver.feed_extent * 2 + receiver.interleave + self.spacing
         _offset_x = (-1 * (self.length_x / 2)) + receiver.feed_extent
         self.dimension_x = 0
         self.offset_x = []
         while _offset_x <= (self.length_x / 2 + receiver.feed_extent):
             for i in range(scans_per_interleave):
                 self.offset_x.append(_offset_x + i * self.spacing)
             _offset_x = _offset_x + major_spacing
         self.dimension_x = len(self.offset_x)
         _offset_y = (-1 * (self.length_y / 2)) + receiver.feed_extent
         self.dimension_y = 0
         self.offset_y = []
         while _offset_y <= (self.length_y / 2 + receiver.feed_extent):
             for i in range(scans_per_interleave):
                 self.offset_y.append(_offset_y + i * self.spacing)
             _offset_y = _offset_y + major_spacing
         self.dimension_y = len(self.offset_y)
     else:
         if not isinstance(self.spacing, VAngle):
             self.spacing = self.beamsize / self.spacing
         self.dimension_x = utils.ceil_to_odd(self.length_x.deg /
                                              self.spacing.deg + 1)
         self.dimension_y = utils.ceil_to_odd(self.length_y.deg /
                                              self.spacing.deg + 1)
         logger.debug("Scan {0:d} dim_x {1:f} dim_y {2:f}".format(self.ID, self.dimension_x,
                                            self.dimension_x))
         self.offset_x = [i * self.spacing
                          for i in range(int(-1 * (self.dimension_x // 2)), 
                                         int((self.dimension_x // 2) + 1))]
         self.offset_y = [i * self.spacing
                          for i in range(int(-1 * (self.dimension_y // 2)), 
                                         int((self.dimension_y // 2) + 1))]
示例#4
0
 def _get_spacing(self, receiver, frequency):
     self.beamsize = VAngle(receiver.get_beamsize(max(frequency)))
     if receiver.is_multifeed() and receiver.has_derotator:
         #we can exploit multifeed derotator optimization
         logger.info(
             "applying multifeed derotator optimization for map generation")
         if not isinstance(self.spacing, VAngle):
             approx_spacing = self.beamsize / self.spacing
             scans_per_interleave = ceil(receiver.interleave /
                                         approx_spacing)
             if not scans_per_interleave == self.spacing:
                 #logger.warning("Rounding to {0} scans per interleave".format(scans_per_interleave))
                 pass
             self.spacing = receiver.interleave / scans_per_interleave
             logger.info("Spacing subscans by {0}".format(self.spacing))
         else:
             if (self.spacing > (receiver.interleave / 2)):
                 logger.warning(
                     "Spacing is too high, map will be undersampled")
             scans_per_interleave = floor(receiver.interleave /
                                          self.spacing)
         #this is necessary for tsys and offsets
         self.beamsize = receiver.feed_extent * 2
         if scans_per_interleave == 0:
             logger.warning("Spacing is too high for this receiver")
             scans_per_interleave = 1
             self.spacing = 0
         major_spacing = receiver.feed_extent * 2 + receiver.interleave + self.spacing
         _offset_x = (-1 * (self.length_x / 2)) + receiver.feed_extent
         self.dimension_x = 0
         self.offset_x = []
         while _offset_x <= (self.length_x / 2 + receiver.feed_extent):
             for i in range(int(scans_per_interleave)):
                 self.offset_x.append(_offset_x + i * self.spacing)
             _offset_x = _offset_x + major_spacing
         self.dimension_x = len(self.offset_x)
         _offset_y = (-1 * (self.length_y / 2)) + receiver.feed_extent
         self.dimension_y = 0
         self.offset_y = []
         while _offset_y <= (self.length_y / 2 + receiver.feed_extent):
             for i in range(int(scans_per_interleave)):
                 self.offset_y.append(_offset_y + i * self.spacing)
             _offset_y = _offset_y + major_spacing
         self.dimension_y = len(self.offset_y)
     else:
         if not isinstance(self.spacing, VAngle):
             self.spacing = self.beamsize / self.spacing
         self.dimension_x = utils.ceil_to_odd(self.length_x.deg /
                                              self.spacing.deg + 1)
         self.dimension_y = utils.ceil_to_odd(self.length_y.deg /
                                              self.spacing.deg + 1)
         logger.debug("Scan {0:d} dim_x {1:f} dim_y {2:f}".format(
             self.ID, self.dimension_x, self.dimension_x))
         self.offset_x = [
             i * self.spacing
             for i in range(int(-1 * (self.dimension_x //
                                      2)), int((self.dimension_x // 2) + 1))
         ]
         self.offset_y = [
             i * self.spacing
             for i in range(int(-1 * (self.dimension_y //
                                      2)), int((self.dimension_y // 2) + 1))
         ]
示例#5
0
 def test_ceil_to_odd(self):
     self.assertEqual(utils.ceil_to_odd(4.2), 5)
     self.assertEqual(utils.ceil_to_odd(3.2), 5)
     self.assertEqual(utils.ceil_to_odd(-4.2), -3)
示例#6
0
 def test_ceil_to_odd(self):
     self.assertEqual(utils.ceil_to_odd(4.2), 5)
     self.assertEqual(utils.ceil_to_odd(3.2), 5)
     self.assertEqual(utils.ceil_to_odd(-4.2), -3)