Ejemplo n.º 1
0
def plot_phot_compare():
    """ make a comparison plot showing aperture and psf photometry """
    from matplotlib import pyplot as pl
    import sncosmo
    import numpy as np
    from .import _ALPHA2FILTER

    datadir='/Users/rodney/Dropbox/Papers/snTomas/LCFIT/'
    ap = sncosmo.read_snana_ascii( datadir+'HST_FFSN_tomas.snana_apphot.dat')
    psf = sncosmo.read_snana_ascii(datadir+'HST_FFSN_tomas.snana_psfphot.dat')

    apdat = ap[1]['OBS']
    psfdat = psf[1]['OBS']

    fig = pl.gcf()
    pl.clf()
    iax = 0
    for band, color in zip( ['Y','J','N','H'],
                            ['c','r','g','m'] ):
        iax += 1
        fig.add_subplot( 2, 2, iax )
        for dat,marker,c in zip( [apdat,psfdat], ['o','D'], ['k',color]):
            iband = np.where( dat['FLT']==band )
            pl.errorbar( dat['MJD'][iband], dat['FLUXCAL'][iband],
                         dat['FLUXCALERR'][iband],
                         marker=marker, color=c, ms=10, alpha=0.5 )
            ax = pl.gca()
            pl.text(0.95,0.95,_ALPHA2FILTER[band],color=c,ha='right',va='top',transform=ax.transAxes)

    pl.draw()
Ejemplo n.º 2
0
def plot_lightcurve_snana():
    from matplotlib import pyplot as pl
    import sncosmo
    import numpy as np
    from .import _ALPHA2FILTER

    datadir='/Users/rodney/Dropbox/Papers/snTomas/LCFIT/'
    dat = sncosmo.read_snana_ascii( datadir+'HST_FFSN_tomas.snana.dat')
    obsdat = dat[1]['OBS']

    fig = pl.gcf()
    pl.clf()
    iax = 0
    marker='o'
    for band, color in zip( ['B','V','I','Y','J','N','H'],
                            ['c','g','r','c','g','r','k'] ):
        iax += 1
        fig.add_subplot( 2, 4, iax )
        iband = np.where( obsdat['FLT']==band )
        pl.errorbar( obsdat['MJD'][iband], obsdat['FLUXCAL'][iband],
                     obsdat['FLUXCALERR'][iband],
                     marker=marker, color=color, ms=10, alpha=0.5 )
        ax = pl.gca()
        pl.text(0.95,0.95,_ALPHA2FILTER[band],color=color,ha='right',va='top',transform=ax.transAxes)

    pl.draw()
Ejemplo n.º 3
0
def read_snana_datafile(datafile):
    """ Read in a SN data table that was written in the old 
    SNANA format, modify it, and return an astropy Table object 
    that can be handled by sncosmo functions.
    """
    metadata, datatable = sncosmo.read_snana_ascii(datafile,
                                                   default_tablename='OBS')
    sntable = standardize_snana_data(datatable['OBS'])
    return sntable
Ejemplo n.º 4
0
def test_read_snana_ascii():
    fname = join(dirname(__file__), "data", "snana_ascii_example.dat")
    meta, tables = sncosmo.read_snana_ascii(fname, default_tablename="OBS")

    # only 1 table
    assert len(tables) == 1
    data = tables["OBS"]

    assert len(data) == 4  # 4 rows.
    assert len(data.colnames) == 13  # 13 columns.
Ejemplo n.º 5
0
def test_read_snana_ascii():
    fname = join(dirname(__file__), "data", "snana_ascii_example.dat")
    meta, tables = sncosmo.read_snana_ascii(fname, default_tablename="OBS")

    # test a few different types of metadata
    assert meta['SURVEY'] == 'DES'
    assert meta['FAKE'] == 0
    assert_allclose(meta['REDSHIFT_HELIO'], 0.3614)

    # only 1 table
    assert len(tables) == 1
    data = tables["OBS"]

    assert len(data) == 4  # 4 rows.
    assert len(data.colnames) == 13  # 13 columns.
Ejemplo n.º 6
0
def test_read_snana_ascii():
    fname = join(dirname(__file__), "data", "snana_ascii_example.dat")
    meta, tables = sncosmo.read_snana_ascii(fname, default_tablename="OBS")

    # test a few different types of metadata
    assert meta['SURVEY'] == 'DES'
    assert meta['FAKE'] == 0
    assert_allclose(meta['REDSHIFT_HELIO'], 0.3614)

    # only 1 table
    assert len(tables) == 1
    data = tables["OBS"]

    assert len(data) == 4  # 4 rows.
    assert len(data.colnames) == 13  # 13 columns.
Ejemplo n.º 7
0
def snana_to_sncosmo( snanafile='HST_FFSN_tomas_snana_ab.dat') :
    """ make the SN Tomas light curve fit figure"""
    import sncosmo
    import numpy as np
    from . import _ALPHA2FILTER

    snanadat = sncosmo.read_snana_ascii(snanafile)
    mjd = snanadat[1]['OBS']['MJD']
    band = snanadat[1]['OBS']['FLT']
    fluxcal = snanadat[1]['OBS']['FLUXCAL']
    fluxcalerr = snanadat[1]['OBS']['FLUXCALERR']
    mag  = snanadat[1]['OBS']['MAG']
    magerr = snanadat[1]['OBS']['MAGERR']
    zptab  = snanadat[1]['OBS']['ZPTAB']

    flux = fluxcal * 10**(-0.4*(27.5-zptab))
    fluxerr = fluxcalerr * 10**(-0.4*(27.5-zptab))

    magab = -2.5*np.log10( flux ) + zptab
    magaberr = 1.0857 * fluxerr / flux


    filter = [ _ALPHA2FILTER[b] for b in band ]

    fout = open('HST_FFSN_tomas.sncosmo.dat','w')
    print >> fout, "# mjd     filter    flux     fluxerr    mag     magerr  zpt    magsys"

    for i in range(len(mjd)) :
        if flux[i]>0 :
            print >> fout, "%8.2f  %6s  %8.3f %8.3f  %8.2f %6.2f  %7.3f   AB"%(
                mjd[i], filter[i], flux[i], fluxerr[i], magab[i], magaberr[i], zptab[i]
            )
        else :
            print >> fout, "%8.2f  %6s  %8.3f %8.3f  %8.2f %6.2f  %7.3f   AB"%(
                mjd[i], filter[i], flux[i], fluxerr[i],
                -2.5*np.log10(3*fluxerr[i]) + zptab[i], -9.0, zptab[i]
            )

    fout.close()
Ejemplo n.º 8
0
def convert_light_curve_file( ):
    """ read in the SNANA-style light curve file (from D.Scolnic)
    and convert it into normal fluxes (not SNANA fluxcal) and
    AB and Vega mags
    :return:
    """
    import sncosmo
    import numpy as np
    from .import _ALPHA2FILTER
    from hstphot import hstzpt
    from astropy import table
    from astropy.utils import OrderedDict
    import sys
    import os

    thisfile = sys.argv[0]
    if 'ipython' in thisfile :
        thisfile = __file__
    thisdir = os.path.dirname( os.path.abspath(thisfile))
    datadir = os.path.join(thisdir,'data/')

    dat = sncosmo.read_snana_ascii( datadir+'HST_FFSN_tomas.snana.dat')
    obsdat = dat[1]['OBS']

    filtname= np.array([_ALPHA2FILTER[obsdat['FLT'][i]].lower()
                         for i in range(len(obsdat))])

    iIR = np.array([ i for i in range(len(obsdat))
                     if filtname[i].startswith('f1') ] )
    iACS = np.array([ i for i in range(len(obsdat))
                     if not filtname[i].startswith('f1') ] )
    zpt = np.ones(len(obsdat))
    zpt[iIR] = hstzpt.getzptWFC3IR(filtname[iIR],'AB')
    zpt[iACS] = hstzpt.getzptACS(filtname[iACS],'AB')
    zptsys = ['AB' for i in range(len(obsdat))]

    zptVega = np.ones(len(obsdat))
    zptVega[iIR] = hstzpt.getzptWFC3IR(filtname[iIR],'Vega')
    zptVega[iACS] = hstzpt.getzptACS(filtname[iACS],'Vega')

    fAB = obsdat['FLUXCAL'] * 10**(0.4*(27.5-zpt))
    ferrAB = obsdat['FLUXCALERR'] * 10**(0.4*(27.5-zpt))

    mAB = np.where( fAB>0, -2.5*np.log10(fAB)+zpt,
                    -2.5*np.log10(3*np.abs(ferrAB))+zpt,)
    merr = np.where( fAB>0, 1.0857*(ferrAB/fAB), -9*np.ones(len(fAB)))

    fcalVega = obsdat['FLUXCAL'] * 10**(0.4*(zpt-zptVega))
    fcalerrVega = obsdat['FLUXCALERR'] * 10**(0.4*(zpt-zptVega))
    mVega = np.where( fcalVega>0, -2.5*np.log10(fcalVega)+27.5,
                          -2.5*np.log10(3*np.abs(fcalerrVega))+27.5,)

    data=OrderedDict(
        [ ['mjd',obsdat['MJD']],
          ['filter',filtname],
          ['flux',fAB],
          ['fluxerr',ferrAB],
          ['mag',mAB],
          ['magerr',merr],
          ['zpt',zpt],
          ['zptsys',zptsys],
          ['fluxcalVega',fcalVega],
          ['fluxcalerrVega',fcalerrVega],
          ['magVega',mVega],
          ['zptVega',zptVega],
          ])
    outdat = table.Table(data=data)
    outdat['mjd'].format='%.1f'
    for colname in ['flux','fluxerr','fluxcalVega','fluxcalerrVega']:
        outdat[colname].format='%8.5f'
    for colname in ['mag','magerr','magVega']:
        outdat[colname].format='%8.3f'

    outdat.write( datadir+'HST_FFSN_tomas.dat',
                  format='ascii.fixed_width')
                  # format='ascii.commented_header')
    return(outdat)