Exemplo n.º 1
0
class BandFilterTest(unittest.TestCase):

    def setUp(self):
        self.band_filter = BandFilter()

    def test_basic_information_after_creation(self):
        self.assertEqual(self.band_filter.name, 'u')
        self.assertEqual(self.band_filter.bright_limit, 21.0)
        self.assertEqual(self.band_filter.dark_limit, 30.0)
        self.assertEqual(self.band_filter.max_seeing, 2.0)
        self.assertListEqual(list(self.band_filter.exposures), [15.0, 15.0])

    def test_reversed_bright_dark(self):
        self.band_filter.bright_limit = 29.0
        self.band_filter.dark_limit = 24.0
        self.band_filter.validate()
        self.assertEqual(self.band_filter.bright_limit, 24.0)
        self.assertEqual(self.band_filter.dark_limit, 29.0)
Exemplo n.º 2
0
class BandFilterTest(unittest.TestCase):
    def setUp(self):
        self.band_filter = BandFilter()

    def test_basic_information_after_creation(self):
        self.assertEqual(self.band_filter.name, "u")
        self.assertEqual(self.band_filter.num_visits, 10)
        self.assertEqual(self.band_filter.num_grouped_visits, 1)
        self.assertEqual(self.band_filter.bright_limit, 21.0)
        self.assertEqual(self.band_filter.dark_limit, 30.0)
        self.assertEqual(self.band_filter.max_seeing, 2.0)
        self.assertListEqual(list(self.band_filter.exposures), [15.0, 15.0])

    def test_reversed_bright_dark(self):
        self.band_filter.bright_limit = 29.0
        self.band_filter.dark_limit = 24.0
        self.band_filter.validate()
        self.assertEqual(self.band_filter.bright_limit, 24.0)
        self.assertEqual(self.band_filter.dark_limit, 29.0)
Exemplo n.º 3
0
    def setDefaults(self):
        """Setup all the proposal information.
        """
        self.name = "SouthCelestialPole"

        # -------------------------
        # Sky Region specifications
        # -------------------------

        # Dec Band
        dec_limit = Selection()
        dec_limit.limit_type = SELECTION_LIMIT_TYPES[1]
        dec_limit.minimum_limit = -90.0
        dec_limit.maximum_limit = -62.5

        self.sky_region.selections = {0: dec_limit}

        # -----------------------------
        # Sky Exclusion specifications
        # -----------------------------

        self.sky_exclusion.dec_window = 90.0

        # Galactic Plane
        gal_plane = Selection()
        gal_plane.limit_type = SELECTION_LIMIT_TYPES[6]
        gal_plane.minimum_limit = 0.0
        gal_plane.maximum_limit = 10.0
        gal_plane.bounds_limit = 90.0

        self.sky_exclusion.selections = {0: gal_plane}

        # ---------------------------------
        # Sky Nightly Bounds specifications
        # ---------------------------------

        self.sky_nightly_bounds.twilight_boundary = -12.0
        self.sky_nightly_bounds.delta_lst = 60.0

        # ------------------------------
        # Sky Constraints specifications
        # ------------------------------

        self.sky_constraints.max_airmass = 2.5
        self.sky_constraints.max_cloud = 0.7

        # ----------------------
        # Scheduling information
        # ----------------------

        self.scheduling.max_num_targets = 100
        self.scheduling.accept_serendipity = False
        self.scheduling.accept_consecutive_visits = False
        self.scheduling.airmass_bonus = 0.5

        # --------------------------
        # Band Filter specifications
        # --------------------------

        u_filter = BandFilter()
        u_filter.name = 'u'
        u_filter.num_visits = 30
        u_filter.bright_limit = 21.0
        u_filter.dark_limit = 30.0
        u_filter.max_seeing = 3.0
        u_filter.exposures = [15.0, 15.0]

        g_filter = BandFilter()
        g_filter.name = 'g'
        g_filter.num_visits = 30
        g_filter.bright_limit = 21.0
        g_filter.dark_limit = 30.0
        g_filter.max_seeing = 3.0
        g_filter.exposures = [15.0, 15.0]

        r_filter = BandFilter()
        r_filter.name = 'r'
        r_filter.num_visits = 30
        r_filter.bright_limit = 20.0
        r_filter.dark_limit = 30.0
        r_filter.max_seeing = 2.0
        r_filter.exposures = [15.0, 15.0]

        i_filter = BandFilter()
        i_filter.name = 'i'
        i_filter.num_visits = 30
        i_filter.bright_limit = 19.5
        i_filter.dark_limit = 30.0
        i_filter.max_seeing = 2.0
        i_filter.exposures = [15.0, 15.0]

        z_filter = BandFilter()
        z_filter.name = 'z'
        z_filter.num_visits = 30
        z_filter.bright_limit = 17.0
        z_filter.dark_limit = 21.4
        z_filter.max_seeing = 2.0
        z_filter.exposures = [15.0, 15.0]

        y_filter = BandFilter()
        y_filter.name = 'y'
        y_filter.num_visits = 30
        y_filter.bright_limit = 16.0
        y_filter.dark_limit = 21.4
        y_filter.max_seeing = 2.0
        y_filter.exposures = [15.0, 15.0]

        self.filters = {u_filter.name: u_filter,
                        g_filter.name: g_filter,
                        r_filter.name: r_filter,
                        i_filter.name: i_filter,
                        z_filter.name: z_filter,
                        y_filter.name: y_filter}
Exemplo n.º 4
0
    def setDefaults(self):
        """Setup all the proposal information.
        """
        self.name = "BasicProposal5"

        # -------------------------
        # Sky Region specifications
        # -------------------------

        self.sky_user_regions = [597, 1486, 2206]

        # -----------------------------
        # Sky Exclusion specifications
        # -----------------------------

        self.sky_exclusion.dec_window = 90.0

        # ---------------------------------
        # Sky Nightly Bounds specifications
        # ---------------------------------

        self.sky_nightly_bounds.twilight_boundary = -12.0
        self.sky_nightly_bounds.delta_lst = 60.0

        # ------------------------------
        # Sky Constraints specifications
        # ------------------------------

        self.sky_constraints.max_airmass = 2.5

        #----------------------------
        # Sub-Sequence specifications
        #----------------------------

        sseq0 = SubSequence()
        sseq0.name = "Only_GR"
        sseq0.filters = ['g', 'r']
        sseq0.visits_per_filter = [25, 30]
        sseq0.num_events = 20
        sseq0.num_max_missed = 5
        sseq0.time_interval = 3 * 24 * 60 * 60
        sseq0.time_window_start = 0.0
        sseq0.time_window_max = 1.0
        sseq0.time_window_end = 2.0
        sseq0.time_weight = 1.0

        sseq1 = SubSequence()
        sseq1.name = "Only_IZ"
        sseq1.filters = ['i', 'z']
        sseq1.visits_per_filter = [35, 10]
        sseq1.num_events = 25
        sseq1.num_max_missed = 10
        sseq1.time_interval = 5 * 24 * 60 * 60
        sseq1.time_window_start = 0.0
        sseq1.time_window_max = 1.0
        sseq1.time_window_end = 2.0
        sseq1.time_weight = 1.0

        self.sub_sequences = {0: sseq0, 1: sseq1}

        # ----------------------
        # Scheduling information
        # ----------------------

        self.scheduling.max_num_targets = 100
        self.scheduling.accept_serendipity = False
        self.scheduling.accept_consecutive_visits = True
        self.scheduling.hour_angle_bonus = 0.5
        self.scheduling.hour_angle_max = 4.0

        # --------------------------
        # Band Filter specifications
        # --------------------------

        u_filter = BandFilter()
        u_filter.name = 'u'
        u_filter.bright_limit = 21.0
        u_filter.dark_limit = 30.0
        u_filter.max_seeing = 1.5
        u_filter.exposures = [15.0, 15.0]

        g_filter = BandFilter()
        g_filter.name = 'g'
        g_filter.bright_limit = 21.0
        g_filter.dark_limit = 30.0
        g_filter.max_seeing = 1.5
        g_filter.exposures = [15.0, 15.0]

        r_filter = BandFilter()
        r_filter.name = 'r'
        r_filter.bright_limit = 20.25
        r_filter.dark_limit = 30.0
        r_filter.max_seeing = 1.5
        r_filter.exposures = [15.0, 15.0]

        i_filter = BandFilter()
        i_filter.name = 'i'
        i_filter.bright_limit = 19.5
        i_filter.dark_limit = 30.0
        i_filter.max_seeing = 1.5
        i_filter.exposures = [15.0, 15.0]

        self.filters = {
            u_filter.name: u_filter,
            g_filter.name: g_filter,
            r_filter.name: r_filter,
            i_filter.name: i_filter
        }
Exemplo n.º 5
0
    def setDefaults(self):
        """Setup all the proposal information.
        """
        self.name = "BasicProposal1"

        # -------------------------
        # Sky Region specifications
        # -------------------------

        # Dec Band
        dec_limit = Selection()
        dec_limit.limit_type = SELECTION_LIMIT_TYPES[1]
        dec_limit.minimum_limit = -50
        dec_limit.maximum_limit = -20

        # RA Band
        ra_limit = Selection()
        ra_limit.limit_type = SELECTION_LIMIT_TYPES[0]
        ra_limit.minimum_limit = 45.0
        ra_limit.maximum_limit = 90.0

        self.sky_region.selections = {0: dec_limit, 1: ra_limit}

        # Combine the Dec and RA bands
        self.sky_region.combiners = ["and"]

        # -----------------------------
        # Sky Exclusion specifications
        # -----------------------------

        self.sky_exclusion.dec_window = 90.0

        # Galactic Plane
        gal_plane = Selection()
        gal_plane.limit_type = SELECTION_LIMIT_TYPES[6]
        gal_plane.minimum_limit = 0.0
        gal_plane.maximum_limit = 10.0
        gal_plane.bounds_limit = 90.0

        self.sky_exclusion.selections = {0: gal_plane}

        # ---------------------------------
        # Sky Nightly Bounds specifications
        # ---------------------------------

        self.sky_nightly_bounds.twilight_boundary = -12.0
        self.sky_nightly_bounds.delta_lst = 60.0

        # ------------------------------
        # Sky Constraints specifications
        # ------------------------------

        self.sky_constraints.max_airmass = 2.5

        # ----------------------
        # Scheduling information
        # ----------------------

        self.scheduling.max_num_targets = 100
        self.scheduling.accept_serendipity = False
        self.scheduling.accept_consecutive_visits = False

        # --------------------------
        # Band Filter specifications
        # --------------------------

        u_filter = BandFilter()
        u_filter.name = "u"
        u_filter.num_visits = 75
        u_filter.bright_limit = 21.3
        u_filter.dark_limit = 30.0
        u_filter.max_seeing = 1.5
        u_filter.exposures = [15.0, 15.0]

        g_filter = BandFilter()
        g_filter.name = "g"
        g_filter.num_visits = 105
        g_filter.bright_limit = 21.0
        g_filter.dark_limit = 30.0
        g_filter.max_seeing = 1.5
        g_filter.exposures = [15.0, 15.0]

        r_filter = BandFilter()
        r_filter.name = "r"
        r_filter.num_visits = 240
        r_filter.bright_limit = 20.25
        r_filter.dark_limit = 30.0
        r_filter.max_seeing = 1.5
        r_filter.exposures = [15.0, 15.0]

        i_filter = BandFilter()
        i_filter.name = "i"
        i_filter.num_visits = 240
        i_filter.bright_limit = 19.5
        i_filter.dark_limit = 30.0
        i_filter.max_seeing = 1.5
        i_filter.exposures = [15.0, 15.0]

        z_filter = BandFilter()
        z_filter.name = "z"
        z_filter.num_visits = 210
        z_filter.bright_limit = 17.0
        z_filter.dark_limit = 21.0
        z_filter.max_seeing = 1.5
        z_filter.exposures = [15.0, 15.0]

        y_filter = BandFilter()
        y_filter.name = "y"
        y_filter.num_visits = 210
        y_filter.bright_limit = 16.5
        y_filter.dark_limit = 21.0
        y_filter.max_seeing = 1.5
        y_filter.exposures = [15.0, 15.0]

        self.filters = {
            u_filter.name: u_filter,
            g_filter.name: g_filter,
            r_filter.name: r_filter,
            i_filter.name: i_filter,
            z_filter.name: z_filter,
            y_filter.name: y_filter,
        }
Exemplo n.º 6
0
    def setDefaults(self):
        """Setup all the proposal information.
        """
        Sequence.setDefaults(self)

        self.name = "DeepDrillingCosmology1"

        # -------------------------
        # Sky Region specifications
        # -------------------------

        self.sky_user_regions = [290, 744, 1427, 2412, 2786]

        # -----------------------------
        # Sky Exclusion specifications
        # -----------------------------

        self.sky_exclusion.dec_window = 90.0

        # ---------------------------------
        # Sky Nightly Bounds specifications
        # ---------------------------------

        self.sky_nightly_bounds.twilight_boundary = -12.0
        self.sky_nightly_bounds.delta_lst = 60.0

        # ------------------------------
        # Sky Constraints specifications
        # ------------------------------

        self.sky_constraints.max_airmass = 1.5
        self.sky_constraints.max_cloud = 0.7

        #---------------------------
        # Sub-sequence specification
        #---------------------------

        sseq0 = SubSequence()
        sseq0.name = "main"
        sseq0.filters = ['r', 'g', 'i', 'z', 'y']
        sseq0.visits_per_filter = [20, 10, 20, 26, 20]
        sseq0.num_events = 27
        sseq0.num_max_missed = 0
        sseq0.time_interval = 3 * 24 * 60 * 60
        sseq0.time_window_start = 0.8
        sseq0.time_window_max = 1.0
        sseq0.time_window_end = 1.4
        sseq0.time_weight = 1.0

        sseq1 = SubSequence()
        sseq1.name = "u-band"
        sseq1.filters = ['u']
        sseq1.visits_per_filter = [20]
        sseq1.num_events = 7
        sseq1.num_max_missed = 0
        sseq1.time_interval = 1 * 24 * 60 * 60
        sseq1.time_window_start = 0.8
        sseq1.time_window_max = 1.0
        sseq1.time_window_end = 1.4
        sseq1.time_weight = 1.0

        self.sub_sequences = {0: sseq0, 1: sseq1}

        # ----------------------
        # Scheduling information
        # ----------------------

        self.scheduling.max_num_targets = 100
        self.scheduling.accept_serendipity = False
        self.scheduling.accept_consecutive_visits = True
        self.scheduling.airmass_bonus = 0.5

        # --------------------------
        # Band Filter specifications
        # --------------------------

        u_filter = BandFilter()
        u_filter.name = 'u'
        u_filter.bright_limit = 21.3
        u_filter.dark_limit = 30.0
        u_filter.max_seeing = 1.5
        u_filter.exposures = [15.0, 15.0]

        g_filter = BandFilter()
        g_filter.name = 'g'
        g_filter.bright_limit = 19.5
        g_filter.dark_limit = 30.0
        g_filter.max_seeing = 1.5
        g_filter.exposures = [15.0, 15.0]

        r_filter = BandFilter()
        r_filter.name = 'r'
        r_filter.bright_limit = 19.5
        r_filter.dark_limit = 30.0
        r_filter.max_seeing = 1.5
        r_filter.exposures = [15.0, 15.0]

        i_filter = BandFilter()
        i_filter.name = 'i'
        i_filter.bright_limit = 19.5
        i_filter.dark_limit = 30.0
        i_filter.max_seeing = 1.5
        i_filter.exposures = [15.0, 15.0]

        z_filter = BandFilter()
        z_filter.name = 'z'
        z_filter.bright_limit = 17.5
        z_filter.dark_limit = 30.0
        z_filter.max_seeing = 1.5
        z_filter.exposures = [15.0, 15.0]

        y_filter = BandFilter()
        y_filter.name = 'y'
        y_filter.bright_limit = 17.5
        y_filter.dark_limit = 30.0
        y_filter.max_seeing = 1.5
        y_filter.exposures = [15.0, 15.0]

        self.filters = {u_filter.name: u_filter,
                        g_filter.name: g_filter,
                        r_filter.name: r_filter,
                        i_filter.name: i_filter,
                        z_filter.name: z_filter,
                        y_filter.name: y_filter}
Exemplo n.º 7
0
    def setDefaults(self):
        """Setup all the proposal information.
        """
        self.name = "BasicProposal3"

        # -------------------------
        # Sky Region specifications
        # -------------------------

        # Dec Band
        dec_limit = Selection()
        dec_limit.limit_type = SELECTION_LIMIT_TYPES[1]
        dec_limit.minimum_limit = -50
        dec_limit.maximum_limit = -20

        # RA Band
        ra_limit = Selection()
        ra_limit.limit_type = SELECTION_LIMIT_TYPES[0]
        ra_limit.minimum_limit = 45.0
        ra_limit.maximum_limit = 90.0

        self.sky_region.selections = {0: dec_limit, 1: ra_limit}

        # Combine the Dec and RA bands
        self.sky_region.combiners = ["and"]

        # -----------------------------
        # Sky Exclusion specifications
        # -----------------------------

        self.sky_exclusion.dec_window = 90.0

        # ---------------------------------
        # Sky Nightly Bounds specifications
        # ---------------------------------

        self.sky_nightly_bounds.twilight_boundary = -12.0
        self.sky_nightly_bounds.delta_lst = 60.0

        # ------------------------------
        # Sky Constraints specifications
        # ------------------------------

        self.sky_constraints.max_airmass = 2.5

        # ----------------------
        # Scheduling information
        # ----------------------

        self.scheduling.max_num_targets = 100
        self.scheduling.accept_serendipity = False
        self.scheduling.accept_consecutive_visits = False
        self.scheduling.restrict_grouped_visits = False
        self.scheduling.time_interval = 30 * 60
        self.scheduling.time_window_start = -0.5
        self.scheduling.time_window_max = 0.5
        self.scheduling.time_window_end = 1.0

        # --------------------------
        # Band Filter specifications
        # --------------------------

        u_filter = BandFilter()
        u_filter.name = 'u'
        u_filter.num_visits = 75
        u_filter.num_grouped_visits = 1
        u_filter.bright_limit = 21.0
        u_filter.dark_limit = 30.0
        u_filter.max_seeing = 1.5
        u_filter.exposures = [15.0, 15.0]

        g_filter = BandFilter()
        g_filter.name = 'g'
        g_filter.num_visits = 105
        g_filter.num_grouped_visits = 2
        g_filter.bright_limit = 21.0
        g_filter.dark_limit = 30.0
        g_filter.max_seeing = 1.5
        g_filter.exposures = [15.0, 15.0]

        r_filter = BandFilter()
        r_filter.name = 'r'
        r_filter.num_visits = 240
        r_filter.num_grouped_visits = 2
        r_filter.bright_limit = 20.25
        r_filter.dark_limit = 30.0
        r_filter.max_seeing = 1.5
        r_filter.exposures = [15.0, 15.0]

        i_filter = BandFilter()
        i_filter.name = 'i'
        i_filter.num_visits = 240
        i_filter.num_grouped_visits = 2
        i_filter.bright_limit = 19.5
        i_filter.dark_limit = 30.0
        i_filter.max_seeing = 1.5
        i_filter.exposures = [15.0, 15.0]

        self.filters = {u_filter.name: u_filter,
                        g_filter.name: g_filter,
                        r_filter.name: r_filter,
                        i_filter.name: i_filter}
Exemplo n.º 8
0
 def validate(self):
     """Validate configuration parameters.
     """
     BandFilter.validate(self)
Exemplo n.º 9
0
 def setDefaults(self):
     """Default specification for a general proposal filter.
     """
     BandFilter.setDefaults(self)
     self.num_visits = 10
     self.num_grouped_visits = 1
Exemplo n.º 10
0
 def setUp(self):
     self.band_filter = BandFilter()
Exemplo n.º 11
0
 def setUp(self):
     self.band_filter = BandFilter()