generated from erosita/uds
115 lines
3.2 KiB
Python
Executable File
115 lines
3.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
__author__ = "Roman Krivonos"
|
|
__copyright__ = "Space Research Institute (IKI)"
|
|
|
|
import numpy as np
|
|
import pandas as pd
|
|
from astropy.io import fits
|
|
from astropy.table import Table, Column
|
|
from astropy import units as u
|
|
|
|
import matplotlib.pyplot as plt
|
|
import math, sys, os
|
|
import pickle
|
|
|
|
from sklearn.linear_model import LinearRegression
|
|
from sklearn.linear_model import HuberRegressor
|
|
from sklearn.linear_model import RANSACRegressor
|
|
from sklearn.linear_model import TheilSenRegressor
|
|
from sklearn.model_selection import cross_val_score
|
|
from sklearn.model_selection import RepeatedKFold
|
|
|
|
#from statsmodels.robust.scale import huber
|
|
from astropy.stats import sigma_clip
|
|
from astropy.stats import sigma_clipped_stats
|
|
|
|
from scipy.stats import norm
|
|
from scipy.stats import describe
|
|
from scipy.stats import sem
|
|
import subprocess
|
|
|
|
from numpy import absolute
|
|
from numpy import arange
|
|
|
|
from ridge.utils import *
|
|
from ridge.config import *
|
|
|
|
inkey="ALL"
|
|
|
|
|
|
|
|
plotme=False
|
|
|
|
ebands0={
|
|
'A01':[0.0,0.0], # 25-60 keV
|
|
'A02':[0.0,0.0], # 60-80 keV
|
|
'A03':[0.0,0.0], # 80-200 keV
|
|
}
|
|
|
|
|
|
if len(sys.argv) > 1:
|
|
skeys = [sys.argv[1]]
|
|
else:
|
|
skeys = list(skyreg.keys())
|
|
|
|
if not os.path.exists(fluxdir):
|
|
os.makedirs(fluxdir)
|
|
|
|
fitsdir = "{}fits/".format(fluxdir)
|
|
if not os.path.exists(fitsdir):
|
|
os.makedirs(fitsdir)
|
|
|
|
with open(ignored_rev_file, 'rb') as fp:
|
|
ignored_rev = pickle.load(fp)
|
|
print("{} orbits ignored".format(len(ignored_rev)))
|
|
ign=ignored_rev.tolist()
|
|
|
|
for skey in skeys:
|
|
if not skey in skyreg.keys():
|
|
print("{} not found in {}".format(skey,list(skyreg.keys())))
|
|
sys.exit()
|
|
|
|
|
|
for enkey in ebands0.keys():
|
|
fn="detcnts.{}.{}.resid.fits".format(enkey,inkey)
|
|
print("Reading {}".format(proddir+fn))
|
|
dat = Table.read(proddir+fn)
|
|
df = dat.to_pandas()
|
|
|
|
query = "LON > {} & LON < {} & LAT > {} & LAT < {} & REV != @ign".format(
|
|
skyreg[skey]['lon'] - skyreg[skey]['wlon']/2,
|
|
skyreg[skey]['lon'] + skyreg[skey]['wlon']/2,
|
|
skyreg[skey]['lat'] - skyreg[skey]['wlat']/2,
|
|
skyreg[skey]['lat'] + skyreg[skey]['wlat']/2)
|
|
|
|
df = df.query(query)
|
|
print("{}, {}: {} N={}".format(skey, enkey, query, df.shape[0]))
|
|
|
|
t = Table.from_pandas(df)
|
|
t.write("{}{}.{}.fits".format(fitsdir,skey,enkey),overwrite=True)
|
|
|
|
texp = np.array(df['TEXP'])
|
|
with open("{}{}.{}.livetime".format(fitsdir,skey,enkey), 'w') as fp:
|
|
fp.write("{} {} ScWs: {} Texp: {:.2f} Ms\n".format(skey,enkey,df.shape[0],np.sum(texp)/1e6))
|
|
|
|
if not (df.shape[0]>0):
|
|
continue
|
|
|
|
sg_mean,sg_sem,skew_val,skew_err = get_spec(df, sigma=4, grxe_err_cut=grxe_err_cut, skey=skey, enkey=enkey, plotme=True, bootstrap=False, gaussfit=True)
|
|
ebands0[enkey]=[sg_mean,sg_sem]
|
|
|
|
|
|
fspec="{}{}.dat".format(fluxdir,skey)
|
|
with open(fspec, 'w') as fp:
|
|
for enkey in ebands0.keys():
|
|
flux=ebands0[enkey][0]
|
|
err=ebands0[enkey][1]
|
|
print("[DATA] {}: {} {:.6f} {:.6f}".format(skey,enkey,flux,err))
|
|
fp.write("{} {} {} {:.6f} {:.6f}\n".format(skey,enkey,bands[enkey],flux,err))
|
|
|
|
|
|
|
|
|
|
|