Exemplo n.º 1
0
    def test_unknown_filters(self):
        data_file = self.get_data_path(UNKNOWN)
        for name, letter in self.read_filter_data_file(data_file):
            passband = Passband(name)
            self.assertEqual(passband.system, UNKNOWN)
            self.assertEqual(passband.letter, letter)

        for letter in string.ascii_uppercase:
            if letter not in passband.ALL_LETTERS:
                with self.assertRaises(NonRecognizedPassband):
                    Passband(letter)
Exemplo n.º 2
0
    def _test_photometric_system(self, system):
        """Test that Passband parses a photometric system correctly.

        'system' must be the formal name of the photometric system, adequately
        capitalized, such as 'Johnson' or 'Cousins'. The Passband class must
        set the 'system' attribute to this value at instantiation time.

        """

        data_file = self.get_data_path(system)

        # For each two-element tuple, such as 'Johnson U', 'U', the first
        # element is used to instantiate a Passband object and we then make
        # sure that both the system is the letter are correctly parsed.
        for name, letter in self.read_filter_data_file(data_file):
            passband = Passband(name)
            self.assertEqual(passband.system, system)
            self.assertEqual(passband.letter, letter)

        # A sequence of the letters allowed by the photometric system.
        # In the case of Johnson, for example, they are 'UBVRIJHKLMN'.
        valid_letters = Passband.SYSTEM_LETTERS[system]

        # Letters other than the valid ones raise InvalidPassbandLetter
        for letter in string.ascii_uppercase:
            if letter not in valid_letters:
                name = "%s %s" % (system, letter)
                with self.assertRaises(InvalidPassbandLetter):
                    Passband(name)

        # There are some rare cases in which the letter of the photometric
        # filter cannot be identified and NonRecognizedPassband is raised.
        # For example, if more than one letter is given.

        two_letters = "".join(random.sample(valid_letters, 2))
        values = dict(system=system, letter=two_letters)
        patterns = (
            "%(system)s",  # e.g., "Johnson"
            "%(letter)s %(system)s",  # e.g., "BV Johnson"
            "%(system)s %(letter)s",  # e.g., "Johnson BV"
            "%(letter)s (%(system)s)",
        )  # e.g., "BV (Johnson)"

        for pattern in patterns:
            name = pattern % values
            with self.assertRaises(NonRecognizedPassband):
                Passband(name)
Exemplo n.º 3
0
    def test_all(self):

        # Make sure that, except for H-alpha, all the photometric systems
        # and letters are present in the list returned by Passband.all()
        pfilters = Passband.all()
        # There must not be duplicate Passband objects
        self.assertEqual(len(pfilters), len(set(pfilters)))
        for system, letters in Passband.SYSTEM_LETTERS.iteritems():
            for letter in letters:
                name = "%s %s" % (system, letter)
                pfilter = Passband(name)
                self.assertIn(pfilter, pfilters)

        # No user-defined filter must be missing either
        for name in passband.CUSTOM_FILTERS.iterkeys():
            pfilter = Passband(name)
            self.assertIn(pfilter, pfilters)
Exemplo n.º 4
0
 def assert_max(index, *names):
     """ Make sure that Passband(names[index]) is the largest item """
     pfilters = [Passband(x) for x in names]
     self.assertEqual(max(pfilters), pfilters[index])
Exemplo n.º 5
0
 def test_custom_filters(self):
     for name, description in passband.CUSTOM_FILTERS.iteritems():
         pfilter = Passband(name)
         self.assertEqual(pfilter.system, CUSTOM)
         self.assertEqual(pfilter.letter, description)
Exemplo n.º 6
0
 def test_halpha_filters(self):
     data_file = self.get_data_path(HALPHA)
     for name, wavelength in self.read_filter_data_file(data_file):
         passband = Passband(name)
         self.assertEqual(passband.system, HALPHA)
         self.assertEqual(passband.letter, wavelength)