Esempio n. 1
0
 def read_simlib(libfile):
     '''function to read snana like simlib file'''
     if bench:
         print "Reading the simlib file. This might take a few minutes..."
     meta, obs = sncosmo.read_snana_simlib(libfile)
     for id in obs.keys():
         #obs[id].rename_column('FLT', 'band')
         obs[id]['band'] = ['desg'] * len(obs[id]['FLT'])
         for ii, val in enumerate(obs[id]['FLT']):
             if val == 'g': obs[id]['band'][ii] = 'desg'
             if val == 'r': obs[id]['band'][ii] = 'desr'
             if val == 'i': obs[id]['band'][ii] = 'desi'
             if val == 'z': obs[id]['band'][ii] = 'desz'
         obs[id].rename_column('MJD', 'time')
         obs[id].rename_column('CCD_GAIN', 'gain')
         obs[id].rename_column('SKYSIG', 'skynoise')
         obs[id].rename_column('ZPTAVG', 'zp')
         obs[id]['zpsys'] = ['ab'] * len(obs[id]['gain'])
     return meta, obs
Esempio n. 2
0
def test_read_snana_simlib_noend():
    fname = join(dirname(__file__), "data", "snana_simlib_example_noend.dat")
    meta, obs_sets = sncosmo.read_snana_simlib(fname)
    assert len(obs_sets) == 2
def test_read_snana_simlib_noend():
    fname = join(dirname(__file__), "data", "snana_simlib_example_noend.dat")
    meta, obs_sets = sncosmo.read_snana_simlib(fname)
    assert len(obs_sets) == 2
Esempio n. 4
0
particular strategy.
"""

simlibfilename = '/home/kushner/src/lsstpipeline/cache/RBtest_opsim.simlib'
# simlibfilename = 'cache/RBtest_opsim.simlib'

# set up bandpasses for LSST
sl.getlsstbandpassobjs(plot=False)

def prefixbandname(prefix, obstable):
        
    _bb = np.array(obstable['FLT'])
    _lsst = np.array([prefix]*len(_bb), dtype='S6')
    return map ( ''.join, zip(_lsst,_bb))
#Read the simlib file, get the libids which index different fields
meta, obstables = sncosmo.read_snana_simlib(simlibfilename)
print "META\n"
print meta
print "\n\n OBSTABLE LIBIDS \n"
print obstables.keys()

#Choose a field: for example the one indexed by 519
minmjd = obstables[519]['MJD'].min()
maxmjd = obstables[519]['MJD'].max()
obstable = obstables[519]
print "Number of observations in obstable: ", len(obstable)
print "min and max MJD in the set: ", minmjd, maxmjd

#Set SNCosmo model and set its t0 aritificially to values I know are in the above table
model = sncosmo.Model(source='salt2-extended')
params = []
Esempio n. 5
0
def test_read_snana_simlib_invalid():
    """Test that we fails on simlib files with bad co-add columns."""
    fname = join(dirname(__file__), "data", "snana_simlib_example_invalid.dat")
    with pytest.raises(ValueError) as e_info:
        _ = sncosmo.read_snana_simlib(fname)
Esempio n. 6
0
def test_read_snana_simlib_coadd():
    """Test when co-added `ID*NEXPOSE` key is used."""
    fname = join(dirname(__file__), "data", "snana_simlib_example_coadd.dat")
    meta, obs_sets = sncosmo.read_snana_simlib(fname)
    assert "NEXPOSE" in obs_sets[0].colnames
Esempio n. 7
0
def test_read_snana_simlib_doc():
    """Test when DOCANA header is present in simlib"""
    fname = join(dirname(__file__), "data", "snana_simlib_example_doc.dat")
    meta, _ = sncosmo.read_snana_simlib(fname)
    assert "DOCUMENTATION" in meta
Esempio n. 8
0
             lw=2,
             bins=zbins)
    plt.xlabel('Redshift')
    plt.ylabel('Normed PDF')
    plt.legend(loc='upper left', frameon=False)
    plt.title('Redshift Distribution Before Cuts')
    #plt.hist(testz,normed=True)
    plt.show()

##PART 2: READING IN THE SIMLIB
##---------------------------------
print 'READING THE SNANA SIMLIB. THIS MIGHT TAKE A FEW MINUTES - BE PATIENT!'

snana_simlib_file = 'DES_DIFFIMG.SIMLIB'

snana_simlib_meta, snana_simlib_obs_sets = sncosmo.read_snana_simlib(
    snana_simlib_file)
#NOTE: THE SIMLIB INDEX STARTS AT 1, NOT 0#

#print snana_simlib_obs_sets.keys()
#print snana_simlib_obs_sets[1].meta
#print snana_simlib_obs_sets[1].colnames

##PART 3: GENERATING THE COLOR
## AND STRETCH DISTRIBUTIONS
##---------------------------------
print 'DRAWING THE COLOR AND STRETCH'

## LET'S ASSUME WE JUST WANT TO DRAW COLOR AND STRETCH
## FROM INDEPENDENT NORMAL DISTRIBUTIONS
simxmean, simxscale = 0.5, 1.2
simcmean, simcscale = -0.05, 0.15
Esempio n. 9
0
def simulate_simlib(simlibfile, snmodelsource, outfile="LC/simulatedlc.dat", restrict=10):
    """
    Simulate SN based on the simlibfile using SNCosmo SALT models


    Parameters
    ----------
    simlibfile :

    snmodelsource:

    outfile:

    Returns
    -------

    """
    from astropy.units import Unit
    from astropy.coordinates import SkyCoord

    # read the simlibfile into obstables
    meta, obstables = sncosmo.read_snana_simlib(simlibfilename)

    # set the SNCosmo model source
    dustmaproot = os.getenv("SIMS_DUSTMAPS_DIR")
    map_dir = os.path.join(dustmaproot, "DustMaps")
    dust = sncosmo.CCM89Dust()
    model = Model(
        source=snmodelsource, effects=[dust, dust], effect_frames=["rest", "obs"], effect_names=["host", "mw"]
    )

    maxSNperField = restrict
    # Different fields in SIMLIB are indexed by libids
    libids = obstables.keys()
    lcs = []
    for libid in libids:

        # Get the obstable corresponding to each field
        obstable = obstables[libid]
        manipulateObsTable(obstable)
        # Need Area from PixSize
        ra = obstable.meta["RA"]
        dec = obstable.meta["DECL"]
        area = obstable.meta["PIXSIZE"]
        maxmjd = obstable["time"].max()
        minmjd = obstable["time"].min()
        rangemjd = maxmjd - minmjd
        skycoords = SkyCoord(ra, dec, unit="deg")
        t_mwebv = sncosmo.get_ebv_from_map(skycoords, mapdir=map_dir, interpolate=False)
        model.set(mwebv=t_mwebv)
        params = []
        # col = Table.Column(obstable['SEARCH'].size*['ab'], name='zpsys')
        # obstable['FLT'].name =  'band'
        # obstable['MJD'].name =  'time'
        # obstable['ZPTAVG'].name =  'zp'
        # obstable['CCD_GAIN'].name =  'gain'
        # obstable['SKYSIG'].name =  'skynoise'
        # obstable.add_column(col)
        redshifts = list(sncosmo.zdist(0.0, 1.2, ratefunc=cosmoRate, time=rangemjd, area=area))
        print "num SN generated ", len(redshifts)
        for i, z in enumerate(redshifts):
            mabs = normal(-19.3, 0.3)
            model.set(z=z)
            model.set_source_peakabsmag(mabs, "bessellb", "ab")
            x0 = model.get("x0")
            # RB: really should not be min, max but done like in catalogs
            p = {"z": z, "t0": uniform(minmjd, maxmjd), "x0": x0, "x1": normal(0.0, 1.0), "c": normal(0.0, 0.1)}
            params.append(p)
            if maxSNperField is not None:
                if i == maxSNperField:
                    break
        print "realizing SN"
        lcslib = sncosmo.realize_lcs(obstable, model, params, trim_observations=True)
        lcs.append(lcslib)
        # alllcsintables = vstack(lcslib)
    # print alllcsintables[0]
    # print alllcsintables[MJD].size
    # write light curves to disk
    for i, field in enumerate(lcs):
        for snid, lc in enumerate(field):
            sncosmo.write_lc(lc, fname=outfile + "_" + str(i) + "_" + str(snid) + ".dat", format="ascii")
    return lcs