def get_luminosity_and_flux(tbdata, xmm=False):
    #
    ### Extract magnitude table and error table ###
    flux = vari_funcs.flux4_stacks(tbdata)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
    #    tbdata = tbdata[np.nanmean(flux,axis=1)>1e4]
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb,
                                                               tbdata,
                                                               aper=4)

    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)

    ### Find luminosity distance ###
    z = tbdata['z_spec']  #[mask]
    z[z == -1] = tbdata['z_p'][z == -1]
    DL = cosmo.luminosity_distance(z)
    DL = DL.to(u.m)

    ### Get AB magnitude ###
    #    abmag = tbdata['KMAG_20']

    ### Convert to luminosity using formula worked out in lab book ###
    #    L = 10 ** (-abmag/2.5) * 3631 * 1e-26 * (3e8/0.34e-6) * 4 * np.pi * (DL.value**2) # gives luminosity in W
    L = tbdata['M_K_z_p']

    ### remove any that have val of 99 ###
    L[L == 99] = np.nan  # remove those with null values
    #    L[L > -5] = np.nan # remove faintest as seem spurious
    mask = ~np.isnan(L)
    #    [mask]
    return tbdata[mask], L[mask], fluxnorm[mask], fluxerrnorm[mask]
Example #2
0
def get_luminosity_and_flux(tbdata, xmm=False):
    #
    ### Extract magnitude table and error table ###
    flux = vari_funcs.flux5_stacks(tbdata)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb, tbdata)

    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)

    ### Find luminosity distance ###
    z = tbdata['z_spec']  #[mask]
    z[z == -1] = tbdata['z_p'][z == -1]
    DL = cosmo.luminosity_distance(z)
    DL = DL.to(u.cm)

    ### Calculate luminosity ###
    if xmm == True:
        xrayF = tbdata['CR(S)'] * 0.171 * (10**(-14)
                                           )  #conversion into ergs/s/cm2
    else:
        xrayF = tbdata['Soft_flux']  #no conversion required in chandra
    xrayL = xrayF * 4 * np.pi * (DL.value**2)

    return tbdata, xrayL, fluxnorm, fluxerrnorm
Example #3
0
def make_ensemble(tbdata, xrayL, binedge):

    ### Extract magnitude table and error table ###
    flux = vari_funcs.flux5_stacks(tbdata)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb, tbdata)

    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)

    ### Create dicts to save data into ###
    enflux = {}
    enfluxerr = {}
    enXrayL = {}

    ### loop over bins ###
    for m, enmin in enumerate(binedge):
        ### Isolate data needed ###
        mask1 = xrayL >= enmin
        if m != len(binedge) - 1:
            mask2 = xrayL < binedge[m + 1]
        else:
            mask2 = np.ones(len(mask1))
        enmask = mask1 * mask2.astype(bool)
        enflux[m] = fluxnorm[enmask]
        enfluxerr[m] = fluxerrnorm[enmask]
        enXrayL[m] = xrayL[enmask]

    return enflux, enfluxerr, enXrayL
Example #4
0
def get_luminosity_and_flux(tbdata, xmm=False):
    #
    ### Extract magnitude table and error table ###
    flux = vari_funcs.flux5_stacks(tbdata)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
    #    tbdata = tbdata[np.nanmean(flux,axis=1)>1e4]
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb, tbdata)

    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)

    ### Find luminosity distance ###
    z = tbdata['z_spec']  #[mask]
    z[z == -1] = tbdata['z_p'][z == -1]
    DL = cosmo.luminosity_distance(z)
    DL = DL.to(u.m)

    ### Get AB magnitude ###
    abmag = tbdata['KMAG_20']

    ### Convert to luminosity using formula worked out in lab book ###
    L = 10**(-abmag / 2.5) * 3631 * 1e-26 * (3e8 / 0.34e-6) * 4 * np.pi * (
        DL.value**2)  # gives luminosity in W

    return tbdata, L, fluxnorm, fluxerrnorm
Example #5
0
def get_and_normalise_flux(tbdata, sigtb, aper=5):
    # Extract magnitude table and error table
    flux = vari_funcs.flux_stacks(tbdata, aper)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(
        sigtb, tbdata, aper)

    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)
    return fluxnorm, fluxerrnorm, tbdata
def get_ensemble_sig(tbdata, sigtb, binedge, posvar, aper=5):
    # Extract magnitude table and error table
    flux = vari_funcs.flux_stacks(tbdata,aper)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb, tbdata,aper)
    
    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)
    
    ### Find luminosity distance ###
    z = tbdata['z_spec']#[mask]
    z[z==-1] = tbdata['z_p'][z==-1]
    DL = cosmo.luminosity_distance(z)
    DL = DL.to(u.cm)
    
    ### Calculate the luminosity ###
    xrayF = tbdata['Full_flux']#[chanmask]
    xrayL = xrayF*4*np.pi*(DL.value**2)
    
    ### Create dicts to save data into ###
    enflux = {}
    enfluxerr = {}
    enxrayL = {}
    sig = np.empty(size)
    sigerr = np.empty(size)
    meanxrayL = np.empty(size)
    for m, enmin in enumerate(binedge):
        ### Isolate data needed ###
        mask1 = xrayL >= enmin
        if m != size-1:
            mask2 = xrayL < binedge[m+1]
        else:
            mask2 = np.ones(len(mask1))
        
        enmask = mask1*mask2.astype(bool)
    
        enflux[m] = fluxnorm[enmask]
        enfluxerr[m] = fluxerrnorm[enmask]
        enxrayL[m] = xrayL[enmask]
        
        ### Combine into one flux curve per bin ###
        enfluxcurve = np.ravel(enflux[m])
        enfluxcurveerr = np.ravel(enfluxerr[m])
        
        
        ### Find max likelihood sig of curve ###
        [sig[m],sigerr[m]] = vari_funcs.maximum_likelihood(enfluxcurve, enfluxcurveerr, 1, posvar)
        
        ### find mean z ###
        meanxrayL[m] = np.nanmean(enxrayL[m])
        
    return fluxnorm, fluxerrnorm, sig, sigerr, xrayL, meanxrayL
Example #7
0
def prep_data(tbdata):
    ### Remove edges ###
    tbdata = vari_funcs.remove_edges(tbdata)
    
    ## Create arrays of flux values ###
    flux = vari_funcs.flux4_stacks(tbdata)
    
    ### remove values that are negative ###
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
    
    ### Get error arrays ###
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb, tbdata, aper=4)
    
    return flux, fluxerr, tbdata
def get_luminosity_and_flux(tbdata, xmm=False):
    #
    ### Extract magnitude table and error table ###
    flux = vari_funcs.flux5_stacks(tbdata)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
    tbdata = tbdata[np.nanmean(flux, axis=1) > 1e4]
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb, tbdata)

    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)

    ### Get absolute magnitude ###
    L = tbdata['M_K_z_p']

    return tbdata, L, fluxnorm, fluxerrnorm
Example #9
0
def get_ensemble_sig(tbdata, sigtb, binedge, posvar, aper=5):
    # Extract magnitude table and error table
    flux = vari_funcs.flux_stacks(tbdata, aper)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(
        sigtb, tbdata, aper)

    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)

    ### Find z ###
    z = tbdata['z_spec']  #[mask]
    z[z == -1] = tbdata['z_p'][z == -1]

    ### Create dicts to save data into ###
    enflux = {}
    enfluxerr = {}
    enz = {}
    sig = np.empty(size)
    sigerr = np.empty(size)
    meanz = np.empty(size)
    for m, enmin in enumerate(binedge):
        ### Isolate data needed ###
        mask1 = z >= enmin
        if m != size - 1:
            mask2 = z < binedge[m + 1]
        else:
            mask2 = z < 4.5  #np.ones(len(mask1))

        enmask = mask1 * mask2.astype(bool)

        enflux[m] = fluxnorm[enmask]
        enfluxerr[m] = fluxerrnorm[enmask]
        enz[m] = z[enmask]

        ### Combine into one flux curve per bin ###
        enfluxcurve = np.ravel(enflux[m])
        enfluxcurveerr = np.ravel(enfluxerr[m])

        ### Find max likelihood sig of curve ###
        [sig[m],
         sigerr[m]] = vari_funcs.maximum_likelihood(enfluxcurve,
                                                    enfluxcurveerr, 1, posvar)

        ### find mean z ###
        meanz[m] = np.nanmean(enz[m])

    return fluxnorm, fluxerrnorm, sig, sigerr, z, meanz
def get_luminosity_and_flux(tbdata, xmm=False):
    #
    ### Extract magnitude table and error table ###
    flux = vari_funcs.flux4_stacks(tbdata)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
    #    tbdata = tbdata[np.nanmean(flux,axis=1)>1e4]
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb,
                                                               tbdata,
                                                               aper=4)

    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)

    L = tbdata['KFLUX_20']

    ### remove any that have -ve val ###
    L[L < 0] = np.nan  # remove those with null values
    #    L[L > -5] = np.nan # remove faintest as seem spurious
    mask = ~np.isnan(L)
    #    [mask]
    return tbdata[mask], L[mask], fluxnorm[mask], fluxerrnorm[mask]
def get_luminosity_and_flux(tbdata, xmm=False):
    
    ### Extract magnitude table and error table ###
    flux = vari_funcs.flux4_stacks(tbdata)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
#    tbdata = tbdata[np.nanmean(flux,axis=1)>1e4]
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb, tbdata, aper=4)
    
    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)
    
    ### Get Luminosity ###
    L = tbdata['M_K_z_p']
    L[L == 99] = np.nan
    mask = ~np.isnan(L)
    tbdata = tbdata[mask]
    L = L[mask]
    fluxnorm = fluxnorm[mask]
    fluxerrnorm = fluxerrnorm[mask]
    
    return tbdata, L, fluxnorm, fluxerrnorm
Example #12
0
def run_max_likely(tbdata):
    posvar = np.linspace(0,2,5000)
    ### Remove edges ###
    tbdata = vari_funcs.remove_edges(tbdata)
    
    sigtb = Table.read('sigma_tables/quad_epoch_sigma_table_extra_clean_no06_2arcsec.fits')

    ### Extract magnitude table and error table ###
    flux = vari_funcs.flux4_stacks(tbdata)
    flux, tbdata = vari_funcs.noneg(flux, tbdata)
#    tbdata = tbdata[np.nanmean(flux,axis=1)>1e4]
    flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb, tbdata, aper=4)
    
    ### Normalise ###
    fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)
    
    ### Get sig values ###
    numobs = np.shape(fluxnorm)[0]
    meanflux = np.nanmean(fluxnorm, axis=1)
    out = np.array([vari_funcs.maximum_likelihood(fluxnorm[n,:], 
                                                  fluxerrnorm[n,:], meanflux[n], 
                                                  posvar, n=n, printn=100) for n in range(numobs)])
    return out, tbdata
tbdata = fits.open(
    'variable_tables/no06_variables_chi30_DR11data_restframe.fits')[1].data
fullxray = fits.open(
    'mag_flux_tables/novarys_chanDR11data_restframe_mag_flux_table_best_extra_clean_no06.fits'
)[1].data
sigtb = Table.read('sigma_tables/quad_epoch_sigma_table_extra_clean_no06.fits')

#### Limit to Chandra region for simplicity ###
#tbdata = vari_funcs.chandra_only(tbdata)
#fullxray = vari_funcs.chandra_only(fullxray)
#chandata = vari_funcs.chandra_only(chandata)

# Extract magnitude table and error table
flux = vari_funcs.flux5_stacks(tbdata)
flux, tbdata = vari_funcs.noneg(flux, tbdata)
flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb, tbdata)
chanflux = vari_funcs.flux5_stacks(chandata)
chanflux, chandata = vari_funcs.noneg(chanflux, chandata)
chanflux, chanerr, chandata = vari_funcs.create_quad_error_array(
    sigtb, chandata)
fullflux = vari_funcs.flux5_stacks(fullxray)
fullflux, fulldata = vari_funcs.noneg(fullflux, fullxray)
fullflux, fullerr, fullxray = vari_funcs.create_quad_error_array(
    sigtb, fullxray)
xmmflux = vari_funcs.flux5_stacks(xmmdata)
xmmflux, xmmdata = vari_funcs.noneg(xmmflux, xmmdata)
xmmflux, xmmerr, xmmdata = vari_funcs.create_quad_error_array(sigtb, xmmdata)

### Normalise ###
fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)
chanfluxnorm, chanerrnorm = vari_funcs.normalise_flux_and_errors(
Example #14
0
)[1].data
chandata = fits.open(
    'variable_tables/no06_variables_chi30_chandata_DR11data_restframe.fits'
)[1].data
sigtb = Table.read('sigma_tables/quad_epoch_sigma_table_extra_clean_no06.fits')

### Limit to Chandra region for simplicity ###
tbdata = vari_funcs.chandra_only(tbdata)
fullxray = vari_funcs.chandra_only(fullxray)
chandata = vari_funcs.chandra_only(chandata)

# Extract magnitude table and error table
flux = vari_funcs.flux5_stacks(tbdata)
flux, tbdata = vari_funcs.noneg(flux, tbdata)
flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb,
                                                           tbdata,
                                                           aper=5)
chanflux = vari_funcs.flux5_stacks(chandata)
chanflux, chandata = vari_funcs.noneg(chanflux, chandata)
chanflux, chanerr, chandata = vari_funcs.create_quad_error_array(sigtb,
                                                                 chandata,
                                                                 aper=5)
fullflux = vari_funcs.flux5_stacks(fullxray)
fullflux, fulldata = vari_funcs.noneg(fullflux, fullxray)
fullflux, fullerr, fullxray = vari_funcs.create_quad_error_array(sigtb,
                                                                 fullxray,
                                                                 aper=5)

### Normalise ###
fluxnorm, fluxerrnorm = vari_funcs.normalise_flux_and_errors(flux, fluxerr)
chanfluxnorm, chanerrnorm = vari_funcs.normalise_flux_and_errors(
Example #15
0
font = {'family' : 'DejaVu Sans',
        'weight' : 'normal',
        'size'   : 14}

plt.rc('font', **font)

### Open the fits files and get data ###
#varys = fits.open('variable_tables/no06_variables_chi30_DR11data_restframe.fits')[1].data
tbdata = fits.open('mag_flux_tables/mag_flux_table_best_extra_clean_no06.fits')[1].data
sigtb = Table.read('sigma_tables/quad_epoch_sigma_table_extra_clean_no06.fits')

#varys = vari_funcs.chandra_only(varys)

flux = vari_funcs.flux5_stacks(tbdata)
flux, tbdata = vari_funcs.noneg(flux, tbdata)
flux, fluxerr, newtbdata = vari_funcs.create_quad_error_array(sigtb, tbdata)
#flux,fluxerr = vari_funcs.normalise_flux_and_errors(flux, fluxerr)

mag = 30 - 2.5*np.log10(flux)
magerr = 1.086/(flux/fluxerr) # taken from http://faculty.virginia.edu/skrutskie/astr3130.s16/notes/astr3130_lec12.pdf?fbclid=IwAR0fe6lNYH8Azj1iVqusb5l-z3xeECx7JBv23ACDV0Xjdq04FHJPD3nPlxE

#set up time variable for plot
t = np.linspace(1, 8, num=8)
years = ['05B', '06B', '07B', '08B', '09B', '10B', '11B', '12B']
x = [1,3,4,5,6,7,8]

#### reduce to just single lightcurve ###
#obnum = 94904
#mask = newvarys['NUMBER_05B'] == obnum
#flux = flux[mask].reshape(len(x))
#fluxerr = fluxerr[mask].reshape(len(x))
Example #16
0
font = {'family' : 'DejaVu Sans',
        'weight' : 'normal',
        'size'   : 14}

plt.rc('font', **font)

### Open the fits files and get data ###
varys = fits.open('variable_tables/no06_variables_chi30_2arcsec.fits')[1].data
sigtb = Table.read('sigma_tables/quad_epoch_sigma_table_extra_clean_no06_2arcsec.fits')

#varys = vari_funcs.chandra_only(varys)

flux = vari_funcs.flux4_stacks(varys)
flux, varys = vari_funcs.noneg(flux, varys)
flux, fluxerr, newvarys = vari_funcs.create_quad_error_array(sigtb, varys, aper=4)
#flux,fluxerr = vari_funcs.normalise_flux_and_errors(flux, fluxerr)

#set up time variable for plot
t = np.linspace(1, 8, num=8)
years = ['05B', '06B', '07B', '08B', '09B', '10B', '11B', '12B']
xcurve = [1,3,4,5,6,7,8]

### reduce to just single lightcurve ###
obnum = 62243
mask = newvarys['NUMBER_05B'] == obnum
flux = flux[mask].reshape(len(xcurve))
fluxerr = fluxerr[mask].reshape(len(xcurve))
obdata = newvarys[mask]

#### Subtract non flare semester to get flare ###
Example #17
0
#tbdata = vari_funcs.chandra_only(tbdata)
#chandata = vari_funcs.chandra_only(chandata)
#sdata = vari_funcs.chandra_only(sdata)

## Create arrays of flux values ###
flux = vari_funcs.flux5_stacks(tbdata)
fluxchan = vari_funcs.flux5_stacks(chandata)
sflux = vari_funcs.flux5_stacks(sdata)

### remove values that are negative ###
flux, tbdata = vari_funcs.noneg(flux, tbdata)
fluxchan, chandata = vari_funcs.noneg(fluxchan, chandata)
sflux, sdata = vari_funcs.noneg(sflux, sdata)

### Get error arrays ###
flux, fluxerr, tbdata = vari_funcs.create_quad_error_array(sigtb, tbdata)
fluxchan, chanerr, chandata = vari_funcs.create_quad_error_array(
    sigtb, chandata)
sflux, serr, sdata = vari_funcs.create_quad_error_array(sigtb, sdata)

### reset X-ray column as messed up by stacking ###
tbdata['X-ray'][tbdata['X-ray'] == 70] = False
tbdata['X-ray'][tbdata['X-ray'] == 84] = True

### Check chisq plot looks correct ###
fig, _ = vari_funcs.flux_variability_plot(
    flux,
    fluxchan,
    'chisq',
    fluxerr=fluxerr,
    chanerr=chanerr,
Example #18
0
sdata = fits.open(
    'mag_flux_tables/stars_mag_flux_table_extra_clean.fits')[1].data
sigtb = Table.read('quad_epoch_sigma_table_extra_clean.fits')

## Create arrays of flux values ###
flux = vari_funcs.flux5_stacks(tbdata)
fluxchan = vari_funcs.flux5_stacks(chandata)
sflux = vari_funcs.flux5_stacks(sdata)

### remove values that are negative ###
flux, tbdata = vari_funcs.noneg(flux, tbdata)
fluxchan, chandata = vari_funcs.noneg(fluxchan, chandata)
sflux, sdata = vari_funcs.noneg(sflux, sdata)

### Get error arrays ###
quadflux, quaderr, quaddata = vari_funcs.create_quad_error_array(
    sigtb, tbdata, quadoutput=True)
quadchanflux, quadchanerr, quadchandata = vari_funcs.create_quad_error_array(
    sigtb, chandata, quadoutput=True)
quadsflux, quadserr, quadsdata = vari_funcs.create_quad_error_array(
    sigtb, sdata, quadoutput=True)

### get flux bounds ###
bins = np.array(sigtb.colnames)
binarr = np.empty(55)
k = 0
### Create binedge array ###
for bin in bins:
    if bin[0] == '1':
        binarr[k] = int(bin[2:])
        k += 1
plt.figure(figsize=[8, 8])