Exemple #1
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
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]
Exemple #3
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
Exemple #4
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
Exemple #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
Exemple #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
Exemple #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
Exemple #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
Exemple #13
0
import numpy as np #for handling arrays
#import math
from astropy.stats import median_absolute_deviation
import vari_funcs #my module to help run code neatly
#from scipy.stats import chisquare
plt.close('all') #close any open plots


### Open the fits files and get data ###
tbdata = fits.open('mag_flux_tables/mag_flux_table_best_1519match.fits')[1].data
sdata = fits.open('mag_flux_tables/stars_mag_flux_table_1519match.fits')[1].data

### Get flux array and remove values that are negative ###
flux = vari_funcs.flux5_stacks(tbdata)
sflux = vari_funcs.flux5_stacks(sdata)
sflux, sdata = vari_funcs.noneg(sflux, sdata)
flux, tbdata = vari_funcs.noneg(flux, tbdata)

### Everything needs to be done on flux bins so create bin array ###
#bins = np.array([13, 15])
#bins = np.append(bins, np.arange(16,22.4,0.2))
bins = np.arange(13,22.4,0.2)
bins = np.append(bins, [24])
bins = 10**((30-bins)/2.5)
bins = np.flip(bins, axis=0)

### set up time variable ###
t = np.arange(8)
semesters = ['05B', '06B', '07B', '08B', '09B', '10B', '11B', '12B']

lastind = len(bins)-1
sigdict = {}
finalchisq = np.array([])
galchisq = np.array([])
oldchisq = np.array([])
for m, qtbdata in enumerate(quaddata):
    ### get quad arrays for chan and stars ###
    qchandata = chanquaddata[m]
    qsdata = squaddata[m]

    ## Create arrays of flux values ###
    fluxn = vari_funcs.flux4_stacks(qtbdata)
    fluxchann = vari_funcs.flux4_stacks(qchandata)
    sfluxn = vari_funcs.flux4_stacks(qsdata)

    ### remove values that are negative ###
    fluxn, qtbdata = vari_funcs.noneg(fluxn, qtbdata)
    fluxchann, qchandata = vari_funcs.noneg(fluxchann, qchandata)
    sfluxn, qsdata = vari_funcs.noneg(sfluxn, qsdata)

    fluxerr = vari_funcs.fluxerr4_stacks(qtbdata)
    fluxerrchan = vari_funcs.fluxerr4_stacks(qchandata)
    sfluxerr = vari_funcs.fluxerr4_stacks(qsdata)

    print(len(fluxn) + len(sfluxn))

    if m == 3:
        ### plot flux vs err ###
        plt.figure(1)
        #        plt.subplot(2,2,m+1)
        plt.plot(fluxn[:, 6], fluxerr[:, 6], 'b+')
        plt.plot(sfluxn[:, 6], sfluxerr[:, 6], 'm*')
Exemple #15
0
from matplotlib.offsetbox import OffsetImage, AnnotationBbox

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]
    return sigma, newmagerr  #output the required err change and the new array


### Open the fits files and get data ###
tbdata = fits.open('mag_flux_tables/mag_flux_table_best.fits')[1].data
chandata = fits.open('mag_flux_tables/xray_mag_flux_table_best.fits')[1].data
sdata = fits.open('mag_flux_tables/stars_mag_flux_table.fits')[1].data

### extract magnitude arrays ###
allmag = vari_funcs.flux5_stacks(tbdata)
allchanmag = vari_funcs.flux5_stacks(
    chandata)  # for chandra non-stellar objects
allsmag = vari_funcs.flux5_stacks(sdata)

### remove 99s ###
allmag, tbdata = vari_funcs.noneg(allmag, tbdata)
allchanmag, chandata = vari_funcs.noneg(allchanmag, chandata)
allsmag, sdata = vari_funcs.noneg(allsmag, sdata)

# need to run on all fluxbins, like in find_outliers
#bins = np.array([13, 15])
#bins = np.append(bins, np.arange(16,24,0.2))
#bins = np.append(bins, [24, 25, 26])
bins = np.array([13, 15])
bins = np.append(bins, np.arange(16, 24, 0.2))
bins = np.append(bins, [24])

bins = 10**((30 - bins) / 2.5)
bins = np.flip(bins, axis=0)

#mag, bindata = vari_funcs.fluxbin(bins[25], bins[26], allmag, tbdata)
Exemple #17
0
    # remove stars in new table
    mag = alldataconv['MAG_APER_' + sem][:, 4]
    mask1 = mag > 15  #removes saturated
    mask2 = mag < 19  #removes very faint stars
    mask = mask1 * mask2
    alldataconv = alldataconv[mask]
    avgfwhmconv[n] = np.median(alldataconv[colnames]) * 3600

# Create flux stack
allflux = vari_funcs.flux5_stacks(alldata)
allfluxconv = vari_funcs.flux5_stacks(alldataconv)

#allflux, alldata = vari_funcs.semfluxlim(allflux, alldata)
#allfluxconv, alldataconv = vari_funcs.semfluxlim(allfluxconv, alldataconv)

allflux, alldata = vari_funcs.noneg(allflux, alldata)
allfluxconv, alldataconv = vari_funcs.noneg(allfluxconv, alldataconv)

allfluxerr = vari_funcs.fluxerr1_stacks(alldata)
allfluxconverr = vari_funcs.fluxerr1_stacks(alldataconv)

#depths = np.load('fluxdepths.npy')
#allfluxerr = np.zeros(np.shape(allflux)) + depths[None,:]
#depthsconv = np.load('fluxdepthsconv_PSF.npy')
#allfluxconverr = np.zeros(np.shape(allfluxconv)) + depthsconv[None,:]

# Normalise
allflux, allfluxerr = vari_funcs.normalise_flux_and_errors(allflux, allfluxerr)
allfluxconv, allfluxconverr = vari_funcs.normalise_flux_and_errors(
    allfluxconv, allfluxconverr)
import numpy as np  #for handling arrays
from astropy.stats import median_absolute_deviation
import vari_funcs  #my module to help run code neatly
plt.close('all')  #close any open plots
#from numpy.lib.recfunctions import append_fields
from photutils import CircularAperture, aperture_photometry

hdr08B = fits.getheader('Images/UDS_08B_K.fits')  # random year (same in all)
const = -hdr08B['CD1_1']  # constant that defines unit conversion for FWHM
semesters = ['05B', '06B', '07B', '08B', '09B', '10B', '11B', '12B']

### get data and create flux and errors array ###
sdata = fits.open('mag_flux_tables/stars_mag_flux_table.fits')[1].data
sflux = vari_funcs.flux5_stacks(sdata)
smag = vari_funcs.mag5_stacks(sdata)
sflux, sdata = vari_funcs.noneg(sflux, sdata)
smag = vari_funcs.mag5_stacks(sdata)

### set up normalised flux ###
sfluxn = np.copy(sflux)
sfluxn = vari_funcs.normalise_flux(sfluxn)

### Limit to same magnitude range as PSFS ###
avgmag = np.nanmean(smag, axis=1)
mask1 = avgmag > 15
mask2 = avgmag <= 19

### Remove any variable stars from sample ###
mad = median_absolute_deviation(sfluxn, axis=1)
mask3 = mad < 0.01
)[1].data
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)
import vari_funcs #my module to help run code neatly
#from scipy.stats import chisquare
plt.close('all') #close any open plots

### Open the fits files and get data ###
tbdata = fits.open('mag_flux_tables/mag_flux_table_best_1519match.fits')[1].data
chandata = fits.open('mag_flux_tables/xray_mag_flux_table_best_1519match.fits')[1].data
sdata = fits.open('mag_flux_tables/stars_mag_flux_table_1519match.fits')[1].data

## Create arrays of flux values ###
fluxn = vari_funcs.flux5_stacks(tbdata)
fluxchann = vari_funcs.flux5_stacks(chandata) 
sfluxn = vari_funcs.flux5_stacks(sdata)

### remove values that are negative ###
fluxn, tbdata = vari_funcs.noneg(fluxn, tbdata)
fluxchann, chandata = vari_funcs.noneg(fluxchann, chandata)
sfluxn, sdata = vari_funcs.noneg(sfluxn, sdata)

fluxerr = vari_funcs.fluxerr5_stacks(tbdata)
fluxerrchan = vari_funcs.fluxerr5_stacks(chandata)
sfluxerr = vari_funcs.fluxerr5_stacks(sdata)


vari_funcs.flux_variability_plot(fluxn, fluxchann, 'var', starflux=sfluxn, 
                                 stars=True, normalised=True, scale='symlog')
#bins, medvar = vari_funcs.plot_median_line(fluxn, tbdata, statistic='var')

bins, medvar = vari_funcs.plot_median_line_stars(fluxn, tbdata, sfluxn, sdata, statistic='var')

#
Exemple #21
0
#from astropy.table import Table #for handling tables
import numpy as np  #for handling arrays
import matplotlib.gridspec as gridspec  # to nest subplots
#from astropy.stats import median_absolute_deviation
import vari_funcs  #my module to help run code neatly
plt.close('all')  #close any open plots

### Read in fits files ###
imdata = fits.getdata(
    'UDS-DR11-K.mef.fits')  ### SHOULD CHANGE TO THE DR11 IMAGE
varydata = fits.getdata(
    'variable_tables/no06_variables_chi30_DR11data_restframe.fits', 1)

### stick to those above 1e4 ###
flux = vari_funcs.flux5_stacks(varydata)
flux, varydata = vari_funcs.noneg(flux, varydata)
meanflux = np.nanmean(flux, axis=1)
varydata = varydata[meanflux >= 1e4]

#imthresh = 200 #fits.getheader('UDS_05B_K.fits')['SATURATE']
#imdata[imdata>imthresh] = imthresh

### Create mask array ###
maskx = np.zeros(imdata.shape[1]).astype(bool)
masky = np.zeros(imdata.shape[0]).astype(bool)

### Find coordinates of objects ###
x = varydata['X_IMAGE']
x = x.astype(int)
y = varydata['Y_IMAGE']
y = y.astype(int)
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))
Exemple #23
0
tbdata = combined[1].data
chandra = fits.open('mag_flux_tables/xray_mag_flux_table_best.fits')
chandata = chandra[1].data
stars = fits.open('mag_flux_tables/stars_mag_flux_table.fits')
sdata = stars[1].data

### Restrict objects to those in the Chandra field ###
#tbdata = vari_funcs.chandra_only(tbdata)

## Create arrays of flux values but without 06B ###
flux = vari_funcs.flux5_stacks(tbdata)
fluxchan = vari_funcs.flux5_stacks(chandata)  # for chandra non-stellar objects
sflux = vari_funcs.flux5_stacks(sdata)

### remove values that are +/-99 ###
flux, tbdata = vari_funcs.noneg(flux, tbdata)
fluxchan, chandata = vari_funcs.noneg(fluxchan, chandata)
sflux, sdata = vari_funcs.noneg(sflux, sdata)

### Normalise arrays ###
#fluxn = vari_funcs.normalise_flux(flux)
#fluxchann = vari_funcs.normalise_flux(fluxchan)
#sfluxn = vari_funcs.normalise_flux(sflux)
#
#
#### Multiply all flux values in a yearstack by the correct constant ###
#fluxcorrn = vari_funcs.psf_correct(fluxn, fluxn, 'median')
#fluxchancorrn = vari_funcs.psf_correct(fluxn, fluxchann, 'median')
#fluxcorr = vari_funcs.psf_correct(flux, flux, 'median')
#fluxchancorr = vari_funcs.psf_correct(flux, fluxchan, 'median')