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 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.º 3
0
def main():
    """
    :return:
    """
    # parameters
    niter = 2

    # 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
    ol = load_observations('prekor.lst')[0]

    ## 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()

    print itf

    ## 5) write rvs
    itf.save('test.sav')
    itf.write_rvs('test.rv.dat')

    # 6) try to load it
    itf.load('test.sav')

    # 7) and save it again
    itf.save('test2.sav')
Exemplo n.º 4
0
"""
Test computation of chi2
"""
import pyterpol

rl = pyterpol.RegionList()
rl.add_region(wmin=6320, wmax=6380)
rl.add_region(wmin=6500, wmax=6600)

sl = pyterpol.StarList()
sl.add_component(component='primary',
                 teff=18000.,
                 logg=4.5,
                 rv=10.,
                 z=1.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()
Exemplo n.º 5
0
# 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,
                 lr=1.0,
                 z=1.0)
sl.add_component(component='secondary',
                 teff=20000.,
                 logg=4.5,
                 rv=0.0,
                 vrot=0.0,
                 lr=1.0,
                 z=1.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')