#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import division from __future__ import print_function from __future__ import absolute_import import numpy as np import matplotlib.pyplot as pl from utils.parse_pars import parse_pars from utils import draw_from_sample from spamm.components.NuclearContinuumComponent import NuclearContinuumComponent from spamm.Spectrum import Spectrum PARS = parse_pars()["nuclear_continuum"] TEST_WL = parse_pars()["testing"] WL = np.arange(TEST_WL["wl_min"], TEST_WL["wl_max"], TEST_WL["wl_step"]) #-----------------------------------------------------------------------------# def create_nc(nc_params=None): if nc_params is None: nc_params = {"wl": WL} nc_params["broken_pl"] = False nc_params["slope1"] = draw_from_sample.gaussian( PARS["pl_slope_min"], PARS["pl_slope_max"]) max_template_flux = 1e-13 nc_params["norm_PL"] = draw_from_sample.gaussian( PARS["pl_norm_min"], max_template_flux)
import dill as pickle import datetime import matplotlib matplotlib.use('agg') import numpy as np import matplotlib.pyplot as pl import time import argparse import glob from utils.parse_pars import parse_pars from utils import draw_from_sample from spamm.components.FeComponent import FeComponent from spamm.Spectrum import Spectrum PARS = parse_pars()["fe_forest"] TEST_WL = parse_pars()["testing"] WL = np.arange(TEST_WL["wl_min"], TEST_WL["wl_max"], TEST_WL["wl_step"]) #-----------------------------------------------------------------------------# def from_file(datafile, redshift=None, scale=None, subset=False, pname=None): print(PARS, "\n") templates = glob.glob(os.path.join(PARS["fe_templates"], "*")) print("Using datafile: {}\n".format(datafile)) print("Templates = {}\n".format(templates)) print( "Are the parameters in utils good? If not, ctrl+c, modify them, and rerun" ) time.sleep(5)
import datetime import matplotlib matplotlib.use('agg') import numpy as np import matplotlib.pyplot as pl import time import argparse import glob from utils.parse_pars import parse_pars from utils import draw_from_sample from spamm.components.HostGalaxyComponent import HostGalaxyComponent from spamm.Spectrum import Spectrum PARS = parse_pars()["host_galaxy"] TEST_WL = parse_pars()["testing"] WL = np.arange(TEST_WL["wl_min"], TEST_WL["wl_max"], TEST_WL["wl_step"]) #-----------------------------------------------------------------------------# def from_file(datafile, redshift=None, scale=None, subset=False, pname=None): print(PARS, "\n") templates = glob.glob(os.path.join(PARS["hg_models"], "*")) print("Using datafile: {}\n".format(datafile)) print("Templates = {}\n".format(templates)) print( "Are the parameters in utils good? If not, ctrl+c, modify them, and rerun" ) time.sleep(5)
import triangle #sys.path.append(os.path.abspath("../")) from utils.parse_pars import parse_pars from analyze_model_run import make_chain_plots from spamm.Spectrum import Spectrum from spamm.Model import Model from spamm.components.NuclearContinuumComponent import NuclearContinuumComponent from spamm.components.HostGalaxyComponent import HostGalaxyComponent from spamm.components.FeComponent import FeComponent from spamm.components.BalmerContinuumCombined import BalmerCombined from spamm.components.ReddeningLaw import Extinction from spamm.components.MaskingComponent import Mask # TODO: astropy units for spectrum PARS = parse_pars()["fe_forest"] component_data = { "PL": "../Data/FakeData/PLcompOnly/fakepowlaw1_werr.dat", "HOST": "../Data/FakeData/fake_host_spectrum.dat", "FE": # "/user/jotaylor/git/spamm/examples/stitchedtemp.dat", # "/user/jotaylor/git/spamm/Data/testmodels/Veron_OptFetempl_900kms.dat", "/user/jotaylor/git/spamm/Data/testmodels/Fe_UVtemplt_A.asc", # "/user/jotaylor/git/spamm/Data/testmodels/Bev_Wills.txt", # "../Data/FakeData/Iron_comp/fakeFe1_deg.dat", #"../Fe_templates/FeSimdata_BevWills_0p05.dat", "BC": "../Data/FakeData/BaC_comp/FakeBac01_deg.dat", "BpC": "../Data/FakeData/BaC_comp/FakeBac_lines01_deg.dat" } #-----------------------------------------------------------------------------#
import math from astropy.constants import c import glob import os from utils.runningmeanfast import runningMeanFast from utils.gaussian_kernel import gaussian_kernel from utils.fftwconvolve_1d import fftwconvolve_1d from utils.find_nearest_index import find_nearest from utils.parse_pars import parse_pars from utils.rebin_spec import rebin_spec from .ComponentBase import Component from ..Spectrum import Spectrum PARS = parse_pars()["host_galaxy"] #-----------------------------------------------------------------------------# class HostGalaxyComponent(Component): """ Host Galaxy Component: \f$ F_{\lambda,\rm Host}\ =\ \sum_{1}^{N} F_{\rm Host,i} HostTempl_{\lambda,i}(\sig_*) \f$ This component has N templates and N+1 parameters. normalization: \f$ F_{\rm Host,i} \f$ for each of the N templates. stellar line dispersion: \f$ \sig_* \f$ Attributes: host_gal (list): List of Spectrum objects for each template file. interp_host (list):
#!/usr/bin/python import sys import numpy as np from astropy.modeling.powerlaws import PowerLaw1D, BrokenPowerLaw1D from .ComponentBase import Component from utils.runningmeanfast import runningMeanFast from utils.parse_pars import parse_pars PARS = parse_pars()["nuclear_continuum"] #-----------------------------------------------------------------------------# class NuclearContinuumComponent(Component): """ AGN Continuum Component \f$ F_{\lambda,{\rm PL}}=F_{\rm PL,0} \ \left(\frac{\lambda}{\lambda_0}\right)^{\alpha} \f$ This component has two parameters: normalization : \f$ F_{\rm PL,0} \f$ slope : \f$ \alpha \f$ Attributes: broken_powerlaw (Bool): True if a broken power law should be used. model_parameter_names (list): List of model parameter names, e.g. slope1, wave_break name (str): Name of component, i.e. "Nuclear" norm_min (): norm_max ():
#! /usr/bin/env python import argparse import numpy as np from utils.parse_pars import parse_pars import run_spamm, run_fe, run_nc, run_bc, run_hg from utils.add_in_quadrature import add_in_quadrature # This should be a wavelength range from 1000-10,000A, every 0.5A TEST_WL = parse_pars()["testing"] WL = np.arange(TEST_WL["wl_min"], TEST_WL["wl_max"], TEST_WL["wl_step"]) # These values were picked by hand to provide the most realistic power law. NC_PARAMS = {"wl": WL, "slope1": 2.3, "norm_PL": 5e-15, "broken_pl": False} # The normalizations are drawn from a gaussian sample with mu=9.06e-15, # sigma=3.08946e-15 (from 0->template max flux). fe_width is halfway # between range in parameters. WL is very close to template span (1075-7535) FE_PARAMS = {"fe_norm_1": 1.07988504e-14, "fe_norm_2": 6.91877436e-15, "fe_norm_3": 5e-15,# 8.68930476e-15, "fe_width": 5450, "no_templates": 3, "wl": WL} # These values are just the midpoints of the parameter space in parameters.yaml BC_PARAMS = {"bc_norm": 3e-14,
from .ComponentBase import Component from scipy.interpolate import interp1d from scipy.integrate import simps from scipy.fftpack.helper import next_fast_len import matplotlib.pyplot as plt from astropy.constants import c, h, k_B, Ryd from astropy.modeling.blackbody import blackbody_lambda #TODO this needs to be integrated into Spectrum eventually from utils.rebin_spec import rebin_spec #from utils.fftwconvolve_1d import fftwconvolve_1d from utils.find_nearest_index import find_nearest_index from utils.parse_pars import parse_pars #import line_profiler PARS = parse_pars()["balmer_continuum"] # Constants are in cgs. c = c.cgs h = h.cgs k = k_B.cgs R = Ryd.to("1/Angstrom") E0 = 2.179e-11 balmer_edge = 3646 # Angstroms class BalmerCombined(Component): """ Model of the combined BalmerContinuum (BC) based on Grandi et al. (1982) and Kovacevic & Popovic (2014).It contains two components: an analytical function to describe optically thick clouds with a uniform temperature for wavelength <3646A