Exemplo n.º 1
0
def setup_interface_more_obs():

    # have a look at one observation
    ol = pyterpol.ObservedList()
    obs = read_obs_from_list('spec.lis')
    ol.add_observations(obs)

    # define a starlist
    sl = pyterpol.StarList()
    sl.add_component(component='primary',
                     teff=16000.,
                     logg=3.9,
                     vrot=95.,
                     z=1.2,
                     lr=1.0)

    # define regions
    rl = pyterpol.RegionList()
    rl.add_region(wmin=6340, wmax=6410, groups=dict(lr=0))
    rl.add_region(wmin=6540, wmax=6595, groups=dict(lr=0))
    rl.add_region(wmin=6670, wmax=6685, groups=dict(lr=0))

    # create interfaces
    itf = pyterpol.Interface(sl=sl, rl=rl, ol=ol, debug=False)

    # set fit order = 2 to do it fast
    itf.set_grid_properties(order=2, step=0.05)
    itf.setup()

    # save the session
    itf.save('initial.itf')
Exemplo n.º 2
0
def load_observations(f):
    """
    :param f: file
    :return:
    """

    # load the observations
    flist = np.loadtxt(f, usecols=[0], unpack=True, dtype=str)
    hjd = np.loadtxt(f, usecols=[1], unpack=True).tolist()
    hjd[0] = None

    # create list of observations
    obs = []
    for i, sf in enumerate(flist):

        # wrap the spectrum into observed spectrum class
        # o = pyterpol.ObservedSpectrum(filename=sf, group=dict(rv=0))
        # o = pyterpol.ObservedSpectrum(filename=sf, group=dict(rv=0), hjd=hjd[i])
        o = pyterpol.ObservedSpectrum(filename=sf,
                                      group=dict(rv=i),
                                      hjd=hjd[i])

        # estimate uncertainty from continuum
        o.get_sigma_from_continuum(6620., 6630.)
        obs.append(o)

    # create ObservedList
    ol = pyterpol.ObservedList()
    ol.add_observations(obs)

    return ol, flist, hjd
Exemplo n.º 3
0
def setup_interface_single_obs():

    # have a look at one observation
    ol = pyterpol.ObservedList()
    obs = pyterpol.ObservedSpectrum(filename='v7c00001.asc',
                                    group=dict(rv=0),
                                    error=0.01)

    # two methods how to estimate the error
    print obs.get_sigma_from_continuum(cmin=6665, cmax=6670)
    print obs.get_sigma_from_fft()
    ol.add_observations([obs])

    # define a starlist
    sl = pyterpol.StarList()
    sl.add_component(component='primary',
                     teff=17000.,
                     logg=4.0,
                     vrot=180.,
                     z=1.0,
                     lr=1.0)

    # define regions
    rl = pyterpol.RegionList()
    rl.add_region(wmin=6340, wmax=6410, groups=dict(lr=0))
    rl.add_region(wmin=6520, wmax=6610, groups=dict(lr=0))
    rl.add_region(wmin=6665, wmax=6690, groups=dict(lr=0))

    # create interfaces
    itf = pyterpol.Interface(sl=sl, rl=rl, ol=ol)

    # set fit order = 2 to do it fast
    itf.set_grid_properties(order=2)
    itf.setup()

    # review the result - one rv group, one lr group
    print itf

    # plot comparison
    itf.plot_all_comparisons(figname='teff17000')

    # try different temperatures - this way we can easilyt review
    # several comparisons
    itf.set_parameter(parname='teff', value=25000.)
    itf.populate_comparisons()
    itf.plot_all_comparisons(figname='teff25000')

    itf.set_parameter(parname='teff', value=13000.)
    itf.populate_comparisons()
    itf.plot_all_comparisons(figname='teff13000')
    itf.save('initial.itf')
Exemplo n.º 4
0
                 vrot=50.0,
                 lr=0.3)
sl.add_component(component='secondary',
                 teff=25000.,
                 logg=4.5,
                 rv=10.,
                 z=1.0,
                 vrot=150.0,
                 lr=0.7)

obs = [
    dict(filename='a', error=0.001, group=dict(rv=1)),
    dict(filename='b', error=0.001, group=dict(rv=2)),
    dict(filename='c', error=0.001, group=dict(rv=3))
]
ol = pyterpol.ObservedList()
ol.add_observations(obs)

itf = pyterpol.Interface(sl=sl, ol=ol, rl=rl)
itf.setup()

# this reduces the list of observed spectra
reduced = itf.get_comparisons(rv=1)

# setup fitted parameterss
itf.set_parameter(parname='rv', group='all', fitted=True)
itf.set_parameter(parname='rv', component='primary', group=3, value=-100.)
itf.set_parameter(parname='rv', component='secondary', group=3, value=100.)
print itf

# this computes the models and chi-square
Exemplo n.º 5
0
"""
Testing of RV group
"""

import pyterpol
import matplotlib.pyplot as plt

debug = False
# 1) define some observations
ol = pyterpol.ObservedList(debug=debug)
# obs = [
#        dict(filename='o.asc', error=0.01, group=dict(rv=10)),
#        dict(filename='o2.asc', error=0.01, group=dict(rv=10))
#        ]
obs = [dict(filename='o.asc', error=0.01), dict(filename='o2.asc', error=0.01)]

ol.add_observations(obs)
# print ol

# 2) define fitted regions
rl = pyterpol.RegionList(debug=debug)
rl.add_region(wmin=4300, wmax=4380)
rl.add_region(wmin=4460, wmax=4500, groups={'teff': 1})

# 3) define a star
sl = pyterpol.StarList(debug=debug)
sl.add_component(component='primary',
                 teff=20000.,
                 logg=4.5,
                 rv=0.0,
                 vrot=0.0,
Exemplo n.º 6
0
def main():
    """
    :return:
    """

    ## 1) Generate region
    rl = pyterpol.RegionList()
    rl.add_region(wmin=6337., wmax=6410.0, groups=dict(lr=0))
    rl.add_region(wmin=6530., wmax=6600.0, groups=dict(lr=0))
    rl.add_region(wmin=6660., wmax=6690.0, groups=dict(lr=0))

    ## 2) Load observed data
    # first wrap them into observed spectrum class
    o1 = pyterpol.ObservedSpectrum(filename='blb00001.clean.asc',
                                   instrumental_width=0.46,
                                   group=dict(rv=0))
    o2 = pyterpol.ObservedSpectrum(filename='blb00002.clean.asc',
                                   instrumental_width=0.46,
                                   group=dict(rv=1))
    o1.get_sigma_from_continuum(6630., 6640.)
    o2.get_sigma_from_continuum(6630., 6640.)

    # create list of observed spectra
    ol = pyterpol.ObservedList()
    ol.add_observations([o1, o2])

    # alternatively
    ol = pyterpol.ObservedList()
    obs = [
        dict(filename='blb00001.clean.asc',
             instrumental_width=0.46,
             group=dict(rv=0),
             error=0.01),
        dict(filename='blb00002.clean.asc',
             instrumental_width=0.46,
             group=dict(rv=1),
             error=0.01)
    ]
    ol.add_observations(obs)

    ## 3) Generate components
    sl = pyterpol.StarList()
    sl.add_component('primary',
                     teff=16000.,
                     logg=4.285,
                     lr=1.0,
                     vrot=90.,
                     z=1.0)

    ## 4) construct the interface
    itf = pyterpol.Interface(sl=sl, rl=rl, ol=ol)
    itf.set_grid_properties(order=4, step=0.05)
    itf.setup()

    ## 5) Set parameters for fitting
    itf.set_parameter(parname='teff', vmin=14000., vmax=17000., fitted=True)
    itf.set_parameter(parname='logg', vmin=3.5, vmax=4.5, fitted=True)
    itf.set_parameter(parname='rv', vmin=-30., vmax=0., fitted=True)
    itf.set_parameter(parname='vrot', vmin=70., vmax=110., fitted=True)
    itf.set_parameter(parname='lr', vmin=0.99, vmax=1.01, fitted=True)

    ## 6) Choose fitting environment
    itf.choose_fitter('nlopt_nelder_mead', ftol=1e-4)

    ## 7) Run the fitting
    itf.run_fit()

    # write down rvs
    itf.write_rvs('hd.rvs')

    ## 8) plot and save results
    itf.plot_all_comparisons(figname='final')
    itf.save('test.final.sav')