generated from erosita/uds
maps
This commit is contained in:
@@ -60,7 +60,7 @@ mjd = data.field('mjd')
|
||||
clean = data.field('clean')
|
||||
phase = data.field('phase')
|
||||
|
||||
|
||||
obsid0=[]
|
||||
rev0=[]
|
||||
phase0=[]
|
||||
clean0=[]
|
||||
@@ -133,6 +133,7 @@ for i, row in df.iterrows():
|
||||
r1 = bgdmodel[orbit]['r1'] # nearest left orbit used for calibration
|
||||
r2 = bgdmodel[orbit]['r2'] # nearest right orbit used for calibration
|
||||
|
||||
obsid0.append(obsid)
|
||||
c0.append(c)
|
||||
base0.append(abs(orbit - int(np.min([r1,r2]))))
|
||||
clean0.append(clean[i])
|
||||
@@ -160,7 +161,7 @@ indices = sorted(
|
||||
)
|
||||
|
||||
coldefs = fits.ColDefs([
|
||||
#fits.Column(name='OBSID', format='11A', array=[obs_id[index] for index in indices]),
|
||||
fits.Column(name='OBSID', format='11A', array=[obsid0[index] for index in indices]),
|
||||
#fits.Column(name='RA', format='D', unit='deg', array=[ra[index] for index in indices]),
|
||||
#fits.Column(name='DEC', format='D', unit='deg', array=[dec[index] for index in indices]),
|
||||
fits.Column(name='LON', format='D', unit='deg', array=[lon0[index] for index in indices]),
|
||||
|
@@ -56,7 +56,7 @@ minmax=[-300,800]
|
||||
sigma=3
|
||||
maxiters=10
|
||||
|
||||
modelrxte="modelrxte_ait_3to20keV_flux_2deg.fits"
|
||||
modelrxte="allsky/modelrxte_ait_3to20keV_flux_2deg.fits"
|
||||
hdulist = fits.open(datadir+modelrxte)
|
||||
w = wcs.WCS(hdulist[0].header)
|
||||
smap =hdulist[0].data
|
||||
@@ -87,6 +87,10 @@ sign_map = np.array([[0.0 for i in range(sx)] for j in range(sy)])
|
||||
sem_map = np.array([[0.0 for i in range(sx)] for j in range(sy)])
|
||||
cnt_map = np.array([[0 for i in range(sx)] for j in range(sy)])
|
||||
|
||||
obsid_map = {}
|
||||
grxe_map = {}
|
||||
grxe_err_map = {}
|
||||
|
||||
for i in range(sx):
|
||||
for j in range(sy):
|
||||
world = w.wcs_pix2world([(i+1,j+1)], 1)
|
||||
@@ -94,6 +98,9 @@ for i in range(sx):
|
||||
lat = world[0][1]
|
||||
if(np.isnan(lon) or np.isnan(lat)):
|
||||
continue
|
||||
|
||||
|
||||
|
||||
ds9i=i+1
|
||||
ds9j=j+1
|
||||
df0 = df.query('DS9X == {} & DS9Y == {}'.format(ds9i,ds9j))
|
||||
@@ -104,8 +111,17 @@ for i in range(sx):
|
||||
#print("***",i+1,j+1,lon,lat,smap[j][i])
|
||||
#for i0,row0 in df0.iterrows():
|
||||
# print(row0['LON'],row0['LAT'],row0['GRXE'])
|
||||
grxe_err = np.array(df0['GRXE_ERR'])
|
||||
perc = np.percentile(grxe_err, grxe_err_cut, axis=0, keepdims=False)
|
||||
print("{} {}: {}% cut of GRXE ERR: {:.2f} mCrab".format(key,enkey,grxe_err_cut,perc))
|
||||
|
||||
df0 = df.query('DS9X == {} & DS9Y == {} & GRXE_ERR < {}'.format(ds9i,ds9j,perc))
|
||||
if (len(df0) <= nscw_min):
|
||||
continue
|
||||
|
||||
obsid = np.array(df0['OBSID'])
|
||||
grxe = np.array(df0['GRXE'])
|
||||
grxe_err = np.array(df0['GRXE_ERR'])
|
||||
|
||||
sg_mean, sg_med, sg_std = sigma_clipped_stats(grxe, sigma=sigma, maxiters=maxiters)
|
||||
filtered_data = sigma_clip(grxe, sigma=sigma, maxiters=maxiters, return_bounds=True)
|
||||
@@ -115,7 +131,8 @@ for i in range(sx):
|
||||
|
||||
# final error on flux measurement ~RMS/sqrt(n)
|
||||
sg_sem = sem(grxe[filtered_grxe.mask==False])
|
||||
|
||||
obsid=obsid[filtered_grxe.mask==False]
|
||||
|
||||
#print("Sigma clipping: mean {:.2f} med {:.2f} std {:.2f} sem {:.2f}".format(sg_mean, sg_med, sg_std, sg_sem))
|
||||
|
||||
#plt.hist(grxe, bins=n_bins, range=minmax)
|
||||
@@ -126,8 +143,15 @@ for i in range(sx):
|
||||
sem_map[j][i] = sg_sem
|
||||
sign_map[j][i] = sg_mean/sg_sem
|
||||
cnt_map[j][i] = df0.shape[0]
|
||||
|
||||
dkey="{:04d}{:04d}".format(j,i)
|
||||
obsid_map[dkey] = obsid
|
||||
grxe_map[dkey] = grxe
|
||||
grxe_err_map[dkey] = grxe_err
|
||||
|
||||
|
||||
|
||||
""" Filter by error map """
|
||||
# Calculate the percentiles across the x and y dimension
|
||||
perc = np.percentile(sem_map, sem_cut, axis=(0, 1), keepdims=False)
|
||||
|
||||
@@ -153,3 +177,52 @@ hdulist.writeto(mapsdir+fn.replace(".fits",".cnt.fits"),overwrite=True)
|
||||
|
||||
hdulist[0].data=sign_map
|
||||
hdulist.writeto(mapsdir+fn.replace(".fits",".sign.fits"),overwrite=True)
|
||||
|
||||
sys.exit()
|
||||
print("Prepare data for fine map")
|
||||
|
||||
obsid_list=[]
|
||||
grxe_list=[]
|
||||
grxe_err_list=[]
|
||||
for i in range(sx):
|
||||
for j in range(sy):
|
||||
""" Use mask """
|
||||
if not (cnt_map[j][i]>0):
|
||||
continue
|
||||
world = w.wcs_pix2world([(i+1,j+1)], 1)
|
||||
lon = world[0][0]
|
||||
lat = world[0][1]
|
||||
if(np.isnan(lon) or np.isnan(lat)):
|
||||
continue
|
||||
ds9i=i+1
|
||||
ds9j=j+1
|
||||
df0 = df.query('DS9X == {} & DS9Y == {}'.format(ds9i,ds9j))
|
||||
if (len(df0) <= nscw_min):
|
||||
continue
|
||||
|
||||
dkey="{:04d}{:04d}".format(j,i)
|
||||
for scw in obsid_map[dkey]:
|
||||
obsid_list.append(scw.decode("UTF-8"))
|
||||
for grxe in grxe_map[dkey]:
|
||||
grxe_list.append(grxe)
|
||||
for grxe in grxe_err_map[dkey]:
|
||||
grxe_err_list.append(grxe)
|
||||
|
||||
|
||||
coldefs = fits.ColDefs([
|
||||
fits.Column(name='OBSID', format='11A', array=obsid_list),
|
||||
])
|
||||
|
||||
fout = fn.replace(".fits",".grxe.fits")
|
||||
hdu = fits.BinTableHDU.from_columns(coldefs, name='GRXE')
|
||||
hdu.header['MISSION'] = ('INTEGRAL', '')
|
||||
#hdu.header['TELESCOP'] = (outkey, '')
|
||||
hdu.header['INSTITUT'] = ('IKI', 'Affiliation')
|
||||
hdu.header['AUTHOR'] = ('Roman Krivonos', 'Responsible person')
|
||||
hdu.header['EMAIL'] = ('krivonos@cosmos.ru', 'E-mail')
|
||||
#hdu.add_checksum()
|
||||
print(hdu.columns)
|
||||
hdu.writeto(proddir+fout, overwrite=True)
|
||||
|
||||
with fits.open(proddir+fout, mode='update') as hdus:
|
||||
hdus[1].add_checksum()
|
||||
|
@@ -88,7 +88,7 @@ for skey in skeys:
|
||||
grxe_err = np.array(df['GRXE_ERR'])
|
||||
|
||||
perc = np.percentile(grxe_err, grxe_err_cut, axis=0, keepdims=False)
|
||||
print("{} {}: {}% cut of GRXE ERR: {:.2f} mCrab".format(skey,enkey,sem_cut,perc))
|
||||
print("{} {}: {}% cut of GRXE ERR: {:.2f} mCrab".format(skey,enkey,grxe_err_cut,perc))
|
||||
idx=np.where(grxe_err < perc)
|
||||
grxe=grxe[idx]
|
||||
grxe_err=grxe_err[idx]
|
||||
@@ -105,9 +105,9 @@ for skey in skeys:
|
||||
print("{}: mean {:.2f} med {:.2f} std {:.2f} sem {:.2f} N={}".format(enkey, sg_mean, sg_med, sg_std, sg_sem, len(grxe[filtered_grxe.mask==False])))
|
||||
|
||||
#sg_sem*=1.5
|
||||
#if(sg_mean<0.0):
|
||||
# sg_mean=1e-6
|
||||
# sg_sem*=2
|
||||
if(sg_mean<0.0):
|
||||
sg_mean=1e-6
|
||||
#sg_sem*=2
|
||||
|
||||
ebands0[enkey]=[sg_mean,sg_sem]
|
||||
|
||||
|
Reference in New Issue
Block a user