コード例 #1
0
def fake_obs(simnum, snr=200, suffix=None, plot=False, mode="iam"):
    snr = 200

    params1 = [5300, 4.5, 0.0]
    params2 = [2500, 4.5, 0.0]
    gamma = 5
    rv = -3
    normalization_limits = [2100, 2180]

    mod1_spec = load_starfish_spectrum(params1,
                                       limits=normalization_limits,
                                       hdr=True,
                                       normalize=False,
                                       area_scale=True,
                                       flux_rescale=True)

    mod2_spec = load_starfish_spectrum(params2,
                                       limits=normalization_limits,
                                       hdr=True,
                                       normalize=False,
                                       area_scale=True,
                                       flux_rescale=True)

    if broadcast:
        broadcast_result = inherent_alpha_model(mod1_spec.xaxis,
                                                mod1_spec.flux,
                                                mod2_spec.flux,
                                                rvs=rv,
                                                gammas=gamma)

        broadcast_values = broadcast_result(obs_spec.xaxis)
        result_spectrum = Spectrum(flux=broadcast_values,
                                   xaxis=mod1_spec.xaxis)
    else:
        # Manually redo the join
        mod2_spec.doppler_shift(rv)
        mod_combine = mod1_spec.copy()
        mod_combine += mod2_spec
        mod_combine.doppler_shift(gamma)
        mod_combine.normalize(method="exponential")
        mod_combine.interpolate(obs_spec.xaxis)
        result_spectrum = mod_combine
        # result_spectrum = Spectrum(flux=broadcast_values, xaxis=obs_spec.xaxis)

    result_spectrum.add_noise(snr)

    # Save as
    # Detector limits
    dect_limits = [(2112, 2123), (2127, 2137), (2141, 2151), (2155, 2165)]

    for ii, dect in enumerate(dect_limits):
        spec = result_spectrum.copy()
        spec.wav_select(*dect)
        spec.resample(1024)

        name = "HDsim-{0}_{1}_snr_{2}".format(sim_num, ii, snr)
コード例 #2
0
def save_fake_observation(spectrum: Spectrum,
                          star: str,
                          sim_num: int,
                          params1: str,
                          params2: Optional[str] = None,
                          gamma: Optional[int] = None,
                          rv: Optional[int] = None,
                          noise: None = None,
                          replace: bool = False,
                          noplots: bool = False) -> None:
    # Detector limits
    detector_limits = [(2112, 2123), (2127, 2137), (2141, 2151), (2155, 2165)]
    npix = 1024

    header = fits.Header.fromkeys({})
    for ii, detector in enumerate(detector_limits):
        spec = spectrum.copy()
        spec.wav_select(*detector)
        spec.interpolate1d_to(np.linspace(spec.xaxis[0], spec.xaxis[-1], npix))

        if not noplots:
            plt.plot(spec.xaxis, spec.flux)
            plt.title("Fake spectrum {0} {1} detector {2}".format(
                star, sim_num, ii + 1))
            plt.show()
        name = obs_name_template().format(star, sim_num, ii + 1)
        # name = "{0}-{1}-mixavg-tellcorr_{2}.fits".format(star, sim_num, ii + 1)
        name = os.path.join(simulators.paths["spectra"], name)
        # spec.save...
        hdrkeys = [
            "OBJECT", "Id_sim", "num", "chip", "snr", "c_gamma", "cor_rv",
            "host", "compan"
        ]
        hdrvals = [
            star, "Fake simulation data", sim_num, ii + 1, noise, gamma, rv,
            params1, params2
        ]
        if os.path.exists(name) and not replace:
            print(name, "Already exists")
        else:
            if os.path.exists(name):
                print("Replacing {0}".format(name))
                os.remove(name)
            export_fits(name, spec.xaxis, spec.flux, header, hdrkeys, hdrvals)
            print("Saved fits to {0}".format(name))
コード例 #3
0
next_spec.plot(linestyle=":", label="NEXTGEN")
#plt.plot(w_dusty_fits, f_dusty_fits/max(f_dusty_fits), label="Dusty fits")

plt.title("HD30501 host - 5200K")
plt.xlabel("Wavelength(nm)")
plt.ylabel("Flux")
plt.xlim([1012, 1013])
plt.legend()
plt.show()

# In[ ]:

# Adjust resolution to R=100000
R = 100000
from convolve_spectrum import convolve_spectrum
old_spec = aces_spec.copy()

next_spec = convolve_spectrum(
    next_spec,
    chip_limits=[next_spec.xaxis[0], next_spec.xaxis[-1]],
    R=R,
    plot=False)
dusty_spec = convolve_spectrum(
    dusty_spec,
    chip_limits=[dusty_spec.xaxis[0], dusty_spec.xaxis[-1]],
    R=R,
    plot=False)
settl_spec = convolve_spectrum(
    settl_spec,
    chip_limits=[settl_spec.xaxis[0], settl_spec.xaxis[-1]],
    R=R,