forked from erosita/uds
309 lines
10 KiB
Python
Executable File
309 lines
10 KiB
Python
Executable File
#!/usr/bin/env python
|
||
"""
|
||
НАЗВАНИЕ:
|
||
|
||
04_mosaics.py
|
||
|
||
|
||
НАЗНАЧЕНИЕ:
|
||
|
||
Собирает мозайки в разных энергетических диапазонах.
|
||
|
||
ВЫЗОВ:
|
||
|
||
esass
|
||
./01_mosaics.py
|
||
|
||
|
||
УПРАВЛЕНИЕ:
|
||
|
||
Запуск отдельных команд управляется переменными, например: do_init = True
|
||
Выбранный энергетический диапазон управляется переменной index
|
||
|
||
ПАРАМЕТРЫ:
|
||
|
||
index : Выбранный энергетический диапазон
|
||
|
||
|
||
ВЫВОД:
|
||
|
||
Выходные файлы записываются в директорию outfile_dir
|
||
|
||
|
||
ИСТОРИЯ:
|
||
|
||
Роман Кривонос, ИКИ РАН, krivonos@cosmos.ru
|
||
Март 2023
|
||
|
||
"""
|
||
|
||
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))))
|
||
"""
|
||
ftools does not like long file path names,
|
||
for this reason, we use relative path here
|
||
"""
|
||
root_path='..'
|
||
print("UDS root path: {}".format(root_path))
|
||
|
||
infile_dir=root_path+'/data/processed'
|
||
outfile_dir=root_path+'/products'
|
||
create_folder(outfile_dir)
|
||
|
||
outkey="tm0"
|
||
|
||
do_init = False
|
||
do_merge = False
|
||
do_detmask = False
|
||
do_expmap = False
|
||
|
||
|
||
do_erbox1 = False # local mode
|
||
do_erbackmap1 = False #
|
||
do_erbox2 = False # map mode, with background map
|
||
do_erbackmap2 = False #
|
||
do_erbox3 = False # map mode, with background map
|
||
do_erbackmap3 = False #
|
||
|
||
do_ersensmap = False
|
||
do_ermldet = True
|
||
do_catprep = True
|
||
do_filter_catalog = True
|
||
|
||
#do_ermldet = False
|
||
#do_cross_match = False
|
||
|
||
|
||
|
||
index=4
|
||
|
||
vign=True
|
||
vignetting = 'vign' if (vign==True) else 'novign'
|
||
|
||
events=[]
|
||
expmaps=[]
|
||
bkgmaps=[]
|
||
for tmkey in keylist_tm.keys():
|
||
print("TM{} in work... init events".format(tmkey))
|
||
for datakey in keylist_tm[tmkey]:
|
||
print("--> {}".format(datakey))
|
||
""" Подготавливаем списки событий индивидуальных наблюдений """
|
||
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=False,
|
||
do_evtool=False,
|
||
do_expmap=False,
|
||
vign=vign,
|
||
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)
|
||
|
||
|
||
""" Собираем общий список событий """
|
||
outfile_evtool="{}_EventList_en{}.fits".format(os.path.join(outfile_dir,outkey),
|
||
eband[index])
|
||
|
||
if(do_merge==True):
|
||
do_evtool_esass(events=events, outfile=outfile_evtool)
|
||
|
||
|
||
""" makes detmask from TM exposures """
|
||
detmask="{}/{}_DetectorMask_en{}{}".format(outfile_dir,
|
||
outkey,
|
||
eband[index],
|
||
outfile_post)
|
||
if(do_detmask==True):
|
||
create_detmask_merged(expmaps,detmask,minval=100)
|
||
|
||
"""
|
||
Собираем общую карту экспозиции, обратите внимание на коэффициент 7.
|
||
Экспозиция рассчитывается на 7 телескопов.
|
||
"""
|
||
outfile_expmap="{}_ExposureMap_en{}{}".format(os.path.join(outfile_dir,outkey),
|
||
eband[index],
|
||
outfile_post)
|
||
if(do_expmap==True):
|
||
create_expmap_merged(expmaps,outfile_expmap,scale=7.0)
|
||
|
||
outfile_boxlist1="{}/{}_BoxList1_en{}{}".format(outfile_dir,outkey, eband[index], outfile_post)
|
||
if(do_erbox1==True):
|
||
cmd=["erbox",
|
||
"images=\'{}\'".format(outfile_evtool),
|
||
"boxlist=%s" %(outfile_boxlist1),
|
||
"expimages=\'{}\'".format(outfile_expmap),
|
||
"detmasks=\'{}\'".format(detmask),
|
||
"emin=\'{}\'".format(emin_ev[index]),
|
||
"emax=\'{}\'".format(emax_ev[index]),
|
||
"ecf=\'{}\'".format(ecf[index]),
|
||
"nruns=2",
|
||
"likemin=6.0",
|
||
"boxsize=4",
|
||
"compress_flag=N",
|
||
"bkgima_flag=N",
|
||
"expima_flag=Y",
|
||
"detmask_flag=Y"
|
||
]
|
||
remove_file(outfile_boxlist1)
|
||
print((" ").join(cmd))
|
||
os.system((" ").join(cmd))
|
||
save_ds9reg(outfile_boxlist1)
|
||
|
||
""" Background map 1 """
|
||
outfile_backmap1="{}_BackMap1_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
cheese_mask="{}_CheeseMask1_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
if(do_erbackmap1==True):
|
||
do_erbackmap_esass(outfile_evtool,outfile_expmap,outfile_boxlist1,detmask,emin_ev[index],emax_ev[index],
|
||
outfile_backmap1,cheese_mask)
|
||
|
||
outfile_boxlist2="{}/{}_BoxList2_en{}{}".format(outfile_dir,outkey, eband[index], outfile_post)
|
||
if(do_erbox2==True):
|
||
cmd=["erbox",
|
||
"images=\'{}\'".format(outfile_evtool),
|
||
"boxlist=%s" %(outfile_boxlist2),
|
||
"expimages=\'{}\'".format(outfile_expmap),
|
||
"detmasks=\'{}\'".format(detmask),
|
||
"emin=\'{}\'".format(emin_ev[index]),
|
||
"emax=\'{}\'".format(emax_ev[index]),
|
||
"ecf=\'{}\'".format(ecf[index]),
|
||
"nruns=2",
|
||
"likemin=6.0",
|
||
"boxsize=4",
|
||
"compress_flag=N",
|
||
"bkgima_flag=Y",
|
||
"bkgimages={}".format(outfile_backmap1),
|
||
"expima_flag=Y",
|
||
"detmask_flag=Y"
|
||
]
|
||
remove_file(outfile_boxlist2)
|
||
print((" ").join(cmd))
|
||
os.system((" ").join(cmd))
|
||
save_ds9reg(outfile_boxlist2)
|
||
|
||
""" Background map 2 """
|
||
outfile_backmap2="{}_BackMap2_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
cheese_mask="{}_CheeseMask2_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
if(do_erbackmap2==True):
|
||
do_erbackmap_esass(outfile_evtool,outfile_expmap,outfile_boxlist2,detmask,emin_ev[index],emax_ev[index],
|
||
outfile_backmap2,cheese_mask)
|
||
|
||
outfile_boxlist3="{}/{}_BoxList3_en{}{}".format(outfile_dir,outkey, eband[index], outfile_post)
|
||
if(do_erbox3==True):
|
||
cmd=["erbox",
|
||
"images=\'{}\'".format(outfile_evtool),
|
||
"boxlist=%s" %(outfile_boxlist3),
|
||
"expimages=\'{}\'".format(outfile_expmap),
|
||
"detmasks=\'{}\'".format(detmask),
|
||
"emin=\'{}\'".format(emin_ev[index]),
|
||
"emax=\'{}\'".format(emax_ev[index]),
|
||
"ecf=\'{}\'".format(ecf[index]),
|
||
"nruns=2",
|
||
"likemin=6.0",
|
||
"boxsize=4",
|
||
"compress_flag=N",
|
||
"bkgima_flag=Y",
|
||
"bkgimages={}".format(outfile_backmap2),
|
||
"expima_flag=Y",
|
||
"detmask_flag=Y"
|
||
]
|
||
remove_file(outfile_boxlist3)
|
||
print((" ").join(cmd))
|
||
os.system((" ").join(cmd))
|
||
save_ds9reg(outfile_boxlist3)
|
||
|
||
""" Background map 3 """
|
||
outfile_backmap3="{}_BackMap3_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
cheese_mask="{}_CheeseMask3_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
if(do_erbackmap3==True):
|
||
do_erbackmap_esass(outfile_evtool,outfile_expmap,outfile_boxlist3,detmask,emin_ev[index],emax_ev[index],
|
||
outfile_backmap3,cheese_mask)
|
||
|
||
mllist="{}_MaxLikSourceList_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
srcmap="{}_SourceMap_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
cmd=["ermldet",
|
||
"mllist=%s" %(mllist),
|
||
"boxlist=%s" %(outfile_boxlist3),
|
||
"images=\'{}\'".format(outfile_evtool),
|
||
"expimages=\'{}\'".format(outfile_expmap),
|
||
"detmasks=\'{}\'".format(detmask),
|
||
"bkgimages=\'{}\'".format(outfile_backmap3),
|
||
"emin=\'{}\'".format(emin_ev[index]),
|
||
"emax=\'{}\'".format(emax_ev[index]),
|
||
"ecf=\'{}\'".format(ecf[index]),
|
||
"hrdef=",
|
||
"likemin=5.",
|
||
"extlikemin=6.",
|
||
"compress_flag=N",
|
||
"cutrad=10.", # was 15
|
||
"multrad=20.",
|
||
"extmin=2.0",
|
||
"extmax=15.0",
|
||
#"bkgima_flag=Y", looks outdated
|
||
"expima_flag=Y",
|
||
"detmask_flag=Y",
|
||
"shapelet_flag=yes",
|
||
"photon_flag=yes",
|
||
"extentmodel=beta",
|
||
"thres_flag=N",
|
||
"thres_col=like",
|
||
"thres_val=30.",
|
||
"nmaxfit=4",
|
||
"nmulsou=2",
|
||
"fitext_flag=yes",
|
||
"srcima_flag=yes",
|
||
"srcimages=\'{}\'".format(srcmap)
|
||
]
|
||
|
||
sensmap="{}_SensitivityMap_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
area="{}_AreaTable_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
if(do_ersensmap==True):
|
||
detlike=10
|
||
create_sensmap(sensmap="{}_SensitivityMap_dl{}_en{}{}".format(os.path.join(outfile_dir,outkey), detlike,
|
||
eband[index], outfile_post),
|
||
areatab="{}_AreaTable_dl{}_en{}{}".format(os.path.join(outfile_dir,outkey),
|
||
detlike, eband[index], outfile_post),
|
||
expmap=outfile_expmap, backmap=outfile_backmap3,detlike=detlike,
|
||
detmask=detmask, emin=emin_ev[index], emax=emax_ev[index],ecf=ecf[index])
|
||
|
||
|
||
if(do_ermldet==True):
|
||
remove_file(mllist)
|
||
remove_file(srcmap)
|
||
os.system((" ").join(cmd))
|
||
print((" ").join(cmd))
|
||
|
||
catprep="{}_SourceCatalog_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
if(do_catprep==True):
|
||
cmd=["catprep",
|
||
"infile={}".format(mllist),
|
||
"outfile={}".format(catprep),]
|
||
remove_file(catprep)
|
||
os.system((" ").join(cmd))
|
||
print((" ").join(cmd))
|
||
|
||
if(do_filter_catalog==True):
|
||
#filter_mllist(mllist,expcut=5000.0,dlcut=10.0,dlmin=10,dlmax=10000)
|
||
""" works the same """
|
||
filter_catprep(catprep,expcut=5000.0,dlmin=10,dlmax=10000,outkey='bright')
|
||
filter_catprep(catprep,expcut=5000.0,dlmin=6,dlmax=10,outkey='faint')
|
||
|