Filter responses for SDSS. Data table from
        https://www.sdss3.org/binaries/filter_curves.fits, as linked from
        https://www.sdss3.org/instruments/camera.php#Filters. SHA1 hash of the
        file is d3f638c41e21489ba7d6dbe7bb8217d938f21184. "Determined by Jim
        Gunn in June 2001." Doi+ 2010 have updated estimates but these are
        per-column in the SDSS camera, which we don't care about.

        Note that these are for the main SDSS 2.5m telescope. Magnitudes in
        the primed SDSS system were determined on the "photometric telescope",
        and the whole reason for the existence of both primed and unprimed
        ugriz systems is that the two have filters with slightly different
        behavior. My current application involves an entirely different
        telescope emulating the primed SDSS photometric system, and their
        precise system response is neither going to be ultra-precisely
        characterized nor exactly equal to either of the SDSS systems. These
        responses will be good enough, though.

        Wavelengths are in Angstrom. Based on the pivot wavelengths listed in
        http://www.astro.ljmu.ac.uk/~ikb/research/mags-fluxes/, the data table
        stores QE responses, so we have to convert them to equal-energy
        responses. Responses both including and excluding the atmosphere are
        included; I use the former.

def _load_data(self, band):
        """Filter responses for SDSS. Data table from
        https://www.sdss3.org/binaries/filter_curves.fits, as linked from
        https://www.sdss3.org/instruments/camera.php#Filters. SHA1 hash of the
        file is d3f638c41e21489ba7d6dbe7bb8217d938f21184. "Determined by Jim
        Gunn in June 2001." Doi+ 2010 have updated estimates but these are
        per-column in the SDSS camera, which we don't care about.

        Note that these are for the main SDSS 2.5m telescope. Magnitudes in
        the primed SDSS system were determined on the "photometric telescope",
        and the whole reason for the existence of both primed and unprimed
        ugriz systems is that the two have filters with slightly different
        behavior. My current application involves an entirely different
        telescope emulating the primed SDSS photometric system, and their
        precise system response is neither going to be ultra-precisely
        characterized nor exactly equal to either of the SDSS systems. These
        responses will be good enough, though.

        Wavelengths are in Angstrom. Based on the pivot wavelengths listed in
        http://www.astro.ljmu.ac.uk/~ikb/research/mags-fluxes/, the data table
        stores QE responses, so we have to convert them to equal-energy
        responses. Responses both including and excluding the atmosphere are
        included; I use the former.

        """
        h = bandpass_data_fits('sdss3_filter_responses.fits')
        section = 'ugriz'.index(band[0]) + 1
        d = h[section].data
        if d.wavelength.dtype.isnative:
            df = pd.DataFrame({'wlen': d.wavelength, 'resp': d.respt})
        else:
            df = pd.DataFrame({'wlen': d.wavelength.byteswap(True).newbyteorder(),
                               'resp': d.respt.byteswap(True).newbyteorder()})
        df.resp *= df.wlen # QE to equal-energy response.
        return df