import numpy as np #for handling arrays #import math #from astropy.stats import median_absolute_deviation import vari_funcs plt.close('all') #close any open plots ### Open the fits files and get data ### combined = fits.open('mag_flux_table_best.fits') tbdata = combined[1].data stars = fits.open('starsnotsatfwhm.fits') sdata = stars[1].data stars = fits.open('stars_mag_flux_table.fits') sdata2 = stars[1].data ## Restrict objects to those in the Chandra field ### tbdata = vari_funcs.chandra_only(tbdata) ## Create arrays of flux values ### flux = vari_funcs.k_mag_flux.flux5_stacks(tbdata) sfwhm = np.stack(([ sdata['FWHM_05B'], sdata['FWHM_06B'], sdata['FWHM_07B'], sdata['FWHM_08B'], sdata['FWHM_09B'], sdata['FWHM_10B'], sdata['FWHM_11B'], sdata['FWHM_12B'] ]), axis=1) sflux = vari_funcs.flux5_stacks(sdata2) ### Calculate the average flux for each year within each flux bin ### avgflux = np.mean(flux, axis=0) savgfwhm = np.mean(sfwhm, axis=0) savgflux = np.mean(sflux, axis=0)
'variable_tables/no06_variables_chi30_edged_DR11data_restframe.fits') fullxray = Table.read( 'mag_flux_tables/chanDR11data_restframe_mag_flux_table_best_extra_clean_no06.fits' ) chandata = Table.read( 'variable_tables/no06_variables_chi30_chandata_DR11data_restframe.fits') fullUDS = Table.read('UDS_catalogues/DR11-2arcsec-June24-2018+plusXY.fits') ### Remove Edges ### #datatb = vari_funcs.remove_edges(datatb) #fullxray = vari_funcs.remove_edges(fullxray) #chandata = vari_funcs.remove_edges(chandata) #fullUDS = vari_funcs.remove_edges(fullUDS) ### Limit to Chandra region for simplicity ### datatb = vari_funcs.chandra_only(datatb) fullxray = vari_funcs.chandra_only(fullxray) chandata = vari_funcs.chandra_only(chandata) #fullUDS = vari_funcs.chandra_only(fullUDS) ### Split the variable table into x-ray and non x-ray ### xraytb = datatb[datatb['X-ray']] nontb = datatb[~datatb['X-ray']] ### Get stuff from table ### mask1 = datatb['RMAG_20'] != 99 mask2 = datatb['KMAG_20'] != 99 allmask = mask1 * mask2.astype(bool) rmag = datatb['RMAG_20'][allmask] kmag = datatb['KMAG_20'][allmask]
chandata = fits.open( 'variable_tables/no06_variables_chi30_chandata_DR11data_restframe.fits' )[1].data tbdata = fits.open( 'variable_tables/no06_variables_chi30_DR11data_restframe.fits')[1].data fullxray = fits.open( 'mag_flux_tables/chanDR11data_restframe_mag_flux_table_best_extra_clean_no06.fits' )[1].data sigtb1 = Table.read('quad_epoch_sigma_table_extra_clean_no06_067arcsec.fits') #sigtb2 = Table.read('quad_epoch_sigma_table_extra_clean_no06_1arcsec.fits') #sigtb3 = Table.read('quad_epoch_sigma_table_extra_clean_no06_1-5arcsec.fits') #sigtb4 = Table.read('quad_epoch_sigma_table_extra_clean_no06_2arcsec.fits') sigtb5 = Table.read('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) 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
z[z==-1] = tbdata['z_p'][z==-1] z = z[mask] ### find ones out of range of the plot ### zlimsmask = z>4 Iuplimsmask = I1minI2 > 1 Ilolimsmask = I1minI2 < -0.7 # Ilims = I1minI2[mask] return I1minI2, z, zlimsmask, Iuplimsmask, Ilolimsmask #xvarydata = vari_funcs.flux_split(xvarydata, 'lower') #varydata = vari_funcs.flux_split(varydata, 'lower') ### Limit to Chandra region ### varydata = vari_funcs.chandra_only(varydata) xvarydata = vari_funcs.chandra_only(xvarydata) I1minI2, z, zlimsmask, Iuplimsmask, Ilolimsmask= get_data(tbdata) xI1minI2, xz, xzlimsmask, xIuplimsmask, xIlolimsmask= get_data(xdata) varyI1minI2, varyz, varyzlimsmask, varyIuplimsmask, varyIlolimsmask = get_data(varydata) xvaryI1minI2, xvaryz, xvaryzlimsmask, xvaryIuplimsmask, xvaryIlolimsmask = get_data(xvarydata) devI1minI2, devz, devzlimsmask, devIuplimsmask, devIlolimsmask = get_data(devdata) ### Plot result ### plt.figure(figsize=[8,8]) ### plot those within range plt.plot(z, I1minI2,'.', color='tab:grey', markersize=1, label='Galaxy') plt.plot(xz, xI1minI2,'ks', markersize=5, label='Non-Variable X-ray AGN')