Simulator

[1]:
%load_ext autoreload
%autoreload 2

Filter

[2]:
from supy.simulator import Filter

7DT filterset by default

[3]:
filt = Filter()
filt.plot_filterset()
[3]:
<Axes: xlabel='Wavelength [$\\rm \\AA$]', ylabel='Transmission [%]'>
../_images/examples_simulator_5_1.png

SDSS filterset

[4]:
filt = Filter(filterset="sdss")
filt.plot_filterset()
[4]:
<Axes: xlabel='Wavelength [$\\rm \\AA$]', ylabel='Transmission [%]'>
../_images/examples_simulator_7_1.png

Manual tophat filterset

[5]:
filt = Filter(filterset="tophat", bandmin=3000, bandmax=3500, bandwidth=500, bandstep=500, bandrsp=0.5)
filt.plot_filterset()
[5]:
<Axes: xlabel='Wavelength [$\\rm \\AA$]', ylabel='Transmission [%]'>
../_images/examples_simulator_9_1.png

Filter info

[6]:
filt = Filter()
filt.filterset
[6]:
Table length=1000
wavelengthm4000m4125m4250m4375m4500m4625m4750m4875m5000m5125m5250m5375m5500m5625m5750m5875m6000m6125m6250m6375m6500m6625m6750m6875m7000m7125m7250m7375m7500m7625m7750m7875m8000m8125m8250m8375m8500m8625m8750m8875
float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64
1000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
1009.0090090090090.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
1018.0180180180180.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
1027.0270270270270.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
1036.0360360360360.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
1045.0450450450450.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
...........................................................................................................................
9945.9459459459470.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
9954.9549549549560.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
9963.9639639639640.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
9972.9729729729730.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
9981.9819819819820.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
9990.9909909909910.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
10000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0

Response

[7]:
from supy.simulator.response import *

Optics

[8]:
plot_table(get_optics())
[8]:
<Axes: xlabel='Wavelength [$\\rm \\AA$]', ylabel='Efficiency [%]'>
../_images/examples_simulator_15_1.png

Quentum efficiency

[9]:
plot_table(get_QE_factor())
[9]:
<Axes: xlabel='Wavelength [$\\rm \\AA$]', ylabel='Quentum Efficiency [%]'>
../_images/examples_simulator_17_1.png

Sky transmission

[10]:
plot_table(get_sky_transmission())
[10]:
<Axes: xlabel='Wavelength [$\\rm \\AA$]', ylabel='Transmission [%]'>
../_images/examples_simulator_19_1.png

Simulator

[11]:
from supy.simulator import Simulator

Plot response curve

[12]:
sdt = Simulator()
sdt.plot_response()
Adopt the default 7DT filterset
[12]:
<Axes: xlabel='Wavelength [$\\rm \\AA$]', ylabel='Response [%]'>
../_images/examples_simulator_23_2.png

Calculate sensitivity

[13]:
exptime = 300
seeing = 1.5

sdt.initalize(exposure=exptime, fwhm_seeing=seeing)
sdt.plot_point_source_depth()
[13]:
<Axes: xlabel='wavelength [$\\AA$]', ylabel='Point source limits (5$\\sigma$)'>
../_images/examples_simulator_25_1.png

Compare with others

[14]:
sdt.plot_point_source_depth(add_comp=True)
[14]:
<Axes: xlabel='Wavelength [$\\rm \\AA$]', ylabel='$\\rm 5\\sigma$ Depth [AB]'>
../_images/examples_simulator_27_1.png

Synthesize photometry

Example 1: Feige110

[15]:
data = utils.get_testdata("Feige110")
utils.plot_data(data)
[15]:
<Axes: xlabel='Wavelength [$\\rm \\AA$]', ylabel='Brightness [AB mag]'>
../_images/examples_simulator_30_1.png
[16]:
sdt.get_synphot(data)
sdt.synth_table
[16]:
Table length=40
filterlambandwidthmag_abszsnrmag_appmag_obsmag_errfnu_obsfnu_errfnuflam_obsflam_errflam
Angstrommag(AB)mag(AB)mag(AB)uJyuJyuJyerg / (Angstrom cm2 s)erg / (Angstrom cm2 s)erg / (Angstrom cm2 s)
str5float64float64float64float64float64float64float64float64float64float64float64float64float64float64
m40004010.913250.00011.252nan1091.39711.25211.2530.010114511.282104.922114611.6902.1339409906559762e-131.955238465475569e-162.135812117017625e-13
m41254134.015250.00011.279nan1176.24611.27911.2780.010111862.73595.101111838.1171.9622848187077405e-131.6682601389167712e-161.9618529704255485e-13
m42504257.559250.00011.335nan1226.88511.33511.3350.010106161.31286.529106136.7511.7557623371543897e-131.4310728836013931e-161.755356125006737e-13
m43754380.872250.00011.389nan1258.48711.38911.3900.010100894.54280.171100997.5741.5760398445176519e-131.2523295199777686e-161.5776492701208275e-13
m45004504.837250.00011.426nan1281.57311.42611.4250.01097734.66376.26197612.4631.4438139474451135e-131.126595072742437e-161.4420087230842624e-13
m46254628.747250.00011.482nan1278.29411.48211.4820.01092701.89472.52092745.2541.2971265868506703e-131.014732697952565e-161.2977333016261817e-13
.............................................
m82508245.499250.00012.611nan235.54112.61112.6150.01132660.034138.66032787.1621.4401357192167532e-146.114172685994745e-171.4457414292417476e-14
m83758373.650250.00012.640nan221.21712.64012.6430.01131815.560143.82131915.5911.360287250406281e-146.149120164062451e-171.3645641031284661e-14
m85008492.617250.00012.668nan205.44612.66812.6650.01131190.388151.81831110.6761.2964578099448763e-146.310464024886764e-171.2931445039660473e-14
m86258620.801250.00012.698nan186.03412.69812.6960.01230318.277162.97230265.6621.2230098871180437e-146.57412675912755e-171.2208874182704116e-14
m87508745.072250.00012.726nan171.78212.72612.7220.01229584.995172.22529471.5311.1597528721711906e-146.751325274182963e-171.15530500454629e-14
m88758864.730250.00012.753nan152.91512.75312.7410.01229092.407190.25228748.3771.1098629740775339e-147.258048117520959e-171.0967383790341948e-14
[17]:
sdt.plot_syn_spectrum(add_data=True)
[17]:
<Axes: xlabel='Wavelength [$\\rm \\AA$]', ylabel='Brightness [AB mag]'>
../_images/examples_simulator_32_1.png

Example 2: High-z QSO Model

[18]:
data = utils.get_testdata("Highz_QSO")
sdt.get_synphot(data, show_plot=True)
../_images/examples_simulator_34_0.png

Example 3: Kilonova spectrum

[19]:
data = utils.get_testdata("AT2017gfo_2.4d")
sdt.get_synphot(data, show_plot=True, flux_unit="flam")
../_images/examples_simulator_36_0.png