#!/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')