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')
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
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')
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
""" 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,
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')