Calculate Simple Cometary Magnitude
[1]:
import numpy as np
import pandas as pd
import astropy.units as u
from sorcha_addons.activity.lsst_comet.model import Comet
from sbpy.activity import Afrho
import synphot
from sorcha.modules.PPCalculateSimpleCometaryMagnitude import PPCalculateSimpleCometaryMagnitude
/home/docs/checkouts/readthedocs.org/user_builds/sorcha-addons/envs/stable/lib/python3.10/site-packages/rebound/__init__.py:58: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
import pkg_resources
The lsstcomet code used by sorcha validates its results by comparing them to the coma magnitude calculated by sbpy. We will do the same.
First, calculating using sbpy:
[2]:
g = {'rh': 2.0 * u.au, 'delta': 1.0 * u.au, 'phase': 0 * u.deg}
afrho = Afrho(100 * 2**-2, 'cm')
tab = np.loadtxt('lsst-total-r.dat').T
r = synphot.SpectralElement(synphot.Empirical1D, points=tab[0] * u.nm,
lookup_table=tab[1])
rap = 1 * u.arcsec
m0 = afrho.to_fluxd(r, rap, g, unit=u.ABmag).value
comet = Comet(R=1, afrho1=100, k=-2)
m_sbpy = comet.mag(g, 'r', rap=rap.value)
Now a test dataset must be created using the same values. TrailedSourceMag here is a placeholder value: the function calculates the total apparent magnitude of coma and nucleus, and thus needs the “nucleus” apparent magnitude.
[3]:
test_dict = {'MJD': [2459215.5],
'H_r': [7.3],
'afrho1': [100],
'k':[-2],
'optFilter':'r',
'seeingFwhmEff': [1],
'trailedSourceMagTrue': 18}
test_data = pd.DataFrame(test_dict)
rho = 2.
delta = 1.
alpha = 0
Calculating coma apparent magnitude using the SSPP function and comparing:
[4]:
from sorcha_addons.activity.lsst_comet.lsst_comet_activity import LSSTCometActivity
from sorcha.activity.activity_registration import update_activity_subclasses
update_activity_subclasses()
test_data = PPCalculateSimpleCometaryMagnitude(test_data.copy(), ['r'], rho, delta, alpha, 'lsst_comet')
[5]:
test_data
[5]:
| MJD | H_r | afrho1 | k | optFilter | seeingFwhmEff | trailedSourceMagTrue | coma_magnitude | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2459215.5 | 7.3 | 100 | -2 | r | 1 | 17.578331 | 18.809232 |
[6]:
m_sspp = test_data['coma_magnitude']
[7]:
assert np.isclose(m_sspp, m_sbpy, atol=0.05)