Exemplo n.º 1
0
def find_number(tb):
    ### Get flux ###
    flux = vari_funcs.flux4_stacks(tb)

    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)
    #bins = bins[16:44] #because of flux limit

    num = np.zeros(len(bins))

    ### Bin data ###
    for n, binedge in enumerate(bins):
        #    print(binedge)
        if n == np.size(bins) - 1:
            break
        mag, _ = vari_funcs.fluxbin(binedge, bins[n + 1], flux, tb)
        num[n] = len(mag)

    return num, bins
Exemplo n.º 2
0
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
sigsq = np.empty([lastind,8])
sigsqdict = {}
sigdict = {}
oldnum = 0
for n, binedge in enumerate(bins[0:lastind]):
    sbinflux, bindata = vari_funcs.fluxbin(binedge, bins[n+1], sflux, sdata) #bin data
    print(str(binedge) + ' '+ str(len(sbinflux)))
    
    ### find average flux of stars ###
    avgflux = np.nanmean(sbinflux, axis=1)
    
    ### Find sigma^2 ###
    diff = sbinflux - avgflux[:,None]
    top = diff**2
    bot = len(avgflux)
    sigsq[n,:] = np.nansum(top/bot, axis=0)
    sigsqdict[binedge] = np.nansum(top/bot, axis=0)
    sigdict[binedge] = np.sqrt(sigsqdict[binedge])
    
#    ### Plot average lightcurve for bin ###
#    plt.figure()
Exemplo n.º 3
0
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)
bins = bins[16:44]  #because of flux limit
### Bin data ###
allmedexcess = np.array([])
allmedexcesscorr = np.array([])
for n, binedge in enumerate(bins):
    #    print(binedge)
    if n == np.size(bins) - 1:
        break
    mag, bindata = vari_funcs.fluxbin(binedge, bins[n + 1], flux,
                                      tbdata2)  #bindata
    magcorr, bincorr = vari_funcs.fluxbin(binedge, bins[n + 1], fluxn,
                                          tbdata)  #bindata
    #    magerrcorr = vari_funcs.fluxerr5_stacks_corr(bincorr) #make error array
    magerrcorr = vari_funcs.fluxerr5_stacks(bincorr)  #make error array
    #    magerr = vari_funcs.fluxerr5_stacks_corr(bindata) #make error array
    magerr = vari_funcs.fluxerr5_stacks(bindata)  #make error array
    nmag, nmagerr = vari_funcs.normalise_flux_and_errors(mag, magerr)
    nmagcorr, nmagerrcorr = vari_funcs.normalise_flux_and_errors(
        magcorr, magerrcorr)
    binexess = vari_funcs.normsigmasq(nmag, nmagerr)
    binexesscorr = vari_funcs.normsigmasq(nmagcorr, nmagerrcorr)
    medexcess = np.nanmedian(binexess)
    allmedexcess = np.append(allmedexcess, medexcess)
    medexcesscorr = np.nanmedian(binexesscorr)
    allmedexcesscorr = np.append(allmedexcesscorr, medexcesscorr)
    chi = np.nansum(top/char_var, axis=1)
    return chi

def my_chisquare_charanderr(flux, fluxerr, char_var):
    fluxn, fluxerrn = vari_funcs.normalise_flux_and_errors(flux, fluxerr)
    meanflux = np.nanmean(fluxn, axis=1)
    top = np.square(fluxn-meanflux[:,None])
    bot = np.square(fluxerrn) + char_var
    chi = np.nansum(top/bot, axis=1)
    return chi

### Put characteristic variance into chisquare ###
newmedvar = np.empty(np.shape(medvar))
finalmed = np.empty(np.shape(medvar))
for n, binedge in enumerate(bins[0:np.size(bins)-1]):
    flux, bindata = vari_funcs.fluxbin(binedge, bins[n+1], fluxn, tbdata) #bindata
    fluxchan, binchan = vari_funcs.fluxbin(binedge, bins[n+1], fluxchann, chandata) #bindata
    sflux, sbindata = vari_funcs.fluxbin(binedge, bins[n+1], sfluxn, sdata) #bindata
    # get errors
    fluxerr = vari_funcs.fluxerr5_stacks(bindata)
    fluxchanerr = vari_funcs.fluxerr5_stacks(binchan)
    sfluxerr = vari_funcs.fluxerr5_stacks(sbindata)
    
    meanflux = np.nanmean(flux, axis=1)
    meanchan = np.nanmean(fluxchan, axis=1)
    meansflux = np.nanmean(sflux, axis=1)
    chisq = my_chisquare(flux, medvar[n])
    chisqchan = my_chisquare(fluxchan, medvar[n])
    schisq = my_chisquare(sflux, medvar[n])
    
    ### plot ###
Exemplo n.º 5
0
bins = np.array(sigtb.colnames)
binarr = np.empty(int(len(bins) / 4))
for k, bin in enumerate(bins):
    if bin[0] == '1':
        binarr[k] = int(bin[2:])
        k += 1
binarr = binarr.astype(int)

binsizes = np.empty(int(len(binarr)))
binmean = np.empty(int(len(binarr)))
for n, binedge in enumerate(binarr):
    if binedge == binarr[-1]:
        binupp = np.nanmax(flux)
    else:
        binupp = binarr[n + 1]
    binflux, bindata = vari_funcs.fluxbin(binedge, binupp, flux,
                                          tbdata)  #bindata
    #    binsflux, binsdata = vari_funcs.fluxbin(binedge, binupp, sflux, sdata)
    binsizes[n] = len(bindata)  #+ len(binsdata)
    plt.vlines(binedge, 1e-2, 1e4, zorder=4)
    binmean[n] = np.nanmean(binflux)
#    if binsizes[n] < 9:
#        continue
### get chi values within bin ###
#    binflux, binfluxerr, bindata = vari_funcs.create_quad_error_array(sigtb, bindata)
#    binchisq = vari_funcs.my_chisquare_err(binflux, binfluxerr)
#
### P value of 30 with dof=6 is 0.00003931 ###
### therefore false positives = binsize * P ###
P = 0.00003931  #0.001
numfalpos = binsizes * P
plt.figure(figsize=[8, 5])
Exemplo n.º 6
0
bins = np.append(bins, np.arange(16, 24, 0.2))
bins = np.append(bins, [24, 25, 26])

### Bin data ###
allerrchange = np.array([])
newallmag = np.array([])
newallmagerr = np.array([])
newallchanmag = np.array([])
newallchanmagerr = np.array([])
newallsmag = np.array([])
newallsmagerr = np.array([])
for n, binedge in enumerate(bins):
    print(binedge)
    if n == np.size(bins) - 1:
        break
    mag, bindata = vari_funcs.fluxbin(binedge, bins[n + 1], allmag,
                                      tbdata)  #bindata
    magerr = vari_funcs.magerr5_stacks(bindata)  #make error array
    errchange, newmagerr = add_chi_err(mag, magerr)  #find correction
    allerrchange = np.append(allerrchange,
                             errchange)  #create array of corrections

    ### Apply correction tp stars and X-ray ###
    chanmag, chanbin = vari_funcs.fluxbin(binedge, bins[n + 1], allchanmag,
                                          chandata)
    chanmagerr = vari_funcs.magerr5_stacks(chanbin)
    newchanmagerr = np.sqrt(np.square(chanmagerr) +
                            np.square(errchange))  #change error
    smag, sbin = vari_funcs.fluxbin(binedge, bins[n + 1], allsmag, sdata)
    smagerr = vari_funcs.magerr5_stacks(sbin)
    newsmagerr = np.sqrt(np.square(smagerr) +
                         np.square(errchange))  #change error