def plot_tardis():
    radial1d_mdl = model_radial_oned.Radial1DModel(config_object, atom_data)
    radial1d_mdl.create_packets()
    out_nu, out_energy, jsestimator, nubarestimator = montecarlo_multizone.montecarlo_radial1d(radial1d_mdl)
    spectrum = synspec.get_lambda_spec(out_nu, out_energy, 500*1e-8, 20000*1e-8, samples=1000)
    ax.plot(np.log10(spectrum.wave/1e4), np.log10(spectrum.flux), label=config_object.plasma_type)
    ax.set_xlim(-1,0)
    ax.set_xlabel(r'$\log10{\lambda} [\log10{\mu m}]$')
    ax.set_ylabel(r'$\log10{Flux}$')
    return out_nu, out_energy, jsestimator, nubarestimator
def plot_tardis():
    radial1d_mdl = model_radial_oned.Radial1DModel(config_object, atom_data)
    radial1d_mdl.create_packets()
    out_nu, out_energy, jsestimator, nubarestimator, line_id_in, line_id_out = montecarlo_multizone.montecarlo_radial1d(
        radial1d_mdl)
    spectrum = synspec.get_lambda_spec(out_nu,
                                       out_energy,
                                       500 * 1e-8,
                                       20000 * 1e-8,
                                       samples=1000)
    return out_nu, out_energy, jsestimator, nubarestimator, line_id_in, line_id_out, radial1d_mdl
def plot_tardis():
    radial1d_mdl = model_radial_oned.Radial1DModel(config_object, atom_data)
    radial1d_mdl.create_packets()
    out_nu, out_energy, jsestimator, nubarestimator = montecarlo_multizone.montecarlo_radial1d(
        radial1d_mdl)
    spectrum = synspec.get_lambda_spec(out_nu,
                                       out_energy,
                                       500 * 1e-8,
                                       20000 * 1e-8,
                                       samples=1000)
    ax.plot(np.log10(spectrum.wave / 1e4),
            np.log10(spectrum.flux),
            label=config_object.plasma_type)
    ax.set_xlim(-1, 0)
    ax.set_xlabel(r'$\log10{\lambda} [\log10{\mu m}]$')
    ax.set_ylabel(r'$\log10{Flux}$')
    return out_nu, out_energy, jsestimator, nubarestimator
fig = plt.figure(1)
fig.clf()
ax = fig.add_subplot(111)

config_object = config_reader.read_config('tardis_config_scatter.ini')

config_object.plasma_type='nebular'
config_object.line_interaction_type='macroatom'
config_object.single_run_packets = int(1e5)

atom_data = atomic.AtomData.from_hdf5(kurucz_h5, use_macro_atom=True, use_zeta_data=True)

out_nu, out_energy, jsestimator, nubarestimator, radial1d_mdl = plot_tardis()

emission_filter = out_nu >= 0
input = synspec.get_lambda_spec(radial1d_mdl.packet_src.packet_nus, radial1d_mdl.packet_src.packet_energies, 500*1e-8, 20000*1e-8, samples=1000)

input_lambda = units.Unit('Hz').to('Angstrom', radial1d_mdl.packet_src.packet_nus, units.spectral())
output_lambda = units.Unit('Hz').to('Angstrom', out_nu, units.spectral())
fig.clf()
ax = fig.add_subplot(111)
ax.plot(input_lambda[emission_filter], output_lambda[emission_filter], 'b,')
ax.set_xlim(2000, 10000)
ax.set_ylim(2000, 10000)
ax.set_xlabel('Input Packet Wavelength')
ax.set_ylabel('Output Packet Wavelength')
ax.set_title('Input vs Output (Nebular Plasma & Macroatom)')

fig.savefig('tardis_nebular_macro_in_vs_out.pdf')
fig.savefig('tardis_nebular_macro_in_vs_out.png')
def plot_tardis():
    radial1d_mdl = model_radial_oned.Radial1DModel(config_object, atom_data)
    radial1d_mdl.create_packets()
    out_nu, out_energy, jsestimator, nubarestimator, line_id_in, line_id_out = montecarlo_multizone.montecarlo_radial1d(radial1d_mdl)
    spectrum = synspec.get_lambda_spec(out_nu, out_energy, 500*1e-8, 20000*1e-8, samples=1000)
    return out_nu, out_energy, jsestimator, nubarestimator, line_id_in, line_id_out, radial1d_mdl
config_object.plasma_type = 'nebular'
config_object.line_interaction_type = 'macroatom'
config_object.single_run_packets = int(1e5)

atom_data = atomic.AtomData.from_hdf5(kurucz_h5,
                                      use_macro_atom=True,
                                      use_zeta_data=True)

out_nu, out_energy, jsestimator, nubarestimator, line_id_in, line_id_out, radial1d_mdl = plot_tardis(
)

emission_filter = out_nu >= 0
input = synspec.get_lambda_spec(radial1d_mdl.packet_src.packet_nus,
                                radial1d_mdl.packet_src.packet_energies,
                                500 * 1e-8,
                                20000 * 1e-8,
                                samples=1000)

line_id_in = np.array(line_id_in, dtype=int)
line_id_out = np.array(line_id_out, dtype=int)

line_in_atom = radial1d_mdl.atom_data.lines['atomic_number'].values[line_id_in]
line_out_atom = radial1d_mdl.atom_data.lines['atomic_number'].values[
    line_id_out]
assert all(line_in_atom == line_out_atom)
print "checked atoms"

line_in_ion = radial1d_mdl.atom_data.lines['ion_number'].values[line_id_in]
line_out_ion = radial1d_mdl.atom_data.lines['ion_number'].values[line_id_out]
assert all(line_in_ion == line_out_ion)
config_object = config_reader.read_config('tardis_config_scatter.ini')

config_object.plasma_type = 'nebular'
config_object.single_run_packets = int(1e5)

atom_data = atomic.AtomData.from_hdf5(kurucz_h5,
                                      use_macro_atom=True,
                                      use_zeta_data=True)

out_nu, out_energy, jsestimator, nubarestimator, radial1d_mdl = plot_tardis()

emission_filter = out_nu >= 0
input = synspec.get_lambda_spec(radial1d_mdl.packet_src.packet_nus,
                                radial1d_mdl.packet_src.packet_energies,
                                500 * 1e-8,
                                20000 * 1e-8,
                                samples=1000)
reabsorbed = synspec.get_lambda_spec(-out_nu,
                                     -out_energy,
                                     500 * 1e-8,
                                     20000 * 1e-8,
                                     samples=1000)
ax.plot(np.log10(reabsorbed.wave / 1e4),
        np.log10(reabsorbed.flux),
        label='reabsorbed')
ax.plot(np.log10(input.wave / 1e4),
        np.log10(input.flux),
        label='input BB(10000K)')

ax.legend(loc=0)
fig = plt.figure(1)
fig.clf()
ax = fig.add_subplot(111)

config_object = config_reader.read_config('tardis_config_scatter.ini')

config_object.plasma_type='nebular'
config_object.single_run_packets = int(1e5)

atom_data = atomic.AtomData.from_hdf5(kurucz_h5, use_macro_atom=True, use_zeta_data=True)

out_nu, out_energy, jsestimator, nubarestimator, radial1d_mdl = plot_tardis()

emission_filter = out_nu >= 0
input = synspec.get_lambda_spec(radial1d_mdl.packet_src.packet_nus, radial1d_mdl.packet_src.packet_energies, 500*1e-8, 20000*1e-8, samples=1000)
reabsorbed = synspec.get_lambda_spec(-out_nu, -out_energy, 500*1e-8, 20000*1e-8, samples=1000)
ax.plot(np.log10(reabsorbed.wave/1e4), np.log10(reabsorbed.flux), label='reabsorbed')
ax.plot(np.log10(input.wave/1e4), np.log10(input.flux), label='input BB(10000K)')

ax.legend(loc=0)

fig.savefig('tardis_nebular_scatter_emitted.pdf')
fig.savefig('tardis_nebular_scatter_emitted.png')


input_lambda = units.Unit('Hz').to('Angstrom', radial1d_mdl.packet_src.packet_nus, units.spectral())
output_lambda = units.Unit('Hz').to('Angstrom', out_nu, units.spectral())
fig.clf()
ax = fig.add_subplot(111)
ax.plot(input_lambda[emission_filter], output_lambda[emission_filter], 'b,')