190 lines
6.4 KiB
Python
Executable File
190 lines
6.4 KiB
Python
Executable File
#!/usr/bin/env python
|
||
"""
|
||
НАЗВАНИЕ:
|
||
|
||
05_srctool.py
|
||
|
||
|
||
НАЗНАЧЕНИЕ:
|
||
|
||
Запускает scrtool для самого широкого канала 0.2-10 кэВ, чтобы спектры имели самое полное покрытие по энергиям. Список источников берется из 0.3-2.3 кэВ.
|
||
|
||
ВЫЗОВ:
|
||
|
||
esass
|
||
./05_srctool.py
|
||
|
||
|
||
УПРАВЛЕНИЕ:
|
||
|
||
Требуется запуск предыдущего скрипта 04_mosaics.py
|
||
|
||
ПАРАМЕТРЫ:
|
||
|
||
index=4 : Выбранный энергетический диапазон
|
||
|
||
|
||
ВЫВОД:
|
||
|
||
Выходные файлы записываются в директорию outfile_dir/srctool_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
|
||
|
||
import matplotlib.pyplot as plt
|
||
|
||
|
||
|
||
from uds.utils import *
|
||
from uds.config import *
|
||
from uds.sherpa 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)
|
||
|
||
srctool_dir="{}/{}".format(outfile_dir,"srctool-products")
|
||
create_folder(srctool_dir)
|
||
|
||
outkey="tm0"
|
||
|
||
outfile_srctool="{}_SrcTool_".format(outkey)
|
||
|
||
do_flux_distr = False
|
||
do_sens_curve = True
|
||
|
||
index=0
|
||
|
||
catalog = "{}_SourceCatalog_en{}.main.selected.csv".format(os.path.join(outfile_dir,outkey), eband[0])
|
||
|
||
if not (os.path.isfile(catalog)==True):
|
||
print("{} not found, run 05_srctool.py?".format(catalog))
|
||
sys.exit()
|
||
|
||
if(do_flux_distr==True):
|
||
|
||
data, logbins = get_log_distr(infile=catalog, field='ml_rate', minval=1e-3, maxval=2)
|
||
fig, ax = plt.subplots()
|
||
for axis in ['top','bottom','left','right']:
|
||
ax.spines[axis].set_linewidth(1)
|
||
ax.tick_params(axis="both", width=1, labelsize=14)
|
||
plt.hist(data, bins=logbins, histtype='step', color='blue', linewidth=1, linestyle='solid')
|
||
plt.xlabel('Count rate (counts s$^{-1}$)',fontsize=14, fontweight='normal')
|
||
plt.ylabel('Number',fontsize=14, fontweight='normal')
|
||
plt.grid(visible=True)
|
||
plt.xscale('log')
|
||
plt.yscale('log')
|
||
plt.savefig(catalog.replace("main.selected.csv", "ml_rate.png"), bbox_inches='tight')
|
||
plt.close(fig)
|
||
|
||
|
||
data, logbins = get_log_distr(infile=catalog, field='ml_flux', minval=1e-15, maxval=2e-12)
|
||
fig, ax = plt.subplots()
|
||
for axis in ['top','bottom','left','right']:
|
||
ax.spines[axis].set_linewidth(1)
|
||
ax.tick_params(axis="both", width=1, labelsize=14)
|
||
plt.hist(data, bins=logbins, histtype='step', color='blue', linewidth=1, linestyle='solid')
|
||
plt.xlabel('Energy flux (erg s$^{-1}$ cm$^{-2}$)',fontsize=14, fontweight='normal')
|
||
plt.ylabel('Number',fontsize=14, fontweight='normal')
|
||
plt.grid(visible=True)
|
||
plt.xscale('log')
|
||
plt.yscale('log')
|
||
plt.savefig(catalog.replace("main.selected.csv", "ml_flux.png"), bbox_inches='tight')
|
||
plt.close(fig)
|
||
|
||
if(do_sens_curve==True):
|
||
coeff = 2.4336e-13 / 3.4012e-13 # see below
|
||
|
||
areatab="{}_AreaTable_dl10_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
hdul = fits.open(areatab)
|
||
tbdata = hdul[1].data
|
||
""" convert limflux from 0.3-2.3 keV to 0.5-2 keV """
|
||
limflux_dl10 = tbdata['LIMFLUX']*coeff
|
||
area_dl10 = tbdata['SKY_AREA']
|
||
hdul.close()
|
||
|
||
areatab="{}_AreaTable_dl6_en{}{}".format(os.path.join(outfile_dir,outkey), eband[index], outfile_post)
|
||
hdul = fits.open(areatab)
|
||
tbdata = hdul[1].data
|
||
""" convert limflux from 0.3-2.3 keV to 0.5-2 keV """
|
||
limflux_dl6 = tbdata['LIMFLUX']*coeff
|
||
area_dl6 = tbdata['SKY_AREA']
|
||
hdul.close()
|
||
|
||
fig, ax = plt.subplots()
|
||
for axis in ['top','bottom','left','right']:
|
||
ax.spines[axis].set_linewidth(1)
|
||
ax.tick_params(axis="both", width=1, labelsize=14)
|
||
ax.set_xlim([3e-16,1e-13])
|
||
ax.set_ylim([0.3,160])
|
||
|
||
df = pandas.read_csv("../data/surveys/eFEDS.dat",header=None,names=['limflux','area'])
|
||
plt.plot(df['limflux'],df['area'], color="brown", linestyle='solid',label="eFEDS (DL6)")
|
||
|
||
plt.plot(limflux_dl10,area_dl10, color="black", linestyle='solid',label="eUDS (DL10)")
|
||
plt.plot(limflux_dl6,area_dl6, color="black", linestyle='dashed', label="eUDS (DL6)")
|
||
|
||
df = pandas.read_csv("../data/surveys/cosmos-legacy.dat",header=None,names=['limflux','area'])
|
||
plt.plot(df['limflux'],df['area'], color="blue", linestyle='solid',label="COSMOS Legacy")
|
||
|
||
df = pandas.read_csv("../data/surveys/CDWFS.dat",header=None,names=['limflux','area'])
|
||
plt.plot(df['limflux'],df['area'], color="green", linestyle='solid', label="CDWFS")
|
||
|
||
df = pandas.read_csv("../data/surveys/XMM-RM.dat",header=None,names=['limflux','area'])
|
||
plt.plot(df['limflux'],df['area'], color="magenta", linestyle='solid',label="XMM-RM")
|
||
|
||
df = pandas.read_csv("../data/surveys/XMM-XXL-N.dat",header=None,names=['limflux','area'])
|
||
plt.plot(df['limflux'],df['area'], color="red", linestyle='solid',label="XMM-XXL-N")
|
||
|
||
|
||
ax.legend()
|
||
|
||
#plt.hist(data, bins=logbins, histtype='step', color='blue', linewidth=1, linestyle='solid')
|
||
plt.xlabel('Limiting flux (0.5-2 keV, erg s$^{-1}$ cm$^{-2}$)',fontsize=14, fontweight='normal')
|
||
plt.ylabel('Area (deg$^{2}$)',fontsize=14, fontweight='normal')
|
||
plt.grid(visible=True)
|
||
plt.xscale('log')
|
||
plt.yscale('log')
|
||
png="{}_AreaTable_en{}.png".format(os.path.join(outfile_dir,outkey), eband[index])
|
||
plt.savefig(png, bbox_inches='tight')
|
||
plt.close(fig)
|
||
|
||
"""
|
||
========================================================================
|
||
Model TBabs<1>*powerlaw<2> Source No.: 1 Active/On
|
||
Model Model Component Parameter Unit Value
|
||
par comp
|
||
1 1 TBabs nH 10^22 2.00000E-02 frozen
|
||
2 2 powerlaw PhoIndex 2.00000 frozen
|
||
3 2 powerlaw norm 1.14851E-04 +/- 3.83988E-06
|
||
________________________________________________________________________
|
||
|
||
Model Flux 0.00028334 photons (3.4012e-13 ergs/cm^2/s) range (0.30000 - 2.3000 keV)
|
||
Model Flux 0.0001619 photons (2.4336e-13 ergs/cm^2/s) range (0.50000 - 2.0000 keV)
|
||
"""
|