Beispiel #1
0
    def test_sne_light_curves(self):
        """
        Generate some super nova light curves.  Verify that they come up with the same
        magnitudes and uncertainties as supernova catalogs.
        """

        gen = SNIaLightCurveGenerator(self.db, self.opsimDb)

        raRange = (78.0, 85.0)
        decRange = (-69.0, -65.0)
        bandpass = '******'

        pointings = gen.get_pointings(raRange, decRange, bandpass=bandpass)
        gen.sn_universe._midSurveyTime = 49000.0
        gen.sn_universe._snFrequency = 0.001
        self.assertGreater(len(pointings), 1)
        lc_dict, truth = gen.light_curves_from_pointings(pointings)
        self.assertGreater(len(lc_dict), 0)

        for group in pointings:
            self.assertGreater(len(group), 1)
            for obs in group:
                cat = SNIaLightCurveControlCatalog(self.db, obs_metadata=obs)
                for sn in cat.iter_catalog():
                    if sn[1] > 0.0:
                        lc = lc_dict[sn[0]][bandpass]
                        dex = np.argmin(np.abs(lc['mjd'] - obs.mjd.TAI))
                        self.assertLess(np.abs(lc['mjd'][dex] - obs.mjd.TAI), 1.0e-7)
                        self.assertLess(np.abs(lc['flux'][dex] - sn[1]), 1.0e-7)
                        self.assertLess(np.abs(lc['error'][dex] - sn[2]), 1.0e-7)
Beispiel #2
0
    def test_sne_multiband_light_curves(self):
        """
        Generate some super nova light curves.  Verify that they come up with the same
        magnitudes and uncertainties as supernova catalogs.  Use multiband light curves.
        """

        gen = SNIaLightCurveGenerator(self.db, self.opsimDb)

        raRange = (78.0, 85.0)
        decRange = (-69.0, -65.0)

        pointings = gen.get_pointings(raRange, decRange, bandpass=('r', 'z'))
        gen.sn_universe._midSurveyTime = 49000.0
        gen.sn_universe._snFrequency = 0.001
        self.assertGreater(len(pointings), 1)
        lc_dict, truth = gen.light_curves_from_pointings(pointings)
        self.assertGreater(len(lc_dict), 0)

        obs_gen = ObservationMetaDataGenerator(database=self.opsimDb, driver='sqlite')
        control_obs_r = obs_gen.getObservationMetaData(fieldRA=raRange, fieldDec=decRange,
                                                       telescopeFilter='r', boundLength=1.75)

        control_obs_z = obs_gen.getObservationMetaData(fieldRA=raRange, fieldDec=decRange,
                                                       telescopeFilter='z', boundLength=1.75)

        self.assertGreater(len(control_obs_r), 0)
        self.assertGreater(len(control_obs_z), 0)

        ct_r = 0
        for obs in control_obs_r:
            cat = SNIaLightCurveControlCatalog(self.db, obs_metadata=obs)
            for sn in cat.iter_catalog():
                if sn[1] > 0.0:
                    ct_r += 1
                    lc = lc_dict[sn[0]]['r']
                    dex = np.argmin(np.abs(lc['mjd'] - obs.mjd.TAI))
                    self.assertLess(np.abs(lc['mjd'][dex] - obs.mjd.TAI), 1.0e-7)
                    self.assertLess(np.abs(lc['flux'][dex] - sn[1]), 1.0e-7)
                    self.assertLess(np.abs(lc['error'][dex] - sn[2]), 1.0e-7)

        self.assertGreater(ct_r, 0)

        ct_z = 0
        for obs in control_obs_z:
            cat = SNIaLightCurveControlCatalog(self.db, obs_metadata=obs)
            for sn in cat.iter_catalog():
                if sn[1] > 0.0:
                    ct_z += 1
                    lc = lc_dict[sn[0]]['z']
                    dex = np.argmin(np.abs(lc['mjd'] - obs.mjd.TAI))
                    self.assertLess(np.abs(lc['mjd'][dex] - obs.mjd.TAI), 1.0e-7)
                    self.assertLess(np.abs(lc['flux'][dex] - sn[1]), 1.0e-7)
                    self.assertLess(np.abs(lc['error'][dex] - sn[2]), 1.0e-7)

        self.assertGreater(ct_z, 0)
Beispiel #3
0
    def test_sne_light_curves_z_cut(self):
        """
        Generate some super nova light curves.  Add a cutoff in redshift.
        Verify that they come up with the same magnitudes and uncertainties
        as supernova catalogs and that objects with z>z_cutoff are not returned.
        """
        z_cut = 0.9

        gen = SNIaLightCurveGenerator(self.db, self.opsimDb)
        gen.z_cutoff = z_cut

        raRange = (78.0, 85.0)
        decRange = (-69.0, -65.0)
        bandpass = '******'

        pointings = gen.get_pointings(raRange, decRange, bandpass=bandpass)
        gen.sn_universe._midSurveyTime = 49000.0
        gen.sn_universe._snFrequency = 0.001
        self.assertGreater(len(pointings), 1)
        lc_dict, truth = gen.light_curves_from_pointings(pointings)
        self.assertGreater(len(lc_dict), 0)

        over_z = 0

        for group in pointings:
            self.assertGreater(len(group), 1)
            for obs in group:
                cat = SNIaLightCurveControlCatalog(self.db, obs_metadata=obs)
                for sn in cat.iter_catalog():
                    if sn[1] > 0.0:
                        if sn[3] > z_cut:
                            self.assertNotIn(sn[0], lc_dict)
                            over_z += 1
                        else:
                            lc = lc_dict[sn[0]][bandpass]
                            dex = np.argmin(np.abs(lc['mjd'] - obs.mjd.TAI))
                            self.assertLess(
                                np.abs(lc['mjd'][dex] - obs.mjd.TAI), 1.0e-7)
                            self.assertLess(np.abs(lc['flux'][dex] - sn[1]),
                                            1.0e-7)
                            self.assertLess(np.abs(lc['error'][dex] - sn[2]),
                                            1.0e-7,
                                            msg='%e vs %e' %
                                            (lc['error'][dex], sn[2]))

        self.assertGreater(over_z, 0)
Beispiel #4
0
    def test_limit_sne_light_curves(self):
        """
        Test that we can limit the number of light curves returned per field of view
        """
        lc_limit = 2
        gen = SNIaLightCurveGenerator(self.db, self.opsimDb)
        gen.sn_universe._midSurveyTime = 49000.0
        gen.sn_universe._snFrequency = 0.001

        raRange = (78.0, 85.0)
        decRange = (-69.0, -65.0)

        pointings = gen.get_pointings(raRange, decRange, bandpass=('r', 'z'))

        control_lc, truth = gen.light_curves_from_pointings(pointings)
        test_lc, truth = gen.light_curves_from_pointings(pointings, lc_per_field=lc_limit)
        self.assertGreater(len(control_lc), len(test_lc))
        self.assertLessEqual(len(test_lc), lc_limit*len(pointings))
Beispiel #5
0
    def test_sne_light_curves_z_cut(self):
        """
        Generate some super nova light curves.  Add a cutoff in redshift.
        Verify that they come up with the same magnitudes and uncertainties
        as supernova catalogs and that objects with z>z_cutoff are not returned.
        """
        z_cut = 0.9

        gen = SNIaLightCurveGenerator(self.db, self.opsimDb)
        gen.z_cutoff = z_cut

        raRange = (78.0, 85.0)
        decRange = (-69.0, -65.0)
        bandpass = '******'

        pointings = gen.get_pointings(raRange, decRange, bandpass=bandpass)
        gen.sn_universe._midSurveyTime = 49000.0
        gen.sn_universe._snFrequency = 0.001
        self.assertGreater(len(pointings), 1)
        lc_dict, truth = gen.light_curves_from_pointings(pointings)
        self.assertGreater(len(lc_dict), 0)

        over_z = 0

        for group in pointings:
            self.assertGreater(len(group), 1)
            for obs in group:
                cat = SNIaLightCurveControlCatalog(self.db, obs_metadata=obs)
                for sn in cat.iter_catalog():
                    if sn[1] > 0.0:
                        if sn[3] > z_cut:
                            self.assertNotIn(sn[0], lc_dict)
                            over_z += 1
                        else:
                            lc = lc_dict[sn[0]][bandpass]
                            dex = np.argmin(np.abs(lc['mjd'] - obs.mjd.TAI))
                            self.assertLess(np.abs(lc['mjd'][dex] - obs.mjd.TAI), 1.0e-7)
                            self.assertLess(np.abs(lc['flux'][dex] - sn[1]), 1.0e-7)
                            self.assertLess(np.abs(lc['error'][dex] - sn[2]),
                                            1.0e-7, msg='%e vs %e' % (lc['error'][dex], sn[2]))

        self.assertGreater(over_z, 0)
Beispiel #6
0
    print("Could not load lsst.sims")
    print("Did you remember to setup sims with EUPS using:")
    print()
    print("source eups-setups.sh")
    print("setup lsst_sims")
    sys.exit(0)

# Need a database connection via:
# ssh -L 51433:fatboy.phys.washington.edu:1433 gateway.astro.washington.edu

if __name__ == '__main__':

    # Twinkles: RA 53.01, Dec -27.44
    raRange = (52.0, 54.5)
    decRange = (-28.5, -26.5)
    bandpass = ('u', 'g', 'r', 'i', 'z')
    opsimdb_filename = "minion_1016_sqlite.db"

    catalogdb = GalaxyTileObj()
    sn_gen = SNIaLightCurveGenerator(catalogdb, opsimdb_filename)

    sn_pointings = sn_gen.get_pointings(raRange, decRange, bandpass=bandpass)

    sn_lc_dict, sn_truth_dict = sn_gen.light_curves_from_pointings(
        sn_pointings, lc_per_field=1000)
    print("Number of light curves: ", len(sn_lc_dict.keys()))

    f_out = open("sne_dd_lightcurves.pkl", "w")
    cPickle.dump((sn_lc_dict, sn_truth_dict), f_out)
    f_out.close()