generated from erosita/uds
na Kubani
This commit is contained in:
@@ -45,9 +45,9 @@ enkey = sys.argv[1]
|
||||
key="ALL"
|
||||
fn='detcnts.{}.{}.resid.fits'.format(enkey,key)
|
||||
|
||||
d = fits.getdata(proddir+fn)
|
||||
df=pd.DataFrame(np.array(d).byteswap().newbyteorder())
|
||||
#print(df.columns)
|
||||
print("Reading {}".format(proddir+fn))
|
||||
dat = Table.read(proddir+fn, unit_parse_strict='silent')
|
||||
df = dat.to_pandas()
|
||||
|
||||
#df = df.query('abs(LAT) < {} & abs(LON) < {}'.format(5,5))
|
||||
|
||||
@@ -56,7 +56,14 @@ minmax=[-300,800]
|
||||
sigma=3
|
||||
maxiters=10
|
||||
|
||||
modelrxte="allsky/modelrxte_ait_3to20keV_flux_2deg.fits"
|
||||
with open(ignored_rev_file, 'rb') as fp:
|
||||
ignored_rev = pickle.load(fp)
|
||||
print(ignored_rev)
|
||||
print("{} orbits ignored".format(len(ignored_rev)))
|
||||
|
||||
ign=ignored_rev.tolist()
|
||||
|
||||
|
||||
hdulist = fits.open(datadir+modelrxte)
|
||||
w = wcs.WCS(hdulist[0].header)
|
||||
smap =hdulist[0].data
|
||||
@@ -82,75 +89,81 @@ for i,row in df.iterrows():
|
||||
df['DS9Y']=ds9x
|
||||
df['DS9X']=ds9y
|
||||
|
||||
#
|
||||
# initiate 2d arrays
|
||||
#
|
||||
mean_map = np.array([[0.0 for i in range(sx)] for j in range(sy)])
|
||||
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)])
|
||||
|
||||
# simulations
|
||||
mean_sim_map = np.array([[0.0 for i in range(sx)] for j in range(sy)])
|
||||
error_sim_map = np.array([[0.0 for i in range(sx)] for j in range(sy)])
|
||||
sign_sim_map = np.array([[0.0 for i in range(sx)] for j in range(sy)])
|
||||
|
||||
mean_sim={}
|
||||
for i in range(sx):
|
||||
for j in range(sy):
|
||||
dkey="{:04d}{:04d}".format(j,i)
|
||||
mean_sim[dkey] = []
|
||||
|
||||
|
||||
obsid_map = {}
|
||||
grxe_map = {}
|
||||
grxe_err_map = {}
|
||||
|
||||
# redefine simfrac for low number of ScWs in pixel
|
||||
simfrac=2
|
||||
nsim=100
|
||||
|
||||
for i in range(sx):
|
||||
for j in range(sy):
|
||||
dkey="{:04d}{:04d}".format(j,i)
|
||||
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):
|
||||
df0 = df.query('DS9X == {} & DS9Y == {} & REV != @ign'.format(ds9i,ds9j))
|
||||
if (df0.shape[0] <= nscw_min):
|
||||
continue
|
||||
|
||||
print("*** *** SUM *** ***")
|
||||
print(np.sum(df0["GRXE"]))
|
||||
# check coordinates
|
||||
#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
|
||||
sg_mean,sg_sem = get_spec(df0, sigma=sigma, grxe_err_cut=grxe_err_cut, enkey=enkey)
|
||||
|
||||
nsel = int(df0.shape[0]/simfrac)
|
||||
print("nsel=",nsel,df0.shape[0],len(df0['GRXE']))
|
||||
for n in range(nsim):
|
||||
df1=df0.sample(nsel)
|
||||
sg_mean1,sg_sem1 = get_spec(df1, grxe_err_cut=grxe_err_cut, enkey=enkey)
|
||||
mean_sim[dkey].append(sg_mean1)
|
||||
|
||||
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)
|
||||
filtered_grxe = filtered_data[0]
|
||||
filtered_min = filtered_data[1]
|
||||
filtered_max = filtered_data[2]
|
||||
|
||||
# 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)
|
||||
#plt.hist(grxe[filtered_grxe.mask], bins=n_bins, range=minmax)
|
||||
#plt.show()
|
||||
|
||||
|
||||
print('sg_sem',sg_sem)
|
||||
mean_map[j][i] = sg_mean
|
||||
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)
|
||||
@@ -178,7 +191,23 @@ 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)
|
||||
|
||||
|
||||
for i in range(sx):
|
||||
for j in range(sy):
|
||||
dkey="{:04d}{:04d}".format(j,i)
|
||||
data=mean_sim[dkey]
|
||||
(mu, sg) = norm.fit(data)
|
||||
mean_sim_map[j][i] = mu
|
||||
error_sim_map[j][i] = sg
|
||||
|
||||
|
||||
hdulist[0].data=mean_sim_map
|
||||
hdulist.writeto(mapsdir+fn.replace(".fits",".sim.mean.fits"),overwrite=True)
|
||||
hdulist[0].data=error_sim_map
|
||||
hdulist.writeto(mapsdir+fn.replace(".fits",".sim.error.fits"),overwrite=True)
|
||||
|
||||
sys.exit()
|
||||
|
||||
print("Prepare data for fine map")
|
||||
|
||||
obsid_list=[]
|
||||
|
Reference in New Issue
Block a user