Stellar Spectra

Stellar spectra can be generated by combining a Stars object with an EmissionModel, translating the properties of the stellar populations (typically initial_masses, ages and metallicities) to a spectral energy distribution.

These models are described in detail in the emission model docs. Here, we’ll use an instance of a PacmanEmission model for demonstration purposes.

The following sections demonstrate the generation of integrated spectra (which is the same for both parametric and particle Stars), and per–particle spectra.

[1]:
from unyt import K, Msun, Myr

from synthesizer.emission_models import (
    AttenuatedEmission,
    Greybody,
    PacmanEmission,
)
from synthesizer.emission_models.attenuation import PowerLaw
from synthesizer.grid import Grid
from synthesizer.load_data.load_camels import load_CAMELS_IllustrisTNG
from synthesizer.parametric import SFH, Stars, ZDist

tau_v = 0.5
# dust curve slope
alpha = -1.0
dust_curve = PowerLaw(slope=alpha)
dust_emission_model = Greybody(30 * K, 1.2)

grid_name = "test_grid"
grid = Grid(grid_name)

stellar_mass = 10**11 * Msun
sfh = SFH.Constant(max_age=100 * Myr)
metal_dist = ZDist.Normal(mean=0.01, sigma=0.05)

# Get the 2D star formation and metal enrichment history for the
# given SPS grid. This is (age, Z).
stars = Stars(
    grid.log10ages,
    grid.metallicities,
    sf_hist=sfh,
    metal_dist=metal_dist,
    initial_mass=stellar_mass,
)

# Get the model
pacman = PacmanEmission(
    grid=grid,
    tau_v=tau_v,
    dust_curve=dust_curve,
    dust_emission=dust_emission_model,
)
print(pacman)
|======================================================================= EmissionModel: total =======================================================================|
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  TOTAL (stellar)                                                                                                                                                   |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Combination model:                                                                                                                                                  |
|  Combine models: dust_emission, emergent                                                                                                                           |
|  Save emission: True                                                                                                                                               |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  EMERGENT (stellar)                                                                                                                                                |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Combination model:                                                                                                                                                  |
|  Combine models: attenuated, escaped                                                                                                                               |
|  Save emission: True                                                                                                                                               |
|  Fixed parameters:                                                                                                                                                 |
|    - fesc: fesc                                                                                                                                                    |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  ATTENUATED (stellar)                                                                                                                                              |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Transformer model:                                                                                                                                                  |
|  Transformer: <class 'synthesizer.emission_models.transformers.dust_attenuation.PowerLaw'>                                                                         |
|  Apply to: reprocessed                                                                                                                                             |
|  Save emission: True                                                                                                                                               |
|  Fixed parameters:                                                                                                                                                 |
|    - tau_v: 0.5                                                                                                                                                    |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  REPROCESSED (stellar)                                                                                                                                             |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Combination model:                                                                                                                                                  |
|  Combine models: nebular, transmitted                                                                                                                              |
|  Save emission: True                                                                                                                                               |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  NEBULAR (stellar)                                                                                                                                                 |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Combination model:                                                                                                                                                  |
|  Combine models: nebular_line, nebular_continuum                                                                                                                   |
|  Save emission: True                                                                                                                                               |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  NEBULAR_CONTINUUM (stellar)                                                                                                                                       |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Extraction model:                                                                                                                                                   |
|  Grid: test_grid                                                                                                                                                   |
|  Extract key: nebular_continuum                                                                                                                                    |
|  Use velocity shift: False                                                                                                                                         |
|  Save emission: True                                                                                                                                               |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  NEBULAR_LINE (stellar)                                                                                                                                            |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Transformer model:                                                                                                                                                  |
|  Transformer: <class 'synthesizer.emission_models.transformers.escape_fraction.EscapedFraction'>                                                                   |
|  Apply to: _nebular_line_no_fesc                                                                                                                                   |
|  Save emission: True                                                                                                                                               |
|  Fixed parameters:                                                                                                                                                 |
|    - fesc_ly_alpha: fesc_ly_alpha                                                                                                                                  |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  _NEBULAR_LINE_NO_FESC (stellar)                                                                                                                                   |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Extraction model:                                                                                                                                                   |
|  Grid: test_grid                                                                                                                                                   |
|  Extract key: linecont                                                                                                                                             |
|  Use velocity shift: False                                                                                                                                         |
|  Save emission: False                                                                                                                                              |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  TRANSMITTED (stellar)                                                                                                                                             |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Transformer model:                                                                                                                                                  |
|  Transformer: <class 'synthesizer.emission_models.transformers.escape_fraction.ProcessedFraction'>                                                                 |
|  Apply to: full_transmitted                                                                                                                                        |
|  Save emission: True                                                                                                                                               |
|  Fixed parameters:                                                                                                                                                 |
|    - fesc: fesc                                                                                                                                                    |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  FULL_TRANSMITTED (stellar)                                                                                                                                        |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Extraction model:                                                                                                                                                   |
|  Grid: test_grid                                                                                                                                                   |
|  Extract key: transmitted                                                                                                                                          |
|  Use velocity shift: False                                                                                                                                         |
|  Save emission: True                                                                                                                                               |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  ESCAPED (stellar)                                                                                                                                                 |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Transformer model:                                                                                                                                                  |
|  Transformer: <class 'synthesizer.emission_models.transformers.escape_fraction.EscapedFraction'>                                                                   |
|  Apply to: incident                                                                                                                                                |
|  Save emission: True                                                                                                                                               |
|  Fixed parameters:                                                                                                                                                 |
|    - fesc: fesc                                                                                                                                                    |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  INCIDENT (stellar)                                                                                                                                                |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Extraction model:                                                                                                                                                   |
|  Grid: test_grid                                                                                                                                                   |
|  Extract key: incident                                                                                                                                             |
|  Use velocity shift: False                                                                                                                                         |
|  Save emission: True                                                                                                                                               |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  DUST_EMISSION (stellar)                                                                                                                                           |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Generation model:                                                                                                                                                   |
|  Emission generation model: Greybody(intrinsic=reprocessed, attenuated=attenuated, temperature=30 K, emissivity=1.2, optically_thin=True, lam_0=100.0 μm)          |
|  Intrinsic energy balance model: reprocessed                                                                                                                       |
|  Attenuated energy balance model: attenuated                                                                                                                       |
|  Save emission: True                                                                                                                                               |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|  INTRINSIC (stellar)                                                                                                                                               |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|Combination model:                                                                                                                                                  |
|  Combine models: reprocessed, escaped                                                                                                                              |
|  Save emission: True                                                                                                                                               |
|====================================================================================================================================================================|

Integrated spectra

To generate integrated spectra we simply call the components get_spectra method. This method will populate the component’s spectra attribute with a dictionary containing Sed objects for each spectra in the EmissionModel and will also return the spectra at the root of the EmissionModel.

[2]:
# Get the spectra using a unified agn model (instantiated elsewhere)
spectra = stars.get_spectra(pacman)

We can plot the resulting spectra using the plot_spectra method.

[3]:
fig, ax = stars.plot_spectra(show=True, figsize=(6, 4))
../../_images/emissions_spectra_stars_5_0.png

The spectra returned by get_spectra is the “total” spectra at the root of the emission model.

[4]:
print(spectra)
+----------------------------------------------------------------------------------------------------+
|                                                SED                                                 |
+---------------------------+------------------------------------------------------------------------+
| Attribute                 | Value                                                                  |
+---------------------------+------------------------------------------------------------------------+
| redshift                  | 0                                                                      |
+---------------------------+------------------------------------------------------------------------+
| ndim                      | 1                                                                      |
+---------------------------+------------------------------------------------------------------------+
| nlam                      | 9244                                                                   |
+---------------------------+------------------------------------------------------------------------+
| shape                     | (9244,)                                                                |
+---------------------------+------------------------------------------------------------------------+
| lam (9244,)               | 1.30e-04 Å -> 2.99e+11 Å (Mean: 9.73e+09 Å)                            |
+---------------------------+------------------------------------------------------------------------+
| nu (9244,)                | 1.00e+07 Hz -> 2.31e+22 Hz (Mean: 8.51e+19 Hz)                         |
+---------------------------+------------------------------------------------------------------------+
| lnu (9244,)               | 0.00e+00 erg/(Hz*s) -> 1.65e+34 erg/(Hz*s) (Mean: 4.05e+32 erg/(Hz*s)) |
+---------------------------+------------------------------------------------------------------------+
| bolometric_luminosity     | 4.822013521198901e+46 erg/s                                            |
+---------------------------+------------------------------------------------------------------------+
| energy (9244,)            | 4.14e-08 eV -> 9.56e+07 eV (Mean: 3.52e+05 eV)                         |
+---------------------------+------------------------------------------------------------------------+
| frequency (9244,)         | 1.00e+07 Hz -> 2.31e+22 Hz (Mean: 8.51e+19 Hz)                         |
+---------------------------+------------------------------------------------------------------------+
| llam (9244,)              | 0.00e+00 erg/(s*Å) -> 5.69e+43 erg/(s*Å) (Mean: 1.32e+41 erg/(s*Å))    |
+---------------------------+------------------------------------------------------------------------+
| luminosity (9244,)        | 0.00e+00 erg/s -> 6.92e+46 erg/s (Mean: 1.57e+45 erg/s)                |
+---------------------------+------------------------------------------------------------------------+
| luminosity_lambda (9244,) | 0.00e+00 erg/(s*Å) -> 5.69e+43 erg/(s*Å) (Mean: 1.32e+41 erg/(s*Å))    |
+---------------------------+------------------------------------------------------------------------+
| luminosity_nu (9244,)     | 0.00e+00 erg/(Hz*s) -> 1.65e+34 erg/(Hz*s) (Mean: 4.05e+32 erg/(Hz*s)) |
+---------------------------+------------------------------------------------------------------------+
| wavelength (9244,)        | 1.30e-04 Å -> 2.99e+11 Å (Mean: 9.73e+09 Å)                            |
+---------------------------+------------------------------------------------------------------------+

However, all the spectra are stored within a dictionary under the spectra attribute on the relevant component.

[5]:
print(stars.spectra)
{'nebular_continuum': <synthesizer.emissions.sed.Sed object at 0x7f00c8973f70>, 'full_transmitted': <synthesizer.emissions.sed.Sed object at 0x7f00c8972020>, 'incident': <synthesizer.emissions.sed.Sed object at 0x7f00c8973a90>, 'nebular_line': <synthesizer.emissions.sed.Sed object at 0x7f00c89719f0>, 'transmitted': <synthesizer.emissions.sed.Sed object at 0x7f00c8970640>, 'escaped': <synthesizer.emissions.sed.Sed object at 0x7f00c8973a30>, 'nebular': <synthesizer.emissions.sed.Sed object at 0x7f00c89707f0>, 'reprocessed': <synthesizer.emissions.sed.Sed object at 0x7f00c8973a60>, 'attenuated': <synthesizer.emissions.sed.Sed object at 0x7f00c87ba710>, 'intrinsic': <synthesizer.emissions.sed.Sed object at 0x7f00c8971e40>, 'dust_emission': <synthesizer.emissions.sed.Sed object at 0x7f00c8973850>, 'emergent': <synthesizer.emissions.sed.Sed object at 0x7f00c87ba320>, 'total': <synthesizer.emissions.sed.Sed object at 0x7f00c87ba7d0>}

Particle spectra

In this example we load some test particle data from CAMELS:

[6]:
from synthesizer import TEST_DATA_DIR

# Create stars component object
stars = load_CAMELS_IllustrisTNG(
    TEST_DATA_DIR,
    snap_name="camels_snap.hdf5",
    group_name="camels_subhalo.hdf5",
    physical=True,
)[1].stars

To generate a spectra for each star particle we use the same model, but we need to tell the model to produce a spectrum for each particle. This is done by setting the per_particle flag to True on the model.

[7]:
pacman.set_per_particle(True)

With that done we just call the same get_spectra method on the component, and the particle spectra will be stored in the particle_spectra attribute of the component.

[8]:
spectra = stars.get_spectra(pacman, verbose=True)

Again, the returned spectra is the “total” spectra from the root of the model.

[9]:
print(spectra)
+--------------------------------------------------------------------------------------------------------+
|                                                  SED                                                   |
+-------------------------------+------------------------------------------------------------------------+
| Attribute                     | Value                                                                  |
+-------------------------------+------------------------------------------------------------------------+
| redshift                      | 0                                                                      |
+-------------------------------+------------------------------------------------------------------------+
| ndim                          | 2                                                                      |
+-------------------------------+------------------------------------------------------------------------+
| nlam                          | 9244                                                                   |
+-------------------------------+------------------------------------------------------------------------+
| shape                         | (656, 9244)                                                            |
+-------------------------------+------------------------------------------------------------------------+
| lam (9244,)                   | 1.30e-04 Å -> 2.99e+11 Å (Mean: 9.73e+09 Å)                            |
+-------------------------------+------------------------------------------------------------------------+
| nu (9244,)                    | 1.00e+07 Hz -> 2.31e+22 Hz (Mean: 8.51e+19 Hz)                         |
+-------------------------------+------------------------------------------------------------------------+
| lnu (656, 9244)               | 0.00e+00 erg/(Hz*s) -> 6.63e+27 erg/(Hz*s) (Mean: 1.27e+26 erg/(Hz*s)) |
+-------------------------------+------------------------------------------------------------------------+
| bolometric_luminosity (656,)  | 1.21e+40 erg/s -> 8.52e+40 erg/s (Mean: 3.71e+40 erg/s)                |
+-------------------------------+------------------------------------------------------------------------+
| energy (9244,)                | 4.14e-08 eV -> 9.56e+07 eV (Mean: 3.52e+05 eV)                         |
+-------------------------------+------------------------------------------------------------------------+
| frequency (9244,)             | 1.00e+07 Hz -> 2.31e+22 Hz (Mean: 8.51e+19 Hz)                         |
+-------------------------------+------------------------------------------------------------------------+
| llam (656, 9244)              | 0.00e+00 erg/(s*Å) -> 5.21e+36 erg/(s*Å) (Mean: 9.26e+34 erg/(s*Å))    |
+-------------------------------+------------------------------------------------------------------------+
| luminosity (656, 9244)        | 0.00e+00 erg/s -> 4.41e+40 erg/s (Mean: 1.21e+39 erg/s)                |
+-------------------------------+------------------------------------------------------------------------+
| luminosity_lambda (656, 9244) | 0.00e+00 erg/(s*Å) -> 5.21e+36 erg/(s*Å) (Mean: 9.26e+34 erg/(s*Å))    |
+-------------------------------+------------------------------------------------------------------------+
| luminosity_nu (656, 9244)     | 0.00e+00 erg/(Hz*s) -> 6.63e+27 erg/(Hz*s) (Mean: 1.27e+26 erg/(Hz*s)) |
+-------------------------------+------------------------------------------------------------------------+
| wavelength (9244,)            | 1.30e-04 Å -> 2.99e+11 Å (Mean: 9.73e+09 Å)                            |
+-------------------------------+------------------------------------------------------------------------+

While the spectra produced by get_particle_spectra are stored in a dictionary under the particle_spectra attribute.

[10]:
print(stars.particle_spectra)
{'nebular_continuum': <synthesizer.emissions.sed.Sed object at 0x7f00c8973df0>, 'full_transmitted': <synthesizer.emissions.sed.Sed object at 0x7f00c8970ee0>, 'incident': <synthesizer.emissions.sed.Sed object at 0x7f00c8973d90>, 'nebular_line': <synthesizer.emissions.sed.Sed object at 0x7f006851ce80>, 'transmitted': <synthesizer.emissions.sed.Sed object at 0x7f006851c9a0>, 'escaped': <synthesizer.emissions.sed.Sed object at 0x7f006851ee30>, 'nebular': <synthesizer.emissions.sed.Sed object at 0x7f006851e050>, 'reprocessed': <synthesizer.emissions.sed.Sed object at 0x7f006851e740>, 'attenuated': <synthesizer.emissions.sed.Sed object at 0x7f006851f070>, 'intrinsic': <synthesizer.emissions.sed.Sed object at 0x7f006851df00>, 'dust_emission': <synthesizer.emissions.sed.Sed object at 0x7f006851ea70>, 'emergent': <synthesizer.emissions.sed.Sed object at 0x7f006851f490>, 'total': <synthesizer.emissions.sed.Sed object at 0x7f006851e4d0>}

Integrating spectra

The integrated spectra are automatically produced alongside per particle spectra. However, if we wanted to explictly get the integrated spectra from the particle spectra we just generated (for instance if we had made some modification after generation), we can call the integrate_particle_spectra method. This method will sum the individual spectra, and populate the spectra dictionary (overwriting whats already there!).

Note that we can also integrate individual spectra using the `Sed.sum() method <../../sed/sed.ipynb>`__.

[11]:
print(stars.spectra)
stars.integrate_particle_spectra()
print(stars.spectra)

fig, ax = stars.plot_spectra(show=True, figsize=(6, 4))
{'nebular_continuum': <synthesizer.emissions.sed.Sed object at 0x7f006851cd00>, 'full_transmitted': <synthesizer.emissions.sed.Sed object at 0x7f006851d990>, 'incident': <synthesizer.emissions.sed.Sed object at 0x7f006851ee60>, 'nebular_line': <synthesizer.emissions.sed.Sed object at 0x7f00c8970e50>, 'transmitted': <synthesizer.emissions.sed.Sed object at 0x7f0068809d50>, 'escaped': <synthesizer.emissions.sed.Sed object at 0x7f00cd12c880>, 'nebular': <synthesizer.emissions.sed.Sed object at 0x7f006851d960>, 'reprocessed': <synthesizer.emissions.sed.Sed object at 0x7f006851f250>, 'attenuated': <synthesizer.emissions.sed.Sed object at 0x7f006851f3d0>, 'intrinsic': <synthesizer.emissions.sed.Sed object at 0x7f006851f3a0>, 'dust_emission': <synthesizer.emissions.sed.Sed object at 0x7f006851d810>, 'emergent': <synthesizer.emissions.sed.Sed object at 0x7f006851e650>, 'total': <synthesizer.emissions.sed.Sed object at 0x7f006851f040>}
{'nebular_continuum': <synthesizer.emissions.sed.Sed object at 0x7f0077818e80>, 'full_transmitted': <synthesizer.emissions.sed.Sed object at 0x7f00c89736d0>, 'incident': <synthesizer.emissions.sed.Sed object at 0x7f00c8973a00>, 'nebular_line': <synthesizer.emissions.sed.Sed object at 0x7f00cd12c760>, 'transmitted': <synthesizer.emissions.sed.Sed object at 0x7f00c8973fa0>, 'escaped': <synthesizer.emissions.sed.Sed object at 0x7f0068809d50>, 'nebular': <synthesizer.emissions.sed.Sed object at 0x7f00cd12c880>, 'reprocessed': <synthesizer.emissions.sed.Sed object at 0x7f00c8973520>, 'attenuated': <synthesizer.emissions.sed.Sed object at 0x7f00c8971ed0>, 'intrinsic': <synthesizer.emissions.sed.Sed object at 0x7f00c8971060>, 'dust_emission': <synthesizer.emissions.sed.Sed object at 0x7f00c8970e50>, 'emergent': <synthesizer.emissions.sed.Sed object at 0x7f006851f3d0>, 'total': <synthesizer.emissions.sed.Sed object at 0x7f006851d810>}
../../_images/emissions_spectra_stars_21_1.png

Varying model parameters and reusing existing spectra

If we want vary one or more model parameters (e.g., dust attenuation parameters), we don’t want to regenerate the whole model from scratch. Instead, we can create a new model that reuses an existing spectra on the emitter. To signal this we pass a string to the model instead of another EmissionModel.

For our example of dust attenuation, this means passing a string to the apply_to argument of the AttenuatedEmission model. This string should match one of the keys in the emitter’s spectra dictionary, here we use "reprocessed". When we run this it will extract the relevant spectra from the emitter and apply the attenuation to it without regenerating the original spectra.

[12]:
# Since we now want integrated spectra lets remove the per particle flag
pacman.set_per_particle(False)

spectra = {}
for tau_v in [0.1, 0.5, 1.0]:
    # Create a new model to modify the existing "intrinsic"
    attenuated = AttenuatedEmission(
        label=f"attenuated_tauv_{tau_v}",
        tau_v=tau_v,
        dust_curve=dust_curve,
        emitter="stellar",
        apply_to="reprocessed",
    )

    stars.get_spectra(attenuated)
    spectra[r"$\tau_v " f"= {tau_v}"] = stars.spectra[attenuated.label]

This is also applicable to the combine argument on Combinations and the various dependencies for generators (like intrinsic and attenuated spectra for energy balance dust emission models).

To see the variation above we can pass the dictionary we populated with the varied spectra to the plot_spectra function (where the dictionary keys will be used as labels).

[13]:
from synthesizer.emissions import plot_spectra

plot_spectra(spectra, xlimits=(10**2.5, 10**5.5))
[13]:
(<Figure size 350x500 with 1 Axes>,
 <Axes: xlabel='$\\lambda/[\\mathrm{\\AA}]$', ylabel='$L_{\\nu}/[\\mathrm{\\rm{erg} \\ / \\ \\rm{Hz \\cdot \\rm{s}}}]$'>)
../../_images/emissions_spectra_stars_25_1.png

Printing Used Parameters

During spectra generation, emission models cache the parameters they extract and use from the emitter. These cached parameters can be printed in a nicely formatted table to inspect which values were actually used by each model.

[14]:
# Print the cached parameters used by the models
stars.print_used_parameters()

+----------------------------------------------------------------------------------+
|                           MODEL: _NEBULAR_LINE_NO_FESC                           |
+---------------------------+------------------------------------------------------+
| Attribute                 | Value                                                |
+---------------------------+------------------------------------------------------+
| extract                   | 'linecont'                                           |
+---------------------------+------------------------------------------------------+
| emitter                   | 'stellar'                                            |
+---------------------------+------------------------------------------------------+
| log10ages (656,)          | 9.53e+00 -> 1.01e+01 (Mean: 9.81e+00)                |
+---------------------------+------------------------------------------------------+
| log10metallicities (656,) | -5.00e+00 -> -1.45e+00 (Mean: -2.04e+00)             |
+---------------------------+------------------------------------------------------+
| initial_masses (656,)     | 9.43e+06 Msun -> 3.77e+07 Msun (Mean: 2.36e+07 Msun) |
+---------------------------+------------------------------------------------------+

+----------------------------------------------------------------------------------+
|                             MODEL: NEBULAR_CONTINUUM                             |
+---------------------------+------------------------------------------------------+
| Attribute                 | Value                                                |
+---------------------------+------------------------------------------------------+
| extract                   | 'nebular_continuum'                                  |
+---------------------------+------------------------------------------------------+
| emitter                   | 'stellar'                                            |
+---------------------------+------------------------------------------------------+
| log10ages (656,)          | 9.53e+00 -> 1.01e+01 (Mean: 9.81e+00)                |
+---------------------------+------------------------------------------------------+
| log10metallicities (656,) | -5.00e+00 -> -1.45e+00 (Mean: -2.04e+00)             |
+---------------------------+------------------------------------------------------+
| initial_masses (656,)     | 9.43e+06 Msun -> 3.77e+07 Msun (Mean: 2.36e+07 Msun) |
+---------------------------+------------------------------------------------------+

+----------------------------------------------------------------------------------+
|                             MODEL: FULL_TRANSMITTED                              |
+---------------------------+------------------------------------------------------+
| Attribute                 | Value                                                |
+---------------------------+------------------------------------------------------+
| extract                   | 'transmitted'                                        |
+---------------------------+------------------------------------------------------+
| emitter                   | 'stellar'                                            |
+---------------------------+------------------------------------------------------+
| log10ages (656,)          | 9.53e+00 -> 1.01e+01 (Mean: 9.81e+00)                |
+---------------------------+------------------------------------------------------+
| log10metallicities (656,) | -5.00e+00 -> -1.45e+00 (Mean: -2.04e+00)             |
+---------------------------+------------------------------------------------------+
| initial_masses (656,)     | 9.43e+06 Msun -> 3.77e+07 Msun (Mean: 2.36e+07 Msun) |
+---------------------------+------------------------------------------------------+

+----------------------------------------------------------------------------------+
|                                 MODEL: INCIDENT                                  |
+---------------------------+------------------------------------------------------+
| Attribute                 | Value                                                |
+---------------------------+------------------------------------------------------+
| extract                   | 'incident'                                           |
+---------------------------+------------------------------------------------------+
| emitter                   | 'stellar'                                            |
+---------------------------+------------------------------------------------------+
| log10ages (656,)          | 9.53e+00 -> 1.01e+01 (Mean: 9.81e+00)                |
+---------------------------+------------------------------------------------------+
| log10metallicities (656,) | -5.00e+00 -> -1.45e+00 (Mean: -2.04e+00)             |
+---------------------------+------------------------------------------------------+
| initial_masses (656,)     | 9.43e+06 Msun -> 3.77e+07 Msun (Mean: 2.36e+07 Msun) |
+---------------------------+------------------------------------------------------+

+------------------------------------------------------------------+
|                       MODEL: NEBULAR_LINE                        |
+---------------+--------------------------------------------------+
| Attribute     | Value                                            |
+---------------+--------------------------------------------------+
| fesc_ly_alpha | 1.00                                             |
+---------------+--------------------------------------------------+
| apply_to      | '_nebular_line_no_fesc'                          |
+---------------+--------------------------------------------------+
| transformer   | "EscapedFraction(fesc_attrs=('fesc_ly_alpha',))" |
+---------------+--------------------------------------------------+
| emitter       | 'stellar'                                        |
+---------------+--------------------------------------------------+

+---------------------------------------------------------+
|                   MODEL: TRANSMITTED                    |
+-------------+-------------------------------------------+
| Attribute   | Value                                     |
+-------------+-------------------------------------------+
| fesc        | 0.00e+00                                  |
+-------------+-------------------------------------------+
| apply_to    | 'full_transmitted'                        |
+-------------+-------------------------------------------+
| transformer | "ProcessedFraction(fesc_attrs=('fesc',))" |
+-------------+-------------------------------------------+
| emitter     | 'stellar'                                 |
+-------------+-------------------------------------------+

+-------------------------------------------------------+
|                    MODEL: ESCAPED                     |
+-------------+-----------------------------------------+
| Attribute   | Value                                   |
+-------------+-----------------------------------------+
| fesc        | 0.00e+00                                |
+-------------+-----------------------------------------+
| apply_to    | 'incident'                              |
+-------------+-----------------------------------------+
| transformer | "EscapedFraction(fesc_attrs=('fesc',))" |
+-------------+-----------------------------------------+
| emitter     | 'stellar'                               |
+-------------+-----------------------------------------+

+----------------------------------------------+
|                MODEL: NEBULAR                |
+----------+-----------------------------------+
| Attribute | Value                             |
+----------+-----------------------------------+
| emitter  | 'stellar'                         |
+----------+-----------------------------------+
| combine  | [nebular_line, nebular_continuum] |
+----------+-----------------------------------+

+-----------------------------------+
|        MODEL: REPROCESSED         |
+----------+------------------------+
| Attribute | Value                  |
+----------+------------------------+
| emitter  | 'stellar'              |
+----------+------------------------+
| combine  | [nebular, transmitted] |
+----------+------------------------+

+--------------------------------------+
|          MODEL: ATTENUATED           |
+-------------+------------------------+
| Attribute   | Value                  |
+-------------+------------------------+
| tau_v       | 0.50                   |
+-------------+------------------------+
| apply_to    | 'reprocessed'          |
+-------------+------------------------+
| transformer | 'PowerLaw(slope=-1.0)' |
+-------------+------------------------+
| emitter     | 'stellar'              |
+-------------+------------------------+

+-----------------------------------+
|         MODEL: INTRINSIC          |
+----------+------------------------+
| Attribute | Value                  |
+----------+------------------------+
| emitter  | 'stellar'              |
+----------+------------------------+
| combine  | [reprocessed, escaped] |
+----------+------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                              MODEL: DUST_EMISSION                                                               |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------+
| Attribute   | Value                                                                                                                             |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------+
| emissivity  | 1.20                                                                                                                              |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------+
| generator   | 'Greybody(intrinsic=reprocessed, attenuated=attenuated, temperature=30.0 K, emissivity=1.2, optically_thin=True, lam_0=100.0 μm)' |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------+
| emitter     | 'stellar'                                                                                                                         |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------+
| temperature | 30.0 K                                                                                                                            |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------+
|         MODEL: EMERGENT          |
+----------+-----------------------+
| Attribute | Value                 |
+----------+-----------------------+
| emitter  | 'stellar'             |
+----------+-----------------------+
| combine  | [attenuated, escaped] |
+----------+-----------------------+

+--------------------------------------+
|             MODEL: TOTAL             |
+----------+---------------------------+
| Attribute | Value                     |
+----------+---------------------------+
| emitter  | 'stellar'                 |
+----------+---------------------------+
| combine  | [dust_emission, emergent] |
+----------+---------------------------+

+--------------------------------------+
|      MODEL: ATTENUATED_TAUV_0.1      |
+-------------+------------------------+
| Attribute   | Value                  |
+-------------+------------------------+
| tau_v       | 0.10                   |
+-------------+------------------------+
| apply_to    | 'reprocessed'          |
+-------------+------------------------+
| transformer | 'PowerLaw(slope=-1.0)' |
+-------------+------------------------+
| emitter     | 'stellar'              |
+-------------+------------------------+

+--------------------------------------+
|      MODEL: ATTENUATED_TAUV_0.5      |
+-------------+------------------------+
| Attribute   | Value                  |
+-------------+------------------------+
| tau_v       | 0.50                   |
+-------------+------------------------+
| apply_to    | 'reprocessed'          |
+-------------+------------------------+
| transformer | 'PowerLaw(slope=-1.0)' |
+-------------+------------------------+
| emitter     | 'stellar'              |
+-------------+------------------------+

+--------------------------------------+
|      MODEL: ATTENUATED_TAUV_1.0      |
+-------------+------------------------+
| Attribute   | Value                  |
+-------------+------------------------+
| tau_v       | 1.00                   |
+-------------+------------------------+
| apply_to    | 'reprocessed'          |
+-------------+------------------------+
| transformer | 'PowerLaw(slope=-1.0)' |
+-------------+------------------------+
| emitter     | 'stellar'              |
+-------------+------------------------+