dfm / dfm/python-fsps

Odd behavior with optical emission lines

Abierto
#199 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
76
Forks
45
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I noticed a strange behavior where after a logzsol value of 0.2 all points in a standard BPT diagram ([NII]/Hα, [OIII]/Hβ) are stuck to a certain value. I am using default stellar libraries: "mist" and "miles" to get the BPT emission-line ratios ([OIII]/Hβ and [NII]/Hα) for an SSP (sfh=0) observed at tage=1Myr (0.001Gyr) with a constant ionization parameter of logU=-2.5 but for different metallicities (logzsol=[-0.6,0.6]), also I set zcontinuous=1. The models are such that logzsol = gas_logz. I attach the resulted BPT diagram bellow. In an attempt to understand what is happening I have calculated the SEDs in two cases; 1) sfh=0 (SSP), logz=0, dust1=0, dust2=0 for different ages; 2) sfh=0 (SSP), dust1=0, dust2=0 for different metallicities (both with default stellar libraries). The UV produced by the two SSPs (I think that) look normal (attached bellow). Finally I am giving you the result of the [OIII]/Hβ as a function of metallicity (from the calculations of BPT).

Is this expected behavior?

Here is my code for the BPT calculations (the two SED tests are calculated from an other script)

import os
import numpy as np
import fsps
from tqdm import tqdm
import matplotlib.pyplot as plt
import time
import json
import pandas as pd
import warnings
import random as random
warnings.filterwarnings('ignore')

sp = fsps.StellarPopulation(zcontinuous=1)


sp.params['imf_type'] = 2
sp.params['sfh'] = 0 
sp.params['sf_start'] = 0.0 
sp.params['sf_trunc'] = 0.0
sp.params['tburst'] = 0.0
sp.params['fburst'] = 0.0
sp.params['tau'] = 10.0
sp.params['const'] = 0.0


sp.params['add_neb_emission'] = True
sp.params['nebemlineinspec'] = True
sp.params['add_neb_continuum'] = True

ilib, slib, dlib = sp.libraries
print(ilib, slib, dlib)

sample_size = 1000
logz_arr = np.linspace(-0.6,0.6,sample_size)

logu_arr = -2.5*np.ones(sample_size) 

comb_arr = np.stack([logz_arr, logu_arr], axis=1)

uid = time.strftime("%Y%m%d_%H%M%S")

file_name1 = 'sfg_syn_sed' #  uid
file_name2 = 'sfg_syn_emlines'

tage = 0.001

w, _ = sp.get_spectrum(tage=tage, peraa=True)

emwv = sp.emline_wavelengths
with open(file_name2 + '-' + uid + '.txt', 'w') as file:
    np.savetxt(file, emwv, newline=' ')
    file.write('\n')
file.close()

dict3 = vars(sp.params)['_params']

keys = []
for key, value in dict3.items():
    k = key
    keys.append(k)

df_params = pd.DataFrame(columns=keys)
 
for i in tqdm(range(len(comb_arr))):
    sp.params['logzsol'] = comb_arr[i][0]
    sp.params['gas_logz'] = comb_arr[i][0]
    sp.params['gas_logu'] = comb_arr[i][1]

    _, spec = sp.get_spectrum(tage=tage, peraa=True)

    # Write emission lines to a file
    with open(file_name2 + '-' + uid + '.txt', 'a') as file:
        np.savetxt(file, sp.emline_luminosity, newline=' ')
        file.write('\n')
    file.close()

    dict3 = vars(sp.params)['_params']

    values = []
    for key, value in dict3.items():
        v = value
        values.append(v)
        
    df1 = pd.DataFrame([values], columns=keys)
    df_params = pd.concat([df_params, df1], axis=0)


df_params.to_csv('params_' + uid + '.csv', index=False)

Figure_1_z
Figure_1
download (8)
oiii_hb_logz

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza ejecutando el script de Python proporcionado con la configuración indicada de SSP, stellar-library, metallicity e ionization-parameter y, a continuación, inspecciona los valores de las líneas de emisión generados alrededor de logzsol=0.2. Compara el comportamiento resultante de [OIII]/Hβ y [NII]/Hα con las gráficas adjuntas; se considera terminado cuando se haya establecido si la meseta es esperable o se haya identificado un problema reproducible que informar o corregir.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
data
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
28/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.