1
0
forked from erosita/uds
This commit is contained in:
Roman Krivonos 2023-03-06 15:43:28 +03:00
parent 182ede9d0a
commit f3e7051835
6 changed files with 113 additions and 25 deletions

View File

@ -1,6 +1,6 @@
#/srg/work/krivonos/erosita/work/events/cef_43122_7_P003_00.fits.gz
#/srg/work/krivonos/erosita/work/events/cef_43123_7_P003_00.fits.gz
#/srg/work/krivonos/erosita/work/events/cef_43127_7_P003_00.fits.gz
/srg/work/krivonos/erosita/work/events/cef_43122_7_P003_00.fits.gz
/srg/work/krivonos/erosita/work/events/cef_43123_7_P003_00.fits.gz
/srg/work/krivonos/erosita/work/events/cef_43127_7_P003_00.fits.gz
/srg/work/krivonos/erosita/work/events/cef_43129_7_P003_00.fits.gz
/srg/work/krivonos/erosita/work/events/cef_43133_7_P003_00.fits.gz
/srg/work/krivonos/erosita/work/events/cef_43134_7_P003_00.fits.gz

View File

@ -21,6 +21,12 @@ print("UDS root path: {}".format(root_path))
el=root_path+'/data/evtlists/'
pr=root_path+'/data/processed/'
region="box({},{},4d,4d,0)".format(ra_cen,de_cen)
""" Selection region """
"""
# TM1
do_evtool_esass(evlist=el+'tm1.txt', outfile=pr+'tm1_obs_1.fits', gti='621296896. 621304128.')
@ -44,9 +50,9 @@ do_badpix_tm6(filename=pr+'tm6_obs_2.fits')
do_evtool_esass(evlist=el+'tm6.txt', outfile=pr+'tm6_obs_3.fits', gti='620676992. 620690368.')
do_badpix_tm6(filename=pr+'tm6_obs_3.fits')
"""
# TM7
do_evtool_esass(evlist=el+'tm7.txt', outfile=pr+'tm7_obs_1.fits', gti='621043136. 621052416.')
do_evtool_esass(evlist=el+'tm7.txt', outfile=pr+'tm7_obs_1.fits', gti='621110272. 621117952.')
do_evtool_esass(evlist=el+'tm7.txt', outfile=pr+'tm7_obs_1.fits', gti='621043136. 621052416.', emin=0.2, emax=10.0, region=region)
#do_evtool_esass(evlist=el+'tm7.txt', outfile=pr+'tm7_obs_2.fits', gti='621110272. 621117952.', region=region)

View File

@ -35,16 +35,17 @@ for tmkey in keylist_tm.keys():
for datakey in keylist_tm[tmkey]:
print("--> {}".format(datakey))
""" Подготавливаем списки событий индивидуальных наблюдений """
events.append(init_events(key=datakey, eband_index=eband[index],
infile_dir=infile_dir,
outfile_dir=outfile_dir,
do_obsmode=True,
do_center=True,
do_evtool=True,
do_expmap=False,
ra_cen=ra_cen, de_cen=de_cen,
emin_kev=emin_kev[index],
emax_kev=emax_kev[index]))
outfile_evtool,outfile_expmap=init_events(key=datakey, eband_index=eband[index],
infile_dir=infile_dir,
outfile_dir=outfile_dir,
do_obsmode=True,
do_center=True,
do_evtool=True,
do_expmap=True,
ra_cen=ra_cen, de_cen=de_cen,
emin_kev=emin_kev[index],
emax_kev=emax_kev[index])
events.append(outfile_evtool)
""" Собираем общий список событий """
outfile_evtool="{}_EventList_en{}.fits".format(os.path.join(outfile_dir,outkey), eband[index])

78
scripts/03_init_obs.py Executable file
View File

@ -0,0 +1,78 @@
#!/usr/bin/env python
"""Создает объедененный список событий и помещает его в uds/products
Этот список событий нужен, в основном для извлечения спектров с помощью srctool
"""
from astropy.wcs import WCS
from astropy.io import fits
import sys, os, os.path, time, subprocess
from pathlib import Path
import numpy as np
import glob
from os.path import dirname
import inspect
import uds
from uds.utils import *
from uds.config import *
""" find UDS root dir """
root_path=dirname(dirname(dirname(inspect.getfile(uds))))
print("UDS root path: {}".format(root_path))
infile_dir=root_path+'/data/processed'
outfile_dir=root_path+'/products'
create_folder(outfile_dir)
do_init=True
do_ermask=False
eband_selected=[0]
def runme(datakey):
""" runs datakey over energy bands """
events=[]
expmaps=[]
for ii in range(len(eband_selected)):
index=eband_selected[ii]
print("\t>>> Energy band en{} -- {}-{} keV".format(eband[index],emin_kev[index],emax_kev[index]))
outfile_evtool, outfile_expmap = init_events(key=datakey, eband_index=eband[index],
infile_dir=infile_dir,
outfile_dir=outfile_dir,
do_init=do_init,
do_obsmode=False,
do_center=True,
do_evtool=True,
do_expmap=False,
ra_cen=ra_cen, de_cen=de_cen,
emin_kev=emin_kev[index],
emax_kev=emax_kev[index])
events.append(outfile_evtool)
expmaps.append(outfile_expmap)
detmask="{}_DetectionMask{}".format(os.path.join(outfile_dir,datakey), outfile_post)
if(do_ermask==True):
cmd=["ermask",
"expimage=%s" %(expmaps[0]), # use the first exposure maps calculated for that skyfield, independent of the energy band
"detmask=%s" %(detmask),
"threshold1=0.01",
"threshold2=10.0",
"regionfile_flag=no"
]
remove_file(detmask)
print((" ").join(cmd))
os.system((" ").join(cmd))
runme("tm7_obs_1")
"""
for tmkey in keylist_tm.keys():
print("TM{} in work... init events".format(tmkey))
for datakey in keylist_tm[tmkey]:
print("--> {}".format(datakey))
runme(datakey)
"""

View File

@ -7,6 +7,6 @@
Создает объедененный список событий и помещает его в ```uds/products```. Этот список событий нужен, в основном для извлечения спектров с помощью ```srctool```.
Попутно этот скрипт унифицирует оригинальные списки событий для последующей обработки. А именно, корректируются слова OBS_MODE=POINING/SURVEY в зависимости от типа наблюдения и производится центрирование на одни и те же координаты.
Попутно этот скрипт унифицирует оригинальные списки событий для последующей обработки. А именно, корректируются слова OBS_MODE=POINING/SURVEY в зависимости от типа наблюдения и производится центрирование на одни и те же координаты с помощью команды ```radec2xy```.

View File

@ -31,7 +31,7 @@ def remove_file(filename):
if(os.path.isfile(filename)==True):
os.remove(filename)
def do_evtool_esass(events=None,outfile=None,evlist=None,gti=None):
def do_evtool_esass(events=None,outfile=None,evlist=None,gti=None,region=None,emin=None,emax=None):
eventfiles=None
if(events):
@ -42,11 +42,14 @@ def do_evtool_esass(events=None,outfile=None,evlist=None,gti=None):
if not (eventfiles):
print("ERROR: Event files not provided")
emin="emin={}".format(emin) if(emin) else ''
emax="emax={}".format(emax) if(emax) else ''
gti="gti=\'{}\'".format(gti) if(gti) else ''
region="region=\'{}\'".format(region) if(region) else ''
cmd=["evtool",
eventfiles,
gti,
gti,region,emin,emax,
"outfile={}".format(outfile),
"image=yes",
"flag=0x2000",
@ -119,7 +122,7 @@ def do_badpix_tm6(filename):
f.close()
def init_events(key=None, eband_selected=[0], eband_index=None,
ra_cen=None, de_cen=None,
ra_cen=None, de_cen=None,do_init=True,
emin_kev=None, emax_kev=None, infile_dir=None, outfile_dir=None,
do_obsmode=False,do_center=False,do_evtool=False,do_expmap=False):
expmaps=[]
@ -146,7 +149,7 @@ def init_events(key=None, eband_selected=[0], eband_index=None,
infile="{}/{}.fits".format(infile_dir,key)
if(do_obsmode==True):
if(do_obsmode==True and do_init==True):
""" correct OBS_MODE in files """
lockfile="{}/{}.obsmode.lock".format(infile_dir,key)
@ -164,7 +167,7 @@ def init_events(key=None, eband_selected=[0], eband_index=None,
print("Lock file {} is found, skipping OBS_MODE correction.".format(lockfile))
pass
if(do_center==True):
if(do_center==True and do_init==True):
""" re-center original events files """
if not (ra_cen and de_cen):
print("Please provide center coordinates")
@ -198,7 +201,7 @@ def init_events(key=None, eband_selected=[0], eband_index=None,
"pattern=15"
]
# run the command
if(do_evtool==True):
if(do_evtool==True and do_init==True):
#log = subprocess.check_call(cmd)
print((" ").join(cmd))
test_exe('evtool')
@ -215,7 +218,7 @@ def init_events(key=None, eband_selected=[0], eband_index=None,
outfile_expmap="{}_ExposureMap_en{}{}".format(os.path.join(outfile_dir,key), eband_index, outfile_post)
if(do_expmap==True):
if(do_expmap==True and do_init==True):
cmd=["expmap",
"inputdatasets=%s" %(outfile_evtool),
"emin=%s" %(emin_kev),
@ -230,7 +233,7 @@ def init_events(key=None, eband_selected=[0], eband_index=None,
test_exe('expmap')
os.system((" ").join(cmd))
return outfile_evtool
return outfile_evtool,outfile_expmap
def test_exe(program):