A package following Stone & Shen (2023) in using the method described in Neustadt & Kochanek (2022) (NK22) to form temperature perturbation maps for AGN accretion disks. The methodology is originally described in NK22, with small adjustments in Stone & Shen (2023).
The repository is organized as follows:
/src
- The python package/Examples
- Example Jupyter notebooks detailing three use cases for the package (for both simulated and real data)/Paper
- Results from Stone & Shen (2023), including GIFs of fit spectra
Temperature perturbations generated within the accretion disks of AGN, near the supermassive black hole (SMBH), can generate changes in observed flux in the optical wavelengths. Assuming a Shakura-Sunayev thin disk (Shakura & Sunayev, 1973), axisyemmetric raduation, and a linear relationship between perturbations in temperature
To produce output temperature perturbation maps, one needs to use multi-wavelength and multi-epoch AGN variability data. NK22 use multi-wavelength light curves for local AGN, while we use multi-epoch SDSS-RM spectra for a range of different redshifts. In this package, there are a number of different test cases that can be used to test the algorithm, including fast, lamppost-like, outgoing waves (outgo) and slow, inward-moving wave-like perturbations (ingo) (see /Examples/SimData_Tutorial.ipynb
). The package can also be used with user-input data (see /Examples/RealData_Tutorial.ipynb
). Both of these examples assume that that each spetrum is sampled at the same wavelengths /Examples/ArbitrarilySampledData_Tutorial.ipynb
).
The algorithm can output a temperature map for an arbitrary number of specified "smoothing" parameters
and also show the quality of the fit to the data with an animated GIF:
The package temp-map
can be installed through pip
:
pip install .
In some cases, the Gram matrix (mkl
python package through a different channel. This can quickly be done in an anaconda environment:
conda install -c intel mkl=2021.4.0
The sparse linear algebra solver PyPardiso may also fail in some situations. This is noted as an issue in PyPardiso, and is due to intel-openmp
not recognizing the mkl
library. The easiest way to fix this is to reinstall certain releases of the two packages. As an example, here is a way to install them into an anaconda environment:
conda install -c conda-forge intel-openmp=2021.4.0
conda install -c intel mkl=2021.4.0
All data for the SDSS-RM sample used in this paper (including spectra and AGN paramaters), as well as all output temperature maps are located on Zenodo
For any questions or comments, reach out to Zachary Stone or Yue Shen