Example #1
0
#!/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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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"
}

#-----------------------------------------------------------------------------#
Example #5
0
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 ():
Example #7
0
#! /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