diff --git a/setup.py b/setup.py index 27fc672..255a0b9 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ long_description=open("README.md").read(), package_data={"": ["LICENSE", "AUTHORS.rst"]}, include_package_data=False, - install_requires=["numpy", "scipy", "pandas", "matplotlib", "astropy", "emcee", "corner"], + install_requires=["numpy", "scipy", "pandas", "matplotlib", "astropy", "emcee", "corner", "openpyxl"], classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", diff --git a/smart/forward_model/InterpolateModel.py b/smart/forward_model/InterpolateModel.py index 721502c..3aae45c 100644 --- a/smart/forward_model/InterpolateModel.py +++ b/smart/forward_model/InterpolateModel.py @@ -9,7 +9,7 @@ ############################################################################################################## -def InterpModel(teff, logg=4, metal=0, alpha=0, modelset='phoenix-aces-agss-cond-2011', instrument='nirspec', order='O33'): +def InterpModel(teff, logg=4, metal=0, alpha=0, kzz=0, modelset='phoenix-aces-agss-cond-2011', instrument='nirspec', order='O33'): #print('Parameters', teff, logg, modelset, instrument, order) FULL_PATH = os.path.realpath(__file__) BASE, NAME = os.path.split(FULL_PATH) @@ -26,7 +26,13 @@ def InterpModel(teff, logg=4, metal=0, alpha=0, modelset='phoenix-aces-agss-cond Gridfile = BASE + '/../libraries/btsettl08/btsettl08_gridparams.csv' # Read the grid file - T1 = Table.read(Gridfile) + #print(modelset) + #print(smart.ModelSets[modelset.lower()]) + #print(path) + #print(Gridfile) + T1 = Table.read(Gridfile, comment='#') + #print(T1) + #sys.exit() ################################################################################### @@ -35,16 +41,17 @@ def GetModel(temp, wave=False, **kwargs): logg = kwargs.get('logg', 4.5) metal = kwargs.get('metal', 0) alpha = kwargs.get('alpha', 0) + kzz = kwargs.get('kzz', 0) gridfile = kwargs.get('gridfile', None) instrument = kwargs.get('instrument', 'nirspec') order = kwargs.get('order', None) - #print(temp, logg, metal, alpha) + #print('GETMODEL:', temp, logg, metal, alpha, kzz, kzz!=0) if gridfile is None: raise ValueError('Model gridfile must be provided.') if modelset.lower() == 'btsettl08' and instrument.lower() == 'nirspec': filename = 'btsettl08_t'+ str(int(temp.data[0])) + '_g' + '{0:.2f}'.format(float(logg)) + '_z-' + '{0:.2f}'.format(float(metal)) + '_en' + '{0:.2f}'.format(float(alpha)) + '_NIRSPEC-O' + str(order) + '-RAW.txt' - elif modelset.lower() == 'sonora': + elif 'sonora' in modelset.lower(): if instrument.lower() == 'nirspec': filename = '%s'%smart.ModelSets[modelset.lower()] + '_t{0:03d}'.format(int(temp.data[0])) + '_g{0:.2f}'.format(float(logg)) + '_FeH0.00_Y0.28_CO1.00' + '_%s-O%s.fits'%(instrument.upper(), order.upper()) else: @@ -53,18 +60,28 @@ def GetModel(temp, wave=False, **kwargs): cm = kwargs.get('cm', 0) nm = kwargs.get('nm', 0) filename = '%s'%smart.ModelSets[modelset.lower()] + '_t{0:03d}'.format(int(temp.data[0])) + '_g{0:.2f}'.format(float(logg)) + '_z{0:.2f}'.format(float(metal)) + '_en{0:.2f}'.format(float(alpha)) + '_cm{0:.2f}'.format(float(cm)) + '_nm{0:.2f}'.format(float(nm)) + '_%s-%s.fits'%(instrument.upper(), order.upper()) + elif kzz != 0: + filename = '%s'%smart.ModelSets[modelset.lower()] + '_t{0:03d}'.format(int(temp.data[0])) + '_g{0:.2f}'.format(float(logg)) + '_z{0:.2f}'.format(float(metal)) + '_en{0:.2f}'.format(float(alpha)) + '_kzz{0:.2f}'.format(float(kzz)) + '_%s-%s.fits'%(instrument.upper(), order.upper()) + else: - if instrument.lower()in ['nirspec', 'hires']: + if instrument.lower() in ['nirspec', 'hires']: filename = '%s'%smart.ModelSets[modelset.lower()] + '_t{0:03d}'.format(int(temp.data[0])) + '_g{0:.2f}'.format(float(logg)) + '_z{0:.2f}'.format(float(metal)) + '_en{0:.2f}'.format(float(alpha)) + '_%s-O%s.fits'%(instrument.upper(), order.upper()) else: - filename = '%s'%smart.ModelSets[modelset.lower()] + '_t{0:03d}'.format(int(temp.data[0])) + '_g{0:.2f}'.format(float(logg)) + '_z{0:.2f}'.format(float(metal)) + '_en{0:.2f}'.format(float(alpha)) + '_%s-%s.fits'%(instrument.upper(), order.upper()) - + #print('Here') + #print(modelset.lower(), temp, logg, metal, alpha) + if modelset == 'hd206893-qkbbhires': + kzz = 1e8 + filename = '%s'%smart.ModelSets[modelset.lower()] + '_t{0:03d}'.format(int(temp.data[0])) + '_g{0:.2f}'.format(float(logg)) + '_z{0:.2f}'.format(float(metal)) + '_en{0:.2f}'.format(float(alpha)) + '_kzz{0:.2f}'.format(float(kzz)) + '_%s-%s.fits'%(instrument.upper(), order.upper()) + else: + filename = '%s'%smart.ModelSets[modelset.lower()] + '_t{0:03d}'.format(int(temp.data[0])) + '_g{0:.2f}'.format(float(logg)) + '_z{0:.2f}'.format(float(metal)) + '_en{0:.2f}'.format(float(alpha)) + '_%s-%s.fits'%(instrument.upper(), order.upper()) + #print(filename) # Read in the model FITS file if modelset.lower() == 'btsettl08': Tab = Table.read(path+filename, format='ascii.tab', names=['wave', 'flux']) else: Tab = Table.read(path+filename) + #print(Tab) # Return the model (wave of flux) if wave: return Tab['wave'] @@ -74,7 +91,7 @@ def GetModel(temp, wave=False, **kwargs): ################################################################################### # Check if the model already exists (grid point) - if modelset.lower() == 'sonora': + if 'sonora' in modelset.lower(): if (teff, logg) in zip(T1['teff'], T1['logg']): metal, ys = 0, 0.28 index0 = np.where( (T1['teff'] == teff) & (T1['logg'] == logg) & (T1['FeH'] == metal) & (T1['Y'] == ys) ) @@ -83,6 +100,15 @@ def GetModel(temp, wave=False, **kwargs): flux2 = GetModel(T1['teff'][index0], logg=T1['logg'][index0], metal=T1['FeH'][index0], alpha=T1['Y'][index0], instrument=instrument, order=order, gridfile=T1) waves2 = GetModel(T1['teff'][index0], logg=T1['logg'][index0], metal=T1['FeH'][index0], alpha=T1['Y'][index0], instrument=instrument, order=order, gridfile=T1, wave=True) return waves2, flux2 + elif kzz != 0: + #print(teff, logg, metal, alpha, kzz) + if (teff, logg, metal, alpha, kzz) in zip(T1['teff'], T1['logg'], T1['M_H'], T1['en'], T1['kzz']): + index0 = np.where( (T1['teff'] == teff) & (T1['logg'] == logg) & (T1['M_H'] == metal) & (T1['en'] == alpha) & (T1['kzz'] == kzz) ) + #flux2 = GetModel(T1['teff'][index0], T1['logg'][index0], T1['M_H'][index0], modelset=modelset ) + #waves2 = GetModel(T1['teff'][index0], T1['logg'][index0], T1['M_H'][index0], modelset=modelset, wave=True) + flux2 = GetModel(T1['teff'][index0], logg=T1['logg'][index0], metal=T1['M_H'][index0], alpha=T1['en'][index0], kzz=T1['kzz'][index0], instrument=instrument, order=order, gridfile=T1) + waves2 = GetModel(T1['teff'][index0], logg=T1['logg'][index0], metal=T1['M_H'][index0], alpha=T1['en'][index0], kzz=T1['kzz'][index0], instrument=instrument, order=order, gridfile=T1, wave=True) + return waves2, flux2 else: if (teff, logg, metal, alpha) in zip(T1['teff'], T1['logg'], T1['M_H'], T1['en']): index0 = np.where( (T1['teff'] == teff) & (T1['logg'] == logg) & (T1['M_H'] == metal) & (T1['en'] == alpha) ) @@ -94,11 +120,11 @@ def GetModel(temp, wave=False, **kwargs): try: - if modelset.lower() == 'sonora': - metal, alpha = 0, 0.28 + if 'sonora' in modelset.lower(): + metal, alpha, co = 0, 0.28, 1 # Get the nearest models to the gridpoint (teff) - x0 = np.max(T1['teff'][np.where(T1['teff'] <= teff)]) - x1 = np.min(T1['teff'][np.where(T1['teff'] >= teff)]) + x0 = np.max(T1['teff'][np.where( (T1['teff'] <= teff) & (T1['CO'] == co) )]) + x1 = np.min(T1['teff'][np.where( (T1['teff'] >= teff) & (T1['CO'] == co) )]) #print(x0, x1) # Get the nearest grid point to logg @@ -121,8 +147,39 @@ def GetModel(temp, wave=False, **kwargs): t1 = np.min(list(set(T1['Y'][np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['FeH'] == z0) & (T1['Y'] >= alpha) )]) & set(T1['Y'][np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['FeH'] == z1) & (T1['Y'] >= alpha) )]))) #print(t0, t1) + + elif kzz != 0: + + #print('KZZ Models') + # Get the nearest models to the gridpoint (teff) + #print(teff, logg, metal, alpha, kzz) + x0 = np.max(T1['teff'][np.where( (T1['teff'] <= teff) )]) + x1 = np.min(T1['teff'][np.where( (T1['teff'] >= teff) )]) + #print(x0, x1) + + # Get the nearest grid point to logg + y0 = np.max(list(set(T1['logg'][np.where( (T1['teff'] == x0) & (T1['logg'] <= logg) )]) & + set(T1['logg'][np.where( (T1['teff'] == x1) & (T1['logg'] <= logg) )]))) + y1 = np.min(list(set(T1['logg'][np.where( (T1['teff'] == x0) & (T1['logg'] >= logg) )]) & + set(T1['logg'][np.where( (T1['teff'] == x1) & (T1['logg'] >= logg) )]))) + #print(y0, y1) + + # Get the nearest grid point to [M/H] + z0 = np.max(list(set(T1['M_H'][np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['M_H'] <= metal) )]) & + set(T1['M_H'][np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] <= metal) )]))) + z1 = np.min(list(set(T1['M_H'][np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['M_H'] >= metal) )]) & + set(T1['M_H'][np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] >= metal) )]))) + #print(z0, z1) + + # Get the nearest grid point to Kzz + t0 = np.max(list(set(T1['kzz'][np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['M_H'] == z0) & (T1['kzz'] <= kzz) )]) & + set(T1['kzz'][np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] == z1) & (T1['kzz'] <= kzz) )]))) + t1 = np.min(list(set(T1['kzz'][np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['M_H'] == z0) & (T1['kzz'] >= kzz) )]) & + set(T1['kzz'][np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] == z1) & (T1['kzz'] >= kzz) )]))) + #print(t0, t1) else: + #print('HERE'*10) # Get the nearest models to the gridpoint (teff) x0 = np.max(T1['teff'][np.where(T1['teff'] <= teff)]) x1 = np.min(T1['teff'][np.where(T1['teff'] >= teff)]) @@ -162,60 +219,119 @@ def GetModel(temp, wave=False, **kwargs): raise ValueError('Model Parameters Teff: %0.3f, logg: %0.3f, [M/H]: %0.3f, Alpha: %0.3f are outside the model grid.'%(teff, logg, metal, alpha)) - if modelset.lower() == 'sonora': + if 'sonora' in modelset.lower(): + # Get the 16 points - ind0000 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['FeH'] == z0) & (T1['Y'] == t0) ) # 0000 - ind1000 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['FeH'] == z0) & (T1['Y'] == t0) ) # 1000 - ind0100 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['FeH'] == z0) & (T1['Y'] == t0) ) # 0100 - ind0010 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['FeH'] == z1) & (T1['Y'] == t0) ) # 0010 - ind0001 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['FeH'] == z0) & (T1['Y'] == t1) ) # 0001 - ind1001 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['FeH'] == z0) & (T1['Y'] == t1) ) # 1001 - ind0101 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['FeH'] == z0) & (T1['Y'] == t1) ) # 0101 - ind0011 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['FeH'] == z1) & (T1['Y'] == t1) ) # 0011 - ind1011 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['FeH'] == z1) & (T1['Y'] == t1) ) # 1011 - ind0111 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['FeH'] == z1) & (T1['Y'] == t1) ) # 0111 - ind1111 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['FeH'] == z1) & (T1['Y'] == t1) ) # 1111 - ind0110 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['FeH'] == z1) & (T1['Y'] == t0) ) # 0110 - ind1010 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['FeH'] == z1) & (T1['Y'] == t0) ) # 1010 - ind1100 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['FeH'] == z0) & (T1['Y'] == t0) ) # 1100 - ind1101 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['FeH'] == z0) & (T1['Y'] == t1) ) # 1101 - ind1110 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['FeH'] == z1) & (T1['Y'] == t0) ) # 1110 - Points = [ [np.log10(T1['teff'][ind0000]), T1['logg'][ind0000], T1['FeH'][ind0000], T1['Y'][ind0000], + ind0000 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['FeH'] == z0) & (T1['Y'] == t0) & (T1['CO'] == co) )[0] # 0000 + ind1000 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['FeH'] == z0) & (T1['Y'] == t0) & (T1['CO'] == co) )[0] # 1000 + ind0100 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['FeH'] == z0) & (T1['Y'] == t0) & (T1['CO'] == co) )[0] # 0100 + ind0010 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['FeH'] == z1) & (T1['Y'] == t0) & (T1['CO'] == co) )[0] # 0010 + ind0001 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['FeH'] == z0) & (T1['Y'] == t1) & (T1['CO'] == co) )[0] # 0001 + ind1001 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['FeH'] == z0) & (T1['Y'] == t1) & (T1['CO'] == co) )[0] # 1001 + ind0101 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['FeH'] == z0) & (T1['Y'] == t1) & (T1['CO'] == co) )[0] # 0101 + ind0011 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['FeH'] == z1) & (T1['Y'] == t1) & (T1['CO'] == co) )[0] # 0011 + ind1011 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['FeH'] == z1) & (T1['Y'] == t1) & (T1['CO'] == co) )[0] # 1011 + ind0111 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['FeH'] == z1) & (T1['Y'] == t1) & (T1['CO'] == co) )[0] # 0111 + ind1111 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['FeH'] == z1) & (T1['Y'] == t1) & (T1['CO'] == co) )[0] # 1111 + ind0110 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['FeH'] == z1) & (T1['Y'] == t0) & (T1['CO'] == co) )[0] # 0110 + ind1010 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['FeH'] == z1) & (T1['Y'] == t0) & (T1['CO'] == co) )[0] # 1010 + ind1100 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['FeH'] == z0) & (T1['Y'] == t0) & (T1['CO'] == co) )[0] # 1100 + ind1101 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['FeH'] == z0) & (T1['Y'] == t1) & (T1['CO'] == co) )[0] # 1101 + ind1110 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['FeH'] == z1) & (T1['Y'] == t0) & (T1['CO'] == co) )[0] # 1110 + Points = [ [np.log10(T1['teff'][ind0000].data[0]), T1['logg'][ind0000].data[0], T1['FeH'][ind0000].data[0], T1['Y'][ind0000].data[0], np.log10(GetModel(T1['teff'][ind0000], logg=T1['logg'][ind0000], metal=T1['FeH'][ind0000], alpha=T1['Y'][ind0000], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1000]), T1['logg'][ind1000], T1['FeH'][ind1000], T1['Y'][ind1000], + [np.log10(T1['teff'][ind1000].data[0]), T1['logg'][ind1000].data[0], T1['FeH'][ind1000].data[0], T1['Y'][ind1000].data[0], np.log10(GetModel(T1['teff'][ind1000], logg=T1['logg'][ind1000], metal=T1['FeH'][ind1000], alpha=T1['Y'][ind1000], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0100]), T1['logg'][ind0100], T1['FeH'][ind0100], T1['Y'][ind0100], + [np.log10(T1['teff'][ind0100].data[0]), T1['logg'][ind0100].data[0], T1['FeH'][ind0100].data[0], T1['Y'][ind0100].data[0], np.log10(GetModel(T1['teff'][ind0100], logg=T1['logg'][ind0100], metal=T1['FeH'][ind0100], alpha=T1['Y'][ind0100], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0010]), T1['logg'][ind0010], T1['FeH'][ind0010], T1['Y'][ind0010], + [np.log10(T1['teff'][ind0010].data[0]), T1['logg'][ind0010].data[0], T1['FeH'][ind0010].data[0], T1['Y'][ind0010].data[0], np.log10(GetModel(T1['teff'][ind0010], logg=T1['logg'][ind0010], metal=T1['FeH'][ind0010], alpha=T1['Y'][ind0010], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0001]), T1['logg'][ind0001], T1['FeH'][ind0001], T1['Y'][ind0001], + [np.log10(T1['teff'][ind0001].data[0]), T1['logg'][ind0001].data[0], T1['FeH'][ind0001].data[0], T1['Y'][ind0001].data[0], np.log10(GetModel(T1['teff'][ind0001], logg=T1['logg'][ind0001], metal=T1['FeH'][ind0001], alpha=T1['Y'][ind0001], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1001]), T1['logg'][ind1001], T1['FeH'][ind1001], T1['Y'][ind1001], + [np.log10(T1['teff'][ind1001].data[0]), T1['logg'][ind1001].data[0], T1['FeH'][ind1001].data[0], T1['Y'][ind1001].data[0], np.log10(GetModel(T1['teff'][ind1001], logg=T1['logg'][ind1001], metal=T1['FeH'][ind1001], alpha=T1['Y'][ind1001], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0101]), T1['logg'][ind0101], T1['FeH'][ind0101], T1['Y'][ind0101], + [np.log10(T1['teff'][ind0101].data[0]), T1['logg'][ind0101].data[0], T1['FeH'][ind0101].data[0], T1['Y'][ind0101].data[0], np.log10(GetModel(T1['teff'][ind0101], logg=T1['logg'][ind0101], metal=T1['FeH'][ind0101], alpha=T1['Y'][ind0101], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0011]), T1['logg'][ind0011], T1['FeH'][ind0011], T1['Y'][ind0011], + [np.log10(T1['teff'][ind0011].data[0]), T1['logg'][ind0011].data[0], T1['FeH'][ind0011].data[0], T1['Y'][ind0011].data[0], np.log10(GetModel(T1['teff'][ind0011], logg=T1['logg'][ind0011], metal=T1['FeH'][ind0011], alpha=T1['Y'][ind0011], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1011]), T1['logg'][ind1011], T1['FeH'][ind1011], T1['Y'][ind1011], + [np.log10(T1['teff'][ind1011].data[0]), T1['logg'][ind1011].data[0], T1['FeH'][ind1011].data[0], T1['Y'][ind1011].data[0], np.log10(GetModel(T1['teff'][ind1011], logg=T1['logg'][ind1011], metal=T1['FeH'][ind1011], alpha=T1['Y'][ind1011], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0111]), T1['logg'][ind0111], T1['FeH'][ind0111], T1['Y'][ind0111], + [np.log10(T1['teff'][ind0111].data[0]), T1['logg'][ind0111].data[0], T1['FeH'][ind0111].data[0], T1['Y'][ind0111].data[0], np.log10(GetModel(T1['teff'][ind0111], logg=T1['logg'][ind0111], metal=T1['FeH'][ind0111], alpha=T1['Y'][ind0111], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1111]), T1['logg'][ind1111], T1['FeH'][ind1111], T1['Y'][ind1111], + [np.log10(T1['teff'][ind1111].data[0]), T1['logg'][ind1111].data[0], T1['FeH'][ind1111].data[0], T1['Y'][ind1111].data[0], np.log10(GetModel(T1['teff'][ind1111], logg=T1['logg'][ind1111], metal=T1['FeH'][ind1111], alpha=T1['Y'][ind1111], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0110]), T1['logg'][ind0110], T1['FeH'][ind0110], T1['Y'][ind0110], + [np.log10(T1['teff'][ind0110].data[0]), T1['logg'][ind0110].data[0], T1['FeH'][ind0110].data[0], T1['Y'][ind0110].data[0], np.log10(GetModel(T1['teff'][ind0110], logg=T1['logg'][ind0110], metal=T1['FeH'][ind0110], alpha=T1['Y'][ind0110], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1010]), T1['logg'][ind1010], T1['FeH'][ind1010], T1['Y'][ind1010], + [np.log10(T1['teff'][ind1010].data[0]), T1['logg'][ind1010].data[0], T1['FeH'][ind1010].data[0], T1['Y'][ind1010].data[0], np.log10(GetModel(T1['teff'][ind1010], logg=T1['logg'][ind1010], metal=T1['FeH'][ind1010], alpha=T1['Y'][ind1010], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1100]), T1['logg'][ind1100], T1['FeH'][ind1100], T1['Y'][ind1100], + [np.log10(T1['teff'][ind1100].data[0]), T1['logg'][ind1100].data[0], T1['FeH'][ind1100].data[0], T1['Y'][ind1100].data[0], np.log10(GetModel(T1['teff'][ind1100], logg=T1['logg'][ind1100], metal=T1['FeH'][ind1100], alpha=T1['Y'][ind1100], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1101]), T1['logg'][ind1101], T1['FeH'][ind1101], T1['Y'][ind1101], + [np.log10(T1['teff'][ind1101].data[0]), T1['logg'][ind1101].data[0], T1['FeH'][ind1101].data[0], T1['Y'][ind1101].data[0], np.log10(GetModel(T1['teff'][ind1101], logg=T1['logg'][ind1101], metal=T1['FeH'][ind1101], alpha=T1['Y'][ind1101], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1110]), T1['logg'][ind1110], T1['FeH'][ind1110], T1['Y'][ind1110], + [np.log10(T1['teff'][ind1110].data[0]), T1['logg'][ind1110].data[0], T1['FeH'][ind1110].data[0], T1['Y'][ind1110].data[0], np.log10(GetModel(T1['teff'][ind1110], logg=T1['logg'][ind1110], metal=T1['FeH'][ind1110], alpha=T1['Y'][ind1110], instrument=instrument, order=order, gridfile=T1))], ] #print(Points) waves2 = GetModel(T1['teff'][ind1111], logg=T1['logg'][ind1111], metal=T1['FeH'][ind1111], alpha=T1['Y'][ind1111], instrument=instrument, order=order, gridfile=T1, wave=True) + + elif kzz != 0: + + # Get the 16 points + ind0000 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['M_H'] == z0) & (T1['kzz'] == t0) )[0] # 0000 + ind1000 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['M_H'] == z0) & (T1['kzz'] == t0) )[0] # 1000 + ind0100 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['M_H'] == z0) & (T1['kzz'] == t0) )[0] # 0100 + ind0010 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['M_H'] == z1) & (T1['kzz'] == t0) )[0] # 0010 + ind0001 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['M_H'] == z0) & (T1['kzz'] == t1) )[0] # 0001 + ind1001 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['M_H'] == z0) & (T1['kzz'] == t1) )[0] # 1001 + ind0101 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['M_H'] == z0) & (T1['kzz'] == t1) )[0] # 0101 + ind0011 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['M_H'] == z1) & (T1['kzz'] == t1) )[0] # 0011 + ind1011 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['M_H'] == z1) & (T1['kzz'] == t1) )[0] # 1011 + ind0111 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['M_H'] == z1) & (T1['kzz'] == t1) )[0] # 0111 + ind1111 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] == z1) & (T1['kzz'] == t1) )[0] # 1111 + ind0110 = np.where( (T1['teff'] == x0) & (T1['logg'] == y1) & (T1['M_H'] == z1) & (T1['kzz'] == t0) )[0] # 0110 + ind1010 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['M_H'] == z1) & (T1['kzz'] == t0) )[0] # 1010 + ind1100 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] == z0) & (T1['kzz'] == t0) )[0] # 1100 + ind1101 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] == z0) & (T1['kzz'] == t1) )[0] # 1101 + ind1110 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] == z1) & (T1['kzz'] == t0) )[0] # 1110 + + Points = [ [np.log10(T1['teff'][ind0000].data[0]), T1['logg'][ind0000].data[0], T1['M_H'][ind0000].data[0], np.log10(T1['kzz'][ind0000].data[0]), + np.log10(GetModel(T1['teff'][ind0000], logg=T1['logg'][ind0000], metal=T1['M_H'][ind0000], kzz=T1['kzz'][ind0000], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind1000].data[0]), T1['logg'][ind1000].data[0], T1['M_H'][ind1000].data[0], np.log10(T1['kzz'][ind1000].data[0]), + np.log10(GetModel(T1['teff'][ind1000], logg=T1['logg'][ind1000], metal=T1['M_H'][ind1000], kzz=T1['kzz'][ind1000], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind0100].data[0]), T1['logg'][ind0100].data[0], T1['M_H'][ind0100].data[0], np.log10(T1['kzz'][ind0100].data[0]), + np.log10(GetModel(T1['teff'][ind0100], logg=T1['logg'][ind0100], metal=T1['M_H'][ind0100], kzz=T1['kzz'][ind0100], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind0010].data[0]), T1['logg'][ind0010].data[0], T1['M_H'][ind0010].data[0], np.log10(T1['kzz'][ind0010].data[0]), + np.log10(GetModel(T1['teff'][ind0010], logg=T1['logg'][ind0010], metal=T1['M_H'][ind0010], kzz=T1['kzz'][ind0010], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind0001].data[0]), T1['logg'][ind0001].data[0], T1['M_H'][ind0001].data[0], np.log10(T1['kzz'][ind0001].data[0]), + np.log10(GetModel(T1['teff'][ind0001], logg=T1['logg'][ind0001], metal=T1['M_H'][ind0001], kzz=T1['kzz'][ind0001], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind1001].data[0]), T1['logg'][ind1001].data[0], T1['M_H'][ind1001].data[0], np.log10(T1['kzz'][ind1001].data[0]), + np.log10(GetModel(T1['teff'][ind1001], logg=T1['logg'][ind1001], metal=T1['M_H'][ind1001], kzz=T1['kzz'][ind1001], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind0101].data[0]), T1['logg'][ind0101].data[0], T1['M_H'][ind0101].data[0], np.log10(T1['kzz'][ind0101].data[0]), + np.log10(GetModel(T1['teff'][ind0101], logg=T1['logg'][ind0101], metal=T1['M_H'][ind0101], kzz=T1['kzz'][ind0101], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind0011].data[0]), T1['logg'][ind0011].data[0], T1['M_H'][ind0011].data[0], np.log10(T1['kzz'][ind0011].data[0]), + np.log10(GetModel(T1['teff'][ind0011], logg=T1['logg'][ind0011], metal=T1['M_H'][ind0011], kzz=T1['kzz'][ind0011], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind1011].data[0]), T1['logg'][ind1011].data[0], T1['M_H'][ind1011].data[0], np.log10(T1['kzz'][ind1011].data[0]), + np.log10(GetModel(T1['teff'][ind1011], logg=T1['logg'][ind1011], metal=T1['M_H'][ind1011], kzz=T1['kzz'][ind1011], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind0111].data[0]), T1['logg'][ind0111].data[0], T1['M_H'][ind0111].data[0], np.log10(T1['kzz'][ind0111].data[0]), + np.log10(GetModel(T1['teff'][ind0111], logg=T1['logg'][ind0111], metal=T1['M_H'][ind0111], kzz=T1['kzz'][ind0111], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind1111].data[0]), T1['logg'][ind1111].data[0], T1['M_H'][ind1111].data[0], np.log10(T1['kzz'][ind1111].data[0]), + np.log10(GetModel(T1['teff'][ind1111], logg=T1['logg'][ind1111], metal=T1['M_H'][ind1111], kzz=T1['kzz'][ind1111], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind0110].data[0]), T1['logg'][ind0110].data[0], T1['M_H'][ind0110].data[0], np.log10(T1['kzz'][ind0110].data[0]), + np.log10(GetModel(T1['teff'][ind0110], logg=T1['logg'][ind0110], metal=T1['M_H'][ind0110], kzz=T1['kzz'][ind0110], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind1010].data[0]), T1['logg'][ind1010].data[0], T1['M_H'][ind1010].data[0], np.log10(T1['kzz'][ind1010].data[0]), + np.log10(GetModel(T1['teff'][ind1010], logg=T1['logg'][ind1010], metal=T1['M_H'][ind1010], kzz=T1['kzz'][ind1010], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind1100].data[0]), T1['logg'][ind1100].data[0], T1['M_H'][ind1100].data[0], np.log10(T1['kzz'][ind1100].data[0]), + np.log10(GetModel(T1['teff'][ind1100], logg=T1['logg'][ind1100], metal=T1['M_H'][ind1100], kzz=T1['kzz'][ind1100], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind1101].data[0]), T1['logg'][ind1101].data[0], T1['M_H'][ind1101].data[0], np.log10(T1['kzz'][ind1101].data[0]), + np.log10(GetModel(T1['teff'][ind1101], logg=T1['logg'][ind1101], metal=T1['M_H'][ind1101], kzz=T1['kzz'][ind1101], instrument=instrument, order=order, gridfile=T1))], + [np.log10(T1['teff'][ind1110].data[0]), T1['logg'][ind1110].data[0], T1['M_H'][ind1110].data[0], np.log10(T1['kzz'][ind1110].data[0]), + np.log10(GetModel(T1['teff'][ind1110], logg=T1['logg'][ind1110], metal=T1['M_H'][ind1110], kzz=T1['kzz'][ind1110], instrument=instrument, order=order, gridfile=T1))], + ] + #print(Points) + waves2 = GetModel(T1['teff'][ind1111], logg=T1['logg'][ind1111], metal=T1['M_H'][ind1111], kzz=T1['kzz'][ind1111], instrument=instrument, order=order, gridfile=T1, wave=True) + else: + # Get the 16 points ind0000 = np.where( (T1['teff'] == x0) & (T1['logg'] == y0) & (T1['M_H'] == z0) & (T1['en'] == t0) ) # 0000 ind1000 = np.where( (T1['teff'] == x1) & (T1['logg'] == y0) & (T1['M_H'] == z0) & (T1['en'] == t0) ) # 1000 @@ -233,42 +349,53 @@ def GetModel(temp, wave=False, **kwargs): ind1100 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] == z0) & (T1['en'] == t0) ) # 1100 ind1101 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] == z0) & (T1['en'] == t1) ) # 1101 ind1110 = np.where( (T1['teff'] == x1) & (T1['logg'] == y1) & (T1['M_H'] == z1) & (T1['en'] == t0) ) # 1110 - Points = [ [np.log10(T1['teff'][ind0000]), T1['logg'][ind0000], T1['M_H'][ind0000], T1['en'][ind0000], + Points = [ [np.log10(T1['teff'][ind0000].data[0]), T1['logg'][ind0000].data[0], T1['M_H'][ind0000].data[0], T1['en'][ind0000].data[0], np.log10(GetModel(T1['teff'][ind0000], logg=T1['logg'][ind0000], metal=T1['M_H'][ind0000], alpha=T1['en'][ind0000], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1000]), T1['logg'][ind1000], T1['M_H'][ind1000], T1['en'][ind1000], + [np.log10(T1['teff'][ind1000].data[0]), T1['logg'][ind1000].data[0], T1['M_H'][ind1000].data[0], T1['en'][ind1000].data[0], np.log10(GetModel(T1['teff'][ind1000], logg=T1['logg'][ind1000], metal=T1['M_H'][ind1000], alpha=T1['en'][ind1000], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0100]), T1['logg'][ind0100], T1['M_H'][ind0100], T1['en'][ind0100], + [np.log10(T1['teff'][ind0100].data[0]), T1['logg'][ind0100].data[0], T1['M_H'][ind0100].data[0], T1['en'][ind0100].data[0], np.log10(GetModel(T1['teff'][ind0100], logg=T1['logg'][ind0100], metal=T1['M_H'][ind0100], alpha=T1['en'][ind0100], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0010]), T1['logg'][ind0010], T1['M_H'][ind0010], T1['en'][ind0010], + [np.log10(T1['teff'][ind0010].data[0]), T1['logg'][ind0010].data[0], T1['M_H'][ind0010].data[0], T1['en'][ind0010].data[0], np.log10(GetModel(T1['teff'][ind0010], logg=T1['logg'][ind0010], metal=T1['M_H'][ind0010], alpha=T1['en'][ind0010], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0001]), T1['logg'][ind0001], T1['M_H'][ind0001], T1['en'][ind0001], + [np.log10(T1['teff'][ind0001].data[0]), T1['logg'][ind0001].data[0], T1['M_H'][ind0001].data[0], T1['en'][ind0001].data[0], np.log10(GetModel(T1['teff'][ind0001], logg=T1['logg'][ind0001], metal=T1['M_H'][ind0001], alpha=T1['en'][ind0001], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1001]), T1['logg'][ind1001], T1['M_H'][ind1001], T1['en'][ind1001], + [np.log10(T1['teff'][ind1001].data[0]), T1['logg'][ind1001].data[0], T1['M_H'][ind1001].data[0], T1['en'][ind1001].data[0], np.log10(GetModel(T1['teff'][ind1001], logg=T1['logg'][ind1001], metal=T1['M_H'][ind1001], alpha=T1['en'][ind1001], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0101]), T1['logg'][ind0101], T1['M_H'][ind0101], T1['en'][ind0101], + [np.log10(T1['teff'][ind0101].data[0]), T1['logg'][ind0101].data[0], T1['M_H'][ind0101].data[0], T1['en'][ind0101].data[0], np.log10(GetModel(T1['teff'][ind0101], logg=T1['logg'][ind0101], metal=T1['M_H'][ind0101], alpha=T1['en'][ind0101], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0011]), T1['logg'][ind0011], T1['M_H'][ind0011], T1['en'][ind0011], + [np.log10(T1['teff'][ind0011].data[0]), T1['logg'][ind0011].data[0], T1['M_H'][ind0011].data[0], T1['en'][ind0011].data[0], np.log10(GetModel(T1['teff'][ind0011], logg=T1['logg'][ind0011], metal=T1['M_H'][ind0011], alpha=T1['en'][ind0011], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1011]), T1['logg'][ind1011], T1['M_H'][ind1011], T1['en'][ind1011], + [np.log10(T1['teff'][ind1011].data[0]), T1['logg'][ind1011].data[0], T1['M_H'][ind1011].data[0], T1['en'][ind1011].data[0], np.log10(GetModel(T1['teff'][ind1011], logg=T1['logg'][ind1011], metal=T1['M_H'][ind1011], alpha=T1['en'][ind1011], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0111]), T1['logg'][ind0111], T1['M_H'][ind0111], T1['en'][ind0111], + [np.log10(T1['teff'][ind0111].data[0]), T1['logg'][ind0111].data[0], T1['M_H'][ind0111].data[0], T1['en'][ind0111].data[0], np.log10(GetModel(T1['teff'][ind0111], logg=T1['logg'][ind0111], metal=T1['M_H'][ind0111], alpha=T1['en'][ind0111], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1111]), T1['logg'][ind1111], T1['M_H'][ind1111], T1['en'][ind1111], + [np.log10(T1['teff'][ind1111].data[0]), T1['logg'][ind1111].data[0], T1['M_H'][ind1111].data[0], T1['en'][ind1111].data[0], np.log10(GetModel(T1['teff'][ind1111], logg=T1['logg'][ind1111], metal=T1['M_H'][ind1111], alpha=T1['en'][ind1111], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind0110]), T1['logg'][ind0110], T1['M_H'][ind0110], T1['en'][ind0110], + [np.log10(T1['teff'][ind0110].data[0]), T1['logg'][ind0110].data[0], T1['M_H'][ind0110].data[0], T1['en'][ind0110].data[0], np.log10(GetModel(T1['teff'][ind0110], logg=T1['logg'][ind0110], metal=T1['M_H'][ind0110], alpha=T1['en'][ind0110], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1010]), T1['logg'][ind1010], T1['M_H'][ind1010], T1['en'][ind1010], + [np.log10(T1['teff'][ind1010].data[0]), T1['logg'][ind1010].data[0], T1['M_H'][ind1010].data[0], T1['en'][ind1010].data[0], np.log10(GetModel(T1['teff'][ind1010], logg=T1['logg'][ind1010], metal=T1['M_H'][ind1010], alpha=T1['en'][ind1010], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1100]), T1['logg'][ind1100], T1['M_H'][ind1100], T1['en'][ind1100], + [np.log10(T1['teff'][ind1100].data[0]), T1['logg'][ind1100].data[0], T1['M_H'][ind1100].data[0], T1['en'][ind1100].data[0], np.log10(GetModel(T1['teff'][ind1100], logg=T1['logg'][ind1100], metal=T1['M_H'][ind1100], alpha=T1['en'][ind1100], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1101]), T1['logg'][ind1101], T1['M_H'][ind1101], T1['en'][ind1101], + [np.log10(T1['teff'][ind1101].data[0]), T1['logg'][ind1101].data[0], T1['M_H'][ind1101].data[0], T1['en'][ind1101].data[0], np.log10(GetModel(T1['teff'][ind1101], logg=T1['logg'][ind1101], metal=T1['M_H'][ind1101], alpha=T1['en'][ind1101], instrument=instrument, order=order, gridfile=T1))], - [np.log10(T1['teff'][ind1110]), T1['logg'][ind1110], T1['M_H'][ind1110], T1['en'][ind1110], + [np.log10(T1['teff'][ind1110].data[0]), T1['logg'][ind1110].data[0], T1['M_H'][ind1110].data[0], T1['en'][ind1110].data[0], np.log10(GetModel(T1['teff'][ind1110], logg=T1['logg'][ind1110], metal=T1['M_H'][ind1110], alpha=T1['en'][ind1110], instrument=instrument, order=order, gridfile=T1))], ] #print(Points) waves2 = GetModel(T1['teff'][ind1111], logg=T1['logg'][ind1111], metal=T1['M_H'][ind1111], alpha=T1['en'][ind1111], instrument=instrument, order=order, gridfile=T1, wave=True) - return waves2, smart.utils.interpolations.quadlinear_interpolation(np.log10(teff), logg, metal, alpha, Points) + #print(Points) + #print(np.log10(T1['teff'][ind0000]), T1['logg'][ind0000]) + #print(T1['M_H'][ind0000], T1['en'][ind0000]) + #print(np.log10(GetModel(T1['teff'][ind0000], logg=T1['logg'][ind0000], metal=T1['M_H'][ind0000], alpha=T1['en'][ind0000], instrument=instrument, order=order, gridfile=T1))) + #sys.exit() + + #print('waves:', waves2) + #print('fluxes:', smart.utils.interpolations.quadlinear_interpolation(np.log10(teff), logg, metal, alpha, Points)) + if kzz != 0: + return waves2, smart.utils.interpolations.quadlinear_interpolation(np.log10(teff), logg, metal, np.log10(kzz), Points) + else: + return waves2, smart.utils.interpolations.quadlinear_interpolation(np.log10(teff), logg, metal, alpha, Points) ################################################################################################################################################################################################ diff --git a/smart/forward_model/classModel.py b/smart/forward_model/classModel.py index 880b005..586e9e6 100644 --- a/smart/forward_model/classModel.py +++ b/smart/forward_model/classModel.py @@ -80,7 +80,7 @@ def __init__(self, **kwargs): self.order = kwargs.get('order') self.instrument = kwargs.get('instrument','nirspec') - if (self.order != None) and (self.instrument in ['nirspec', 'hires', 'igrins']): + if (self.order != None) and (self.instrument.lower() in ['nirspec', 'hires', 'igrins']): self.teff = kwargs.get('teff', 2500) self.logg = kwargs.get('logg', 5.00) self.metal = kwargs.get('metal', 0.00) @@ -93,14 +93,14 @@ def __init__(self, **kwargs): # wave, flux = smart.forward_model.InterpolateModel.InterpModel(Teff=self.teff, Logg=self.logg, Metal=self.metal, # modelset=self.modelset, order=self.order, instrument=self.instrument) - if self.modelset == 'btsettl08': + if self.modelset.lower() == 'btsettl08': self.wave = wave * 10000 #convert to Angstrom self.flux = flux / 10000 #convert from erg/s/cm^2/micron to erg/s/cm^2/Angstrom else: self.wave = wave self.flux = flux - elif self.instrument == 'apogee': + elif self.instrument.lower() == 'apogee': self.teff = kwargs.get('teff', 2500) self.logg = kwargs.get('logg', 5.00) self.metal = kwargs.get('metal', 0.00) @@ -113,7 +113,7 @@ def __init__(self, **kwargs): wave, flux = smart.forward_model.InterpolateModel.InterpModel(self.teff, self.logg, self.metal, self.en, modelset=self.modelset, order=self.order, instrument=self.instrument) - if self.modelset == 'btsettl08': + if self.modelset.lower() == 'btsettl08': self.wave = wave * 10000 #convert to Angstrom self.flux = flux / 10000 #convert from erg/s/cm^2/micron to erg/s/cm^2/Angstrom @@ -121,7 +121,7 @@ def __init__(self, **kwargs): self.wave = wave # Angstrom self.flux = flux # erg/s/cm^2/Angstrom - elif self.order == None and self.instrument in ['lowres1', 'lowres5', 'lowres10', 'lowres100']: + elif self.order == None and self.instrument.lower() in ['lowres1', 'lowres5', 'lowres10', 'lowres100']: self.teff = kwargs.get('teff', 2500) self.logg = kwargs.get('logg', 5.00) @@ -136,13 +136,15 @@ def __init__(self, **kwargs): else: try: + #print('yes') self.teff = kwargs.get('teff', 2500) self.logg = kwargs.get('logg', 5.00) self.metal = kwargs.get('metal', 0.00) self.en = kwargs.get('en', 0.00) + self.kzz = kwargs.get('kzz', 0.00) self.modelset = kwargs.get('modelset', 'btsettl08') - wave, flux = smart.forward_model.InterpolateModel.InterpModel(self.teff, self.logg, self.metal, self.en, + wave, flux = smart.forward_model.InterpolateModel.InterpModel(self.teff, self.logg, self.metal, self.en, kzz=self.kzz, modelset=self.modelset, order=self.order, instrument=self.instrument) self.wave = wave # Angstrom self.flux = flux # erg/s/cm^2/Angstrom diff --git a/smart/forward_model/classSpectrum.py b/smart/forward_model/classSpectrum.py index 5059098..0a39625 100644 --- a/smart/forward_model/classSpectrum.py +++ b/smart/forward_model/classSpectrum.py @@ -50,7 +50,7 @@ class Spectrum(): """ def __init__(self, **kwargs): self.instrument = kwargs.get('instrument','nirspec') - if self.instrument == 'nirspec': + if self.instrument.lower() == 'nirspec': self.name = kwargs.get('name') self.order = kwargs.get('order') self.path = kwargs.get('path') @@ -85,7 +85,7 @@ def __init__(self, **kwargs): self.oriFlux = hdulist[1].data self.oriNoise = hdulist[2].data - elif self.instrument == 'apogee': + elif self.instrument.lower() == 'apogee': self.name = kwargs.get('name') self.path = kwargs.get('path') self.datatype = kwargs.get('datatype','aspcap') @@ -95,7 +95,7 @@ def __init__(self, **kwargs): hdulist = fits.open(self.path) - if self.datatype == 'aspcap': + if self.datatype.lower() == 'aspcap': crval1 = hdulist[1].header['CRVAL1'] cdelt1 = hdulist[1].header['CDELT1'] naxis1 = hdulist[1].header['NAXIS1'] @@ -107,7 +107,7 @@ def __init__(self, **kwargs): self.noise = np.array(hdulist[2].data) - elif self.datatype == 'ap1d': + elif self.datatype.lower() == 'ap1d': self.header4 = hdulist[4].header self.header5 = hdulist[5].header # use aspcap data as wavelength calibrators @@ -119,7 +119,7 @@ def __init__(self, **kwargs): self.oriFlux = np.array(hdulist[1].data) self.oriNoise = np.array(hdulist[2].data) - elif self.datatype == 'apvisit': + elif self.datatype.lower() == 'apvisit': self.header1 = hdulist[1].header self.header2 = hdulist[2].header self.header3 = hdulist[3].header @@ -136,7 +136,7 @@ def __init__(self, **kwargs): #import bitmask # chip a - if self.chip == 'all' or self.chip == 'a': + if self.chip.lower() == 'all' or self.chip.lower() == 'a': mask_0 = [] for i in range(len(hdulist[3].data[0])): bitmask = smart.bits_set(hdulist[3].data[0][i]) @@ -146,7 +146,7 @@ def __init__(self, **kwargs): mask_0.append(i) # chip b - if self.chip == 'all' or self.chip == 'b': + if self.chip.lower() == 'all' or self.chip.lower() == 'b': mask_1 = [] for i in range(len(hdulist[3].data[1])): bitmask = smart.bits_set(hdulist[3].data[1][i]) @@ -156,7 +156,7 @@ def __init__(self, **kwargs): mask_1.append(i) # chip c - if self.chip == 'all' or self.chip == 'c': + if self.chip.lower() == 'all' or self.chip.lower() == 'c': mask_2 = [] for i in range(len(hdulist[3].data[2])): bitmask = smart.bits_set(hdulist[3].data[2][i]) @@ -166,7 +166,7 @@ def __init__(self, **kwargs): mask_2.append(i) - if self.chip == 'all': + if self.chip.lower() == 'all': self.wave = np.array(list(np.delete(hdulist[4].data[0], mask_0))+list(np.delete(hdulist[4].data[1], mask_1))+list(np.delete(hdulist[4].data[2], mask_2))) self.flux = np.array(list(np.delete(hdulist[1].data[0], mask_0))+list(np.delete(hdulist[1].data[1], mask_1))+list(np.delete(hdulist[1].data[2], mask_2))) self.noise = np.array(list(np.delete(hdulist[2].data[0], mask_0))+list(np.delete(hdulist[2].data[1], mask_1))+list(np.delete(hdulist[2].data[2], mask_2))) @@ -180,7 +180,7 @@ def __init__(self, **kwargs): self.oriFlux = np.array(list(hdulist[1].data[0])+list(hdulist[1].data[1])+list(hdulist[1].data[2])) self.oriNoise = np.array(list(hdulist[2].data[0])+list(hdulist[2].data[1])+list(hdulist[2].data[2])) - elif self.chip == 'a': + elif self.chip.lower() == 'a': self.wave = np.array(list(np.delete(hdulist[4].data[0], mask_0))) self.flux = np.array(list(np.delete(hdulist[1].data[0], mask_0))) self.noise = np.array(list(np.delete(hdulist[2].data[0], mask_0))) @@ -194,7 +194,7 @@ def __init__(self, **kwargs): self.oriFlux = np.array(list(hdulist[1].data[0])) self.oriNoise = np.array(list(hdulist[2].data[0])) - elif self.chip == 'b': + elif self.chip.lower() == 'b': self.wave = np.array(list(np.delete(hdulist[4].data[1], mask_1))) self.flux = np.array(list(np.delete(hdulist[1].data[1], mask_1))) self.noise = np.array(list(np.delete(hdulist[2].data[1], mask_1))) @@ -208,7 +208,7 @@ def __init__(self, **kwargs): self.oriFlux = np.array(list(hdulist[1].data[1])) self.oriNoise = np.array(list(hdulist[2].data[1])) - elif self.chip == 'c': + elif self.chip.lower() == 'c': self.wave = np.array(list(np.delete(hdulist[4].data[2], mask_2))) self.flux = np.array(list(np.delete(hdulist[1].data[2], mask_2))) self.noise = np.array(list(np.delete(hdulist[2].data[2], mask_2))) @@ -248,7 +248,7 @@ def __init__(self, **kwargs): ## APOGEE APVISIT has corrected the telluric absorption; the forward-modeling routine needs to put it back #self.flux *= self.tell - elif self.datatype == 'apstar': + elif self.datatype.lower() == 'apstar': # see the description of the data model: # https://data.sdss.org/datamodel/files/APOGEE_REDUX/APRED_VERS/APSTAR_VERS-DR14/TELESCOPE/LOCATION_ID/apStar.html crval1 = hdulist[0].header['CRVAL1'] @@ -306,7 +306,7 @@ def __init__(self, **kwargs): self.model = np.array(hdulist[3].data) self.mask = [] - elif self.instrument == 'igrins': + elif self.instrument.lower() == 'igrins': """ Follow the IGRINS PIP data product convention; default is to read the flattened spectra @@ -363,7 +363,8 @@ def __init__(self, **kwargs): # define a list for storing the best wavelength shift self.bestshift = [] - elif self.instrument == 'hires': + elif self.instrument.lower() == 'hires': + self.name = kwargs.get('name') self.order = kwargs.get('order') self.path = kwargs.get('path') @@ -391,7 +392,70 @@ def __init__(self, **kwargs): self.oriNoise = hdulist[2].data self.mask = [] + elif self.instrument.lower() == 'jwst_nirspec': + + self.name = kwargs.get('name') + self.order = kwargs.get('order') + self.path = kwargs.get('path') + self.apply_sigma_mask = kwargs.get('apply_sigma_mask', False) + #self.manaulmask = kwargs('manaulmask', False) + + #if self.path == None: + # self.path = './' + + #fullpath = self.path + '/' + self.name + '_' + str(self.order) + '_all.fits' + + #hdulist = fits.open(fullpath, ignore_missing_end=True) + + # correct back the MAKEE computed heliocentric velocity scale factor (hvsf) + #from smart.utils import hires_tool + #hvsf = hires_tool.get_hvsf(float(hdulist[0].header['HELIOVEL'])) + + #The indices 0 to 3 correspond to wavelength, flux, noise, and sky + #self.header = hdulist[0].header + self.wave = kwargs.get('wave') + self.flux = kwargs.get('flux') + self.noise = kwargs.get('noise') + #self.oriWave = hdulist[0].data/hvsf # correct for hvsf + #self.oriFlux = hdulist[1].data + #self.oriNoise = hdulist[2].data + self.mask = [] + + + elif self.instrument.lower() in ['sphere', 'osiris']: + + self.name = kwargs.get('name') + self.order = kwargs.get('order') + self.path = kwargs.get('path') + self.apply_sigma_mask = kwargs.get('apply_sigma_mask', False) + #self.manaulmask = kwargs('manaulmask', False) + + # The indices 0 to 3 correspond to wavelength, flux, noise + self.wave = kwargs.get('wave') + self.flux = kwargs.get('flux') + self.noise = kwargs.get('noise') + self.mask = [] + + else: + try: + self.name = kwargs.get('name') + self.order = kwargs.get('order') + self.path = kwargs.get('path') + self.apply_sigma_mask = kwargs.get('apply_sigma_mask', False) + #self.manaulmask = kwargs('manaulmask', False) + + # The indices 0 to 3 correspond to wavelength, flux, noise + self.wave = kwargs.get('wave') + self.flux = kwargs.get('flux') + self.noise = kwargs.get('noise') + self.mask = [] + except: + raise Exception('Instrument not implemented in SMART yet. Contact devs.') + + + if self.apply_sigma_mask: + # set up masking criteria self.avgFlux = np.mean(self.flux) self.stdFlux = np.std(self.flux) @@ -403,14 +467,14 @@ def __init__(self, **kwargs): self.mask = np.where(np.abs(self.flux - self.avgFlux ) >= 3. * self.stdFlux)[0] - if self.instrument == 'apogee': + if self.instrument.lower() == 'apogee': noise_median = np.median(self.noise) self.mask = np.union1d(self.mask, np.where(self.noise >= 3. * noise_median)[0]) self.wave = np.delete(self.wave, self.mask) self.flux = np.delete(self.flux, self.mask) self.noise = np.delete(self.noise, self.mask) - if self.instrument == 'nirspec': + if self.instrument.lower() == 'nirspec': self.sky = np.delete(self.sky, self.mask) def mask_custom(self, custom_mask): @@ -420,9 +484,9 @@ def mask_custom(self, custom_mask): ## combine the list and remove the duplicates self.mask = list(set().union(self.mask, custom_mask)) - self.wave = np.delete(self.oriWave, list(self.mask)) - self.flux = np.delete(self.oriFlux, list(self.mask)) - self.noise = np.delete(self.oriNoise, list(self.mask)) + self.wave = np.delete(self.wave, list(self.mask)) + self.flux = np.delete(self.flux, list(self.mask)) + self.noise = np.delete(self.noise, list(self.mask)) return self diff --git a/smart/forward_model/model_fit.py b/smart/forward_model/model_fit.py index 346bdd5..0be6e2f 100644 --- a/smart/forward_model/model_fit.py +++ b/smart/forward_model/model_fit.py @@ -1,4 +1,5 @@ import numpy as np +import scipy as sp import scipy.signal as signal from scipy.interpolate import interp1d import pandas as pd @@ -38,6 +39,9 @@ def makeModel(teff, logg=5, metal=0, vsini=1, rv=0, tell_alpha=1.0, airmass=1.0, instrument = kwargs.get('instrument', 'nirspec') veiling = kwargs.get('veiling', 0) # flux veiling parameter lsf = kwargs.get('lsf', 4.5) # instrumental LSF + kzz = kwargs.get('kzz', 0) # kzz parameter + flux_mult = kwargs.get('flux_mult', 0) # Flux multiplicative scaling + smooth = kwargs.get('smooth', False) # smooth the spectrum, either with a defined kernel or an optional one [] include_fringe_model = kwargs.get('include_fringe_model', False) if instrument == 'apogee': @@ -82,7 +86,7 @@ def makeModel(teff, logg=5, metal=0, vsini=1, rv=0, tell_alpha=1.0, airmass=1.0, #elif data is not None and instrument == 'apogee': elif instrument == 'apogee': # not z; this should be keyword "metal" - if modelset == 'sonora': + if 'sonora' in modelset: model = smart.Model(teff=teff, logg=logg, z=0.0, order='ALL', modelset=modelset, instrument=instrument) else: model = smart.Model(teff=teff, logg=logg, metal=metal, order='ALL', modelset=modelset, instrument=instrument) @@ -96,11 +100,22 @@ def makeModel(teff, logg=5, metal=0, vsini=1, rv=0, tell_alpha=1.0, airmass=1.0, elif data is None and instrument in ['nirspec', 'hires']: model = smart.Model(teff=teff, logg=logg, metal=metal, order=str(order), modelset=modelset, instrument=instrument) - + + else: # see if we have a model anyways + try: + model = smart.Model(teff=teff, logg=logg, metal=metal, order=str(order), modelset=modelset, instrument=instrument, kzz=kzz) + except: + print('No Model Available') + #print(teff, logg, metal, str(order), modelset, instrument) + #print(model.wave) + #print(model.flux) + #sys.exit() + # wavelength offset #model.wave += wave_offset # apply vsini + #print("TEST1", model.wave, model.flux) model.flux = smart.broaden(wave=model.wave, flux=model.flux, vbroad=vsini, rotate=True, gaussian=False) # apply rv (including the barycentric correction) @@ -155,6 +170,8 @@ def makeModel(teff, logg=5, metal=0, vsini=1, rv=0, tell_alpha=1.0, airmass=1.0, # Remove the NANs model.wave = model.wave[~np.isnan(model.flux)] model.flux = model.flux[~np.isnan(model.flux)] + else: + model.flux = smart.broaden(wave=model.wave, flux=model.flux, vbroad=lsf, rotate=False, gaussian=True) if output_stellar_model: stellar_model.flux = smart.broaden(wave=stellar_model.wave, flux=stellar_model.flux, vbroad=lsf, rotate=False, gaussian=True) @@ -202,6 +219,7 @@ def makeModel(teff, logg=5, metal=0, vsini=1, rv=0, tell_alpha=1.0, airmass=1.0, model = smart.continuum(data=data, mdl=model) for i in range(niter): model = smart.continuum(data=data, mdl=model) + elif data.instrument == 'apogee': ## set the order in the continuum fit deg = 5 @@ -285,6 +303,51 @@ def makeModel(teff, logg=5, metal=0, vsini=1, rv=0, tell_alpha=1.0, airmass=1.0, model.flux = np.array( list(model2.flux) + list(model1.flux) + list(model0.flux) ) model.wave = np.array( list(model2.wave) + list(model1.wave) + list(model0.wave) ) + else: # Any other instrument + + model.flux = np.array(smart.integralResample(xh=model.wave, yh=model.flux, xl=data.wave)) + model.wave = data.wave + + if output_stellar_model: + stellar_model.flux = np.array(smart.integralResample(xh=stellar_model.wave, yh=stellar_model.flux, xl=data.wave)) + stellar_model.wave = data.wave + if binary: + model1.flux = np.array(smart.integralResample(xh=model1.wave, yh=model1.flux, xl=data.wave)) + model1.wave = data.wave + model2.flux = np.array(smart.integralResample(xh=model2.wave, yh=model2.flux, xl=data.wave)) + model2.wave = data.wave + + + if smooth: + + smoothfluxmed = sp.ndimage.filters.uniform_filter(model.flux, size=80) # smooth by this many spectral bins + model.flux /= smoothfluxmed # Divide out the continuum + ''' + import scipy.signal as signal + def butter_highpass(cutoff, fs, btype, order=5): + nyq = 0.5 * fs + normal_cutoff = cutoff / nyq + b, a = signal.butter(order, normal_cutoff, btype=btype, analog=False) + return b, a + + def butter_highpass_filter(data, cutoff, fs, btype, order=5): + b, a = butter_highpass(cutoff, fs, btype, order=order) + y = signal.filtfilt(b, a, data) + return y + + + cutoff = 10e-3 + fs = 2 + # saavif, saavipsd = signal.welch(model.flux, fs, nperseg=2**12) + # plt.loglog(saavif, saavipsd) + + model.flux = butter_highpass_filter(model.flux, cutoff, fs, ‘high’, order=5) + # saavif, saavipsd = signal.welch(model.flux, fs, nperseg=2**12) + # plt.loglog(saavif, saavipsd) + # plt.plot(model.flux) + # plt.show() + ''' + if instrument in ['nirspec', 'hires']: # flux offset model.flux += flux_offset @@ -293,6 +356,7 @@ def makeModel(teff, logg=5, metal=0, vsini=1, rv=0, tell_alpha=1.0, airmass=1.0, if binary: model2.flux += flux_offset #model.flux **= (1 + flux_exponent_offset) + model.flux *= 10**flux_mult if output_stellar_model: if binary: diff --git a/smart/forward_model/run_mcmc_science_charis.py b/smart/forward_model/run_mcmc_science_charis.py new file mode 100644 index 0000000..c319fd9 --- /dev/null +++ b/smart/forward_model/run_mcmc_science_charis.py @@ -0,0 +1,812 @@ +import pandas as pd +import numpy as np +import matplotlib +#matplotlib.use('Agg') +import matplotlib.pyplot as plt +#plt.ioff() +import matplotlib.gridspec as gridspec +from astropy.io import fits +import emcee +#from schwimmbad import MPIPool +from multiprocessing import Pool +from multiprocessing import set_start_method +import smart +import model_fit +import mcmc_utils +import corner +import os +import sys +import time +import copy +import argparse +import json +import ast +import warnings +from datetime import date, datetime +warnings.filterwarnings("ignore") +import astropy.units as u +from astropy.units import cds +cds.enable() +from astropy.constants import c as speedoflight + +############################################################################################## +## This is the script to make the code multiprocessing, using arcparse to pass the arguments +## The code is run with 8 parameters, including Teff, logg, RV, vsini, telluric alpha, and +## nuisance parameters for wavelength, flux and noise. +############################################################################################## + +parser = argparse.ArgumentParser(description="Run the forward-modeling routine for science files", + usage="run_mcmc_science.py order date_obs sci_data_name data_path save_to_path lsf priors limits") + +#parser.add_argument("source",metavar='src',type=str, +# default=None, help="source name", nargs="+") + +parser.add_argument("order",metavar='o',type=str, + default=None, help="order", nargs="+") + +parser.add_argument("date_obs",metavar='dobs',type=str, + default=None, help="source name", nargs="+") + +parser.add_argument("sci_data_name",metavar='sci',type=str, + default=None, help="science data name", nargs="+") + +#parser.add_argument("tell_data_name",metavar='tell',type=str, +# default=None, help="telluric data name", nargs="+") + +parser.add_argument("data_path",type=str, + default=None, help="science data path", nargs="+") + +#parser.add_argument("tell_path",type=str, +# default=None, help="telluric data path", nargs="+") + +parser.add_argument("save_to_path",type=str, + default=None, help="output path", nargs="+") + +parser.add_argument("lsf",type=float, + default=None, help="line spread function", nargs="+") + +parser.add_argument("-instrument",metavar='--inst',type=str, + default='nirspec', help="spectrometer name of the instrument; default nirspec") + +parser.add_argument("-outlier_rejection",metavar='--rej',type=float, + default=3.0, help="outlier rejection based on the multiple of standard deviation of the residual; default 3.0") + +parser.add_argument("-ndim",type=int, + default=8, help="number of dimension; default 8") + +parser.add_argument("-nwalkers",type=int, + default=50, help="number of walkers of MCMC; default 50") + +parser.add_argument("-step",type=int, + default=600, help="number of steps of MCMC; default 600") + +parser.add_argument("-burn",type=int, + default=500, help="burn of MCMC; default 500") + +parser.add_argument("-moves",type=float, + default=2.0, help="moves of MCMC; default 2.0") + +parser.add_argument("-pixel_start",type=int, + default=10, help="starting pixel index for the science data; default 10") + +parser.add_argument("-pixel_end",type=int, + default=-40, help="ending pixel index for the science data; default -40") + +#parser.add_argument("-pwv",type=float, +# default=0.5, help="precipitable water vapor for telluric profile; default 0.5 mm") + +#parser.add_argument("-alpha_tell",type=float, +# default=1.0, help="telluric alpha; default 1.0") + +parser.add_argument("-applymask",type=bool, + default=False, help="apply a simple mask based on the STD of the average flux; default is False") + +parser.add_argument("-plot_show",type=bool, + default=False, help="show the MCMC plots; default is False") + +parser.add_argument("-coadd",type=bool, + default=False, help="coadd the spectra; default is False") + +parser.add_argument("-coadd_sp_name",type=str, + default=None, help="name of the coadded spectra") + +parser.add_argument("-modelset",type=str, + default='btsettl08', help="model set; default is btsettl08") + +parser.add_argument("-final_mcmc", action='store_true', help="run final mcmc; default False") + +parser.add_argument("-include_fringe_model", action='store_true', help="model the fringe pattern; default False") + +args = parser.parse_args() + +###################################################################################################### + +#source = str(args.source[0]) +order = str(args.order[0]) +instrument = str(args.instrument) +date_obs = str(args.date_obs[0]) +sci_data_name = str(args.sci_data_name[0]) +data_path = str(args.data_path[0]) +#tell_data_name = str(args.tell_data_name[0]) +#tell_path = str(args.tell_path[0]) +save_to_path_base = str(args.save_to_path[0]) +lsf0 = float(args.lsf[0]) +ndim, nwalkers, step = int(args.ndim), int(args.nwalkers), int(args.step) +burn = int(args.burn) +moves = float(args.moves) +applymask = args.applymask +pixel_start, pixel_end = int(args.pixel_start), int(args.pixel_end) +#pwv = float(args.pwv) +#alpha_tell = float(args.alpha_tell[0]) +plot_show = args.plot_show +coadd = args.coadd +outlier_rejection = float(args.outlier_rejection) +modelset = str(args.modelset) +final_mcmc = args.final_mcmc +include_fringe_model = args.include_fringe_model + +if final_mcmc: + #save_to_path1 = save_to_path_base + '/init_mcmc' + save_to_path = save_to_path_base + '/final_mcmc' + +else: + save_to_path = save_to_path_base + '/init_mcmc' + +# date +today = date.today() +now = datetime.now() +dt_string = now.strftime("%H:%M:%S") + +##################################### + +print('MASK', applymask) +print(sci_data_name) +print(data_path) +print(data_path + sci_data_name + '.fits') +#sys.exit() +data = np.genfromtxt(data_path + sci_data_name + '.dat') +#print(data) +#sys.exit() + +wave = data[:,0] * 10000 * u.angstrom +#print(wave) +#sys.exit() +flux = data[:,1] * u.W/u.m**2/u.micron ### NEED TO CONVERT THESE UNITS! erg/s / m^2 / micron +noise = data[:,2] * u.W/u.m**2/u.micron ### NEED TO CONVERT THESE UNITS! +#ind = np.where( (flux > 0) & (~np.isnan(flux) ) ) +flux = flux.to(u.erg/u.s/u.cm**2/u.angstrom) +noise = noise.to(u.erg/u.s/u.cm**2/u.angstrom) + +data = smart.Spectrum(flux=flux.value, wave=wave.value, noise=noise.value, path=data_path, order=order, applymask=applymask, instrument=instrument) +#data = smart.Spectrum(name=sci_data_name, order=order, path=data_path, applymask=applymask, instrument=instrument) + +#import scipy as sp +#smoothfluxmed = sp.ndimage.filters.uniform_filter(data.flux, size=80) # smooth by this many spectral bins + +#data.flux -= smoothfluxmed +#data.noise = 0.1*data.flux + +############# TEST +''' +print("TEST"*20) +teff, logg, vsini, rv, A, B, N, lsf = 1364, 4.48, 4.77, 107.5, -20.8, -15.7, 0.86, 41.03 +model = smart.makeModel(teff=teff, logg=logg, metal=0.0, vsini=vsini, rv=rv, wave_offset=B, flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=False, instrument=instrument, tell=False) +#data = smart.Spectrum(flux=model.flux, wave=model.wave, path=data_path, order=order, applymask=applymask, instrument=instrument) +plt.plot(data.wave, data.flux, alpha=0.5, label='data') +plt.plot(data.wave, data.noise, alpha=0.5, label='noise') +plt.plot(model.wave, model.flux, alpha=0.5, label='model') +#plt.plot(model2.wave, model2.flux, alpha=0.5, label='model2') +chisquare = smart.chisquare(data, model)/N**2 +print('Chi', smart.chisquare(data, model), chisquare) +print(-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise*N)**2)))) +plt.legend() +plt.show() +sys.exit() +''' +############# TEST + +sci_data = data + + +""" +MCMC run for the science spectra. See the parameters in the makeModel function. + +Parameters +---------- + +sci_data : sepctrum object + science data + +tell_data : spectrum object + telluric data for calibrating the science spectra + +priors : dic + keys are teff_min, teff_max, logg_min, logg_max, vsini_min, vsini_max, rv_min, rv_max, + am_min, am_max, pwv_min, pwv_max, A_min, A_max, B_min, B_max + +Optional Parameters +------------------- + +limits : dic + mcmc limits with the same format as the input priors + +ndim : int + mcmc dimension + +nwalkers : int + number of walkers + + step : int + number of steps + + burn : int + burn for the mcmc + + moves : float + stretch parameter for the mcmc. The default is 2.0 based on the emcee package + + pixel_start : int + starting pixel number for the spectra in the MCMC + + pixel_end : int + ending pixel number for the spectra in the MCMC + + alpha_tell : float + power of telluric spectra for estimating the line spread function of the NIRSPEC instrument + + modelset : str + 'btsettl08' or 'phoenixaces' model sets + + save_to_path: str + path to savr the MCMC output + +""" + +if save_to_path is not None: + if not os.path.exists(save_to_path): + os.makedirs(save_to_path) +else: + save_to_path = '.' + +#if limits is None: limits = priors + +data = copy.deepcopy(sci_data) + + +# barycentric corrction +#barycorr = smart.barycorr(data.header).value +#print("barycorr:",barycorr) + +## read the input custom mask and priors +lines = open(save_to_path+'/mcmc_parameters.txt').read().splitlines() +custom_mask = json.loads(lines[3].split('custom_mask')[1]) +priors = ast.literal_eval(lines[4].split('priors ')[1]) +barycorr = json.loads(lines[11].split('barycorr')[1]) +#print(priors) +#sys.exit() + +# no logg 5.5 for teff lower than 900 +if 'btsettl08' in modelset.lower() and priors['teff_min'] < 900: logg_max = 5.0 +else: logg_max = 5.5 + +# limit of the flux nuisance parameter: 5 percent of the median flux +A_const = 0.05 * abs(np.median(data.flux)) + +if 'btsettl08' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,500), 'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif modelset.lower() == 'phoenix-btsettl-cifist2011-2015': + limits = { + 'teff_min':max(priors['teff_min']-300,1200),'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + + +elif 'sonora' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,200), 'teff_max':min(priors['teff_max']+300,2400), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-400.0, 'rv_max':400.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':1000 + } + +elif modelset == 'phoenixaces': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,10000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif modelset.upper() == 'PHOENIX_BTSETTL_CIFIST2011_2015': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,7000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif 'DRIFT-PHOENIX' in modelset.upper(): + limits = { + 'teff_min':max(priors['teff_min']-300,1000), 'teff_max':min(priors['teff_max']+300,2400), + 'logg_min':3.0, 'logg_max':6.0, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':300 + } + +# HIRES wavelength calibration is not that precise, release the constraint for the wavelength offset nuisance parameter +if data.instrument == 'hires': + limits['B_min'] = -3.0 # Angstrom + limits['B_max'] = +3.0 # Angstrom + +if final_mcmc: + limits['rv_min'] = priors['rv_min'] - 10 + limits['rv_max'] = priors['rv_max'] + 10 + +## apply a custom mask +#data.mask_custom(custom_mask=custom_mask) + +## add a pixel label for plotting +length1 = len(data.flux) +pixel = np.delete(np.arange(length1), data.mask) +pixel = pixel[pixel_start:pixel_end] + +### mask the end pixels +data.wave = data.wave[pixel_start:pixel_end] +data.flux = data.flux[pixel_start:pixel_end] +data.noise = data.noise[pixel_start:pixel_end] + +#plt.plot(data.wave, data.flux) +#plt.show() + + +#if final_mcmc: +# priors, limits = mcmc_utils.generate_final_priors_and_limits(sp_type=sp_type, barycorr=barycorr, save_to_path1=save_to_path1) +#else: +# priors, limits = mcmc_utils.generate_initial_priors_and_limits(sp_type=sp_type) +#print(priors, limits) + +#if lsf is None: +# lsf = smart.getLSF(tell_sp, alpha=alpha_tell, test=True, save_path=save_to_path) +# print("LSF: ", lsf) +#else: +# print("Use input lsf:", lsf) + +# log file +log_path = save_to_path + '/mcmc_parameters.txt' +""" +file_log = open(log_path,"w+") +file_log.write("data_path {} \n".format(data.path)) +file_log.write("tell_path {} \n".format(tell_sp.path)) +file_log.write("data_name {} \n".format(data.name)) +file_log.write("tell_name {} \n".format(tell_sp.name)) +file_log.write("order {} \n".format(data.order)) +file_log.write("custom_mask {} \n".format(custom_mask)) +file_log.write("priors {} \n".format(priors)) +file_log.write("ndim {} \n".format(ndim)) +file_log.write("nwalkers {} \n".format(nwalkers)) +file_log.write("step {} \n".format(step)) +file_log.write("burn {} \n".format(burn)) +file_log.write("pixel_start {} \n".format(pixel_start)) +file_log.write("pixel_end {} \n".format(pixel_end)) +file_log.write("barycorr {} \n".format(barycorr)) +file_log.write("lsf {} \n".format(lsf)) +file_log.write("med_snr {} \n".format(med_snr)) +file_log.close() +""" + +######################################################################################### +## for multiprocessing +######################################################################################### +print('Modelset:', modelset) +print('Instrument:', instrument) +print('include_fringe_model', include_fringe_model) +print(lsf0) + +def lnlike(theta, data, lsf0): + """ + Log-likelihood, computed from chi-squared. + + Parameters + ---------- + theta + lsf + data + + Returns + ------- + -0.5 * chi-square + sum of the log of the noise + + """ + + ## Parameters MCMC + #print('THETA:', theta) + teff, logg, rv, A, N, lsf = theta #N noise prefactor + #teff, logg, vsini, rv, , am, pwv, A, B, freq, amp, phase = theta + + model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, #vsini=vsini, + rv=rv, + #wave_offset=B, + flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=include_fringe_model, instrument=instrument, tell=False, smooth=False) + + #print('MODEL') + #print(model.wave) + #print(model.flux) + #plt.plot(data.wave, data.flux, label='data') + #plt.plot(model.wave, model.flux, label='model') + #plt.legend() + #plt.show() + #print('DATA') + #print(data.wave) + #print(data.flux) + + #print('CHI0') + chisquare = smart.chisquare(data, model)/N**2 + #print('CHI', chisquare) + + chi0 = -0.5 * np.sum( ( data.flux - model.flux )**2/(data.noise*N)**2 + np.log( (data.noise*N)**2) ) + return chi0#-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise)**2))) + +def lnprior(theta, limits=limits): + """ + Specifies a flat prior + """ + ## Parameters for theta + teff, logg, rv, A, N, lsf = theta + + if limits['teff_min'] < teff < limits['teff_max'] \ + and limits['logg_min'] < logg < limits['logg_max'] \ + and limits['rv_min'] < rv < limits['rv_max'] \ + and limits['A_min'] < A < limits['A_max']\ + and limits['N_min'] < N < limits['N_max']\ + and limits['lsf_min'] < lsf < limits['lsf_max']: + return 0.0 + + return -np.inf + +def lnprob(theta, data, lsf0): + #print('THETA0:', theta) + + lnp = lnprior(theta) + + if not np.isfinite(lnp): + return -np.inf + + return lnp + lnlike(theta, data, lsf0) + +pos = [np.array([ priors['teff_min'] + (priors['teff_max'] - priors['teff_min'] ) * np.random.uniform(), + priors['logg_min'] + (priors['logg_max'] - priors['logg_min'] ) * np.random.uniform(), + #priors['vsini_min'] + (priors['vsini_max'] - priors['vsini_min']) * np.random.uniform(), + priors['rv_min'] + (priors['rv_max'] - priors['rv_min'] ) * np.random.uniform(), + priors['A_min'] + (priors['A_max'] - priors['A_min']) * np.random.uniform(), + #priors['B_min'] + (priors['B_max'] - priors['B_min']) * np.random.uniform(), + priors['N_min'] + (priors['N_max'] - priors['N_min']) * np.random.uniform(), + priors['lsf_min'] + (priors['lsf_max'] - priors['lsf_min']) * np.random.uniform() + ]) for i in range(nwalkers)] + +## TEST + +print('Priors:',priors) +print('Limits:',limits) +''' +sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, moves=emcee.moves.KDEMove()) +time1 = time.time() +sampler.run_mcmc(pos, step, progress=True) +time2 = time.time() +''' +## multiprocessing + +set_start_method('fork') +with Pool() as pool: + #sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf, pwv), a=moves, pool=pool) + sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, pool=pool, + moves=emcee.moves.KDEMove()) + time1 = time.time() + sampler.run_mcmc(pos, step, progress=True) + time2 = time.time() + + +np.save(save_to_path + '/sampler_chain', sampler.chain[:, :, :]) + +samples = sampler.chain[:, :, :].reshape((-1, ndim)) + +np.save(save_to_path + '/samples', samples) + +print('total time: ',(time2-time1)/60,' min.') +print("Mean acceptance fraction: {0:.3f}".format(np.mean(sampler.acceptance_fraction))) +print(sampler.acceptance_fraction) +autocorr_time = sampler.get_autocorr_time(discard=burn, quiet=True) +print("Mean autocorrelation time: {0:.3f} steps".format(np.mean(autocorr_time))) +print(autocorr_time) + +# create walker plots +print('SAVE PATH:', save_to_path) +sampler_chain = np.load(save_to_path + '/sampler_chain.npy') +samples = np.load(save_to_path + '/samples.npy') + +ylabels = ["$T_{\mathrm{eff}} (K)$", + "$\log{g}$(dex)", + "$RV(km/s)$", + "$C_{F_{\lambda}}$ (cnt/s)", + "$C_{noise}$","LSF" + ] + + +## create walker plots +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=30) +fig = plt.figure(tight_layout=True) +gs = gridspec.GridSpec(ndim, 1) +gs.update(hspace=0.1) + +for i in range(ndim): + ax = fig.add_subplot(gs[i, :]) + for j in range(nwalkers): + ax.plot(np.arange(1,int(step+1)), sampler_chain[j,:,i],'k',alpha=0.2) + ax.set_ylabel(ylabels[i]) +fig.align_labels() +plt.minorticks_on() +plt.xlabel('nstep') +plt.savefig(save_to_path+'/walker.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# create array triangle plots +triangle_samples = sampler_chain[:, burn:, :].reshape((-1, ndim)) +#print(triangle_samples.shape) + +# create the final spectra comparison +teff_mcmc, logg_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc = map(lambda v: (v[1], v[2]-v[1], v[1]-v[0]), + zip(*np.percentile(triangle_samples, [16, 50, 84], axis=0))) + + +print(teff_mcmc, logg_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc) + +# add the summary to the txt file + +# log file +log_path2 = save_to_path + '/mcmc_result.txt' + +file_log2 = open(log_path2,"w+") +file_log2.write("teff_mcmc {}\n".format(str(teff_mcmc[0]))) +file_log2.write("logg_mcmc {}\n".format(str(logg_mcmc[0]))) +#file_log2.write("vsini_mcmc {}\n".format(str(vsini_mcmc[0]))) +file_log2.write("rv_mcmc {}\n".format(str(rv_mcmc[0]+barycorr))) +#file_log2.write("am_mcmc {}\n".format(str(am_mcmc[0]))) +#file_log2.write("pwv_mcmc {}\n".format(str(pwv_mcmc[0]))) +file_log2.write("A_mcmc {}\n".format(str(A_mcmc[0]))) +#file_log2.write("B_mcmc {}\n".format(str(B_mcmc[0]))) +file_log2.write("N_mcmc {}\n".format(str(N_mcmc[0]))) +file_log2.write("lsf_mcmc {}\n".format(str(lsf_mcmc[0]))) +file_log2.write("teff_mcmc_e {}\n".format(str(max(abs(teff_mcmc[1]), abs(teff_mcmc[2]))))) +file_log2.write("logg_mcmc_e {}\n".format(str(max(abs(logg_mcmc[1]), abs(logg_mcmc[2]))))) +#file_log2.write("vsini_mcmc_e {}\n".format(str(max(abs(vsini_mcmc[1]), abs(vsini_mcmc[2]))))) +file_log2.write("rv_mcmc_e {}\n".format(str(max(abs(rv_mcmc[1]), abs(rv_mcmc[2]))))) +#file_log2.write("am_mcmc_e {}\n".format(str(max(abs(am_mcmc[1]), abs(am_mcmc[2]))))) +#file_log2.write("pwv_mcmc_e {}\n".format(str(max(abs(pwv_mcmc[1]), abs(pwv_mcmc[2]))))) +file_log2.write("A_mcmc_e {}\n".format(str(max(abs(A_mcmc[1]), abs(A_mcmc[2]))))) +#file_log2.write("B_mcmc_e {}\n".format(str(max(abs(B_mcmc[1]), abs(B_mcmc[2]))))) +file_log2.write("N_mcmc_e {}\n".format(str(max(abs(N_mcmc[1]), abs(N_mcmc[2]))))) +file_log2.write("lsf_mcmc_e {}\n".format(str(max(abs(lsf_mcmc[1]), abs(lsf_mcmc[2]))))) +# upper and lower uncertainties +# upper uncertainties +file_log2.write("teff_mcmc_ue {}\n".format(str(abs(teff_mcmc[1])))) +file_log2.write("logg_mcmc_ue {}\n".format(str(abs(logg_mcmc[1])))) +#file_log2.write("vsini_mcmc_ue {}\n".format(str(abs(vsini_mcmc[1])))) +file_log2.write("rv_mcmc_ue {}\n".format(str(abs(rv_mcmc[1])))) +#file_log2.write("am_mcmc_ue {}\n".format(str(abs(am_mcmc[1])))) +#file_log2.write("pwv_mcmc_ue {}\n".format(str(abs(pwv_mcmc[1])))) +file_log2.write("A_mcmc_ue {}\n".format(str(abs(A_mcmc[1])))) +#file_log2.write("B_mcmc_ue {}\n".format(str(abs(B_mcmc[1])))) +file_log2.write("N_mcmc_ue {}\n".format(str(abs(N_mcmc[1])))) +file_log2.write("lsf_mcmc_ue {}\n".format(str(abs(lsf_mcmc[1])))) +# lower uncertainties +file_log2.write("teff_mcmc_le {}\n".format(str(abs(teff_mcmc[2])))) +file_log2.write("logg_mcmc_le {}\n".format(str(abs(logg_mcmc[2])))) +#file_log2.write("vsini_mcmc_le {}\n".format(str(abs(vsini_mcmc[2])))) +file_log2.write("rv_mcmc_le {}\n".format(str(abs(rv_mcmc[2])))) +#file_log2.write("am_mcmc_le {}\n".format(str(abs(am_mcmc[2])))) +#file_log2.write("pwv_mcmc_le {}\n".format(str(abs(pwv_mcmc[2])))) +file_log2.write("A_mcmc_le {}\n".format(str(abs(A_mcmc[2])))) +#file_log2.write("B_mcmc_le {}\n".format(str(abs(B_mcmc[2])))) +file_log2.write("N_mcmc_le {}\n".format(str(abs(N_mcmc[2])))) +file_log2.write("lsf_mcmc_le {}\n".format(str(abs(lsf_mcmc[2])))) +file_log2.close() + +#print(teff_mcmc, logg_mcmc, vsini_mcmc, rv_mcmc, am_mcmc, pwv_mcmc, A_mcmc, B_mcmc, N_mcmc) + +triangle_samples[:,2] += barycorr + +## triangular plots +plt.rc('font', family='sans-serif') +fig = corner.corner(triangle_samples, + labels=ylabels, + truths=[teff_mcmc[0], + logg_mcmc[0], + rv_mcmc[0]+barycorr, + A_mcmc[0], + N_mcmc[0], + lsf_mcmc[0] + ], + quantiles=[0.16, 0.84], + label_kwargs={"fontsize": 20}) +plt.minorticks_on() +fig.savefig(save_to_path+'/triangle.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +teff = teff_mcmc[0] +logg = logg_mcmc[0] +z = 0.0 +#vsini = vsini_mcmc[0] +rv = rv_mcmc[0] +A = A_mcmc[0] +#B = B_mcmc[0] +N = N_mcmc[0] +lsf = lsf_mcmc[0] + + +model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, + rv=rv, #wave_offset=B, + flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, + include_fringe_model=False, instrument=instrument, tell=False, smooth=False) + +fig = plt.figure(figsize=(16,6)) +ax1 = fig.add_subplot(111) +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=15) +ax1.plot(model.wave, model.flux, color='C3', linestyle='-', label='model',alpha=0.8) +#ax1.plot(model_notell.wave,model_notell.flux, color='C0', linestyle='-', label='model no telluric',alpha=0.8) +ax1.plot(data.wave, data.flux,'k-', label='data',alpha=0.5) +#ax1.plot(data.wave, data.flux-model.flux,'k-',alpha=0.8, label='residual') +plt.fill_between(data.wave,-data.noise*N,data.noise*N,facecolor='C0',alpha=0.5) +#plt.axhline(y=0,color='k',linestyle='-',linewidth=0.5) +#plt.ylim(-np.max(np.append(np.abs(data.noise),np.abs(data.flux-model.flux)))*1.2,np.max(data.flux)*1.2) +plt.ylabel("Flux ($cnts/s$)",fontsize=15) +plt.xlabel("$\lambda$ ($\AA$)",fontsize=15) +#plt.figtext(0.89,0.85,str(data.header['OBJECT'])+' '+data.name+' O'+str(data.order), +# color='k', +# horizontalalignment='right', +# verticalalignment='center', +# fontsize=15) +plt.figtext(0.89,0.82,"$Teff \, {0}^{{+{1}}}_{{-{2}}}/ logg \, {3}^{{+{4}}}_{{-{5}}}/ en \, 0.0/ RV \, {6}^{{+{7}}}_{{-{8}}}$".format(\ + round(teff_mcmc[0]), + round(teff_mcmc[1]), + round(teff_mcmc[2]), + round(logg_mcmc[0],1), + round(logg_mcmc[1],3), + round(logg_mcmc[2],3), + round(rv_mcmc[0]+barycorr,2), + round(rv_mcmc[1],2), + round(rv_mcmc[2],2)), + color='C0', + horizontalalignment='right', + verticalalignment='center', + fontsize=12) +plt.figtext(0.89,0.79,r"$\chi^2$ = {}, DOF = {}".format(\ + round(smart.chisquare(data,model)), round(len(data.wave-ndim)/3)), +color='k', +horizontalalignment='right', +verticalalignment='center', +fontsize=12) +plt.legend(loc=4) +plt.minorticks_on() + +ax2 = ax1.twiny() +ax2.plot(pixel, data.flux, color='w', alpha=0) +ax2.set_xlabel('Pixel',fontsize=15) +ax2.tick_params(labelsize=15) +ax2.set_xlim(pixel[0], pixel[-1]) +ax2.minorticks_on() + +#plt.legend() +plt.savefig(save_to_path + '/spectrum.png', dpi=300, bbox_inches='tight') +plt.savefig(save_to_path + '/spectrum.pdf', bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# chi2 and dof in the log +log_path = save_to_path + '/mcmc_parameters.txt' +file_log = open(log_path,"a") +file_log.write("*** Below is the summary *** \n") +file_log.write("total_time {} min\n".format(str((time2-time1)/60))) +file_log.write("mean_acceptance_fraction {0:.3f} \n".format(np.mean(sampler.acceptance_fraction))) +file_log.write("mean_autocorrelation_time {0:.3f} \n".format(np.mean(autocorr_time))) +file_log.write("chi2 {} \n".format(round(smart.chisquare(data,model)))) +file_log.write("dof {} \n".format(round(len(data.wave-ndim)/3))) +file_log.write("teff_mcmc {} K\n".format(str(teff_mcmc))) +file_log.write("logg_mcmc {} dex (cgs)\n".format(str(logg_mcmc))) +#file_log.write("vsini_mcmc {} km/s\n".format(str(vsini_mcmc))) +file_log.write("rv_mcmc {} km/s\n".format(str(rv_mcmc))) +#file_log.write("am_mcmc {}\n".format(str(am_mcmc))) +#file_log.write("pwv_mcmc {}\n".format(str(pwv_mcmc))) +file_log.write("A_mcmc {}\n".format(str(A_mcmc))) +#file_log.write("B_mcmc {}\n".format(str(B_mcmc))) +file_log.write("N_mcmc {}\n".format(str(N_mcmc))) +file_log.write("lsf_mcmc {}\n".format(str(lsf_mcmc))) +file_log.close() + + +# excel summary file +''' +cat = pd.DataFrame(columns=['date_obs','date_name','tell_name','data_path''save_path', + 'model_date','model_time','data_mask','order','coadd','med_snr','lsf', + 'barycorr','modelset','priors','limits','ndim','nwalkers','step','burn', + 'rv','e_rv','ue_rv','le_rv','vsini','e_vsini','ue_vsini','le_vsini', + 'teff','e_teff','ue_teff','le_teff','logg','e_logg','ue_logg','le_logg', + 'cflux','e_cflux','ue_cflux','le_cflux','cwave','e_cwave','ue_cwave','le_cwave', + 'cnoise','e_cnoise','ue_cnoise','le_cnoise','wave_cal_err','chi2','dof','acceptance_fraction','autocorr_time']) + + +med_snr = np.nanmedian(data.flux/data.noise) +if instrument == 'nirspec': + wave_cal_err = tell_sp.header['STD'] +else: + wave_cal_err = np.nan + +cat = cat.append({ 'date_obs':date_obs,'date_name':sci_data_name, + 'data_path':data_path,'save_path':save_to_path, + 'model_date':today.isoformat(),'model_time':dt_string,'data_mask':custom_mask, + 'order':order,'coadd':coadd,'med_snr':med_snr,'lsf':lsf, 'barycorr':barycorr, + 'modelset':modelset, 'priors':priors, 'limits':limits, + 'ndim':ndim, 'nwalkers':nwalkers,'step':step, 'burn':burn, + 'rv':rv_mcmc[0]+barycorr, 'e_rv':max(rv_mcmc[1], rv_mcmc[2]), 'ue_rv':rv_mcmc[1], 'le_rv':rv_mcmc[2], + 'vsini':vsini_mcmc[0], 'e_vsini':max(vsini_mcmc[1], vsini_mcmc[2]), 'ue_vsini':vsini_mcmc[1], 'le_vsini':vsini_mcmc[2], + 'teff':teff_mcmc[0], 'e_teff':max(teff_mcmc[1],teff_mcmc[2]), 'ue_teff':teff_mcmc[1], 'le_teff':teff_mcmc[2], + 'logg':logg_mcmc[0], 'e_logg':max(logg_mcmc[1], logg_mcmc[2]), 'ue_logg':logg_mcmc[1], 'le_logg':logg_mcmc[2], + 'cflux':A_mcmc[0], 'e_cflux':max(A_mcmc[1], A_mcmc[2]), 'ue_cflux':A_mcmc[1], 'le_cflux':A_mcmc[2], + 'cwave':B_mcmc[0], 'e_cwave':max(B_mcmc[1], B_mcmc[2]), 'ue_cwave':B_mcmc[1], 'le_cwave':B_mcmc[2], + 'cnoise':N_mcmc[0],'e_cnoise':max(N_mcmc[1], N_mcmc[2]), 'ue_cnoise':N_mcmc[1], 'le_cnoise':N_mcmc[2], + 'wave_cal_err':wave_cal_err, }, ignore_index=True) + +cat.to_excel(save_to_path + '/mcmc_summary.xlsx', index=False) +''' diff --git a/smart/forward_model/run_mcmc_science_jwst_nirspec.py b/smart/forward_model/run_mcmc_science_jwst_nirspec.py new file mode 100644 index 0000000..e10fe22 --- /dev/null +++ b/smart/forward_model/run_mcmc_science_jwst_nirspec.py @@ -0,0 +1,808 @@ +import pandas as pd +import numpy as np +import matplotlib +#matplotlib.use('Agg') +import matplotlib.pyplot as plt +#plt.ioff() +import matplotlib.gridspec as gridspec +from astropy.io import fits +import emcee +#from schwimmbad import MPIPool +from multiprocessing import Pool +from multiprocessing import set_start_method +import smart +import model_fit +import mcmc_utils +import corner +import os +import sys +import time +import copy +import argparse +import json +import ast +import warnings +from datetime import date, datetime +warnings.filterwarnings("ignore") +import astropy.units as u +from astropy.units import cds +cds.enable() +from astropy.constants import c as speedoflight + +############################################################################################## +## This is the script to make the code multiprocessing, using arcparse to pass the arguments +## The code is run with 8 parameters, including Teff, logg, RV, vsini, telluric alpha, and +## nuisance parameters for wavelength, flux and noise. +############################################################################################## + +parser = argparse.ArgumentParser(description="Run the forward-modeling routine for science files", + usage="run_mcmc_science.py order date_obs sci_data_name data_path save_to_path lsf priors limits") + +#parser.add_argument("source",metavar='src',type=str, +# default=None, help="source name", nargs="+") + +parser.add_argument("order",metavar='o',type=str, + default=None, help="order", nargs="+") + +parser.add_argument("date_obs",metavar='dobs',type=str, + default=None, help="source name", nargs="+") + +parser.add_argument("sci_data_name",metavar='sci',type=str, + default=None, help="science data name", nargs="+") + +#parser.add_argument("tell_data_name",metavar='tell',type=str, +# default=None, help="telluric data name", nargs="+") + +parser.add_argument("data_path",type=str, + default=None, help="science data path", nargs="+") + +#parser.add_argument("tell_path",type=str, +# default=None, help="telluric data path", nargs="+") + +parser.add_argument("save_to_path",type=str, + default=None, help="output path", nargs="+") + +parser.add_argument("lsf",type=float, + default=None, help="line spread function", nargs="+") + +parser.add_argument("-instrument",metavar='--inst',type=str, + default='nirspec', help="spectrometer name of the instrument; default nirspec") + +parser.add_argument("-outlier_rejection",metavar='--rej',type=float, + default=3.0, help="outlier rejection based on the multiple of standard deviation of the residual; default 3.0") + +parser.add_argument("-ndim",type=int, + default=8, help="number of dimension; default 8") + +parser.add_argument("-nwalkers",type=int, + default=50, help="number of walkers of MCMC; default 50") + +parser.add_argument("-step",type=int, + default=600, help="number of steps of MCMC; default 600") + +parser.add_argument("-burn",type=int, + default=500, help="burn of MCMC; default 500") + +parser.add_argument("-moves",type=float, + default=2.0, help="moves of MCMC; default 2.0") + +parser.add_argument("-pixel_start",type=int, + default=10, help="starting pixel index for the science data; default 10") + +parser.add_argument("-pixel_end",type=int, + default=-40, help="ending pixel index for the science data; default -40") + +#parser.add_argument("-pwv",type=float, +# default=0.5, help="precipitable water vapor for telluric profile; default 0.5 mm") + +#parser.add_argument("-alpha_tell",type=float, +# default=1.0, help="telluric alpha; default 1.0") + +parser.add_argument("-applymask",type=bool, + default=False, help="apply a simple mask based on the STD of the average flux; default is False") + +parser.add_argument("-plot_show",type=bool, + default=False, help="show the MCMC plots; default is False") + +parser.add_argument("-coadd",type=bool, + default=False, help="coadd the spectra; default is False") + +parser.add_argument("-coadd_sp_name",type=str, + default=None, help="name of the coadded spectra") + +parser.add_argument("-modelset",type=str, + default='btsettl08', help="model set; default is btsettl08") + +parser.add_argument("-final_mcmc", action='store_true', help="run final mcmc; default False") + +parser.add_argument("-include_fringe_model", action='store_true', help="model the fringe pattern; default False") + +args = parser.parse_args() + +###################################################################################################### + +#source = str(args.source[0]) +order = str(args.order[0]) +instrument = str(args.instrument) +date_obs = str(args.date_obs[0]) +sci_data_name = str(args.sci_data_name[0]) +data_path = str(args.data_path[0]) +#tell_data_name = str(args.tell_data_name[0]) +#tell_path = str(args.tell_path[0]) +save_to_path_base = str(args.save_to_path[0]) +lsf0 = float(args.lsf[0]) +ndim, nwalkers, step = int(args.ndim), int(args.nwalkers), int(args.step) +burn = int(args.burn) +moves = float(args.moves) +applymask = args.applymask +pixel_start, pixel_end = int(args.pixel_start), int(args.pixel_end) +#pwv = float(args.pwv) +#alpha_tell = float(args.alpha_tell[0]) +plot_show = args.plot_show +coadd = args.coadd +outlier_rejection = float(args.outlier_rejection) +modelset = str(args.modelset) +final_mcmc = args.final_mcmc +include_fringe_model = args.include_fringe_model + +if final_mcmc: + #save_to_path1 = save_to_path_base + '/init_mcmc' + save_to_path = save_to_path_base + '/final_mcmc' + +else: + save_to_path = save_to_path_base + '/init_mcmc' + +# date +today = date.today() +now = datetime.now() +dt_string = now.strftime("%H:%M:%S") + +##################################### + +print('MASK', applymask) +print(sci_data_name) +print(data_path) +print(data_path + sci_data_name + '.fits') +#sys.exit() +hdu = fits.open(data_path + sci_data_name + '.fits') +print(hdu.info()) +wave = hdu[0].data*10000 +flux = hdu[1].data +noise = hdu[2].data +ind = np.where( + (flux > 0) & (~np.isnan(flux) + #& ( (wave < 41000) | (wave > 44000) ) + ) ) +wave = wave[ind] * u.angstrom +flux = flux[ind] * 1e6 * u.Jy.cgs +noise = noise[ind] * 1e6 * u.Jy.cgs +# convert to flux density +flux *= speedoflight.cgs / (wave.to(u.m) * wave.to(u.angstrom)) +noise *= speedoflight.cgs / (wave.to(u.m) * wave.to(u.angstrom)) +flux = flux.to(u.erg/u.s/u.cm**2/u.angstrom) +noise = noise.to(u.erg/u.s/u.cm**2/u.angstrom) +print(wave) +print(flux) +print(noise) +#plt.plot(wave, flux) +#plt.show() + +data = smart.Spectrum(flux=flux.value, wave=wave.value, noise=noise.value, path=data_path, order=order, applymask=applymask, instrument=instrument) +#data = smart.Spectrum(name=sci_data_name, order=order, path=data_path, applymask=applymask, instrument=instrument) + +#import scipy as sp +#smoothfluxmed = sp.ndimage.filters.uniform_filter(data.flux, size=80) # smooth by this many spectral bins + +#data.flux -= smoothfluxmed +#data.noise = 0.1*data.flux + +############# TEST +''' +print("TEST"*20) +teff, logg, vsini, rv, A, B, N, lsf = 1364, 4.48, 4.77, 107.5, -20.8, -15.7, 0.86, 41.03 +model = smart.makeModel(teff=teff, logg=logg, metal=0.0, vsini=vsini, rv=rv, wave_offset=B, flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=False, instrument=instrument, tell=False) +#data = smart.Spectrum(flux=model.flux, wave=model.wave, path=data_path, order=order, applymask=applymask, instrument=instrument) +plt.plot(data.wave, data.flux, alpha=0.5, label='data') +plt.plot(data.wave, data.noise, alpha=0.5, label='noise') +plt.plot(model.wave, model.flux, alpha=0.5, label='model') +#plt.plot(model2.wave, model2.flux, alpha=0.5, label='model2') +chisquare = smart.chisquare(data, model)/N**2 +print('Chi', smart.chisquare(data, model), chisquare) +print(-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise*N)**2)))) +plt.legend() +plt.show() +sys.exit() +''' +############# TEST + +sci_data = data + + +""" +MCMC run for the science spectra. See the parameters in the makeModel function. + +Parameters +---------- + +sci_data : sepctrum object + science data + +tell_data : spectrum object + telluric data for calibrating the science spectra + +priors : dic + keys are teff_min, teff_max, logg_min, logg_max, vsini_min, vsini_max, rv_min, rv_max, + am_min, am_max, pwv_min, pwv_max, A_min, A_max, B_min, B_max + +Optional Parameters +------------------- + +limits : dic + mcmc limits with the same format as the input priors + +ndim : int + mcmc dimension + +nwalkers : int + number of walkers + + step : int + number of steps + + burn : int + burn for the mcmc + + moves : float + stretch parameter for the mcmc. The default is 2.0 based on the emcee package + + pixel_start : int + starting pixel number for the spectra in the MCMC + + pixel_end : int + ending pixel number for the spectra in the MCMC + + alpha_tell : float + power of telluric spectra for estimating the line spread function of the NIRSPEC instrument + + modelset : str + 'btsettl08' or 'phoenixaces' model sets + + save_to_path: str + path to savr the MCMC output + +""" + +if save_to_path is not None: + if not os.path.exists(save_to_path): + os.makedirs(save_to_path) +else: + save_to_path = '.' + +#if limits is None: limits = priors + +data = copy.deepcopy(sci_data) + + +# barycentric corrction +#barycorr = smart.barycorr(data.header).value +#print("barycorr:",barycorr) + +## read the input custom mask and priors +lines = open(save_to_path+'/mcmc_parameters.txt').read().splitlines() +custom_mask = json.loads(lines[3].split('custom_mask')[1]) +priors = ast.literal_eval(lines[4].split('priors ')[1]) +barycorr = json.loads(lines[11].split('barycorr')[1]) +#print(priors) +#sys.exit() + +# no logg 5.5 for teff lower than 900 +if 'btsettl08' in modelset.lower() and priors['teff_min'] < 900: logg_max = 5.0 +else: logg_max = 5.5 + +# limit of the flux nuisance parameter: 5 percent of the median flux +A_const = 0.05 * abs(np.median(data.flux)) + +if 'btsettl08' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,500), 'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':300 + } + +elif modelset.lower() == 'phoenix-btsettl-cifist2011-2015': + limits = { + 'teff_min':max(priors['teff_min']-300,1200),'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':300 + } + + +elif 'sonora' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,200), 'teff_max':min(priors['teff_max']+300,2400), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':300 + } + +elif modelset == 'phoenixaces': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,10000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':300 + } + +elif modelset.upper() == 'PHOENIX_BTSETTL_CIFIST2011_2015': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,7000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':300 + } + +# HIRES wavelength calibration is not that precise, release the constraint for the wavelength offset nuisance parameter +if data.instrument == 'hires': + limits['B_min'] = -3.0 # Angstrom + limits['B_max'] = +3.0 # Angstrom + +if final_mcmc: + limits['rv_min'] = priors['rv_min'] - 10 + limits['rv_max'] = priors['rv_max'] + 10 + +## apply a custom mask +#data.mask_custom(custom_mask=custom_mask) + +## add a pixel label for plotting +length1 = len(data.flux) +pixel = np.delete(np.arange(length1), data.mask) +pixel = pixel[pixel_start:pixel_end] + +### mask the end pixels +data.wave = data.wave[pixel_start:pixel_end] +data.flux = data.flux[pixel_start:pixel_end] +data.noise = data.noise[pixel_start:pixel_end] + +#plt.plot(data.wave, data.flux) +#plt.show() + + +#if final_mcmc: +# priors, limits = mcmc_utils.generate_final_priors_and_limits(sp_type=sp_type, barycorr=barycorr, save_to_path1=save_to_path1) +#else: +# priors, limits = mcmc_utils.generate_initial_priors_and_limits(sp_type=sp_type) +#print(priors, limits) + +#if lsf is None: +# lsf = smart.getLSF(tell_sp, alpha=alpha_tell, test=True, save_path=save_to_path) +# print("LSF: ", lsf) +#else: +# print("Use input lsf:", lsf) + +# log file +log_path = save_to_path + '/mcmc_parameters.txt' +""" +file_log = open(log_path,"w+") +file_log.write("data_path {} \n".format(data.path)) +file_log.write("tell_path {} \n".format(tell_sp.path)) +file_log.write("data_name {} \n".format(data.name)) +file_log.write("tell_name {} \n".format(tell_sp.name)) +file_log.write("order {} \n".format(data.order)) +file_log.write("custom_mask {} \n".format(custom_mask)) +file_log.write("priors {} \n".format(priors)) +file_log.write("ndim {} \n".format(ndim)) +file_log.write("nwalkers {} \n".format(nwalkers)) +file_log.write("step {} \n".format(step)) +file_log.write("burn {} \n".format(burn)) +file_log.write("pixel_start {} \n".format(pixel_start)) +file_log.write("pixel_end {} \n".format(pixel_end)) +file_log.write("barycorr {} \n".format(barycorr)) +file_log.write("lsf {} \n".format(lsf)) +file_log.write("med_snr {} \n".format(med_snr)) +file_log.close() +""" + +######################################################################################### +## for multiprocessing +######################################################################################### +print('Modelset:', modelset) +print('Instrument:', instrument) +print('include_fringe_model', include_fringe_model) +print(lsf0) + +def lnlike(theta, data, lsf0): + """ + Log-likelihood, computed from chi-squared. + + Parameters + ---------- + theta + lsf + data + + Returns + ------- + -0.5 * chi-square + sum of the log of the noise + + """ + + ## Parameters MCMC + #print('THETA:', theta) + teff, logg, rv, A, N, lsf = theta #N noise prefactor + #teff, logg, vsini, rv, , am, pwv, A, B, freq, amp, phase = theta + + model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, #vsini=vsini, + rv=rv, + #wave_offset=B, + flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=include_fringe_model, instrument=instrument, tell=False, smooth=False) + + #print('MODEL') + #print(model.wave) + #print(model.flux) + #plt.plot(data.wave, data.flux, label='data') + #plt.plot(model.wave, model.flux, label='model') + #plt.legend() + #plt.show() + #print('DATA') + #print(data.wave) + #print(data.flux) + + #print('CHI0') + chisquare = smart.chisquare(data, model)/N**2 + #print('CHI', chisquare) + + chi0 = -0.5 * np.sum( ( data.flux - model.flux )**2/(data.noise*N)**2 + np.log( (data.noise*N)**2) ) + return chi0#-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise)**2))) + +def lnprior(theta, limits=limits): + """ + Specifies a flat prior + """ + ## Parameters for theta + teff, logg, rv, A, N, lsf = theta + + if limits['teff_min'] < teff < limits['teff_max'] \ + and limits['logg_min'] < logg < limits['logg_max'] \ + and limits['rv_min'] < rv < limits['rv_max'] \ + and limits['A_min'] < A < limits['A_max']\ + and limits['N_min'] < N < limits['N_max']\ + and limits['lsf_min'] < lsf < limits['lsf_max']: + return 0.0 + + return -np.inf + +def lnprob(theta, data, lsf0): + #print('THETA0:', theta) + + lnp = lnprior(theta) + + if not np.isfinite(lnp): + return -np.inf + + return lnp + lnlike(theta, data, lsf0) + +pos = [np.array([ priors['teff_min'] + (priors['teff_max'] - priors['teff_min'] ) * np.random.uniform(), + priors['logg_min'] + (priors['logg_max'] - priors['logg_min'] ) * np.random.uniform(), + #priors['vsini_min'] + (priors['vsini_max'] - priors['vsini_min']) * np.random.uniform(), + priors['rv_min'] + (priors['rv_max'] - priors['rv_min'] ) * np.random.uniform(), + priors['A_min'] + (priors['A_max'] - priors['A_min']) * np.random.uniform(), + #priors['B_min'] + (priors['B_max'] - priors['B_min']) * np.random.uniform(), + priors['N_min'] + (priors['N_max'] - priors['N_min']) * np.random.uniform(), + priors['lsf_min'] + (priors['lsf_max'] - priors['lsf_min']) * np.random.uniform() + ]) for i in range(nwalkers)] + +## TEST + +print('Priors:',priors) +print('Limits:',limits) +''' +sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, moves=emcee.moves.KDEMove()) +time1 = time.time() +sampler.run_mcmc(pos, step, progress=True) +time2 = time.time() +''' +## multiprocessing + +set_start_method('fork') +with Pool() as pool: + #sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf, pwv), a=moves, pool=pool) + sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, pool=pool, + moves=emcee.moves.KDEMove()) + time1 = time.time() + sampler.run_mcmc(pos, step, progress=True) + time2 = time.time() + + +np.save(save_to_path + '/sampler_chain', sampler.chain[:, :, :]) + +samples = sampler.chain[:, :, :].reshape((-1, ndim)) + +np.save(save_to_path + '/samples', samples) + +print('total time: ',(time2-time1)/60,' min.') +print("Mean acceptance fraction: {0:.3f}".format(np.mean(sampler.acceptance_fraction))) +print(sampler.acceptance_fraction) +autocorr_time = sampler.get_autocorr_time(discard=burn, quiet=True) +print("Mean autocorrelation time: {0:.3f} steps".format(np.mean(autocorr_time))) +print(autocorr_time) + +# create walker plots +print('SAVE PATH:', save_to_path) +sampler_chain = np.load(save_to_path + '/sampler_chain.npy') +samples = np.load(save_to_path + '/samples.npy') + +ylabels = ["$T_{\mathrm{eff}} (K)$", + "$\log{g}$(dex)", + "$RV(km/s)$", + "$C_{F_{\lambda}}$ (cnt/s)", + "$C_{noise}$","LSF" + ] + + +## create walker plots +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=30) +fig = plt.figure(tight_layout=True) +gs = gridspec.GridSpec(ndim, 1) +gs.update(hspace=0.1) + +for i in range(ndim): + ax = fig.add_subplot(gs[i, :]) + for j in range(nwalkers): + ax.plot(np.arange(1,int(step+1)), sampler_chain[j,:,i],'k',alpha=0.2) + ax.set_ylabel(ylabels[i]) +fig.align_labels() +plt.minorticks_on() +plt.xlabel('nstep') +plt.savefig(save_to_path+'/walker.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# create array triangle plots +triangle_samples = sampler_chain[:, burn:, :].reshape((-1, ndim)) +#print(triangle_samples.shape) + +# create the final spectra comparison +teff_mcmc, logg_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc = map(lambda v: (v[1], v[2]-v[1], v[1]-v[0]), + zip(*np.percentile(triangle_samples, [16, 50, 84], axis=0))) + + +print(teff_mcmc, logg_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc) + +# add the summary to the txt file + +# log file +log_path2 = save_to_path + '/mcmc_result.txt' + +file_log2 = open(log_path2,"w+") +file_log2.write("teff_mcmc {}\n".format(str(teff_mcmc[0]))) +file_log2.write("logg_mcmc {}\n".format(str(logg_mcmc[0]))) +#file_log2.write("vsini_mcmc {}\n".format(str(vsini_mcmc[0]))) +file_log2.write("rv_mcmc {}\n".format(str(rv_mcmc[0]+barycorr))) +#file_log2.write("am_mcmc {}\n".format(str(am_mcmc[0]))) +#file_log2.write("pwv_mcmc {}\n".format(str(pwv_mcmc[0]))) +file_log2.write("A_mcmc {}\n".format(str(A_mcmc[0]))) +#file_log2.write("B_mcmc {}\n".format(str(B_mcmc[0]))) +file_log2.write("N_mcmc {}\n".format(str(N_mcmc[0]))) +file_log2.write("lsf_mcmc {}\n".format(str(lsf_mcmc[0]))) +file_log2.write("teff_mcmc_e {}\n".format(str(max(abs(teff_mcmc[1]), abs(teff_mcmc[2]))))) +file_log2.write("logg_mcmc_e {}\n".format(str(max(abs(logg_mcmc[1]), abs(logg_mcmc[2]))))) +#file_log2.write("vsini_mcmc_e {}\n".format(str(max(abs(vsini_mcmc[1]), abs(vsini_mcmc[2]))))) +file_log2.write("rv_mcmc_e {}\n".format(str(max(abs(rv_mcmc[1]), abs(rv_mcmc[2]))))) +#file_log2.write("am_mcmc_e {}\n".format(str(max(abs(am_mcmc[1]), abs(am_mcmc[2]))))) +#file_log2.write("pwv_mcmc_e {}\n".format(str(max(abs(pwv_mcmc[1]), abs(pwv_mcmc[2]))))) +file_log2.write("A_mcmc_e {}\n".format(str(max(abs(A_mcmc[1]), abs(A_mcmc[2]))))) +#file_log2.write("B_mcmc_e {}\n".format(str(max(abs(B_mcmc[1]), abs(B_mcmc[2]))))) +file_log2.write("N_mcmc_e {}\n".format(str(max(abs(N_mcmc[1]), abs(N_mcmc[2]))))) +file_log2.write("lsf_mcmc_e {}\n".format(str(max(abs(lsf_mcmc[1]), abs(lsf_mcmc[2]))))) +# upper and lower uncertainties +# upper uncertainties +file_log2.write("teff_mcmc_ue {}\n".format(str(abs(teff_mcmc[1])))) +file_log2.write("logg_mcmc_ue {}\n".format(str(abs(logg_mcmc[1])))) +#file_log2.write("vsini_mcmc_ue {}\n".format(str(abs(vsini_mcmc[1])))) +file_log2.write("rv_mcmc_ue {}\n".format(str(abs(rv_mcmc[1])))) +#file_log2.write("am_mcmc_ue {}\n".format(str(abs(am_mcmc[1])))) +#file_log2.write("pwv_mcmc_ue {}\n".format(str(abs(pwv_mcmc[1])))) +file_log2.write("A_mcmc_ue {}\n".format(str(abs(A_mcmc[1])))) +#file_log2.write("B_mcmc_ue {}\n".format(str(abs(B_mcmc[1])))) +file_log2.write("N_mcmc_ue {}\n".format(str(abs(N_mcmc[1])))) +file_log2.write("lsf_mcmc_ue {}\n".format(str(abs(lsf_mcmc[1])))) +# lower uncertainties +file_log2.write("teff_mcmc_le {}\n".format(str(abs(teff_mcmc[2])))) +file_log2.write("logg_mcmc_le {}\n".format(str(abs(logg_mcmc[2])))) +#file_log2.write("vsini_mcmc_le {}\n".format(str(abs(vsini_mcmc[2])))) +file_log2.write("rv_mcmc_le {}\n".format(str(abs(rv_mcmc[2])))) +#file_log2.write("am_mcmc_le {}\n".format(str(abs(am_mcmc[2])))) +#file_log2.write("pwv_mcmc_le {}\n".format(str(abs(pwv_mcmc[2])))) +file_log2.write("A_mcmc_le {}\n".format(str(abs(A_mcmc[2])))) +#file_log2.write("B_mcmc_le {}\n".format(str(abs(B_mcmc[2])))) +file_log2.write("N_mcmc_le {}\n".format(str(abs(N_mcmc[2])))) +file_log2.write("lsf_mcmc_le {}\n".format(str(abs(lsf_mcmc[2])))) +file_log2.close() + +#print(teff_mcmc, logg_mcmc, vsini_mcmc, rv_mcmc, am_mcmc, pwv_mcmc, A_mcmc, B_mcmc, N_mcmc) + +triangle_samples[:,2] += barycorr + +## triangular plots +plt.rc('font', family='sans-serif') +fig = corner.corner(triangle_samples, + labels=ylabels, + truths=[teff_mcmc[0], + logg_mcmc[0], + rv_mcmc[0]+barycorr, + A_mcmc[0], + N_mcmc[0], + lsf_mcmc[0] + ], + quantiles=[0.16, 0.84], + label_kwargs={"fontsize": 20}) +plt.minorticks_on() +fig.savefig(save_to_path+'/triangle.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +teff = teff_mcmc[0] +logg = logg_mcmc[0] +z = 0.0 +#vsini = vsini_mcmc[0] +rv = rv_mcmc[0] +A = A_mcmc[0] +#B = B_mcmc[0] +N = N_mcmc[0] +lsf = lsf_mcmc[0] + + +model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, + rv=rv, #wave_offset=B, + flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, + include_fringe_model=False, instrument=instrument, tell=False, smooth=False) + +fig = plt.figure(figsize=(16,6)) +ax1 = fig.add_subplot(111) +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=15) +ax1.plot(model.wave, model.flux, color='C3', linestyle='-', label='model',alpha=0.8) +#ax1.plot(model_notell.wave,model_notell.flux, color='C0', linestyle='-', label='model no telluric',alpha=0.8) +ax1.plot(data.wave, data.flux,'k-', label='data',alpha=0.5) +#ax1.plot(data.wave, data.flux-model.flux,'k-',alpha=0.8, label='residual') +plt.fill_between(data.wave,-data.noise*N,data.noise*N,facecolor='C0',alpha=0.5) +#plt.axhline(y=0,color='k',linestyle='-',linewidth=0.5) +#plt.ylim(-np.max(np.append(np.abs(data.noise),np.abs(data.flux-model.flux)))*1.2,np.max(data.flux)*1.2) +plt.ylabel("Flux ($cnts/s$)",fontsize=15) +plt.xlabel("$\lambda$ ($\AA$)",fontsize=15) +#plt.figtext(0.89,0.85,str(data.header['OBJECT'])+' '+data.name+' O'+str(data.order), +# color='k', +# horizontalalignment='right', +# verticalalignment='center', +# fontsize=15) +plt.figtext(0.89,0.82,"$Teff \, {0}^{{+{1}}}_{{-{2}}}/ logg \, {3}^{{+{4}}}_{{-{5}}}/ en \, 0.0/ RV \, {6}^{{+{7}}}_{{-{8}}}$".format(\ + round(teff_mcmc[0]), + round(teff_mcmc[1]), + round(teff_mcmc[2]), + round(logg_mcmc[0],1), + round(logg_mcmc[1],3), + round(logg_mcmc[2],3), + round(rv_mcmc[0]+barycorr,2), + round(rv_mcmc[1],2), + round(rv_mcmc[2],2)), + color='C0', + horizontalalignment='right', + verticalalignment='center', + fontsize=12) +plt.figtext(0.89,0.79,r"$\chi^2$ = {}, DOF = {}".format(\ + round(smart.chisquare(data,model)), round(len(data.wave-ndim)/3)), +color='k', +horizontalalignment='right', +verticalalignment='center', +fontsize=12) +plt.legend(loc=4) +plt.minorticks_on() + +ax2 = ax1.twiny() +ax2.plot(pixel, data.flux, color='w', alpha=0) +ax2.set_xlabel('Pixel',fontsize=15) +ax2.tick_params(labelsize=15) +ax2.set_xlim(pixel[0], pixel[-1]) +ax2.minorticks_on() + +#plt.legend() +plt.savefig(save_to_path + '/spectrum.png', dpi=300, bbox_inches='tight') +plt.savefig(save_to_path + '/spectrum.pdf', bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# chi2 and dof in the log +log_path = save_to_path + '/mcmc_parameters.txt' +file_log = open(log_path,"a") +file_log.write("*** Below is the summary *** \n") +file_log.write("total_time {} min\n".format(str((time2-time1)/60))) +file_log.write("mean_acceptance_fraction {0:.3f} \n".format(np.mean(sampler.acceptance_fraction))) +file_log.write("mean_autocorrelation_time {0:.3f} \n".format(np.mean(autocorr_time))) +file_log.write("chi2 {} \n".format(round(smart.chisquare(data,model)))) +file_log.write("dof {} \n".format(round(len(data.wave-ndim)/3))) +file_log.write("teff_mcmc {} K\n".format(str(teff_mcmc))) +file_log.write("logg_mcmc {} dex (cgs)\n".format(str(logg_mcmc))) +#file_log.write("vsini_mcmc {} km/s\n".format(str(vsini_mcmc))) +file_log.write("rv_mcmc {} km/s\n".format(str(rv_mcmc))) +#file_log.write("am_mcmc {}\n".format(str(am_mcmc))) +#file_log.write("pwv_mcmc {}\n".format(str(pwv_mcmc))) +file_log.write("A_mcmc {}\n".format(str(A_mcmc))) +#file_log.write("B_mcmc {}\n".format(str(B_mcmc))) +file_log.write("N_mcmc {}\n".format(str(N_mcmc))) +file_log.write("lsf_mcmc {}\n".format(str(lsf_mcmc))) +file_log.close() + + +# excel summary file +''' +cat = pd.DataFrame(columns=['date_obs','date_name','tell_name','data_path''save_path', + 'model_date','model_time','data_mask','order','coadd','med_snr','lsf', + 'barycorr','modelset','priors','limits','ndim','nwalkers','step','burn', + 'rv','e_rv','ue_rv','le_rv','vsini','e_vsini','ue_vsini','le_vsini', + 'teff','e_teff','ue_teff','le_teff','logg','e_logg','ue_logg','le_logg', + 'cflux','e_cflux','ue_cflux','le_cflux','cwave','e_cwave','ue_cwave','le_cwave', + 'cnoise','e_cnoise','ue_cnoise','le_cnoise','wave_cal_err','chi2','dof','acceptance_fraction','autocorr_time']) + + +med_snr = np.nanmedian(data.flux/data.noise) +if instrument == 'nirspec': + wave_cal_err = tell_sp.header['STD'] +else: + wave_cal_err = np.nan + +cat = cat.append({ 'date_obs':date_obs,'date_name':sci_data_name, + 'data_path':data_path,'save_path':save_to_path, + 'model_date':today.isoformat(),'model_time':dt_string,'data_mask':custom_mask, + 'order':order,'coadd':coadd,'med_snr':med_snr,'lsf':lsf, 'barycorr':barycorr, + 'modelset':modelset, 'priors':priors, 'limits':limits, + 'ndim':ndim, 'nwalkers':nwalkers,'step':step, 'burn':burn, + 'rv':rv_mcmc[0]+barycorr, 'e_rv':max(rv_mcmc[1], rv_mcmc[2]), 'ue_rv':rv_mcmc[1], 'le_rv':rv_mcmc[2], + 'vsini':vsini_mcmc[0], 'e_vsini':max(vsini_mcmc[1], vsini_mcmc[2]), 'ue_vsini':vsini_mcmc[1], 'le_vsini':vsini_mcmc[2], + 'teff':teff_mcmc[0], 'e_teff':max(teff_mcmc[1],teff_mcmc[2]), 'ue_teff':teff_mcmc[1], 'le_teff':teff_mcmc[2], + 'logg':logg_mcmc[0], 'e_logg':max(logg_mcmc[1], logg_mcmc[2]), 'ue_logg':logg_mcmc[1], 'le_logg':logg_mcmc[2], + 'cflux':A_mcmc[0], 'e_cflux':max(A_mcmc[1], A_mcmc[2]), 'ue_cflux':A_mcmc[1], 'le_cflux':A_mcmc[2], + 'cwave':B_mcmc[0], 'e_cwave':max(B_mcmc[1], B_mcmc[2]), 'ue_cwave':B_mcmc[1], 'le_cwave':B_mcmc[2], + 'cnoise':N_mcmc[0],'e_cnoise':max(N_mcmc[1], N_mcmc[2]), 'ue_cnoise':N_mcmc[1], 'le_cnoise':N_mcmc[2], + 'wave_cal_err':wave_cal_err, }, ignore_index=True) + +cat.to_excel(save_to_path + '/mcmc_summary.xlsx', index=False) +''' diff --git a/smart/forward_model/run_mcmc_science_jwst_nirspec_flattened.py b/smart/forward_model/run_mcmc_science_jwst_nirspec_flattened.py new file mode 100644 index 0000000..592106f --- /dev/null +++ b/smart/forward_model/run_mcmc_science_jwst_nirspec_flattened.py @@ -0,0 +1,762 @@ +import pandas as pd +import numpy as np +import matplotlib +#matplotlib.use('Agg') +import matplotlib.pyplot as plt +#plt.ioff() +import matplotlib.gridspec as gridspec +from astropy.io import fits +import emcee +#from schwimmbad import MPIPool +from multiprocessing import Pool +from multiprocessing import set_start_method +import smart +import model_fit +import mcmc_utils +import corner +import os +import sys +import time +import copy +import argparse +import json +import ast +import warnings +from datetime import date, datetime +warnings.filterwarnings("ignore") +import astropy.units as u +from astropy.units import cds +cds.enable() +from astropy.constants import c as speedoflight + +############################################################################################## +## This is the script to make the code multiprocessing, using arcparse to pass the arguments +## The code is run with 8 parameters, including Teff, logg, RV, vsini, telluric alpha, and +## nuisance parameters for wavelength, flux and noise. +############################################################################################## + +parser = argparse.ArgumentParser(description="Run the forward-modeling routine for science files", + usage="run_mcmc_science.py order date_obs sci_data_name data_path save_to_path lsf priors limits") + +#parser.add_argument("source",metavar='src',type=str, +# default=None, help="source name", nargs="+") + +parser.add_argument("order",metavar='o',type=str, + default=None, help="order", nargs="+") + +parser.add_argument("date_obs",metavar='dobs',type=str, + default=None, help="source name", nargs="+") + +parser.add_argument("sci_data_name",metavar='sci',type=str, + default=None, help="science data name", nargs="+") + +#parser.add_argument("tell_data_name",metavar='tell',type=str, +# default=None, help="telluric data name", nargs="+") + +parser.add_argument("data_path",type=str, + default=None, help="science data path", nargs="+") + +#parser.add_argument("tell_path",type=str, +# default=None, help="telluric data path", nargs="+") + +parser.add_argument("save_to_path",type=str, + default=None, help="output path", nargs="+") + +parser.add_argument("lsf",type=float, + default=None, help="line spread function", nargs="+") + +parser.add_argument("-instrument",metavar='--inst',type=str, + default='nirspec', help="spectrometer name of the instrument; default nirspec") + +parser.add_argument("-outlier_rejection",metavar='--rej',type=float, + default=3.0, help="outlier rejection based on the multiple of standard deviation of the residual; default 3.0") + +parser.add_argument("-ndim",type=int, + default=8, help="number of dimension; default 8") + +parser.add_argument("-nwalkers",type=int, + default=50, help="number of walkers of MCMC; default 50") + +parser.add_argument("-step",type=int, + default=600, help="number of steps of MCMC; default 600") + +parser.add_argument("-burn",type=int, + default=500, help="burn of MCMC; default 500") + +parser.add_argument("-moves",type=float, + default=2.0, help="moves of MCMC; default 2.0") + +parser.add_argument("-pixel_start",type=int, + default=10, help="starting pixel index for the science data; default 10") + +parser.add_argument("-pixel_end",type=int, + default=-40, help="ending pixel index for the science data; default -40") + +#parser.add_argument("-pwv",type=float, +# default=0.5, help="precipitable water vapor for telluric profile; default 0.5 mm") + +#parser.add_argument("-alpha_tell",type=float, +# default=1.0, help="telluric alpha; default 1.0") + +parser.add_argument("-applymask",type=bool, + default=False, help="apply a simple mask based on the STD of the average flux; default is False") + +parser.add_argument("-plot_show",type=bool, + default=False, help="show the MCMC plots; default is False") + +parser.add_argument("-coadd",type=bool, + default=False, help="coadd the spectra; default is False") + +parser.add_argument("-coadd_sp_name",type=str, + default=None, help="name of the coadded spectra") + +parser.add_argument("-modelset",type=str, + default='btsettl08', help="model set; default is btsettl08") + +parser.add_argument("-final_mcmc", action='store_true', help="run final mcmc; default False") + +parser.add_argument("-include_fringe_model", action='store_true', help="model the fringe pattern; default False") + +args = parser.parse_args() + +###################################################################################################### + +#source = str(args.source[0]) +order = str(args.order[0]) +instrument = str(args.instrument) +date_obs = str(args.date_obs[0]) +sci_data_name = str(args.sci_data_name[0]) +data_path = str(args.data_path[0]) +#tell_data_name = str(args.tell_data_name[0]) +#tell_path = str(args.tell_path[0]) +save_to_path_base = str(args.save_to_path[0]) +lsf0 = float(args.lsf[0]) +ndim, nwalkers, step = int(args.ndim), int(args.nwalkers), int(args.step) +burn = int(args.burn) +moves = float(args.moves) +applymask = args.applymask +pixel_start, pixel_end = int(args.pixel_start), int(args.pixel_end) +#pwv = float(args.pwv) +#alpha_tell = float(args.alpha_tell[0]) +plot_show = args.plot_show +coadd = args.coadd +outlier_rejection = float(args.outlier_rejection) +modelset = str(args.modelset) +final_mcmc = args.final_mcmc +include_fringe_model = args.include_fringe_model + +if final_mcmc: + #save_to_path1 = save_to_path_base + '/init_mcmc' + save_to_path = save_to_path_base + '/final_mcmc' + +else: + save_to_path = save_to_path_base + '/init_mcmc' + +# date +today = date.today() +now = datetime.now() +dt_string = now.strftime("%H:%M:%S") + +##################################### + +print('MASK', applymask) +print(sci_data_name) +print(data_path) +print(data_path + sci_data_name + '.fits') +#sys.exit() +hdu = fits.open(data_path + sci_data_name + '.fits') +print(hdu.info()) +wave = hdu[0].data*10000 +flux = hdu[1].data +noise = hdu[2].data +ind = np.where( + (flux > 0) & (~np.isnan(flux) + #& ( (wave < 41000) | (wave > 44000) ) + ) ) +wave = wave[ind] * u.angstrom +flux = flux[ind] * 1e6 * u.Jy.cgs +noise = noise[ind] * 1e6 * u.Jy.cgs +# convert to flux density +flux *= speedoflight.cgs / (wave.to(u.m) * wave.to(u.angstrom)) +noise *= speedoflight.cgs / (wave.to(u.m) * wave.to(u.angstrom)) +flux = flux.to(u.erg/u.s/u.cm**2/u.angstrom) +noise = noise.to(u.erg/u.s/u.cm**2/u.angstrom) +''' +print(wave) +print(flux) +print(noise) +plt.plot(wave, flux) +plt.show() +''' +data = smart.Spectrum(flux=flux.value, wave=wave.value, noise=noise.value, path=data_path, order=order, applymask=applymask, instrument=instrument) +#data = smart.Spectrum(name=sci_data_name, order=order, path=data_path, applymask=applymask, instrument=instrument) + +import scipy as sp +smoothfluxmed = sp.ndimage.filters.uniform_filter(data.flux, size=80) # smooth by this many spectral bins + +data.flux /= smoothfluxmed +data.noise /= smoothfluxmed + +sci_data = data + + +""" +MCMC run for the science spectra. See the parameters in the makeModel function. + +Parameters +---------- + +sci_data : sepctrum object + science data + +tell_data : spectrum object + telluric data for calibrating the science spectra + +priors : dic + keys are teff_min, teff_max, logg_min, logg_max, vsini_min, vsini_max, rv_min, rv_max, + am_min, am_max, pwv_min, pwv_max, A_min, A_max, B_min, B_max + +Optional Parameters +------------------- + +limits : dic + mcmc limits with the same format as the input priors + +ndim : int + mcmc dimension + +nwalkers : int + number of walkers + + step : int + number of steps + + burn : int + burn for the mcmc + + moves : float + stretch parameter for the mcmc. The default is 2.0 based on the emcee package + + pixel_start : int + starting pixel number for the spectra in the MCMC + + pixel_end : int + ending pixel number for the spectra in the MCMC + + alpha_tell : float + power of telluric spectra for estimating the line spread function of the NIRSPEC instrument + + modelset : str + 'btsettl08' or 'phoenixaces' model sets + + save_to_path: str + path to savr the MCMC output + +""" + +if save_to_path is not None: + if not os.path.exists(save_to_path): + os.makedirs(save_to_path) +else: + save_to_path = '.' + +#if limits is None: limits = priors + +data = copy.deepcopy(sci_data) + + +# barycentric corrction +#barycorr = smart.barycorr(data.header).value +#print("barycorr:",barycorr) + +## read the input custom mask and priors +lines = open(save_to_path+'/mcmc_parameters.txt').read().splitlines() +custom_mask = json.loads(lines[3].split('custom_mask')[1]) +priors = ast.literal_eval(lines[4].split('priors ')[1]) +barycorr = json.loads(lines[11].split('barycorr')[1]) +#print(priors) +#sys.exit() + +# no logg 5.5 for teff lower than 900 +if 'btsettl08' in modelset.lower() and priors['teff_min'] < 900: logg_max = 5.0 +else: logg_max = 5.5 + +# limit of the flux nuisance parameter: 5 percent of the median flux +A_const = 0.05 * abs(np.median(data.flux)) +A_const = 100 + +if 'btsettl08' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,500), 'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':50, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + +elif modelset.lower() == 'phoenix-btsettl-cifist2011-2015': + limits = { + 'teff_min':max(priors['teff_min']-300,1200),'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':50, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + + +elif 'sonora' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,200), 'teff_max':min(priors['teff_max']+300,2400), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':50, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + +elif modelset.lower() == 'phoenixaces': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,10000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':50, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + + + +# HIRES wavelength calibration is not that precise, release the constraint for the wavelength offset nuisance parameter +if data.instrument == 'hires': + limits['B_min'] = -3.0 # Angstrom + limits['B_max'] = +3.0 # Angstrom + +if final_mcmc: + limits['rv_min'] = priors['rv_min'] - 10 + limits['rv_max'] = priors['rv_max'] + 10 + +## apply a custom mask +#data.mask_custom(custom_mask=custom_mask) + +## add a pixel label for plotting +length1 = len(data.flux) +pixel = np.delete(np.arange(length1), data.mask) +pixel = pixel[pixel_start:pixel_end] +print('PIXELS:', pixel_start, pixel_end) + +### mask the end pixels +data.wave = data.wave[pixel_start:pixel_end] +data.flux = data.flux[pixel_start:pixel_end] +data.noise = data.noise[pixel_start:pixel_end] + + + +# log file +log_path = save_to_path + '/mcmc_parameters.txt' + + +######################################################################################### +## for multiprocessing +######################################################################################### +print('Modelset:', modelset) +print('Instrument:', instrument) +print('include_fringe_model', include_fringe_model) +print(lsf0) + +def lnlike(theta, data, lsf0): + """ + Log-likelihood, computed from chi-squared. + + Parameters + ---------- + theta + lsf + data + + Returns + ------- + -0.5 * chi-square + sum of the log of the noise + + """ + + ## Parameters MCMC + #print('THETA:', theta) + teff, logg, rv, A, N, lsf = theta #N noise prefactor + #teff, logg, vsini, rv, , am, pwv, A, B, freq, amp, phase = theta + + model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, rv=rv, flux_mult=A, #wave_offset=B, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=include_fringe_model, instrument=instrument, tell=False, smooth=True) + ''' + print('MODEL') + print(model.wave) + print(model.flux) + print('DATA') + print(data.wave) + print(data.flux) + ''' + #print('CHI0') + #chisquare = smart.chisquare(data, model)/N**2 + chisquare = smart.chisquare(data, model) + #print('CHI', chisquare) + ''' + fig = plt.figure(1, figsize=(28,10)) + plt.suptitle('%0.1f %0.3f %0.3f %0.3f %0.3f %0.3f %0.3f'%(teff, logg, rv, A, B, N, lsf)) + ax1 = fig.add_subplot(211) + ax2 = fig.add_subplot(212) + ax1.plot(data.wave, data.flux, label='data', alpha=0.5) + ax1.plot(model.wave, model.flux, label='model', alpha=0.5) + ax1.legend() + ax2.plot(data.wave, data.flux, label='data', alpha=0.5) + ax2.plot(model.wave, model.flux, label='model', alpha=0.5) + ax2.set_xlim(44200, 45800) + plt.tight_layout() + plt.pause(0.1) + plt.close() + ''' + chi0 = -0.5 * np.sum( ( data.flux - model.flux )**2/(data.noise*N)**2 + np.log( (data.noise*N)**2) ) + return chi0#-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise)**2))) + +def lnprior(theta, limits=limits): + """ + Specifies a flat prior + """ + ## Parameters for theta + teff, logg, rv, A, N, lsf = theta + + if limits['teff_min'] < teff < limits['teff_max'] \ + and limits['logg_min'] < logg < limits['logg_max'] \ + and limits['rv_min'] < rv < limits['rv_max'] \ + and limits['A_min'] < A < limits['A_max']\ + and limits['N_min'] < N < limits['N_max']\ + and limits['lsf_min'] < lsf < limits['lsf_max']: + return 0.0 + + return -np.inf + +def lnprob(theta, data, lsf0): + #print('THETA0:', theta) + + lnp = lnprior(theta) + + if not np.isfinite(lnp): + return -np.inf + + return lnp + lnlike(theta, data, lsf0) + +pos = [np.array([ priors['teff_min'] + (priors['teff_max'] - priors['teff_min'] ) * np.random.uniform(), + priors['logg_min'] + (priors['logg_max'] - priors['logg_min'] ) * np.random.uniform(), + #priors['vsini_min'] + (priors['vsini_max'] - priors['vsini_min']) * np.random.uniform(), + priors['rv_min'] + (priors['rv_max'] - priors['rv_min'] ) * np.random.uniform(), + priors['A_min'] + (priors['A_max'] - priors['A_min']) * np.random.uniform(), + #priors['B_min'] + (priors['B_max'] - priors['B_min']) * np.random.uniform(), + priors['N_min'] + (priors['N_max'] - priors['N_min']) * np.random.uniform(), + priors['lsf_min'] + (priors['lsf_max'] - priors['lsf_min']) * np.random.uniform() + ]) for i in range(nwalkers)] + +## TEST + +print('Priors:',priors) +print('Limits:',limits) +''' +sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, moves=emcee.moves.KDEMove()) +time1 = time.time() +sampler.run_mcmc(pos, step, progress=True) +time2 = time.time() + +## multiprocessing +''' +set_start_method('fork') +with Pool() as pool: + #sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf, pwv), a=moves, pool=pool) + sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, pool=pool, + moves=emcee.moves.KDEMove()) + time1 = time.time() + sampler.run_mcmc(pos, step, progress=True) + time2 = time.time() + + +np.save(save_to_path + '/sampler_chain', sampler.chain[:, :, :]) + +samples = sampler.chain[:, :, :].reshape((-1, ndim)) + +np.save(save_to_path + '/samples', samples) + +print('total time: ',(time2-time1)/60,' min.') +print("Mean acceptance fraction: {0:.3f}".format(np.mean(sampler.acceptance_fraction))) +print(sampler.acceptance_fraction) +autocorr_time = sampler.get_autocorr_time(discard=burn, quiet=True) +print("Mean autocorrelation time: {0:.3f} steps".format(np.mean(autocorr_time))) +print(autocorr_time) + +# create plots +print('SAVE PATH:', save_to_path) +sampler_chain = np.load(save_to_path + '/sampler_chain.npy') +samples = np.load(save_to_path + '/samples.npy') + +ylabels = ["$T_{\mathrm{eff}} (K)$", + "$\log{g}$(dex)", + "$RV(km/s)$", + "$C_{F_{\lambda}}$ (cnt/s)", + "$C_\mathrm{Noise}$", + "LSF" + ] + + +## create walker plots +print('Creating walker plot') +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=10) +fig = plt.figure(tight_layout=True) +gs = gridspec.GridSpec(ndim, 1) +gs.update(hspace=0.1) + +for i in range(ndim): + ax = fig.add_subplot(gs[i, :]) + for j in range(nwalkers): + ax.plot(np.arange(1,int(step+1)), sampler_chain[j,:,i],'k',alpha=0.2) + ax.set_ylabel(ylabels[i]) +fig.align_labels() +plt.minorticks_on() +plt.xlabel('nstep') +plt.savefig(save_to_path+'/walker.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# create array triangle plots +triangle_samples = sampler_chain[:, burn:, :].reshape((-1, ndim)) +#print(triangle_samples.shape) + +# create the final spectra comparison +teff_mcmc, logg_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc = map(lambda v: (v[1], v[2]-v[1], v[1]-v[0]), + zip(*np.percentile(triangle_samples, [16, 50, 84], axis=0))) + + +print(teff_mcmc, logg_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc) + +# add the summary to the txt file + +# log file +log_path2 = save_to_path + '/mcmc_result.txt' + +file_log2 = open(log_path2,"w+") +file_log2.write("teff_mcmc {}\n".format(str(teff_mcmc[0]))) +file_log2.write("logg_mcmc {}\n".format(str(logg_mcmc[0]))) +#file_log2.write("vsini_mcmc {}\n".format(str(vsini_mcmc[0]))) +file_log2.write("rv_mcmc {}\n".format(str(rv_mcmc[0]+barycorr))) +#file_log2.write("am_mcmc {}\n".format(str(am_mcmc[0]))) +#file_log2.write("pwv_mcmc {}\n".format(str(pwv_mcmc[0]))) +file_log2.write("A_mcmc {}\n".format(str(A_mcmc[0]))) +#file_log2.write("B_mcmc {}\n".format(str(B_mcmc[0]))) +file_log2.write("N_mcmc {}\n".format(str(N_mcmc[0]))) +file_log2.write("lsf_mcmc {}\n".format(str(lsf_mcmc[0]))) +file_log2.write("teff_mcmc_e {}\n".format(str(max(abs(teff_mcmc[1]), abs(teff_mcmc[2]))))) +file_log2.write("logg_mcmc_e {}\n".format(str(max(abs(logg_mcmc[1]), abs(logg_mcmc[2]))))) +#file_log2.write("vsini_mcmc_e {}\n".format(str(max(abs(vsini_mcmc[1]), abs(vsini_mcmc[2]))))) +file_log2.write("rv_mcmc_e {}\n".format(str(max(abs(rv_mcmc[1]), abs(rv_mcmc[2]))))) +#file_log2.write("am_mcmc_e {}\n".format(str(max(abs(am_mcmc[1]), abs(am_mcmc[2]))))) +#file_log2.write("pwv_mcmc_e {}\n".format(str(max(abs(pwv_mcmc[1]), abs(pwv_mcmc[2]))))) +file_log2.write("A_mcmc_e {}\n".format(str(max(abs(A_mcmc[1]), abs(A_mcmc[2]))))) +#file_log2.write("B_mcmc_e {}\n".format(str(max(abs(B_mcmc[1]), abs(B_mcmc[2]))))) +file_log2.write("N_mcmc_e {}\n".format(str(max(abs(N_mcmc[1]), abs(N_mcmc[2]))))) +file_log2.write("lsf_mcmc_e {}\n".format(str(max(abs(lsf_mcmc[1]), abs(lsf_mcmc[2]))))) +# upper and lower uncertainties +# upper uncertainties +file_log2.write("teff_mcmc_ue {}\n".format(str(abs(teff_mcmc[1])))) +file_log2.write("logg_mcmc_ue {}\n".format(str(abs(logg_mcmc[1])))) +#file_log2.write("vsini_mcmc_ue {}\n".format(str(abs(vsini_mcmc[1])))) +file_log2.write("rv_mcmc_ue {}\n".format(str(abs(rv_mcmc[1])))) +#file_log2.write("am_mcmc_ue {}\n".format(str(abs(am_mcmc[1])))) +#file_log2.write("pwv_mcmc_ue {}\n".format(str(abs(pwv_mcmc[1])))) +file_log2.write("A_mcmc_ue {}\n".format(str(abs(A_mcmc[1])))) +#file_log2.write("B_mcmc_ue {}\n".format(str(abs(B_mcmc[1])))) +file_log2.write("N_mcmc_ue {}\n".format(str(abs(N_mcmc[1])))) +file_log2.write("lsf_mcmc_ue {}\n".format(str(abs(lsf_mcmc[1])))) +# lower uncertainties +file_log2.write("teff_mcmc_le {}\n".format(str(abs(teff_mcmc[2])))) +file_log2.write("logg_mcmc_le {}\n".format(str(abs(logg_mcmc[2])))) +#file_log2.write("vsini_mcmc_le {}\n".format(str(abs(vsini_mcmc[2])))) +file_log2.write("rv_mcmc_le {}\n".format(str(abs(rv_mcmc[2])))) +#file_log2.write("am_mcmc_le {}\n".format(str(abs(am_mcmc[2])))) +#file_log2.write("pwv_mcmc_le {}\n".format(str(abs(pwv_mcmc[2])))) +file_log2.write("A_mcmc_le {}\n".format(str(abs(A_mcmc[2])))) +#file_log2.write("B_mcmc_le {}\n".format(str(abs(B_mcmc[2])))) +file_log2.write("N_mcmc_le {}\n".format(str(abs(N_mcmc[2])))) +file_log2.write("lsf_mcmc_le {}\n".format(str(abs(lsf_mcmc[2])))) +file_log2.close() + +#print(teff_mcmc, logg_mcmc, vsini_mcmc, rv_mcmc, am_mcmc, pwv_mcmc, A_mcmc, B_mcmc, N_mcmc) + +triangle_samples[:,2] += barycorr + +## triangular plots +print('Creating corner plot') +plt.rc('font', family='sans-serif') +fig = corner.corner(triangle_samples, + labels=ylabels, + truths=[teff_mcmc[0], + logg_mcmc[0], + rv_mcmc[0]+barycorr, + A_mcmc[0], + N_mcmc[0], + lsf_mcmc[0] + ], + quantiles=[0.16, 0.84], + label_kwargs={"fontsize": 20}) +plt.minorticks_on() +fig.savefig(save_to_path+'/triangle.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +teff = teff_mcmc[0] +logg = logg_mcmc[0] +z = 0.0 +#vsini = vsini_mcmc[0] +rv = rv_mcmc[0] +A = A_mcmc[0] +#B = B_mcmc[0] +N = N_mcmc[0] +lsf = lsf_mcmc[0] + +print('Creating model and data plot') +model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, rv=rv, flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, + include_fringe_model=False, instrument=instrument, tell=False, smooth=True) + +fig = plt.figure(figsize=(16,6)) +ax1 = fig.add_subplot(111) +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=15) +diff = data.flux-model.flux +ax1.plot(model.wave, 10*np.std(diff) + model.flux, color='C3', linestyle='-', label='model',alpha=0.8) +#ax1.plot(model_notell.wave,model_notell.flux, color='C0', linestyle='-', label='model no telluric',alpha=0.8) +ax1.plot(data.wave, 10*np.std(diff) + data.flux,'k-', label='data',alpha=0.5) +ax1.plot(data.wave, diff,'k-',alpha=0.8, label='residual') +#N=1 +plt.fill_between(data.wave,-data.noise,data.noise,facecolor='C1',alpha=0.5) +plt.fill_between(data.wave,-data.noise*N,data.noise*N,facecolor='C0',alpha=0.5) +plt.axhline(y=0, color='k', linestyle=':',linewidth=0.5) +#plt.ylim(-np.max(np.append(np.abs(data.noise),np.abs(data.flux-model.flux)))*1.2,np.max(data.flux)*1.2) +plt.ylabel("Flux ($cnts/s$)",fontsize=15) +plt.xlabel("$\lambda$ ($\AA$)",fontsize=15) +#plt.figtext(0.89,0.85,str(data.header['OBJECT'])+' '+data.name+' O'+str(data.order), +# color='k', +# horizontalalignment='right', +# verticalalignment='center', +# fontsize=15) +plt.figtext(0.89,0.82,"$Teff \, {0}^{{+{1}}}_{{-{2}}}/ logg \, {3}^{{+{4}}}_{{-{5}}}/ en \, 0.0/ RV \, {6}^{{+{7}}}_{{-{8}}}$".format(\ + round(teff_mcmc[0]), + round(teff_mcmc[1]), + round(teff_mcmc[2]), + round(logg_mcmc[0],1), + round(logg_mcmc[1],3), + round(logg_mcmc[2],3), + round(rv_mcmc[0]+barycorr,2), + round(rv_mcmc[1],2), + round(rv_mcmc[2],2)), + color='C0', + horizontalalignment='right', + verticalalignment='center', + fontsize=12) +plt.figtext(0.89,0.79,r"$\chi^2$ = {}, DOF = {}".format(\ + round(smart.chisquare(data,model)), round(len(data.wave-ndim)/3)), +color='k', +horizontalalignment='right', +verticalalignment='center', +fontsize=12) +plt.legend(loc=4) +plt.minorticks_on() + +ax2 = ax1.twiny() +ax2.plot(pixel, data.flux, color='w', alpha=0) +ax2.set_xlabel('Pixel',fontsize=15) +ax2.tick_params(labelsize=15) +ax2.set_xlim(pixel[0], pixel[-1]) +ax2.minorticks_on() + +#plt.legend() +plt.savefig(save_to_path + '/spectrum.png', dpi=300, bbox_inches='tight') +plt.savefig(save_to_path + '/spectrum.pdf', bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# chi2 and dof in the log +log_path = save_to_path + '/mcmc_parameters.txt' +file_log = open(log_path,"a") +file_log.write("*** Below is the summary *** \n") +file_log.write("total_time {} min\n".format(str((time2-time1)/60))) +file_log.write("mean_acceptance_fraction {0:.3f} \n".format(np.mean(sampler.acceptance_fraction))) +file_log.write("mean_autocorrelation_time {0:.3f} \n".format(np.mean(autocorr_time))) +file_log.write("chi2 {} \n".format(round(smart.chisquare(data,model)))) +file_log.write("dof {} \n".format(round(len(data.wave-ndim)/3))) +file_log.write("teff_mcmc {} K\n".format(str(teff_mcmc))) +file_log.write("logg_mcmc {} dex (cgs)\n".format(str(logg_mcmc))) +#file_log.write("vsini_mcmc {} km/s\n".format(str(vsini_mcmc))) +file_log.write("rv_mcmc {} km/s\n".format(str(rv_mcmc))) +#file_log.write("am_mcmc {}\n".format(str(am_mcmc))) +#file_log.write("pwv_mcmc {}\n".format(str(pwv_mcmc))) +file_log.write("A_mcmc {}\n".format(str(A_mcmc))) +#file_log.write("B_mcmc {}\n".format(str(B_mcmc))) +file_log.write("N_mcmc {}\n".format(str(N_mcmc))) +file_log.write("lsf_mcmc {}\n".format(str(lsf_mcmc))) +file_log.close() + +''' +# excel summary file +cat = pd.DataFrame(columns=['date_obs','date_name','tell_name','data_path''save_path', + 'model_date','model_time','data_mask','order','coadd','med_snr','lsf', + 'barycorr','modelset','priors','limits','ndim','nwalkers','step','burn', + 'rv','e_rv','ue_rv','le_rv',#'vsini','e_vsini','ue_vsini','le_vsini', + 'teff','e_teff','ue_teff','le_teff','logg','e_logg','ue_logg','le_logg', + 'cflux','e_cflux','ue_cflux','le_cflux',#'cwave','e_cwave','ue_cwave','le_cwave', + 'cnoise','e_cnoise','ue_cnoise','le_cnoise', + 'wave_cal_err','chi2','dof','acceptance_fraction','autocorr_time']) + +''' +med_snr = np.nanmedian(data.flux/data.noise) +if instrument == 'nirspec': + wave_cal_err = tell_sp.header['STD'] +else: + wave_cal_err = np.nan +''' +cat = pd.DataFrame({'date_obs':date_obs,'date_name':sci_data_name,#'tell_name':tell_data_name, + 'data_path':data_path,#'tell_path':tell_path, + 'save_path':save_to_path, + 'model_date':today.isoformat(),'model_time':dt_string,'data_mask':custom_mask, + #'order':order,'coadd':coadd,'mjd':mjd, + 'med_snr':med_snr,'lsf':lsf, 'barycorr':barycorr, + 'modelset':modelset, 'priors':priors, 'limits':limits, + 'ndim':ndim, 'nwalkers':nwalkers,'step':step, 'burn':burn, + 'rv':rv_mcmc[0]+barycorr, 'e_rv':max(rv_mcmc[1], rv_mcmc[2]), 'ue_rv':rv_mcmc[1], 'le_rv':rv_mcmc[2], + #'vsini':vsini_mcmc[0], 'e_vsini':max(vsini_mcmc[1], vsini_mcmc[2]), 'ue_vsini':vsini_mcmc[1], 'le_vsini':vsini_mcmc[2], + 'teff':teff_mcmc[0], 'e_teff':max(teff_mcmc[1],teff_mcmc[2]), 'ue_teff':teff_mcmc[1], 'le_teff':teff_mcmc[2], + 'logg':logg_mcmc[0], 'e_logg':max(logg_mcmc[1], logg_mcmc[2]), 'ue_logg':logg_mcmc[1], 'le_logg':logg_mcmc[2], + #'am':am_mcmc[0], 'e_am':max(am_mcmc[1], am_mcmc[2]), 'ue_am':am_mcmc[1], 'le_am':am_mcmc[2], + #'pwv':pwv_mcmc[0], 'e_pwv':max(pwv_mcmc[1], pwv_mcmc[2]), 'ue_pwv':pwv_mcmc[1], 'le_pwv':pwv_mcmc[2], + 'cflux':A_mcmc[0], 'e_cflux':max(A_mcmc[1], A_mcmc[2]), 'ue_cflux':A_mcmc[1], 'le_cflux':A_mcmc[2], + #'cwave':B_mcmc[0], 'e_cwave':max(B_mcmc[1], B_mcmc[2]), 'ue_cwave':B_mcmc[1], 'le_cwave':B_mcmc[2], + 'cnoise':N_mcmc[0],'e_cnoise':max(N_mcmc[1], N_mcmc[2]), 'ue_cnoise':N_mcmc[1], 'le_cnoise':N_mcmc[2], + 'wave_cal_err':wave_cal_err, }, index=[0]) + +cat.to_excel(save_to_path + '/mcmc_summary.xlsx', index=False) +''' diff --git a/smart/forward_model/run_mcmc_science_jwst_nirspec_flattened_kzz.py b/smart/forward_model/run_mcmc_science_jwst_nirspec_flattened_kzz.py new file mode 100644 index 0000000..583e8ba --- /dev/null +++ b/smart/forward_model/run_mcmc_science_jwst_nirspec_flattened_kzz.py @@ -0,0 +1,817 @@ +import pandas as pd +import numpy as np +import matplotlib +#matplotlib.use('Agg') +import matplotlib.pyplot as plt +#plt.ioff() +import matplotlib.gridspec as gridspec +from astropy.io import fits +import emcee +#from schwimmbad import MPIPool +from multiprocessing import Pool +from multiprocessing import set_start_method +import smart +import model_fit +import mcmc_utils +import corner +import os +import sys +import time +import copy +import argparse +import json +import ast +import warnings +from datetime import date, datetime +warnings.filterwarnings("ignore") +import astropy.units as u +from astropy.units import cds +cds.enable() +from astropy.constants import c as speedoflight + +############################################################################################## +## This is the script to make the code multiprocessing, using arcparse to pass the arguments +## The code is run with 8 parameters, including Teff, logg, RV, vsini, telluric alpha, and +## nuisance parameters for wavelength, flux and noise. +############################################################################################## + +parser = argparse.ArgumentParser(description="Run the forward-modeling routine for science files", + usage="run_mcmc_science.py order date_obs sci_data_name data_path save_to_path lsf priors limits") + +#parser.add_argument("source",metavar='src',type=str, +# default=None, help="source name", nargs="+") + +parser.add_argument("order",metavar='o',type=str, + default=None, help="order", nargs="+") + +parser.add_argument("date_obs",metavar='dobs',type=str, + default=None, help="source name", nargs="+") + +parser.add_argument("sci_data_name",metavar='sci',type=str, + default=None, help="science data name", nargs="+") + +#parser.add_argument("tell_data_name",metavar='tell',type=str, +# default=None, help="telluric data name", nargs="+") + +parser.add_argument("data_path",type=str, + default=None, help="science data path", nargs="+") + +#parser.add_argument("tell_path",type=str, +# default=None, help="telluric data path", nargs="+") + +parser.add_argument("save_to_path",type=str, + default=None, help="output path", nargs="+") + +parser.add_argument("lsf",type=float, + default=None, help="line spread function", nargs="+") + +parser.add_argument("-instrument",metavar='--inst',type=str, + default='nirspec', help="spectrometer name of the instrument; default nirspec") + +parser.add_argument("-outlier_rejection",metavar='--rej',type=float, + default=3.0, help="outlier rejection based on the multiple of standard deviation of the residual; default 3.0") + +parser.add_argument("-ndim",type=int, + default=8, help="number of dimension; default 8") + +parser.add_argument("-nwalkers",type=int, + default=50, help="number of walkers of MCMC; default 50") + +parser.add_argument("-step",type=int, + default=600, help="number of steps of MCMC; default 600") + +parser.add_argument("-burn",type=int, + default=500, help="burn of MCMC; default 500") + +parser.add_argument("-moves",type=float, + default=2.0, help="moves of MCMC; default 2.0") + +parser.add_argument("-pixel_start",type=int, + default=10, help="starting pixel index for the science data; default 10") + +parser.add_argument("-pixel_end",type=int, + default=-40, help="ending pixel index for the science data; default -40") + +#parser.add_argument("-pwv",type=float, +# default=0.5, help="precipitable water vapor for telluric profile; default 0.5 mm") + +#parser.add_argument("-alpha_tell",type=float, +# default=1.0, help="telluric alpha; default 1.0") + +parser.add_argument("-applymask",type=bool, + default=False, help="apply a simple mask based on the STD of the average flux; default is False") + +parser.add_argument("-plot_show",type=bool, + default=False, help="show the MCMC plots; default is False") + +parser.add_argument("-coadd",type=bool, + default=False, help="coadd the spectra; default is False") + +parser.add_argument("-coadd_sp_name",type=str, + default=None, help="name of the coadded spectra") + +parser.add_argument("-modelset",type=str, + default='btsettl08', help="model set; default is btsettl08") + +parser.add_argument("-final_mcmc", action='store_true', help="run final mcmc; default False") + +parser.add_argument("-include_fringe_model", action='store_true', help="model the fringe pattern; default False") + +args = parser.parse_args() + +###################################################################################################### + +#source = str(args.source[0]) +order = str(args.order[0]) +instrument = str(args.instrument) +date_obs = str(args.date_obs[0]) +sci_data_name = str(args.sci_data_name[0]) +data_path = str(args.data_path[0]) +#tell_data_name = str(args.tell_data_name[0]) +#tell_path = str(args.tell_path[0]) +save_to_path_base = str(args.save_to_path[0]) +lsf0 = float(args.lsf[0]) +ndim, nwalkers, step = int(args.ndim), int(args.nwalkers), int(args.step) +burn = int(args.burn) +moves = float(args.moves) +applymask = args.applymask +pixel_start, pixel_end = int(args.pixel_start), int(args.pixel_end) +#pwv = float(args.pwv) +#alpha_tell = float(args.alpha_tell[0]) +plot_show = args.plot_show +coadd = args.coadd +outlier_rejection = float(args.outlier_rejection) +modelset = str(args.modelset) +final_mcmc = args.final_mcmc +include_fringe_model = args.include_fringe_model + +if final_mcmc: + #save_to_path1 = save_to_path_base + '/init_mcmc' + save_to_path = save_to_path_base + '/final_mcmc' + +else: + save_to_path = save_to_path_base + '/init_mcmc' + +# date +today = date.today() +now = datetime.now() +dt_string = now.strftime("%H:%M:%S") + +##################################### + +print('MASK', applymask) +print(sci_data_name) +print(data_path) +print(data_path + sci_data_name + '.fits') +#sys.exit() +hdu = fits.open(data_path + sci_data_name + '.fits') +print(hdu.info()) +wave = hdu[0].data*10000 +flux = hdu[1].data +noise = hdu[2].data +ind = np.where( + (flux > 0) & (~np.isnan(flux) + #& ( (wave < 41000) | (wave > 44000) ) + ) ) +wave = wave[ind] * u.angstrom +flux = flux[ind] * 1e6 * u.Jy.cgs +noise = noise[ind] * 1e6 * u.Jy.cgs +# convert to flux density +flux *= speedoflight.cgs / (wave.to(u.m) * wave.to(u.angstrom)) +noise *= speedoflight.cgs / (wave.to(u.m) * wave.to(u.angstrom)) +flux = flux.to(u.erg/u.s/u.cm**2/u.angstrom) +noise = noise.to(u.erg/u.s/u.cm**2/u.angstrom) +''' +print(wave) +print(flux) +print(noise) +plt.plot(wave, flux) +plt.show() +''' +data = smart.Spectrum(flux=flux.value, wave=wave.value, noise=noise.value, path=data_path, order=order, applymask=applymask, instrument=instrument) +#data = smart.Spectrum(name=sci_data_name, order=order, path=data_path, applymask=applymask, instrument=instrument) + +import scipy as sp +smoothfluxmed = sp.ndimage.filters.uniform_filter(data.flux, size=80) # smooth by this many spectral bins + +data.flux /= smoothfluxmed +data.noise /= smoothfluxmed + +sci_data = data + + +""" +MCMC run for the science spectra. See the parameters in the makeModel function. + +Parameters +---------- + +sci_data : sepctrum object + science data + +tell_data : spectrum object + telluric data for calibrating the science spectra + +priors : dic + keys are teff_min, teff_max, logg_min, logg_max, vsini_min, vsini_max, rv_min, rv_max, + am_min, am_max, pwv_min, pwv_max, A_min, A_max, B_min, B_max + +Optional Parameters +------------------- + +limits : dic + mcmc limits with the same format as the input priors + +ndim : int + mcmc dimension + +nwalkers : int + number of walkers + + step : int + number of steps + + burn : int + burn for the mcmc + + moves : float + stretch parameter for the mcmc. The default is 2.0 based on the emcee package + + pixel_start : int + starting pixel number for the spectra in the MCMC + + pixel_end : int + ending pixel number for the spectra in the MCMC + + alpha_tell : float + power of telluric spectra for estimating the line spread function of the NIRSPEC instrument + + modelset : str + 'btsettl08' or 'phoenixaces' model sets + + save_to_path: str + path to savr the MCMC output + +""" + +if save_to_path is not None: + if not os.path.exists(save_to_path): + os.makedirs(save_to_path) +else: + save_to_path = '.' + +#if limits is None: limits = priors + +data = copy.deepcopy(sci_data) + + +# barycentric corrction +#barycorr = smart.barycorr(data.header).value +#print("barycorr:",barycorr) + +## read the input custom mask and priors +lines = open(save_to_path+'/mcmc_parameters.txt').read().splitlines() +custom_mask = json.loads(lines[3].split('custom_mask')[1]) +priors = ast.literal_eval(lines[4].split('priors ')[1]) +barycorr = json.loads(lines[11].split('barycorr')[1]) +#print(priors) +#sys.exit() + +# no logg 5.5 for teff lower than 900 +if 'btsettl08' in modelset.lower() and priors['teff_min'] < 900: logg_max = 5.0 +else: logg_max = 5.5 + +# limit of the flux nuisance parameter: 5 percent of the median flux +A_const = 0.05 * abs(np.median(data.flux)) +A_const = 100 + +if 'btsettl08' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,500), 'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':50, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + +elif modelset.lower() == 'phoenix-btsettl-cifist2011-2015': + limits = { + 'teff_min':max(priors['teff_min']-300,1200),'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':50, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + + +elif 'sonora' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,200), 'teff_max':min(priors['teff_max']+300,2400), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':50, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + +elif modelset.lower() == 'phoenixaces': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,10000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':50, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + +elif 'barman' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,800), 'teff_max':min(priors['teff_max']+300,1200), + 'logg_min':4.5, 'logg_max':5.5, + 'kzz_min':1e2, 'kzz_max':1e8, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':50, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + +elif modelset.lower() == 'pheonix-newera-aces-cond-2023': + limits = { + 'teff_min':max(priors['teff_min']-300,800), 'teff_max':min(priors['teff_max']+300,1350), + 'logg_min':4., 'logg_max':5.5, + 'kzz_min':1e2, 'kzz_max':1e10, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':50, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + + + +# HIRES wavelength calibration is not that precise, release the constraint for the wavelength offset nuisance parameter +if data.instrument == 'hires': + limits['B_min'] = -3.0 # Angstrom + limits['B_max'] = +3.0 # Angstrom + +if final_mcmc: + limits['rv_min'] = priors['rv_min'] - 10 + limits['rv_max'] = priors['rv_max'] + 10 + +## apply a custom mask +#data.mask_custom(custom_mask=custom_mask) + +## add a pixel label for plotting +length1 = len(data.flux) +pixel = np.delete(np.arange(length1), data.mask) +pixel = pixel[pixel_start:pixel_end] +print('PIXELS:', pixel_start, pixel_end) + +### mask the end pixels +data.wave = data.wave[pixel_start:pixel_end] +data.flux = data.flux[pixel_start:pixel_end] +data.noise = data.noise[pixel_start:pixel_end] + + + +# log file +log_path = save_to_path + '/mcmc_parameters.txt' + + +######################################################################################### +## for multiprocessing +######################################################################################### +print('Modelset:', modelset) +print('Instrument:', instrument) +print('include_fringe_model', include_fringe_model) +print(lsf0) + +def lnlike(theta, data, lsf0): + """ + Log-likelihood, computed from chi-squared. + + Parameters + ---------- + theta + lsf + data + + Returns + ------- + -0.5 * chi-square + sum of the log of the noise + + """ + + ## Parameters MCMC + #print('THETA:', theta) + teff, logg, kzz, rv, A, N, lsf = theta #N noise prefactor + #teff, logg, vsini, rv, , am, pwv, A, B, freq, amp, phase = theta + + model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, kzz=kzz, rv=rv, flux_mult=A, #wave_offset=B, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=include_fringe_model, instrument=instrument, + tell=False, smooth=True) + ''' + print('MODEL') + print(model.wave) + print(model.flux) + print('DATA') + print(data.wave) + print(data.flux) + ''' + #print('CHI0') + #chisquare = smart.chisquare(data, model)/N**2 + chisquare = smart.chisquare(data, model) + #print('CHI', chisquare) + ''' + fig = plt.figure(1, figsize=(28,10)) + plt.suptitle('%0.1f %0.3f %0.3f %0.3f %0.3f %0.3f %0.3f'%(teff, logg, rv, A, B, N, lsf)) + ax1 = fig.add_subplot(211) + ax2 = fig.add_subplot(212) + ax1.plot(data.wave, data.flux, label='data', alpha=0.5) + ax1.plot(model.wave, model.flux, label='model', alpha=0.5) + ax1.legend() + ax2.plot(data.wave, data.flux, label='data', alpha=0.5) + ax2.plot(model.wave, model.flux, label='model', alpha=0.5) + ax2.set_xlim(44200, 45800) + plt.tight_layout() + #plt.show() + plt.pause(0.1) + plt.close() + ''' + chi0 = -0.5 * np.sum( ( data.flux - model.flux )**2/(data.noise*N)**2 + np.log( (data.noise*N)**2) ) + return chi0#-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise)**2))) + +def lnprior(theta, limits=limits): + """ + Specifies a flat prior + """ + ## Parameters for theta + teff, logg, kzz, rv, A, N, lsf = theta + #print(limits['teff_min'] < teff < limits['teff_max']) + #print(limits['logg_min'] < logg < limits['logg_max']) + #print(limits['kzz_min'] < kzz < limits['kzz_max']) + + if limits['teff_min'] < teff < limits['teff_max'] \ + and limits['logg_min'] < logg < limits['logg_max'] \ + and limits['kzz_min'] < kzz < limits['kzz_max'] \ + and limits['rv_min'] < rv < limits['rv_max'] \ + and limits['A_min'] < A < limits['A_max']\ + and limits['N_min'] < N < limits['N_max']\ + and limits['lsf_min'] < lsf < limits['lsf_max']: + return 0.0 + + return -np.inf + +def lnprob(theta, data, lsf0): + #print('THETA0:', theta) + + lnp = lnprior(theta) + #print(lnp) + + if not np.isfinite(lnp): + return -np.inf + + return lnp + lnlike(theta, data, lsf0) + +pos = [np.array([ priors['teff_min'] + (priors['teff_max'] - priors['teff_min'] ) * np.random.uniform(), + priors['logg_min'] + (priors['logg_max'] - priors['logg_min'] ) * np.random.uniform(), + 10**(np.log10(priors['kzz_min']) + (np.log10(priors['kzz_max']) - np.log10(priors['kzz_min']) ) * np.random.uniform()), + #priors['vsini_min'] + (priors['vsini_max'] - priors['vsini_min']) * np.random.uniform(), + priors['rv_min'] + (priors['rv_max'] - priors['rv_min'] ) * np.random.uniform(), + priors['A_min'] + (priors['A_max'] - priors['A_min']) * np.random.uniform(), + #priors['B_min'] + (priors['B_max'] - priors['B_min']) * np.random.uniform(), + priors['N_min'] + (priors['N_max'] - priors['N_min']) * np.random.uniform(), + priors['lsf_min'] + (priors['lsf_max'] - priors['lsf_min']) * np.random.uniform() + ]) for i in range(nwalkers)] + +## TEST + +print('Priors:',priors) +print('Limits:',limits) +''' +sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, moves=emcee.moves.KDEMove()) +time1 = time.time() +sampler.run_mcmc(pos, step, progress=True) +time2 = time.time() +''' +## multiprocessing + +set_start_method('fork') +with Pool() as pool: + #sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf, pwv), a=moves, pool=pool) + sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, pool=pool, + moves=emcee.moves.KDEMove()) + time1 = time.time() + sampler.run_mcmc(pos, step, progress=True) + time2 = time.time() + + +np.save(save_to_path + '/sampler_chain', sampler.chain[:, :, :]) + +samples = sampler.chain[:, :, :].reshape((-1, ndim)) + +np.save(save_to_path + '/samples', samples) + +print('total time: ',(time2-time1)/60,' min.') +print("Mean acceptance fraction: {0:.3f}".format(np.mean(sampler.acceptance_fraction))) +print(sampler.acceptance_fraction) +autocorr_time = sampler.get_autocorr_time(discard=burn, quiet=True) +print("Mean autocorrelation time: {0:.3f} steps".format(np.mean(autocorr_time))) +print(autocorr_time) + +# create plots +print('SAVE PATH:', save_to_path) +sampler_chain = np.load(save_to_path + '/sampler_chain.npy') +samples = np.load(save_to_path + '/samples.npy') + +ylabels = ["$T_{\mathrm{eff}} (K)$", + "$\log{g}$(dex)", + "log10(kzz)", + "$RV(km/s)$", + "$C_{F_{\lambda}}$ (cnt/s)", + "$C_\mathrm{Noise}$", + "LSF" + ] + + +## create walker plots +print('Creating walker plot') +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=10) +fig = plt.figure(tight_layout=True, figsize=(8,8)) +gs = gridspec.GridSpec(ndim, 1) +gs.update(hspace=0.1) + +for i in range(ndim): + ax = fig.add_subplot(gs[i, :]) + for j in range(nwalkers): + if i == 2: ax.plot(np.arange(1,int(step+1)), np.log10(sampler_chain[j,:,i]),'k',alpha=0.2) + else: ax.plot(np.arange(1,int(step+1)), sampler_chain[j,:,i],'k',alpha=0.2) + ax.set_ylabel(ylabels[i],fontsize=8) + ax.minorticks_on() +fig.align_labels() +plt.minorticks_on() +plt.xlabel('nstep') +plt.savefig(save_to_path+'/walker.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# create array triangle plots +triangle_samples = sampler_chain[:, burn:, :].reshape((-1, ndim)) +logkzz = np.log10(sampler_chain[:, burn:, 2].flatten()) +logkzz_mcmc = [np.percentile(logkzz, 50), np.percentile(logkzz, 84)-np.percentile(logkzz, 50), np.percentile(logkzz, 50)-np.percentile(logkzz, 16)] +print(logkzz_mcmc) +#print(triangle_samples.shape) + +# create the final spectra comparison +teff_mcmc, logg_mcmc, kzz_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc = map(lambda v: (v[1], v[2]-v[1], v[1]-v[0]), + zip(*np.percentile(triangle_samples, [16, 50, 84], axis=0))) + + +print(teff_mcmc, logg_mcmc, kzz_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc) + +# add the summary to the txt file + +# log file +log_path2 = save_to_path + '/mcmc_result.txt' + +file_log2 = open(log_path2,"w+") +file_log2.write("teff_mcmc {}\n".format(str(teff_mcmc[0]))) +file_log2.write("logg_mcmc {}\n".format(str(logg_mcmc[0]))) +file_log2.write("kzz_mcmc {}\n".format(str(kzz_mcmc[0]))) +#file_log2.write("vsini_mcmc {}\n".format(str(vsini_mcmc[0]))) +file_log2.write("rv_mcmc {}\n".format(str(rv_mcmc[0]+barycorr))) +#file_log2.write("am_mcmc {}\n".format(str(am_mcmc[0]))) +#file_log2.write("pwv_mcmc {}\n".format(str(pwv_mcmc[0]))) +file_log2.write("A_mcmc {}\n".format(str(A_mcmc[0]))) +#file_log2.write("B_mcmc {}\n".format(str(B_mcmc[0]))) +file_log2.write("N_mcmc {}\n".format(str(N_mcmc[0]))) +file_log2.write("lsf_mcmc {}\n".format(str(lsf_mcmc[0]))) +file_log2.write("teff_mcmc_e {}\n".format(str(max(abs(teff_mcmc[1]), abs(teff_mcmc[2]))))) +file_log2.write("logg_mcmc_e {}\n".format(str(max(abs(logg_mcmc[1]), abs(logg_mcmc[2]))))) +file_log2.write("kzz_mcmc_e {}\n".format(str(max(abs(kzz_mcmc[1]), abs(kzz_mcmc[2]))))) +#file_log2.write("vsini_mcmc_e {}\n".format(str(max(abs(vsini_mcmc[1]), abs(vsini_mcmc[2]))))) +file_log2.write("rv_mcmc_e {}\n".format(str(max(abs(rv_mcmc[1]), abs(rv_mcmc[2]))))) +#file_log2.write("am_mcmc_e {}\n".format(str(max(abs(am_mcmc[1]), abs(am_mcmc[2]))))) +#file_log2.write("pwv_mcmc_e {}\n".format(str(max(abs(pwv_mcmc[1]), abs(pwv_mcmc[2]))))) +file_log2.write("A_mcmc_e {}\n".format(str(max(abs(A_mcmc[1]), abs(A_mcmc[2]))))) +#file_log2.write("B_mcmc_e {}\n".format(str(max(abs(B_mcmc[1]), abs(B_mcmc[2]))))) +file_log2.write("N_mcmc_e {}\n".format(str(max(abs(N_mcmc[1]), abs(N_mcmc[2]))))) +file_log2.write("lsf_mcmc_e {}\n".format(str(max(abs(lsf_mcmc[1]), abs(lsf_mcmc[2]))))) +# upper and lower uncertainties +# upper uncertainties +file_log2.write("teff_mcmc_ue {}\n".format(str(abs(teff_mcmc[1])))) +file_log2.write("logg_mcmc_ue {}\n".format(str(abs(logg_mcmc[1])))) +file_log2.write("kzz_mcmc_ue {}\n".format(str(abs(kzz_mcmc[1])))) +#file_log2.write("vsini_mcmc_ue {}\n".format(str(abs(vsini_mcmc[1])))) +file_log2.write("rv_mcmc_ue {}\n".format(str(abs(rv_mcmc[1])))) +#file_log2.write("am_mcmc_ue {}\n".format(str(abs(am_mcmc[1])))) +#file_log2.write("pwv_mcmc_ue {}\n".format(str(abs(pwv_mcmc[1])))) +file_log2.write("A_mcmc_ue {}\n".format(str(abs(A_mcmc[1])))) +#file_log2.write("B_mcmc_ue {}\n".format(str(abs(B_mcmc[1])))) +file_log2.write("N_mcmc_ue {}\n".format(str(abs(N_mcmc[1])))) +file_log2.write("lsf_mcmc_ue {}\n".format(str(abs(lsf_mcmc[1])))) +# lower uncertainties +file_log2.write("teff_mcmc_le {}\n".format(str(abs(teff_mcmc[2])))) +file_log2.write("logg_mcmc_le {}\n".format(str(abs(logg_mcmc[2])))) +file_log2.write("kzz_mcmc_le {}\n".format(str(abs(kzz_mcmc[2])))) +#file_log2.write("vsini_mcmc_le {}\n".format(str(abs(vsini_mcmc[2])))) +file_log2.write("rv_mcmc_le {}\n".format(str(abs(rv_mcmc[2])))) +#file_log2.write("am_mcmc_le {}\n".format(str(abs(am_mcmc[2])))) +#file_log2.write("pwv_mcmc_le {}\n".format(str(abs(pwv_mcmc[2])))) +file_log2.write("A_mcmc_le {}\n".format(str(abs(A_mcmc[2])))) +#file_log2.write("B_mcmc_le {}\n".format(str(abs(B_mcmc[2])))) +file_log2.write("N_mcmc_le {}\n".format(str(abs(N_mcmc[2])))) +file_log2.write("lsf_mcmc_le {}\n".format(str(abs(lsf_mcmc[2])))) +file_log2.close() + +#print(teff_mcmc, logg_mcmc, vsini_mcmc, rv_mcmc, am_mcmc, pwv_mcmc, A_mcmc, B_mcmc, N_mcmc) + +triangle_samples[:,2] = np.log10(triangle_samples[:,2]) +triangle_samples[:,3] += barycorr + +## triangular plots +print('Creating corner plot') +plt.rc('font', family='sans-serif') +fig = corner.corner(triangle_samples, + labels=ylabels, + truths=[teff_mcmc[0], + logg_mcmc[0], + np.log10(kzz_mcmc[0]), + rv_mcmc[0]+barycorr, + A_mcmc[0], + N_mcmc[0], + lsf_mcmc[0] + ], + quantiles=[0.16, 0.84], + label_kwargs={"fontsize": 20}) +plt.minorticks_on() +fig.savefig(save_to_path+'/triangle.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +teff = teff_mcmc[0] +logg = logg_mcmc[0] +kzz = kzz_mcmc[0] +z = 0.0 +#vsini = vsini_mcmc[0] +rv = rv_mcmc[0] +A = A_mcmc[0] +#B = B_mcmc[0] +N = N_mcmc[0] +lsf = lsf_mcmc[0] + +print('Creating model and data plot') +model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, rv=rv, flux_mult=A, kzz=kzz, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, + include_fringe_model=False, instrument=instrument, tell=False, smooth=True) + +fig = plt.figure(figsize=(16,6)) +ax1 = fig.add_subplot(111) +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=15) +diff = data.flux-model.flux +ax1.plot(model.wave, 10*np.std(diff) + model.flux, color='C3', linestyle='-', label='model',alpha=0.8) +#ax1.plot(model_notell.wave,model_notell.flux, color='C0', linestyle='-', label='model no telluric',alpha=0.8) +ax1.plot(data.wave, 10*np.std(diff) + data.flux,'k-', label='data',alpha=0.5) +ax1.plot(data.wave, diff,'k-',alpha=0.8, label='residual') +#N=1 +plt.fill_between(data.wave,-data.noise,data.noise,facecolor='C1',alpha=0.5) +plt.fill_between(data.wave,-data.noise*N,data.noise*N,facecolor='C0',alpha=0.5) +plt.axhline(y=0, color='k', linestyle=':',linewidth=0.5) +#plt.ylim(-np.max(np.append(np.abs(data.noise),np.abs(data.flux-model.flux)))*1.2,np.max(data.flux)*1.2) +plt.ylabel("Flux ($cnts/s$)",fontsize=15) +plt.xlabel("$\lambda$ ($\AA$)",fontsize=15) +#plt.figtext(0.89,0.85,str(data.header['OBJECT'])+' '+data.name+' O'+str(data.order), +# color='k', +# horizontalalignment='right', +# verticalalignment='center', +# fontsize=15) +plt.figtext(0.89,0.82,"$Teff \, {0}^{{+{1}}}_{{-{2}}}/ logg \, {3}^{{+{4}}}_{{-{5}}}/ log10(kzz) \, {6}^{{+{7}}}_{{-{8}}}/ RV \, {9}^{{+{10}}}_{{-{11}}}$".format(\ + round(teff_mcmc[0]), + round(teff_mcmc[1]), + round(teff_mcmc[2]), + round(logg_mcmc[0],1), + round(logg_mcmc[1],3), + round(logg_mcmc[2],3), + round(logkzz_mcmc[0],3), + round(logkzz_mcmc[1],3), + round(logkzz_mcmc[2],3), + round(rv_mcmc[0]+barycorr,2), + round(rv_mcmc[1],2), + round(rv_mcmc[2],2)), + color='C0', + horizontalalignment='right', + verticalalignment='center', + fontsize=12) +plt.figtext(0.89,0.79,r"$\chi^2$ = {}, DOF = {}".format(\ + round(smart.chisquare(data,model)), round(len(data.wave-ndim)/3)), +color='k', +horizontalalignment='right', +verticalalignment='center', +fontsize=12) +plt.legend(loc=4) +plt.minorticks_on() + +ax2 = ax1.twiny() +ax2.plot(pixel, data.flux, color='w', alpha=0) +ax2.set_xlabel('Pixel',fontsize=15) +ax2.tick_params(labelsize=15) +ax2.set_xlim(pixel[0], pixel[-1]) +ax2.minorticks_on() + +#plt.legend() +plt.savefig(save_to_path + '/spectrum.png', dpi=300, bbox_inches='tight') +plt.savefig(save_to_path + '/spectrum.pdf', bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# chi2 and dof in the log +log_path = save_to_path + '/mcmc_parameters.txt' +file_log = open(log_path,"a") +file_log.write("*** Below is the summary *** \n") +file_log.write("total_time {} min\n".format(str((time2-time1)/60))) +file_log.write("mean_acceptance_fraction {0:.3f} \n".format(np.mean(sampler.acceptance_fraction))) +file_log.write("mean_autocorrelation_time {0:.3f} \n".format(np.mean(autocorr_time))) +file_log.write("chi2 {} \n".format(round(smart.chisquare(data,model)))) +file_log.write("dof {} \n".format(round(len(data.wave-ndim)/3))) +file_log.write("teff_mcmc {} K\n".format(str(teff_mcmc))) +file_log.write("logg_mcmc {} dex (cgs)\n".format(str(logg_mcmc))) +file_log.write("kzz_mcmc {}\n".format(str(kzz_mcmc))) +#file_log.write("vsini_mcmc {} km/s\n".format(str(vsini_mcmc))) +file_log.write("rv_mcmc {} km/s\n".format(str(rv_mcmc))) +#file_log.write("am_mcmc {}\n".format(str(am_mcmc))) +#file_log.write("pwv_mcmc {}\n".format(str(pwv_mcmc))) +file_log.write("A_mcmc {}\n".format(str(A_mcmc))) +#file_log.write("B_mcmc {}\n".format(str(B_mcmc))) +file_log.write("N_mcmc {}\n".format(str(N_mcmc))) +file_log.write("lsf_mcmc {}\n".format(str(lsf_mcmc))) +file_log.close() + +''' +# excel summary file +cat = pd.DataFrame(columns=['date_obs','date_name','tell_name','data_path''save_path', + 'model_date','model_time','data_mask','order','coadd','med_snr','lsf', + 'barycorr','modelset','priors','limits','ndim','nwalkers','step','burn', + 'rv','e_rv','ue_rv','le_rv',#'vsini','e_vsini','ue_vsini','le_vsini', + 'teff','e_teff','ue_teff','le_teff','logg','e_logg','ue_logg','le_logg', + 'cflux','e_cflux','ue_cflux','le_cflux',#'cwave','e_cwave','ue_cwave','le_cwave', + 'cnoise','e_cnoise','ue_cnoise','le_cnoise', + 'wave_cal_err','chi2','dof','acceptance_fraction','autocorr_time']) + +''' +med_snr = np.nanmedian(data.flux/data.noise) +if instrument == 'nirspec': + wave_cal_err = tell_sp.header['STD'] +else: + wave_cal_err = np.nan +''' +cat = pd.DataFrame({'date_obs':date_obs,'date_name':sci_data_name,#'tell_name':tell_data_name, + 'data_path':data_path,#'tell_path':tell_path, + 'save_path':save_to_path, + 'model_date':today.isoformat(),'model_time':dt_string,'data_mask':custom_mask, + #'order':order,'coadd':coadd,'mjd':mjd, + 'med_snr':med_snr,'lsf':lsf, 'barycorr':barycorr, + 'modelset':modelset, 'priors':priors, 'limits':limits, + 'ndim':ndim, 'nwalkers':nwalkers,'step':step, 'burn':burn, + 'rv':rv_mcmc[0]+barycorr, 'e_rv':max(rv_mcmc[1], rv_mcmc[2]), 'ue_rv':rv_mcmc[1], 'le_rv':rv_mcmc[2], + #'vsini':vsini_mcmc[0], 'e_vsini':max(vsini_mcmc[1], vsini_mcmc[2]), 'ue_vsini':vsini_mcmc[1], 'le_vsini':vsini_mcmc[2], + 'teff':teff_mcmc[0], 'e_teff':max(teff_mcmc[1],teff_mcmc[2]), 'ue_teff':teff_mcmc[1], 'le_teff':teff_mcmc[2], + 'logg':logg_mcmc[0], 'e_logg':max(logg_mcmc[1], logg_mcmc[2]), 'ue_logg':logg_mcmc[1], 'le_logg':logg_mcmc[2], + #'am':am_mcmc[0], 'e_am':max(am_mcmc[1], am_mcmc[2]), 'ue_am':am_mcmc[1], 'le_am':am_mcmc[2], + #'pwv':pwv_mcmc[0], 'e_pwv':max(pwv_mcmc[1], pwv_mcmc[2]), 'ue_pwv':pwv_mcmc[1], 'le_pwv':pwv_mcmc[2], + 'cflux':A_mcmc[0], 'e_cflux':max(A_mcmc[1], A_mcmc[2]), 'ue_cflux':A_mcmc[1], 'le_cflux':A_mcmc[2], + #'cwave':B_mcmc[0], 'e_cwave':max(B_mcmc[1], B_mcmc[2]), 'ue_cwave':B_mcmc[1], 'le_cwave':B_mcmc[2], + 'cnoise':N_mcmc[0],'e_cnoise':max(N_mcmc[1], N_mcmc[2]), 'ue_cnoise':N_mcmc[1], 'le_cnoise':N_mcmc[2], + 'wave_cal_err':wave_cal_err, }, index=[0]) + +cat.to_excel(save_to_path + '/mcmc_summary.xlsx', index=False) +''' diff --git a/smart/forward_model/run_mcmc_science_jwst_nirspec_kzz.py b/smart/forward_model/run_mcmc_science_jwst_nirspec_kzz.py new file mode 100644 index 0000000..91198a5 --- /dev/null +++ b/smart/forward_model/run_mcmc_science_jwst_nirspec_kzz.py @@ -0,0 +1,810 @@ +import pandas as pd +import numpy as np +import matplotlib +#matplotlib.use('Agg') +import matplotlib.pyplot as plt +#plt.ioff() +import matplotlib.gridspec as gridspec +from astropy.io import fits +import emcee +#from schwimmbad import MPIPool +from multiprocessing import Pool +from multiprocessing import set_start_method +import smart +import model_fit +import mcmc_utils +import corner +import os +import sys +import time +import copy +import argparse +import json +import ast +import warnings +from datetime import date, datetime +warnings.filterwarnings("ignore") +import astropy.units as u +from astropy.units import cds +cds.enable() +from astropy.constants import c as speedoflight + +############################################################################################## +## This is the script to make the code multiprocessing, using arcparse to pass the arguments +## The code is run with 8 parameters, including Teff, logg, RV, vsini, telluric alpha, and +## nuisance parameters for wavelength, flux and noise. +############################################################################################## + +parser = argparse.ArgumentParser(description="Run the forward-modeling routine for science files", + usage="run_mcmc_science.py order date_obs sci_data_name data_path save_to_path lsf priors limits") + +#parser.add_argument("source",metavar='src',type=str, +# default=None, help="source name", nargs="+") + +parser.add_argument("order",metavar='o',type=str, + default=None, help="order", nargs="+") + +parser.add_argument("date_obs",metavar='dobs',type=str, + default=None, help="source name", nargs="+") + +parser.add_argument("sci_data_name",metavar='sci',type=str, + default=None, help="science data name", nargs="+") + +#parser.add_argument("tell_data_name",metavar='tell',type=str, +# default=None, help="telluric data name", nargs="+") + +parser.add_argument("data_path",type=str, + default=None, help="science data path", nargs="+") + +#parser.add_argument("tell_path",type=str, +# default=None, help="telluric data path", nargs="+") + +parser.add_argument("save_to_path",type=str, + default=None, help="output path", nargs="+") + +parser.add_argument("lsf",type=float, + default=None, help="line spread function", nargs="+") + +parser.add_argument("-instrument",metavar='--inst',type=str, + default='nirspec', help="spectrometer name of the instrument; default nirspec") + +parser.add_argument("-outlier_rejection",metavar='--rej',type=float, + default=3.0, help="outlier rejection based on the multiple of standard deviation of the residual; default 3.0") + +parser.add_argument("-ndim",type=int, + default=8, help="number of dimension; default 8") + +parser.add_argument("-nwalkers",type=int, + default=50, help="number of walkers of MCMC; default 50") + +parser.add_argument("-step",type=int, + default=600, help="number of steps of MCMC; default 600") + +parser.add_argument("-burn",type=int, + default=500, help="burn of MCMC; default 500") + +parser.add_argument("-moves",type=float, + default=2.0, help="moves of MCMC; default 2.0") + +parser.add_argument("-pixel_start",type=int, + default=10, help="starting pixel index for the science data; default 10") + +parser.add_argument("-pixel_end",type=int, + default=-40, help="ending pixel index for the science data; default -40") + +#parser.add_argument("-pwv",type=float, +# default=0.5, help="precipitable water vapor for telluric profile; default 0.5 mm") + +#parser.add_argument("-alpha_tell",type=float, +# default=1.0, help="telluric alpha; default 1.0") + +parser.add_argument("-applymask",type=bool, + default=False, help="apply a simple mask based on the STD of the average flux; default is False") + +parser.add_argument("-plot_show",type=bool, + default=False, help="show the MCMC plots; default is False") + +parser.add_argument("-coadd",type=bool, + default=False, help="coadd the spectra; default is False") + +parser.add_argument("-coadd_sp_name",type=str, + default=None, help="name of the coadded spectra") + +parser.add_argument("-modelset",type=str, + default='btsettl08', help="model set; default is btsettl08") + +parser.add_argument("-final_mcmc", action='store_true', help="run final mcmc; default False") + +parser.add_argument("-include_fringe_model", action='store_true', help="model the fringe pattern; default False") + +args = parser.parse_args() + +###################################################################################################### + +#source = str(args.source[0]) +order = str(args.order[0]) +instrument = str(args.instrument) +date_obs = str(args.date_obs[0]) +sci_data_name = str(args.sci_data_name[0]) +data_path = str(args.data_path[0]) +#tell_data_name = str(args.tell_data_name[0]) +#tell_path = str(args.tell_path[0]) +save_to_path_base = str(args.save_to_path[0]) +lsf0 = float(args.lsf[0]) +ndim, nwalkers, step = int(args.ndim), int(args.nwalkers), int(args.step) +burn = int(args.burn) +moves = float(args.moves) +applymask = args.applymask +pixel_start, pixel_end = int(args.pixel_start), int(args.pixel_end) +#pwv = float(args.pwv) +#alpha_tell = float(args.alpha_tell[0]) +plot_show = args.plot_show +coadd = args.coadd +outlier_rejection = float(args.outlier_rejection) +modelset = str(args.modelset) +final_mcmc = args.final_mcmc +include_fringe_model = args.include_fringe_model + +if final_mcmc: + #save_to_path1 = save_to_path_base + '/init_mcmc' + save_to_path = save_to_path_base + '/final_mcmc' + +else: + save_to_path = save_to_path_base + '/init_mcmc' + +# date +today = date.today() +now = datetime.now() +dt_string = now.strftime("%H:%M:%S") + +##################################### + +print('MASK', applymask) +print(sci_data_name) +print(data_path) +print(data_path + sci_data_name + '.fits') +#sys.exit() +hdu = fits.open(data_path + sci_data_name + '.fits') +print(hdu.info()) +wave = hdu[0].data*10000 +flux = hdu[1].data +noise = hdu[2].data +ind = np.where( + (flux > 0) & (~np.isnan(flux) + #& ( (wave < 41000) | (wave > 44000) ) + ) ) +wave = wave[ind] * u.angstrom +flux = flux[ind] * 1e6 * u.Jy.cgs +noise = noise[ind] * 1e6 * u.Jy.cgs +# convert to flux density +flux *= speedoflight.cgs / (wave.to(u.m) * wave.to(u.angstrom)) +noise *= speedoflight.cgs / (wave.to(u.m) * wave.to(u.angstrom)) +flux = flux.to(u.erg/u.s/u.cm**2/u.angstrom) +noise = noise.to(u.erg/u.s/u.cm**2/u.angstrom) +''' +print(wave) +print(flux) +print(noise) +plt.plot(wave, flux) +plt.show() +''' +data = smart.Spectrum(flux=flux.value, wave=wave.value, noise=noise.value, path=data_path, order=order, applymask=applymask, instrument=instrument) +#data = smart.Spectrum(name=sci_data_name, order=order, path=data_path, applymask=applymask, instrument=instrument) + +sci_data = data + + +""" +MCMC run for the science spectra. See the parameters in the makeModel function. + +Parameters +---------- + +sci_data : sepctrum object + science data + +tell_data : spectrum object + telluric data for calibrating the science spectra + +priors : dic + keys are teff_min, teff_max, logg_min, logg_max, vsini_min, vsini_max, rv_min, rv_max, + am_min, am_max, pwv_min, pwv_max, A_min, A_max, B_min, B_max + +Optional Parameters +------------------- + +limits : dic + mcmc limits with the same format as the input priors + +ndim : int + mcmc dimension + +nwalkers : int + number of walkers + + step : int + number of steps + + burn : int + burn for the mcmc + + moves : float + stretch parameter for the mcmc. The default is 2.0 based on the emcee package + + pixel_start : int + starting pixel number for the spectra in the MCMC + + pixel_end : int + ending pixel number for the spectra in the MCMC + + alpha_tell : float + power of telluric spectra for estimating the line spread function of the NIRSPEC instrument + + modelset : str + 'btsettl08' or 'phoenixaces' model sets + + save_to_path: str + path to savr the MCMC output + +""" + +if save_to_path is not None: + if not os.path.exists(save_to_path): + os.makedirs(save_to_path) +else: + save_to_path = '.' + +#if limits is None: limits = priors + +data = copy.deepcopy(sci_data) + + +# barycentric corrction +#barycorr = smart.barycorr(data.header).value +#print("barycorr:",barycorr) + +## read the input custom mask and priors +lines = open(save_to_path+'/mcmc_parameters.txt').read().splitlines() +custom_mask = json.loads(lines[3].split('custom_mask')[1]) +priors = ast.literal_eval(lines[4].split('priors ')[1]) +barycorr = json.loads(lines[11].split('barycorr')[1]) +#print(priors) +#sys.exit() + +# no logg 5.5 for teff lower than 900 +if 'btsettl08' in modelset.lower() and priors['teff_min'] < 900: logg_max = 5.0 +else: logg_max = 5.5 + +# limit of the flux nuisance parameter: 5 percent of the median flux +A_const = 0.05 * abs(np.median(data.flux)) +A_const = 100 + +if 'btsettl08' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,500), 'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + +elif modelset.lower() == 'phoenix-btsettl-cifist2011-2015': + limits = { + 'teff_min':max(priors['teff_min']-300,1200),'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + + +elif 'sonora' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,200), 'teff_max':min(priors['teff_max']+300,2400), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + +elif modelset.lower() == 'phoenixaces': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,10000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + +elif 'barman' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,800), 'teff_max':min(priors['teff_max']+300,1200), + 'logg_min':4.5, 'logg_max':5.5, + 'kzz_min':1e2, 'kzz_max':1e8, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + +elif modelset.lower() == 'pheonix-newera-aces-cond-2023': + limits = { + 'teff_min':max(priors['teff_min']-300,800), 'teff_max':min(priors['teff_max']+300,1350), + 'logg_min':4., 'logg_max':5.5, + 'kzz_min':1e2, 'kzz_max':1e10, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-1000.0, 'rv_max':1000.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':200 + } + + +# HIRES wavelength calibration is not that precise, release the constraint for the wavelength offset nuisance parameter +if data.instrument == 'hires': + limits['B_min'] = -3.0 # Angstrom + limits['B_max'] = +3.0 # Angstrom + +if final_mcmc: + limits['rv_min'] = priors['rv_min'] - 10 + limits['rv_max'] = priors['rv_max'] + 10 + +## apply a custom mask +#data.mask_custom(custom_mask=custom_mask) + +## add a pixel label for plotting +length1 = len(data.flux) +pixel = np.delete(np.arange(length1), data.mask) +pixel = pixel[pixel_start:pixel_end] +print('PIXELS:', pixel_start, pixel_end) + +### mask the end pixels +data.wave = data.wave[pixel_start:pixel_end] +data.flux = data.flux[pixel_start:pixel_end] +data.noise = data.noise[pixel_start:pixel_end] + + + +# log file +log_path = save_to_path + '/mcmc_parameters.txt' + + +######################################################################################### +## for multiprocessing +######################################################################################### +print('Modelset:', modelset) +print('Instrument:', instrument) +print('include_fringe_model', include_fringe_model) + +def lnlike(theta, data, lsf0): + """ + Log-likelihood, computed from chi-squared. + + Parameters + ---------- + theta + lsf + data + + Returns + ------- + -0.5 * chi-square + sum of the log of the noise + + """ + + ## Parameters MCMC + #print('THETA:', theta) + teff, logg, kzz, rv, A, N, lsf = theta #N noise prefactor + #teff, logg, vsini, rv, , am, pwv, A, B, freq, amp, phase = theta + + model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, kzz=kzz, rv=rv, flux_mult=A, #wave_offset=B, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=include_fringe_model, instrument=instrument, + tell=False) + ''' + print('MODEL') + print(model.wave) + print(model.flux) + print('DATA') + print(data.wave) + print(data.flux) + ''' + #print('CHI0') + #chisquare = smart.chisquare(data, model)/N**2 + chisquare = smart.chisquare(data, model) + #print('CHI', chisquare) + ''' + fig = plt.figure(1, figsize=(28,10)) + plt.suptitle('%0.1f %0.3f %0.3f %0.3f %0.3f %0.3f %0.3f'%(teff, logg, rv, A, B, N, lsf)) + ax1 = fig.add_subplot(211) + ax2 = fig.add_subplot(212) + ax1.plot(data.wave, data.flux, label='data', alpha=0.5) + ax1.plot(model.wave, model.flux, label='model', alpha=0.5) + ax1.legend() + ax2.plot(data.wave, data.flux, label='data', alpha=0.5) + ax2.plot(model.wave, model.flux, label='model', alpha=0.5) + ax2.set_xlim(44200, 45800) + plt.tight_layout() + #plt.show() + plt.pause(0.1) + plt.close() + ''' + chi0 = -0.5 * np.sum( ( data.flux - model.flux )**2/(data.noise*N)**2 + np.log( (data.noise*N)**2) ) + return chi0#-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise)**2))) + +def lnprior(theta, limits=limits): + """ + Specifies a flat prior + """ + ## Parameters for theta + teff, logg, kzz, rv, A, N, lsf = theta + #print(limits['teff_min'] < teff < limits['teff_max']) + #print(limits['logg_min'] < logg < limits['logg_max']) + #print(limits['kzz_min'] < kzz < limits['kzz_max']) + + if limits['teff_min'] < teff < limits['teff_max'] \ + and limits['logg_min'] < logg < limits['logg_max'] \ + and limits['kzz_min'] < kzz < limits['kzz_max'] \ + and limits['rv_min'] < rv < limits['rv_max'] \ + and limits['A_min'] < A < limits['A_max']\ + and limits['N_min'] < N < limits['N_max']\ + and limits['lsf_min'] < lsf < limits['lsf_max']: + return 0.0 + + return -np.inf + +def lnprob(theta, data, lsf0): + #print('THETA0:', theta) + + lnp = lnprior(theta) + #print(lnp) + + if not np.isfinite(lnp): + return -np.inf + + return lnp + lnlike(theta, data, lsf0) + +pos = [np.array([ priors['teff_min'] + (priors['teff_max'] - priors['teff_min'] ) * np.random.uniform(), + priors['logg_min'] + (priors['logg_max'] - priors['logg_min'] ) * np.random.uniform(), + 10**(np.log10(priors['kzz_min']) + (np.log10(priors['kzz_max']) - np.log10(priors['kzz_min']) ) * np.random.uniform()), + #priors['vsini_min'] + (priors['vsini_max'] - priors['vsini_min']) * np.random.uniform(), + priors['rv_min'] + (priors['rv_max'] - priors['rv_min'] ) * np.random.uniform(), + priors['A_min'] + (priors['A_max'] - priors['A_min']) * np.random.uniform(), + #priors['B_min'] + (priors['B_max'] - priors['B_min']) * np.random.uniform(), + priors['N_min'] + (priors['N_max'] - priors['N_min']) * np.random.uniform(), + priors['lsf_min'] + (priors['lsf_max'] - priors['lsf_min']) * np.random.uniform() + ]) for i in range(nwalkers)] + +## TEST + +print('Priors:',priors) +print('Limits:',limits) +''' +sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, moves=emcee.moves.KDEMove()) +time1 = time.time() +sampler.run_mcmc(pos, step, progress=True) +time2 = time.time() +''' +## multiprocessing + +set_start_method('fork') +with Pool() as pool: + #sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf, pwv), a=moves, pool=pool) + sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, pool=pool, + moves=emcee.moves.KDEMove()) + time1 = time.time() + sampler.run_mcmc(pos, step, progress=True) + time2 = time.time() + + +np.save(save_to_path + '/sampler_chain', sampler.chain[:, :, :]) + +samples = sampler.chain[:, :, :].reshape((-1, ndim)) + +np.save(save_to_path + '/samples', samples) + +print('total time: ',(time2-time1)/60,' min.') +print("Mean acceptance fraction: {0:.3f}".format(np.mean(sampler.acceptance_fraction))) +print(sampler.acceptance_fraction) +autocorr_time = sampler.get_autocorr_time(discard=burn, quiet=True) +print("Mean autocorrelation time: {0:.3f} steps".format(np.mean(autocorr_time))) +print(autocorr_time) + +# create plots +print('SAVE PATH:', save_to_path) +sampler_chain = np.load(save_to_path + '/sampler_chain.npy') +samples = np.load(save_to_path + '/samples.npy') + +#sampler_chain[:,:,2] = np.log10(sampler_chain[:,:,2]) + +ylabels = ["$T_{\mathrm{eff}} (K)$", + "$\log{g}$(dex)", + "log10(kzz)", + "$RV(km/s)$", + "$C_{F_{\lambda}}$ (cnt/s)", + "$C_\mathrm{Noise}$", + "LSF" + ] + + +## create walker plots +print('Creating walker plot') +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=10) +fig = plt.figure(tight_layout=True, figsize=(8,8)) +gs = gridspec.GridSpec(ndim, 1) +gs.update(hspace=0.1) + +for i in range(ndim): + ax = fig.add_subplot(gs[i, :]) + for j in range(nwalkers): + if i == 2: ax.plot(np.arange(1,int(step+1)), np.log10(sampler_chain[j,:,i]),'k',alpha=0.2) + else: ax.plot(np.arange(1,int(step+1)), sampler_chain[j,:,i],'k',alpha=0.2) + ax.set_ylabel(ylabels[i],fontsize=8) + ax.minorticks_on() +fig.align_labels() +plt.xlabel('nstep') +plt.savefig(save_to_path+'/walker.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# create array triangle plots +triangle_samples = sampler_chain[:, burn:, :].reshape((-1, ndim)) +logkzz = np.log10(sampler_chain[:, burn:, 2].flatten()) +logkzz_mcmc = [np.percentile(logkzz, 50), np.percentile(logkzz, 84)-np.percentile(logkzz, 50), np.percentile(logkzz, 50)-np.percentile(logkzz, 16)] +print(logkzz_mcmc) +#print(triangle_samples.shape) + +# create the final spectra comparison +teff_mcmc, logg_mcmc, kzz_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc = map(lambda v: (v[1], v[2]-v[1], v[1]-v[0]), + zip(*np.percentile(triangle_samples, [16, 50, 84], axis=0))) + + +print(teff_mcmc, logg_mcmc, kzz_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc) + +# add the summary to the txt file + +# log file +log_path2 = save_to_path + '/mcmc_result.txt' + +file_log2 = open(log_path2,"w+") +file_log2.write("teff_mcmc {}\n".format(str(teff_mcmc[0]))) +file_log2.write("logg_mcmc {}\n".format(str(logg_mcmc[0]))) +file_log2.write("kzz_mcmc {}\n".format(str(kzz_mcmc[0]))) +#file_log2.write("vsini_mcmc {}\n".format(str(vsini_mcmc[0]))) +file_log2.write("rv_mcmc {}\n".format(str(rv_mcmc[0]+barycorr))) +#file_log2.write("am_mcmc {}\n".format(str(am_mcmc[0]))) +#file_log2.write("pwv_mcmc {}\n".format(str(pwv_mcmc[0]))) +file_log2.write("A_mcmc {}\n".format(str(A_mcmc[0]))) +#file_log2.write("B_mcmc {}\n".format(str(B_mcmc[0]))) +file_log2.write("N_mcmc {}\n".format(str(N_mcmc[0]))) +file_log2.write("lsf_mcmc {}\n".format(str(lsf_mcmc[0]))) +file_log2.write("teff_mcmc_e {}\n".format(str(max(abs(teff_mcmc[1]), abs(teff_mcmc[2]))))) +file_log2.write("logg_mcmc_e {}\n".format(str(max(abs(logg_mcmc[1]), abs(logg_mcmc[2]))))) +file_log2.write("kzz_mcmc_e {}\n".format(str(max(abs(kzz_mcmc[1]), abs(kzz_mcmc[2]))))) +#file_log2.write("vsini_mcmc_e {}\n".format(str(max(abs(vsini_mcmc[1]), abs(vsini_mcmc[2]))))) +file_log2.write("rv_mcmc_e {}\n".format(str(max(abs(rv_mcmc[1]), abs(rv_mcmc[2]))))) +#file_log2.write("am_mcmc_e {}\n".format(str(max(abs(am_mcmc[1]), abs(am_mcmc[2]))))) +#file_log2.write("pwv_mcmc_e {}\n".format(str(max(abs(pwv_mcmc[1]), abs(pwv_mcmc[2]))))) +file_log2.write("A_mcmc_e {}\n".format(str(max(abs(A_mcmc[1]), abs(A_mcmc[2]))))) +#file_log2.write("B_mcmc_e {}\n".format(str(max(abs(B_mcmc[1]), abs(B_mcmc[2]))))) +file_log2.write("N_mcmc_e {}\n".format(str(max(abs(N_mcmc[1]), abs(N_mcmc[2]))))) +file_log2.write("lsf_mcmc_e {}\n".format(str(max(abs(lsf_mcmc[1]), abs(lsf_mcmc[2]))))) +# upper and lower uncertainties +# upper uncertainties +file_log2.write("teff_mcmc_ue {}\n".format(str(abs(teff_mcmc[1])))) +file_log2.write("logg_mcmc_ue {}\n".format(str(abs(logg_mcmc[1])))) +file_log2.write("kzz_mcmc_ue {}\n".format(str(abs(kzz_mcmc[1])))) +#file_log2.write("vsini_mcmc_ue {}\n".format(str(abs(vsini_mcmc[1])))) +file_log2.write("rv_mcmc_ue {}\n".format(str(abs(rv_mcmc[1])))) +#file_log2.write("am_mcmc_ue {}\n".format(str(abs(am_mcmc[1])))) +#file_log2.write("pwv_mcmc_ue {}\n".format(str(abs(pwv_mcmc[1])))) +file_log2.write("A_mcmc_ue {}\n".format(str(abs(A_mcmc[1])))) +#file_log2.write("B_mcmc_ue {}\n".format(str(abs(B_mcmc[1])))) +file_log2.write("N_mcmc_ue {}\n".format(str(abs(N_mcmc[1])))) +file_log2.write("lsf_mcmc_ue {}\n".format(str(abs(lsf_mcmc[1])))) +# lower uncertainties +file_log2.write("teff_mcmc_le {}\n".format(str(abs(teff_mcmc[2])))) +file_log2.write("logg_mcmc_le {}\n".format(str(abs(logg_mcmc[2])))) +file_log2.write("kzz_mcmc_le {}\n".format(str(abs(kzz_mcmc[2])))) +#file_log2.write("vsini_mcmc_le {}\n".format(str(abs(vsini_mcmc[2])))) +file_log2.write("rv_mcmc_le {}\n".format(str(abs(rv_mcmc[2])))) +#file_log2.write("am_mcmc_le {}\n".format(str(abs(am_mcmc[2])))) +#file_log2.write("pwv_mcmc_le {}\n".format(str(abs(pwv_mcmc[2])))) +file_log2.write("A_mcmc_le {}\n".format(str(abs(A_mcmc[2])))) +#file_log2.write("B_mcmc_le {}\n".format(str(abs(B_mcmc[2])))) +file_log2.write("N_mcmc_le {}\n".format(str(abs(N_mcmc[2])))) +file_log2.write("lsf_mcmc_le {}\n".format(str(abs(lsf_mcmc[2])))) +file_log2.close() + +#print(teff_mcmc, logg_mcmc, vsini_mcmc, rv_mcmc, am_mcmc, pwv_mcmc, A_mcmc, B_mcmc, N_mcmc) + +triangle_samples[:,2] = np.log10(triangle_samples[:,2]) +triangle_samples[:,3] += barycorr + +## triangular plots +print('Creating corner plot') +plt.rc('font', family='sans-serif') +fig = corner.corner(triangle_samples, + labels=ylabels, + truths=[teff_mcmc[0], + logg_mcmc[0], + np.log10(kzz_mcmc[0]), + rv_mcmc[0]+barycorr, + A_mcmc[0], + N_mcmc[0], + lsf_mcmc[0] + ], + quantiles=[0.16, 0.84], + label_kwargs={"fontsize": 20}) +plt.minorticks_on() +fig.savefig(save_to_path+'/triangle.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +teff = teff_mcmc[0] +logg = logg_mcmc[0] +kzz = kzz_mcmc[0] +z = 0.0 +#vsini = vsini_mcmc[0] +rv = rv_mcmc[0] +A = A_mcmc[0] +#B = B_mcmc[0] +N = N_mcmc[0] +lsf = lsf_mcmc[0] + +print('Creating model and data plot') +model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, rv=rv, flux_mult=A, kzz=kzz, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, + include_fringe_model=False, instrument=instrument, tell=False) + +fig = plt.figure(figsize=(16,6)) +ax1 = fig.add_subplot(111) +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=15) +diff = data.flux-model.flux +ax1.plot(model.wave, 10*np.std(diff) + model.flux, color='C3', linestyle='-', label='model',alpha=0.8) +#ax1.plot(model_notell.wave,model_notell.flux, color='C0', linestyle='-', label='model no telluric',alpha=0.8) +ax1.plot(data.wave, 10*np.std(diff) + data.flux,'k-', label='data',alpha=0.5) +ax1.plot(data.wave, diff,'k-',alpha=0.8, label='residual') +#N=1 +plt.fill_between(data.wave,-data.noise,data.noise,facecolor='C1',alpha=0.5) +plt.fill_between(data.wave,-data.noise*N,data.noise*N,facecolor='C0',alpha=0.5) +plt.axhline(y=0, color='k', linestyle=':',linewidth=0.5) +#plt.ylim(-np.max(np.append(np.abs(data.noise),np.abs(data.flux-model.flux)))*1.2,np.max(data.flux)*1.2) +plt.ylabel("Flux ($cnts/s$)",fontsize=15) +plt.xlabel("$\lambda$ ($\AA$)",fontsize=15) +#plt.figtext(0.89,0.85,str(data.header['OBJECT'])+' '+data.name+' O'+str(data.order), +# color='k', +# horizontalalignment='right', +# verticalalignment='center', +# fontsize=15) +plt.figtext(0.89,0.82,"$Teff \, {0}^{{+{1}}}_{{-{2}}}/ logg \, {3}^{{+{4}}}_{{-{5}}}/ log10(kzz) \, {6}^{{+{7}}}_{{-{8}}}/ RV \, {9}^{{+{10}}}_{{-{11}}}$".format(\ + round(teff_mcmc[0]), + round(teff_mcmc[1]), + round(teff_mcmc[2]), + round(logg_mcmc[0],1), + round(logg_mcmc[1],3), + round(logg_mcmc[2],3), + round(logkzz_mcmc[0],3), + round(logkzz_mcmc[1],3), + round(logkzz_mcmc[2],3), + round(rv_mcmc[0]+barycorr,2), + round(rv_mcmc[1],2), + round(rv_mcmc[2],2)), + color='C0', + horizontalalignment='right', + verticalalignment='center', + fontsize=12) +plt.figtext(0.89,0.79,r"$\chi^2$ = {}, DOF = {}".format(\ + round(smart.chisquare(data,model)), round(len(data.wave-ndim)/3)), +color='k', +horizontalalignment='right', +verticalalignment='center', +fontsize=12) +plt.legend(loc=4) +plt.minorticks_on() + +ax2 = ax1.twiny() +ax2.plot(pixel, data.flux, color='w', alpha=0) +ax2.set_xlabel('Pixel',fontsize=15) +ax2.tick_params(labelsize=15) +ax2.set_xlim(pixel[0], pixel[-1]) +ax2.minorticks_on() + +#plt.legend() +plt.savefig(save_to_path + '/spectrum.png', dpi=300, bbox_inches='tight') +plt.savefig(save_to_path + '/spectrum.pdf', bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# chi2 and dof in the log +log_path = save_to_path + '/mcmc_parameters.txt' +file_log = open(log_path,"a") +file_log.write("*** Below is the summary *** \n") +file_log.write("total_time {} min\n".format(str((time2-time1)/60))) +file_log.write("mean_acceptance_fraction {0:.3f} \n".format(np.mean(sampler.acceptance_fraction))) +file_log.write("mean_autocorrelation_time {0:.3f} \n".format(np.mean(autocorr_time))) +file_log.write("chi2 {} \n".format(round(smart.chisquare(data,model)))) +file_log.write("dof {} \n".format(round(len(data.wave-ndim)/3))) +file_log.write("teff_mcmc {} K\n".format(str(teff_mcmc))) +file_log.write("logg_mcmc {} dex (cgs)\n".format(str(logg_mcmc))) +file_log.write("kzz_mcmc {}\n".format(str(kzz_mcmc))) +#file_log.write("vsini_mcmc {} km/s\n".format(str(vsini_mcmc))) +file_log.write("rv_mcmc {} km/s\n".format(str(rv_mcmc))) +#file_log.write("am_mcmc {}\n".format(str(am_mcmc))) +#file_log.write("pwv_mcmc {}\n".format(str(pwv_mcmc))) +file_log.write("A_mcmc {}\n".format(str(A_mcmc))) +#file_log.write("B_mcmc {}\n".format(str(B_mcmc))) +file_log.write("N_mcmc {}\n".format(str(N_mcmc))) +file_log.write("lsf_mcmc {}\n".format(str(lsf_mcmc))) +file_log.close() + +''' +# excel summary file +cat = pd.DataFrame(columns=['date_obs','date_name','tell_name','data_path''save_path', + 'model_date','model_time','data_mask','order','coadd','med_snr','lsf', + 'barycorr','modelset','priors','limits','ndim','nwalkers','step','burn', + 'rv','e_rv','ue_rv','le_rv',#'vsini','e_vsini','ue_vsini','le_vsini', + 'teff','e_teff','ue_teff','le_teff','logg','e_logg','ue_logg','le_logg', + 'cflux','e_cflux','ue_cflux','le_cflux',#'cwave','e_cwave','ue_cwave','le_cwave', + 'cnoise','e_cnoise','ue_cnoise','le_cnoise', + 'wave_cal_err','chi2','dof','acceptance_fraction','autocorr_time']) + +''' +med_snr = np.nanmedian(data.flux/data.noise) +if instrument == 'nirspec': + wave_cal_err = tell_sp.header['STD'] +else: + wave_cal_err = np.nan +''' +cat = pd.DataFrame({'date_obs':date_obs,'date_name':sci_data_name,#'tell_name':tell_data_name, + 'data_path':data_path,#'tell_path':tell_path, + 'save_path':save_to_path, + 'model_date':today.isoformat(),'model_time':dt_string,'data_mask':custom_mask, + #'order':order,'coadd':coadd,'mjd':mjd, + 'med_snr':med_snr,'lsf':lsf, 'barycorr':barycorr, + 'modelset':modelset, 'priors':priors, 'limits':limits, + 'ndim':ndim, 'nwalkers':nwalkers,'step':step, 'burn':burn, + 'rv':rv_mcmc[0]+barycorr, 'e_rv':max(rv_mcmc[1], rv_mcmc[2]), 'ue_rv':rv_mcmc[1], 'le_rv':rv_mcmc[2], + #'vsini':vsini_mcmc[0], 'e_vsini':max(vsini_mcmc[1], vsini_mcmc[2]), 'ue_vsini':vsini_mcmc[1], 'le_vsini':vsini_mcmc[2], + 'teff':teff_mcmc[0], 'e_teff':max(teff_mcmc[1],teff_mcmc[2]), 'ue_teff':teff_mcmc[1], 'le_teff':teff_mcmc[2], + 'logg':logg_mcmc[0], 'e_logg':max(logg_mcmc[1], logg_mcmc[2]), 'ue_logg':logg_mcmc[1], 'le_logg':logg_mcmc[2], + #'am':am_mcmc[0], 'e_am':max(am_mcmc[1], am_mcmc[2]), 'ue_am':am_mcmc[1], 'le_am':am_mcmc[2], + #'pwv':pwv_mcmc[0], 'e_pwv':max(pwv_mcmc[1], pwv_mcmc[2]), 'ue_pwv':pwv_mcmc[1], 'le_pwv':pwv_mcmc[2], + 'cflux':A_mcmc[0], 'e_cflux':max(A_mcmc[1], A_mcmc[2]), 'ue_cflux':A_mcmc[1], 'le_cflux':A_mcmc[2], + #'cwave':B_mcmc[0], 'e_cwave':max(B_mcmc[1], B_mcmc[2]), 'ue_cwave':B_mcmc[1], 'le_cwave':B_mcmc[2], + 'cnoise':N_mcmc[0],'e_cnoise':max(N_mcmc[1], N_mcmc[2]), 'ue_cnoise':N_mcmc[1], 'le_cnoise':N_mcmc[2], + 'wave_cal_err':wave_cal_err, }, index=[0]) + +cat.to_excel(save_to_path + '/mcmc_summary.xlsx', index=False) +''' diff --git a/smart/forward_model/run_mcmc_science_osiris.py b/smart/forward_model/run_mcmc_science_osiris.py new file mode 100644 index 0000000..21ddc01 --- /dev/null +++ b/smart/forward_model/run_mcmc_science_osiris.py @@ -0,0 +1,813 @@ +import pandas as pd +import numpy as np +import matplotlib +#matplotlib.use('Agg') +import matplotlib.pyplot as plt +#plt.ioff() +import matplotlib.gridspec as gridspec +from astropy.io import fits +import emcee +#from schwimmbad import MPIPool +from multiprocessing import Pool +from multiprocessing import set_start_method +import smart +import model_fit +import mcmc_utils +import corner +import os +import sys +import time +import copy +import argparse +import json +import ast +import warnings +from datetime import date, datetime +warnings.filterwarnings("ignore") +import astropy.units as u +from astropy.units import cds +cds.enable() +from astropy.constants import c as speedoflight + +############################################################################################## +## This is the script to make the code multiprocessing, using arcparse to pass the arguments +## The code is run with 8 parameters, including Teff, logg, RV, vsini, telluric alpha, and +## nuisance parameters for wavelength, flux and noise. +############################################################################################## + +parser = argparse.ArgumentParser(description="Run the forward-modeling routine for science files", + usage="run_mcmc_science.py order date_obs sci_data_name data_path save_to_path lsf priors limits") + +#parser.add_argument("source",metavar='src',type=str, +# default=None, help="source name", nargs="+") + +parser.add_argument("order",metavar='o',type=str, + default=None, help="order", nargs="+") + +parser.add_argument("date_obs",metavar='dobs',type=str, + default=None, help="source name", nargs="+") + +parser.add_argument("sci_data_name",metavar='sci',type=str, + default=None, help="science data name", nargs="+") + +#parser.add_argument("tell_data_name",metavar='tell',type=str, +# default=None, help="telluric data name", nargs="+") + +parser.add_argument("data_path",type=str, + default=None, help="science data path", nargs="+") + +#parser.add_argument("tell_path",type=str, +# default=None, help="telluric data path", nargs="+") + +parser.add_argument("save_to_path",type=str, + default=None, help="output path", nargs="+") + +parser.add_argument("lsf",type=float, + default=None, help="line spread function", nargs="+") + +parser.add_argument("-instrument",metavar='--inst',type=str, + default='nirspec', help="spectrometer name of the instrument; default nirspec") + +parser.add_argument("-outlier_rejection",metavar='--rej',type=float, + default=3.0, help="outlier rejection based on the multiple of standard deviation of the residual; default 3.0") + +parser.add_argument("-ndim",type=int, + default=8, help="number of dimension; default 8") + +parser.add_argument("-nwalkers",type=int, + default=50, help="number of walkers of MCMC; default 50") + +parser.add_argument("-step",type=int, + default=600, help="number of steps of MCMC; default 600") + +parser.add_argument("-burn",type=int, + default=500, help="burn of MCMC; default 500") + +parser.add_argument("-moves",type=float, + default=2.0, help="moves of MCMC; default 2.0") + +parser.add_argument("-pixel_start",type=int, + default=10, help="starting pixel index for the science data; default 10") + +parser.add_argument("-pixel_end",type=int, + default=-40, help="ending pixel index for the science data; default -40") + +#parser.add_argument("-pwv",type=float, +# default=0.5, help="precipitable water vapor for telluric profile; default 0.5 mm") + +#parser.add_argument("-alpha_tell",type=float, +# default=1.0, help="telluric alpha; default 1.0") + +parser.add_argument("-applymask",type=bool, + default=False, help="apply a simple mask based on the STD of the average flux; default is False") + +parser.add_argument("-plot_show",type=bool, + default=False, help="show the MCMC plots; default is False") + +parser.add_argument("-coadd",type=bool, + default=False, help="coadd the spectra; default is False") + +parser.add_argument("-coadd_sp_name",type=str, + default=None, help="name of the coadded spectra") + +parser.add_argument("-modelset",type=str, + default='btsettl08', help="model set; default is btsettl08") + +parser.add_argument("-final_mcmc", action='store_true', help="run final mcmc; default False") + +parser.add_argument("-include_fringe_model", action='store_true', help="model the fringe pattern; default False") + +args = parser.parse_args() + +###################################################################################################### + +#source = str(args.source[0]) +order = str(args.order[0]) +instrument = str(args.instrument) +date_obs = str(args.date_obs[0]) +sci_data_name = str(args.sci_data_name[0]) +data_path = str(args.data_path[0]) +#tell_data_name = str(args.tell_data_name[0]) +#tell_path = str(args.tell_path[0]) +save_to_path_base = str(args.save_to_path[0]) +lsf0 = float(args.lsf[0]) +ndim, nwalkers, step = int(args.ndim), int(args.nwalkers), int(args.step) +burn = int(args.burn) +moves = float(args.moves) +applymask = args.applymask +pixel_start, pixel_end = int(args.pixel_start), int(args.pixel_end) +#pwv = float(args.pwv) +#alpha_tell = float(args.alpha_tell[0]) +plot_show = args.plot_show +coadd = args.coadd +outlier_rejection = float(args.outlier_rejection) +modelset = str(args.modelset) +final_mcmc = args.final_mcmc +include_fringe_model = args.include_fringe_model + +if final_mcmc: + #save_to_path1 = save_to_path_base + '/init_mcmc' + save_to_path = save_to_path_base + '/final_mcmc' + +else: + save_to_path = save_to_path_base + '/init_mcmc' + +# date +today = date.today() +now = datetime.now() +dt_string = now.strftime("%H:%M:%S") + +##################################### + +print('MASK', applymask) +print(sci_data_name) +print(data_path) +#data = np.genfromtxt(data_path + sci_data_name + '.txt', skip_header=1) +hdulist = fits.open(data_path + sci_data_name + '.fits', ignore_missing_end=True) +data = hdulist[0].data + +wave = data[0] * 10000 * u.angstrom +flux = data[1] * u.W/u.m**2/u.micron ### NEED TO CONVERT THESE UNITS! erg/s / m^2 / micron +noise = data[2] * u.W/u.m**2/u.micron ### NEED TO CONVERT THESE UNITS! +#ind = np.where( (flux > 0) & (~np.isnan(flux) ) ) +flux = flux.to(u.erg/u.s/u.cm**2/u.angstrom) +noise = noise.to(u.erg/u.s/u.cm**2/u.angstrom) + +ind = np.where( (wave.value > 19000) & (~np.isnan(flux)) ) +wave = wave[ind] +flux = flux[ind] +noise = noise[ind] + +data = smart.Spectrum(flux=flux.value, wave=wave.value, noise=noise.value, path=data_path, order=order, applymask=applymask, instrument=instrument) +#data = smart.Spectrum(name=sci_data_name, order=order, path=data_path, applymask=applymask, instrument=instrument) + +#import scipy as sp +#smoothfluxmed = sp.ndimage.filters.uniform_filter(data.flux, size=80) # smooth by this many spectral bins + +#data.flux -= smoothfluxmed +#data.noise = 0.1*data.flux + +############# TEST +''' +print("TEST"*20) +teff, logg, vsini, rv, A, B, N, lsf = 1364, 4.48, 4.77, 107.5, -20.8, -15.7, 0.86, 41.03 +model = smart.makeModel(teff=teff, logg=logg, metal=0.0, vsini=vsini, rv=rv, wave_offset=B, flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=False, instrument=instrument, tell=False) +#data = smart.Spectrum(flux=model.flux, wave=model.wave, path=data_path, order=order, applymask=applymask, instrument=instrument) +plt.plot(data.wave, data.flux, alpha=0.5, label='data') +plt.plot(data.wave, data.noise, alpha=0.5, label='noise') +plt.plot(model.wave, model.flux, alpha=0.5, label='model') +#plt.plot(model2.wave, model2.flux, alpha=0.5, label='model2') +chisquare = smart.chisquare(data, model)/N**2 +print('Chi', smart.chisquare(data, model), chisquare) +print(-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise*N)**2)))) +plt.legend() +plt.show() +sys.exit() +''' +############# TEST + +sci_data = data + + +""" +MCMC run for the science spectra. See the parameters in the makeModel function. + +Parameters +---------- + +sci_data : sepctrum object + science data + +tell_data : spectrum object + telluric data for calibrating the science spectra + +priors : dic + keys are teff_min, teff_max, logg_min, logg_max, vsini_min, vsini_max, rv_min, rv_max, + am_min, am_max, pwv_min, pwv_max, A_min, A_max, B_min, B_max + +Optional Parameters +------------------- + +limits : dic + mcmc limits with the same format as the input priors + +ndim : int + mcmc dimension + +nwalkers : int + number of walkers + + step : int + number of steps + + burn : int + burn for the mcmc + + moves : float + stretch parameter for the mcmc. The default is 2.0 based on the emcee package + + pixel_start : int + starting pixel number for the spectra in the MCMC + + pixel_end : int + ending pixel number for the spectra in the MCMC + + alpha_tell : float + power of telluric spectra for estimating the line spread function of the NIRSPEC instrument + + modelset : str + 'btsettl08' or 'phoenixaces' model sets + + save_to_path: str + path to savr the MCMC output + +""" + +if save_to_path is not None: + if not os.path.exists(save_to_path): + os.makedirs(save_to_path) +else: + save_to_path = '.' + +#if limits is None: limits = priors + +data = copy.deepcopy(sci_data) + + +# barycentric corrction +#barycorr = smart.barycorr(data.header).value +#print("barycorr:",barycorr) + +## read the input custom mask and priors +lines = open(save_to_path+'/mcmc_parameters.txt').read().splitlines() +custom_mask = json.loads(lines[3].split('custom_mask')[1]) +priors = ast.literal_eval(lines[4].split('priors ')[1]) +barycorr = json.loads(lines[11].split('barycorr')[1]) +#print(priors) +#sys.exit() + +# no logg 5.5 for teff lower than 900 +if 'btsettl08' in modelset.lower() and priors['teff_min'] < 900: logg_max = 5.0 +else: logg_max = 5.5 + +# limit of the flux nuisance parameter: 5 percent of the median flux +A_const = 0.05 * abs(np.median(data.flux)) + +if 'btsettl08' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,500), 'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif modelset.lower() == 'phoenix-btsettl-cifist2011-2015': + limits = { + 'teff_min':max(priors['teff_min']-300,1200),'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + + +elif 'sonora' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,200), 'teff_max':min(priors['teff_max']+300,2400), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif modelset.lower() == 'phoenix-aces-agss-cond-2011': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,10000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':-1, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif modelset.lower() == 'phoenixaces': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,10000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif modelset.upper() == 'PHOENIX_BTSETTL_CIFIST2011_2015': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,7000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +# HIRES wavelength calibration is not that precise, release the constraint for the wavelength offset nuisance parameter +if data.instrument == 'hires': + limits['B_min'] = -3.0 # Angstrom + limits['B_max'] = +3.0 # Angstrom + +if final_mcmc: + limits['rv_min'] = priors['rv_min'] - 10 + limits['rv_max'] = priors['rv_max'] + 10 + +## apply a custom mask +#data.mask_custom(custom_mask=custom_mask) + +## add a pixel label for plotting +length1 = len(data.flux) +pixel = np.delete(np.arange(length1), data.mask) +pixel = pixel[pixel_start:pixel_end] + +### mask the end pixels +data.wave = data.wave[pixel_start:pixel_end] +data.flux = data.flux[pixel_start:pixel_end] +data.noise = data.noise[pixel_start:pixel_end] + +#plt.plot(data.wave, data.flux) +#plt.show() + + +#if final_mcmc: +# priors, limits = mcmc_utils.generate_final_priors_and_limits(sp_type=sp_type, barycorr=barycorr, save_to_path1=save_to_path1) +#else: +# priors, limits = mcmc_utils.generate_initial_priors_and_limits(sp_type=sp_type) +#print(priors, limits) + +#if lsf is None: +# lsf = smart.getLSF(tell_sp, alpha=alpha_tell, test=True, save_path=save_to_path) +# print("LSF: ", lsf) +#else: +# print("Use input lsf:", lsf) + +# log file +log_path = save_to_path + '/mcmc_parameters.txt' +""" +file_log = open(log_path,"w+") +file_log.write("data_path {} \n".format(data.path)) +file_log.write("tell_path {} \n".format(tell_sp.path)) +file_log.write("data_name {} \n".format(data.name)) +file_log.write("tell_name {} \n".format(tell_sp.name)) +file_log.write("order {} \n".format(data.order)) +file_log.write("custom_mask {} \n".format(custom_mask)) +file_log.write("priors {} \n".format(priors)) +file_log.write("ndim {} \n".format(ndim)) +file_log.write("nwalkers {} \n".format(nwalkers)) +file_log.write("step {} \n".format(step)) +file_log.write("burn {} \n".format(burn)) +file_log.write("pixel_start {} \n".format(pixel_start)) +file_log.write("pixel_end {} \n".format(pixel_end)) +file_log.write("barycorr {} \n".format(barycorr)) +file_log.write("lsf {} \n".format(lsf)) +file_log.write("med_snr {} \n".format(med_snr)) +file_log.close() +""" + +######################################################################################### +## for multiprocessing +######################################################################################### +print('Modelset:', modelset) +print('Instrument:', instrument) +print('include_fringe_model', include_fringe_model) +print(lsf0) + +def lnlike(theta, data, lsf0): + """ + Log-likelihood, computed from chi-squared. + + Parameters + ---------- + theta + lsf + data + + Returns + ------- + -0.5 * chi-square + sum of the log of the noise + + """ + + ## Parameters MCMC + #print('THETA:', theta) + teff, logg, rv, A, N, lsf = theta #N noise prefactor + #teff, logg, vsini, rv, , am, pwv, A, B, freq, amp, phase = theta + + model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, #vsini=vsini, + rv=rv, + #wave_offset=B, + flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=include_fringe_model, instrument=instrument, tell=False, smooth=False) + + # print('MODEL') + # print(model.wave) + # print(model.flux) + # print('DATA') + # print(data.wave) + # print(data.flux) + # plt.plot(data.wave, data.flux, label='data') + # plt.plot(model.wave, model.flux, label='model') + # plt.legend() + # plt.show() + + #print('CHI0') + chisquare = smart.chisquare(data, model)/N**2 + #print('CHI', chisquare) + + chi0 = -0.5 * np.sum( ( data.flux - model.flux )**2/(data.noise*N)**2 + np.log( (data.noise*N)**2) ) + return chi0#-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise)**2))) + +def lnprior(theta, limits=limits): + """ + Specifies a flat prior + """ + ## Parameters for theta + teff, logg, rv, A, N, lsf = theta + + if limits['teff_min'] < teff < limits['teff_max'] \ + and limits['logg_min'] < logg < limits['logg_max'] \ + and limits['rv_min'] < rv < limits['rv_max'] \ + and limits['A_min'] < A < limits['A_max']\ + and limits['N_min'] < N < limits['N_max']\ + and limits['lsf_min'] < lsf < limits['lsf_max']: + return 0.0 + + return -np.inf + +def lnprob(theta, data, lsf0): + #print('THETA0:', theta) + + lnp = lnprior(theta) + + if not np.isfinite(lnp): + return -np.inf + + return lnp + lnlike(theta, data, lsf0) + +pos = [np.array([ priors['teff_min'] + (priors['teff_max'] - priors['teff_min'] ) * np.random.uniform(), + priors['logg_min'] + (priors['logg_max'] - priors['logg_min'] ) * np.random.uniform(), + #priors['vsini_min'] + (priors['vsini_max'] - priors['vsini_min']) * np.random.uniform(), + priors['rv_min'] + (priors['rv_max'] - priors['rv_min'] ) * np.random.uniform(), + priors['A_min'] + (priors['A_max'] - priors['A_min']) * np.random.uniform(), + #priors['B_min'] + (priors['B_max'] - priors['B_min']) * np.random.uniform(), + priors['N_min'] + (priors['N_max'] - priors['N_min']) * np.random.uniform(), + priors['lsf_min'] + (priors['lsf_max'] - priors['lsf_min']) * np.random.uniform() + ]) for i in range(nwalkers)] + +## TEST + +print('Priors:',priors) +print('Limits:',limits) + +# sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, moves=emcee.moves.KDEMove()) +# time1 = time.time() +# sampler.run_mcmc(pos, step, progress=True) +# time2 = time.time() + +## multiprocessing + +set_start_method('fork') +with Pool() as pool: + #sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf, pwv), a=moves, pool=pool) + sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, pool=pool, + moves=emcee.moves.KDEMove()) + time1 = time.time() + sampler.run_mcmc(pos, step, progress=True) + time2 = time.time() + + +np.save(save_to_path + '/sampler_chain', sampler.chain[:, :, :]) + +samples = sampler.chain[:, :, :].reshape((-1, ndim)) + +np.save(save_to_path + '/samples', samples) + +print('total time: ',(time2-time1)/60,' min.') +print("Mean acceptance fraction: {0:.3f}".format(np.mean(sampler.acceptance_fraction))) +print(sampler.acceptance_fraction) +autocorr_time = sampler.get_autocorr_time(discard=burn, quiet=True) +print("Mean autocorrelation time: {0:.3f} steps".format(np.mean(autocorr_time))) +print(autocorr_time) + +# create walker plots +print('SAVE PATH:', save_to_path) +sampler_chain = np.load(save_to_path + '/sampler_chain.npy') +samples = np.load(save_to_path + '/samples.npy') + +ylabels = ["$T_{\mathrm{eff}} (K)$", + "$\log{g}$(dex)", + "$RV(km/s)$", + "$C_{F_{\lambda}}$ (cnt/s)", + "$C_{noise}$","LSF" + ] + + +## create walker plots +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=30) +fig = plt.figure(tight_layout=True) +gs = gridspec.GridSpec(ndim, 1) +gs.update(hspace=0.1) + +for i in range(ndim): + ax = fig.add_subplot(gs[i, :]) + for j in range(nwalkers): + ax.plot(np.arange(1,int(step+1)), sampler_chain[j,:,i],'k',alpha=0.2) + ax.set_ylabel(ylabels[i]) +fig.align_labels() +plt.minorticks_on() +plt.xlabel('nstep') +plt.savefig(save_to_path+'/walker.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# create array triangle plots +triangle_samples = sampler_chain[:, burn:, :].reshape((-1, ndim)) +#print(triangle_samples.shape) + +# create the final spectra comparison +teff_mcmc, logg_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc = map(lambda v: (v[1], v[2]-v[1], v[1]-v[0]), + zip(*np.percentile(triangle_samples, [16, 50, 84], axis=0))) + + +print(teff_mcmc, logg_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc) + +# add the summary to the txt file + +# log file +log_path2 = save_to_path + '/mcmc_result.txt' + +file_log2 = open(log_path2,"w+") +file_log2.write("teff_mcmc {}\n".format(str(teff_mcmc[0]))) +file_log2.write("logg_mcmc {}\n".format(str(logg_mcmc[0]))) +#file_log2.write("vsini_mcmc {}\n".format(str(vsini_mcmc[0]))) +file_log2.write("rv_mcmc {}\n".format(str(rv_mcmc[0]+barycorr))) +#file_log2.write("am_mcmc {}\n".format(str(am_mcmc[0]))) +#file_log2.write("pwv_mcmc {}\n".format(str(pwv_mcmc[0]))) +file_log2.write("A_mcmc {}\n".format(str(A_mcmc[0]))) +#file_log2.write("B_mcmc {}\n".format(str(B_mcmc[0]))) +file_log2.write("N_mcmc {}\n".format(str(N_mcmc[0]))) +file_log2.write("lsf_mcmc {}\n".format(str(lsf_mcmc[0]))) +file_log2.write("teff_mcmc_e {}\n".format(str(max(abs(teff_mcmc[1]), abs(teff_mcmc[2]))))) +file_log2.write("logg_mcmc_e {}\n".format(str(max(abs(logg_mcmc[1]), abs(logg_mcmc[2]))))) +#file_log2.write("vsini_mcmc_e {}\n".format(str(max(abs(vsini_mcmc[1]), abs(vsini_mcmc[2]))))) +file_log2.write("rv_mcmc_e {}\n".format(str(max(abs(rv_mcmc[1]), abs(rv_mcmc[2]))))) +#file_log2.write("am_mcmc_e {}\n".format(str(max(abs(am_mcmc[1]), abs(am_mcmc[2]))))) +#file_log2.write("pwv_mcmc_e {}\n".format(str(max(abs(pwv_mcmc[1]), abs(pwv_mcmc[2]))))) +file_log2.write("A_mcmc_e {}\n".format(str(max(abs(A_mcmc[1]), abs(A_mcmc[2]))))) +#file_log2.write("B_mcmc_e {}\n".format(str(max(abs(B_mcmc[1]), abs(B_mcmc[2]))))) +file_log2.write("N_mcmc_e {}\n".format(str(max(abs(N_mcmc[1]), abs(N_mcmc[2]))))) +file_log2.write("lsf_mcmc_e {}\n".format(str(max(abs(lsf_mcmc[1]), abs(lsf_mcmc[2]))))) +# upper and lower uncertainties +# upper uncertainties +file_log2.write("teff_mcmc_ue {}\n".format(str(abs(teff_mcmc[1])))) +file_log2.write("logg_mcmc_ue {}\n".format(str(abs(logg_mcmc[1])))) +#file_log2.write("vsini_mcmc_ue {}\n".format(str(abs(vsini_mcmc[1])))) +file_log2.write("rv_mcmc_ue {}\n".format(str(abs(rv_mcmc[1])))) +#file_log2.write("am_mcmc_ue {}\n".format(str(abs(am_mcmc[1])))) +#file_log2.write("pwv_mcmc_ue {}\n".format(str(abs(pwv_mcmc[1])))) +file_log2.write("A_mcmc_ue {}\n".format(str(abs(A_mcmc[1])))) +#file_log2.write("B_mcmc_ue {}\n".format(str(abs(B_mcmc[1])))) +file_log2.write("N_mcmc_ue {}\n".format(str(abs(N_mcmc[1])))) +file_log2.write("lsf_mcmc_ue {}\n".format(str(abs(lsf_mcmc[1])))) +# lower uncertainties +file_log2.write("teff_mcmc_le {}\n".format(str(abs(teff_mcmc[2])))) +file_log2.write("logg_mcmc_le {}\n".format(str(abs(logg_mcmc[2])))) +#file_log2.write("vsini_mcmc_le {}\n".format(str(abs(vsini_mcmc[2])))) +file_log2.write("rv_mcmc_le {}\n".format(str(abs(rv_mcmc[2])))) +#file_log2.write("am_mcmc_le {}\n".format(str(abs(am_mcmc[2])))) +#file_log2.write("pwv_mcmc_le {}\n".format(str(abs(pwv_mcmc[2])))) +file_log2.write("A_mcmc_le {}\n".format(str(abs(A_mcmc[2])))) +#file_log2.write("B_mcmc_le {}\n".format(str(abs(B_mcmc[2])))) +file_log2.write("N_mcmc_le {}\n".format(str(abs(N_mcmc[2])))) +file_log2.write("lsf_mcmc_le {}\n".format(str(abs(lsf_mcmc[2])))) +file_log2.close() + +#print(teff_mcmc, logg_mcmc, vsini_mcmc, rv_mcmc, am_mcmc, pwv_mcmc, A_mcmc, B_mcmc, N_mcmc) + +triangle_samples[:,2] += barycorr + +## triangular plots +plt.rc('font', family='sans-serif') +fig = corner.corner(triangle_samples, + labels=ylabels, + truths=[teff_mcmc[0], + logg_mcmc[0], + rv_mcmc[0]+barycorr, + A_mcmc[0], + N_mcmc[0], + lsf_mcmc[0] + ], + quantiles=[0.16, 0.84], + label_kwargs={"fontsize": 20}) +plt.minorticks_on() +fig.savefig(save_to_path+'/triangle.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +teff = teff_mcmc[0] +logg = logg_mcmc[0] +z = 0.0 +#vsini = vsini_mcmc[0] +rv = rv_mcmc[0] +A = A_mcmc[0] +#B = B_mcmc[0] +N = N_mcmc[0] +lsf = lsf_mcmc[0] + + +model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, + rv=rv, #wave_offset=B, + flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, + include_fringe_model=False, instrument=instrument, tell=False, smooth=False) + +fig = plt.figure(figsize=(16,6)) +ax1 = fig.add_subplot(111) +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=15) +ax1.plot(model.wave, model.flux, color='C3', linestyle='-', label='model',alpha=0.8) +#ax1.plot(model_notell.wave,model_notell.flux, color='C0', linestyle='-', label='model no telluric',alpha=0.8) +ax1.plot(data.wave, data.flux,'k-', label='data',alpha=0.5) +#ax1.plot(data.wave, data.flux-model.flux,'k-',alpha=0.8, label='residual') +plt.fill_between(data.wave,-data.noise*N,data.noise*N,facecolor='C0',alpha=0.5) +#plt.axhline(y=0,color='k',linestyle='-',linewidth=0.5) +#plt.ylim(-np.max(np.append(np.abs(data.noise),np.abs(data.flux-model.flux)))*1.2,np.max(data.flux)*1.2) +plt.ylabel("Flux ($cnts/s$)",fontsize=15) +plt.xlabel("$\lambda$ ($\AA$)",fontsize=15) +#plt.figtext(0.89,0.85,str(data.header['OBJECT'])+' '+data.name+' O'+str(data.order), +# color='k', +# horizontalalignment='right', +# verticalalignment='center', +# fontsize=15) +plt.figtext(0.89,0.82,"$Teff \, {0}^{{+{1}}}_{{-{2}}}/ logg \, {3}^{{+{4}}}_{{-{5}}}/ en \, 0.0/ RV \, {6}^{{+{7}}}_{{-{8}}}$".format(\ + round(teff_mcmc[0]), + round(teff_mcmc[1]), + round(teff_mcmc[2]), + round(logg_mcmc[0],1), + round(logg_mcmc[1],3), + round(logg_mcmc[2],3), + round(rv_mcmc[0]+barycorr,2), + round(rv_mcmc[1],2), + round(rv_mcmc[2],2)), + color='C0', + horizontalalignment='right', + verticalalignment='center', + fontsize=12) +plt.figtext(0.89,0.79,r"$\chi^2$ = {}, DOF = {}".format(\ + round(smart.chisquare(data,model)), round(len(data.wave-ndim)/3)), +color='k', +horizontalalignment='right', +verticalalignment='center', +fontsize=12) +plt.legend(loc=4) +plt.minorticks_on() + +ax2 = ax1.twiny() +ax2.plot(pixel, data.flux, color='w', alpha=0) +ax2.set_xlabel('Pixel',fontsize=15) +ax2.tick_params(labelsize=15) +ax2.set_xlim(pixel[0], pixel[-1]) +ax2.minorticks_on() + +#plt.legend() +plt.savefig(save_to_path + '/spectrum.png', dpi=300, bbox_inches='tight') +plt.savefig(save_to_path + '/spectrum.pdf', bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# chi2 and dof in the log +log_path = save_to_path + '/mcmc_parameters.txt' +file_log = open(log_path,"a") +file_log.write("*** Below is the summary *** \n") +file_log.write("total_time {} min\n".format(str((time2-time1)/60))) +file_log.write("mean_acceptance_fraction {0:.3f} \n".format(np.mean(sampler.acceptance_fraction))) +file_log.write("mean_autocorrelation_time {0:.3f} \n".format(np.mean(autocorr_time))) +file_log.write("chi2 {} \n".format(round(smart.chisquare(data,model)))) +file_log.write("dof {} \n".format(round(len(data.wave-ndim)/3))) +file_log.write("teff_mcmc {} K\n".format(str(teff_mcmc))) +file_log.write("logg_mcmc {} dex (cgs)\n".format(str(logg_mcmc))) +#file_log.write("vsini_mcmc {} km/s\n".format(str(vsini_mcmc))) +file_log.write("rv_mcmc {} km/s\n".format(str(rv_mcmc))) +#file_log.write("am_mcmc {}\n".format(str(am_mcmc))) +#file_log.write("pwv_mcmc {}\n".format(str(pwv_mcmc))) +file_log.write("A_mcmc {}\n".format(str(A_mcmc))) +#file_log.write("B_mcmc {}\n".format(str(B_mcmc))) +file_log.write("N_mcmc {}\n".format(str(N_mcmc))) +file_log.write("lsf_mcmc {}\n".format(str(lsf_mcmc))) +file_log.close() + + +# excel summary file +''' +cat = pd.DataFrame(columns=['date_obs','date_name','tell_name','data_path''save_path', + 'model_date','model_time','data_mask','order','coadd','med_snr','lsf', + 'barycorr','modelset','priors','limits','ndim','nwalkers','step','burn', + 'rv','e_rv','ue_rv','le_rv','vsini','e_vsini','ue_vsini','le_vsini', + 'teff','e_teff','ue_teff','le_teff','logg','e_logg','ue_logg','le_logg', + 'cflux','e_cflux','ue_cflux','le_cflux','cwave','e_cwave','ue_cwave','le_cwave', + 'cnoise','e_cnoise','ue_cnoise','le_cnoise','wave_cal_err','chi2','dof','acceptance_fraction','autocorr_time']) + + +med_snr = np.nanmedian(data.flux/data.noise) +if instrument == 'nirspec': + wave_cal_err = tell_sp.header['STD'] +else: + wave_cal_err = np.nan + +cat = cat.append({ 'date_obs':date_obs,'date_name':sci_data_name, + 'data_path':data_path,'save_path':save_to_path, + 'model_date':today.isoformat(),'model_time':dt_string,'data_mask':custom_mask, + 'order':order,'coadd':coadd,'med_snr':med_snr,'lsf':lsf, 'barycorr':barycorr, + 'modelset':modelset, 'priors':priors, 'limits':limits, + 'ndim':ndim, 'nwalkers':nwalkers,'step':step, 'burn':burn, + 'rv':rv_mcmc[0]+barycorr, 'e_rv':max(rv_mcmc[1], rv_mcmc[2]), 'ue_rv':rv_mcmc[1], 'le_rv':rv_mcmc[2], + 'vsini':vsini_mcmc[0], 'e_vsini':max(vsini_mcmc[1], vsini_mcmc[2]), 'ue_vsini':vsini_mcmc[1], 'le_vsini':vsini_mcmc[2], + 'teff':teff_mcmc[0], 'e_teff':max(teff_mcmc[1],teff_mcmc[2]), 'ue_teff':teff_mcmc[1], 'le_teff':teff_mcmc[2], + 'logg':logg_mcmc[0], 'e_logg':max(logg_mcmc[1], logg_mcmc[2]), 'ue_logg':logg_mcmc[1], 'le_logg':logg_mcmc[2], + 'cflux':A_mcmc[0], 'e_cflux':max(A_mcmc[1], A_mcmc[2]), 'ue_cflux':A_mcmc[1], 'le_cflux':A_mcmc[2], + 'cwave':B_mcmc[0], 'e_cwave':max(B_mcmc[1], B_mcmc[2]), 'ue_cwave':B_mcmc[1], 'le_cwave':B_mcmc[2], + 'cnoise':N_mcmc[0],'e_cnoise':max(N_mcmc[1], N_mcmc[2]), 'ue_cnoise':N_mcmc[1], 'le_cnoise':N_mcmc[2], + 'wave_cal_err':wave_cal_err, }, ignore_index=True) + +cat.to_excel(save_to_path + '/mcmc_summary.xlsx', index=False) +''' diff --git a/smart/forward_model/run_mcmc_science_osiris_flattened.py b/smart/forward_model/run_mcmc_science_osiris_flattened.py new file mode 100644 index 0000000..d7ac99e --- /dev/null +++ b/smart/forward_model/run_mcmc_science_osiris_flattened.py @@ -0,0 +1,819 @@ +import pandas as pd +import numpy as np +import matplotlib +#matplotlib.use('Agg') +import matplotlib.pyplot as plt +#plt.ioff() +import matplotlib.gridspec as gridspec +from astropy.io import fits +import emcee +#from schwimmbad import MPIPool +from multiprocessing import Pool +from multiprocessing import set_start_method +import smart +import model_fit +import mcmc_utils +import corner +import os +import sys +import time +import copy +import argparse +import json +import ast +import warnings +from datetime import date, datetime +warnings.filterwarnings("ignore") +import astropy.units as u +from astropy.units import cds +cds.enable() +from astropy.constants import c as speedoflight + +############################################################################################## +## This is the script to make the code multiprocessing, using arcparse to pass the arguments +## The code is run with 8 parameters, including Teff, logg, RV, vsini, telluric alpha, and +## nuisance parameters for wavelength, flux and noise. +############################################################################################## + +parser = argparse.ArgumentParser(description="Run the forward-modeling routine for science files", + usage="run_mcmc_science.py order date_obs sci_data_name data_path save_to_path lsf priors limits") + +#parser.add_argument("source",metavar='src',type=str, +# default=None, help="source name", nargs="+") + +parser.add_argument("order",metavar='o',type=str, + default=None, help="order", nargs="+") + +parser.add_argument("date_obs",metavar='dobs',type=str, + default=None, help="source name", nargs="+") + +parser.add_argument("sci_data_name",metavar='sci',type=str, + default=None, help="science data name", nargs="+") + +#parser.add_argument("tell_data_name",metavar='tell',type=str, +# default=None, help="telluric data name", nargs="+") + +parser.add_argument("data_path",type=str, + default=None, help="science data path", nargs="+") + +#parser.add_argument("tell_path",type=str, +# default=None, help="telluric data path", nargs="+") + +parser.add_argument("save_to_path",type=str, + default=None, help="output path", nargs="+") + +parser.add_argument("lsf",type=float, + default=None, help="line spread function", nargs="+") + +parser.add_argument("-instrument",metavar='--inst',type=str, + default='nirspec', help="spectrometer name of the instrument; default nirspec") + +parser.add_argument("-outlier_rejection",metavar='--rej',type=float, + default=3.0, help="outlier rejection based on the multiple of standard deviation of the residual; default 3.0") + +parser.add_argument("-ndim",type=int, + default=8, help="number of dimension; default 8") + +parser.add_argument("-nwalkers",type=int, + default=50, help="number of walkers of MCMC; default 50") + +parser.add_argument("-step",type=int, + default=600, help="number of steps of MCMC; default 600") + +parser.add_argument("-burn",type=int, + default=500, help="burn of MCMC; default 500") + +parser.add_argument("-moves",type=float, + default=2.0, help="moves of MCMC; default 2.0") + +parser.add_argument("-pixel_start",type=int, + default=10, help="starting pixel index for the science data; default 10") + +parser.add_argument("-pixel_end",type=int, + default=-40, help="ending pixel index for the science data; default -40") + +#parser.add_argument("-pwv",type=float, +# default=0.5, help="precipitable water vapor for telluric profile; default 0.5 mm") + +#parser.add_argument("-alpha_tell",type=float, +# default=1.0, help="telluric alpha; default 1.0") + +parser.add_argument("-applymask",type=bool, + default=False, help="apply a simple mask based on the STD of the average flux; default is False") + +parser.add_argument("-plot_show",type=bool, + default=False, help="show the MCMC plots; default is False") + +parser.add_argument("-coadd",type=bool, + default=False, help="coadd the spectra; default is False") + +parser.add_argument("-coadd_sp_name",type=str, + default=None, help="name of the coadded spectra") + +parser.add_argument("-modelset",type=str, + default='btsettl08', help="model set; default is btsettl08") + +parser.add_argument("-final_mcmc", action='store_true', help="run final mcmc; default False") + +parser.add_argument("-include_fringe_model", action='store_true', help="model the fringe pattern; default False") + +args = parser.parse_args() + +###################################################################################################### + +#source = str(args.source[0]) +order = str(args.order[0]) +instrument = str(args.instrument) +date_obs = str(args.date_obs[0]) +sci_data_name = str(args.sci_data_name[0]) +data_path = str(args.data_path[0]) +#tell_data_name = str(args.tell_data_name[0]) +#tell_path = str(args.tell_path[0]) +save_to_path_base = str(args.save_to_path[0]) +lsf0 = float(args.lsf[0]) +ndim, nwalkers, step = int(args.ndim), int(args.nwalkers), int(args.step) +burn = int(args.burn) +moves = float(args.moves) +applymask = args.applymask +pixel_start, pixel_end = int(args.pixel_start), int(args.pixel_end) +#pwv = float(args.pwv) +#alpha_tell = float(args.alpha_tell[0]) +plot_show = args.plot_show +coadd = args.coadd +outlier_rejection = float(args.outlier_rejection) +modelset = str(args.modelset) +final_mcmc = args.final_mcmc +include_fringe_model = args.include_fringe_model + +if final_mcmc: + #save_to_path1 = save_to_path_base + '/init_mcmc' + save_to_path = save_to_path_base + '/final_mcmc' + +else: + save_to_path = save_to_path_base + '/init_mcmc' + +# date +today = date.today() +now = datetime.now() +dt_string = now.strftime("%H:%M:%S") + +##################################### + +print('MASK', applymask) +print(sci_data_name) +print(data_path) +#data = np.genfromtxt(data_path + sci_data_name + '.txt', skip_header=1) +hdulist = fits.open(data_path + sci_data_name + '.fits', ignore_missing_end=True) +data = hdulist[0].data + +wave = data[0] * 10000 * u.angstrom +flux = data[1] * u.W/u.m**2/u.micron ### NEED TO CONVERT THESE UNITS! erg/s / m^2 / micron +noise = data[2] * u.W/u.m**2/u.micron ### NEED TO CONVERT THESE UNITS! +#ind = np.where( (flux > 0) & (~np.isnan(flux) ) ) +flux = flux.to(u.erg/u.s/u.cm**2/u.angstrom) +noise = noise.to(u.erg/u.s/u.cm**2/u.angstrom) + +ind = np.where( (wave.value > 19000) & (~np.isnan(flux)) ) +wave = wave[ind] +flux = flux[ind] +noise = noise[ind] + +data = smart.Spectrum(flux=flux.value, wave=wave.value, noise=noise.value, path=data_path, order=order, applymask=applymask, instrument=instrument) +#data = smart.Spectrum(name=sci_data_name, order=order, path=data_path, applymask=applymask, instrument=instrument) + +#import scipy as sp +#smoothfluxmed = sp.ndimage.filters.uniform_filter(data.flux, size=80) # smooth by this many spectral bins + +#data.flux -= smoothfluxmed +#data.noise = 0.1*data.flux + +############# TEST +''' +print("TEST"*20) +teff, logg, vsini, rv, A, B, N, lsf = 1364, 4.48, 4.77, 107.5, -20.8, -15.7, 0.86, 41.03 +model = smart.makeModel(teff=teff, logg=logg, metal=0.0, vsini=vsini, rv=rv, wave_offset=B, flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=False, instrument=instrument, tell=False) +#data = smart.Spectrum(flux=model.flux, wave=model.wave, path=data_path, order=order, applymask=applymask, instrument=instrument) +plt.plot(data.wave, data.flux, alpha=0.5, label='data') +plt.plot(data.wave, data.noise, alpha=0.5, label='noise') +plt.plot(model.wave, model.flux, alpha=0.5, label='model') +#plt.plot(model2.wave, model2.flux, alpha=0.5, label='model2') +chisquare = smart.chisquare(data, model)/N**2 +print('Chi', smart.chisquare(data, model), chisquare) +print(-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise*N)**2)))) +plt.legend() +plt.show() +sys.exit() +''' +############# TEST + +import scipy as sp +smoothfluxmed = sp.ndimage.filters.uniform_filter(data.flux, size=80) # smooth by this many spectral bins + +data.flux /= smoothfluxmed +data.noise /= smoothfluxmed + +sci_data = data + + +""" +MCMC run for the science spectra. See the parameters in the makeModel function. + +Parameters +---------- + +sci_data : sepctrum object + science data + +tell_data : spectrum object + telluric data for calibrating the science spectra + +priors : dic + keys are teff_min, teff_max, logg_min, logg_max, vsini_min, vsini_max, rv_min, rv_max, + am_min, am_max, pwv_min, pwv_max, A_min, A_max, B_min, B_max + +Optional Parameters +------------------- + +limits : dic + mcmc limits with the same format as the input priors + +ndim : int + mcmc dimension + +nwalkers : int + number of walkers + + step : int + number of steps + + burn : int + burn for the mcmc + + moves : float + stretch parameter for the mcmc. The default is 2.0 based on the emcee package + + pixel_start : int + starting pixel number for the spectra in the MCMC + + pixel_end : int + ending pixel number for the spectra in the MCMC + + alpha_tell : float + power of telluric spectra for estimating the line spread function of the NIRSPEC instrument + + modelset : str + 'btsettl08' or 'phoenixaces' model sets + + save_to_path: str + path to savr the MCMC output + +""" + +if save_to_path is not None: + if not os.path.exists(save_to_path): + os.makedirs(save_to_path) +else: + save_to_path = '.' + +#if limits is None: limits = priors + +data = copy.deepcopy(sci_data) + + +# barycentric corrction +#barycorr = smart.barycorr(data.header).value +#print("barycorr:",barycorr) + +## read the input custom mask and priors +lines = open(save_to_path+'/mcmc_parameters.txt').read().splitlines() +custom_mask = json.loads(lines[3].split('custom_mask')[1]) +priors = ast.literal_eval(lines[4].split('priors ')[1]) +barycorr = json.loads(lines[11].split('barycorr')[1]) +#print(priors) +#sys.exit() + +# no logg 5.5 for teff lower than 900 +if 'btsettl08' in modelset.lower() and priors['teff_min'] < 900: logg_max = 5.0 +else: logg_max = 5.5 + +# limit of the flux nuisance parameter: 5 percent of the median flux +A_const = 0.05 * abs(np.median(data.flux)) + +if 'btsettl08' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,500), 'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':10, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif modelset.lower() == 'phoenix-btsettl-cifist2011-2015': + limits = { + 'teff_min':max(priors['teff_min']-300,1200),'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':10, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + + +elif 'sonora' in modelset.lower(): + limits = { + 'teff_min':max(priors['teff_min']-300,200), 'teff_max':min(priors['teff_max']+300,2400), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':10.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':10, + 'B_min':-50, 'B_max':50, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif modelset.lower() == 'phoenix-aces-agss-cond-2011': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,10000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-50, 'A_max':10, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif modelset.lower() == 'phoenixaces': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,10000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +elif modelset.upper() == 'PHOENIX_BTSETTL_CIFIST2011_2015': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,7000), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':10.0, + 'lsf_min':1, 'lsf_max':100 + } + +# HIRES wavelength calibration is not that precise, release the constraint for the wavelength offset nuisance parameter +if data.instrument == 'hires': + limits['B_min'] = -3.0 # Angstrom + limits['B_max'] = +3.0 # Angstrom + +if final_mcmc: + limits['rv_min'] = priors['rv_min'] - 10 + limits['rv_max'] = priors['rv_max'] + 10 + +## apply a custom mask +#data.mask_custom(custom_mask=custom_mask) + +## add a pixel label for plotting +length1 = len(data.flux) +pixel = np.delete(np.arange(length1), data.mask) +pixel = pixel[pixel_start:pixel_end] + +### mask the end pixels +data.wave = data.wave[pixel_start:pixel_end] +data.flux = data.flux[pixel_start:pixel_end] +data.noise = data.noise[pixel_start:pixel_end] + +#plt.plot(data.wave, data.flux) +#plt.show() + + +#if final_mcmc: +# priors, limits = mcmc_utils.generate_final_priors_and_limits(sp_type=sp_type, barycorr=barycorr, save_to_path1=save_to_path1) +#else: +# priors, limits = mcmc_utils.generate_initial_priors_and_limits(sp_type=sp_type) +#print(priors, limits) + +#if lsf is None: +# lsf = smart.getLSF(tell_sp, alpha=alpha_tell, test=True, save_path=save_to_path) +# print("LSF: ", lsf) +#else: +# print("Use input lsf:", lsf) + +# log file +log_path = save_to_path + '/mcmc_parameters.txt' +""" +file_log = open(log_path,"w+") +file_log.write("data_path {} \n".format(data.path)) +file_log.write("tell_path {} \n".format(tell_sp.path)) +file_log.write("data_name {} \n".format(data.name)) +file_log.write("tell_name {} \n".format(tell_sp.name)) +file_log.write("order {} \n".format(data.order)) +file_log.write("custom_mask {} \n".format(custom_mask)) +file_log.write("priors {} \n".format(priors)) +file_log.write("ndim {} \n".format(ndim)) +file_log.write("nwalkers {} \n".format(nwalkers)) +file_log.write("step {} \n".format(step)) +file_log.write("burn {} \n".format(burn)) +file_log.write("pixel_start {} \n".format(pixel_start)) +file_log.write("pixel_end {} \n".format(pixel_end)) +file_log.write("barycorr {} \n".format(barycorr)) +file_log.write("lsf {} \n".format(lsf)) +file_log.write("med_snr {} \n".format(med_snr)) +file_log.close() +""" + +######################################################################################### +## for multiprocessing +######################################################################################### +print('Modelset:', modelset) +print('Instrument:', instrument) +print('include_fringe_model', include_fringe_model) +print(lsf0) + +def lnlike(theta, data, lsf0): + """ + Log-likelihood, computed from chi-squared. + + Parameters + ---------- + theta + lsf + data + + Returns + ------- + -0.5 * chi-square + sum of the log of the noise + + """ + + ## Parameters MCMC + #print('THETA:', theta) + teff, logg, rv, A, N, lsf = theta #N noise prefactor + #teff, logg, vsini, rv, , am, pwv, A, B, freq, amp, phase = theta + + model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, #vsini=vsini, + rv=rv, + #wave_offset=B, + flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, include_fringe_model=include_fringe_model, instrument=instrument, tell=False, smooth=True) + + # print('MODEL') + # print(model.wave) + # print(model.flux) + # print('DATA') + # print(data.wave) + # print(data.flux) + # plt.plot(data.wave, data.flux, label='data') + # plt.plot(model.wave, model.flux, label='model') + # plt.legend() + # plt.show() + + #print('CHI0') + chisquare = smart.chisquare(data, model)/N**2 + #print('CHI', chisquare) + + chi0 = -0.5 * np.sum( ( data.flux - model.flux )**2/(data.noise*N)**2 + np.log( (data.noise*N)**2) ) + return chi0#-0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise)**2))) + +def lnprior(theta, limits=limits): + """ + Specifies a flat prior + """ + ## Parameters for theta + teff, logg, rv, A, N, lsf = theta + + if limits['teff_min'] < teff < limits['teff_max'] \ + and limits['logg_min'] < logg < limits['logg_max'] \ + and limits['rv_min'] < rv < limits['rv_max'] \ + and limits['A_min'] < A < limits['A_max']\ + and limits['N_min'] < N < limits['N_max']\ + and limits['lsf_min'] < lsf < limits['lsf_max']: + return 0.0 + + return -np.inf + +def lnprob(theta, data, lsf0): + #print('THETA0:', theta) + + lnp = lnprior(theta) + + if not np.isfinite(lnp): + return -np.inf + + return lnp + lnlike(theta, data, lsf0) + +pos = [np.array([ priors['teff_min'] + (priors['teff_max'] - priors['teff_min'] ) * np.random.uniform(), + priors['logg_min'] + (priors['logg_max'] - priors['logg_min'] ) * np.random.uniform(), + #priors['vsini_min'] + (priors['vsini_max'] - priors['vsini_min']) * np.random.uniform(), + priors['rv_min'] + (priors['rv_max'] - priors['rv_min'] ) * np.random.uniform(), + priors['A_min'] + (priors['A_max'] - priors['A_min']) * np.random.uniform(), + #priors['B_min'] + (priors['B_max'] - priors['B_min']) * np.random.uniform(), + priors['N_min'] + (priors['N_max'] - priors['N_min']) * np.random.uniform(), + priors['lsf_min'] + (priors['lsf_max'] - priors['lsf_min']) * np.random.uniform() + ]) for i in range(nwalkers)] + +## TEST + +print('Priors:',priors) +print('Limits:',limits) + +# sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, moves=emcee.moves.KDEMove()) +# time1 = time.time() +# sampler.run_mcmc(pos, step, progress=True) +# time2 = time.time() + +## multiprocessing + +set_start_method('fork') +with Pool() as pool: + #sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf, pwv), a=moves, pool=pool) + sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf0), a=moves, pool=pool, + moves=emcee.moves.KDEMove()) + time1 = time.time() + sampler.run_mcmc(pos, step, progress=True) + time2 = time.time() + + +np.save(save_to_path + '/sampler_chain', sampler.chain[:, :, :]) + +samples = sampler.chain[:, :, :].reshape((-1, ndim)) + +np.save(save_to_path + '/samples', samples) + +print('total time: ',(time2-time1)/60,' min.') +print("Mean acceptance fraction: {0:.3f}".format(np.mean(sampler.acceptance_fraction))) +print(sampler.acceptance_fraction) +autocorr_time = sampler.get_autocorr_time(discard=burn, quiet=True) +print("Mean autocorrelation time: {0:.3f} steps".format(np.mean(autocorr_time))) +print(autocorr_time) + +# create walker plots +print('SAVE PATH:', save_to_path) +sampler_chain = np.load(save_to_path + '/sampler_chain.npy') +samples = np.load(save_to_path + '/samples.npy') + +ylabels = ["$T_{\mathrm{eff}} (K)$", + "$\log{g}$(dex)", + "$RV(km/s)$", + "$C_{F_{\lambda}}$ (cnt/s)", + "$C_{noise}$","LSF" + ] + + +## create walker plots +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=30) +fig = plt.figure(tight_layout=True) +gs = gridspec.GridSpec(ndim, 1) +gs.update(hspace=0.1) + +for i in range(ndim): + ax = fig.add_subplot(gs[i, :]) + for j in range(nwalkers): + ax.plot(np.arange(1,int(step+1)), sampler_chain[j,:,i],'k',alpha=0.2) + ax.set_ylabel(ylabels[i]) +fig.align_labels() +plt.minorticks_on() +plt.xlabel('nstep') +plt.savefig(save_to_path+'/walker.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# create array triangle plots +triangle_samples = sampler_chain[:, burn:, :].reshape((-1, ndim)) +#print(triangle_samples.shape) + +# create the final spectra comparison +teff_mcmc, logg_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc = map(lambda v: (v[1], v[2]-v[1], v[1]-v[0]), + zip(*np.percentile(triangle_samples, [16, 50, 84], axis=0))) + + +print(teff_mcmc, logg_mcmc, rv_mcmc, A_mcmc, N_mcmc, lsf_mcmc) + +# add the summary to the txt file + +# log file +log_path2 = save_to_path + '/mcmc_result.txt' + +file_log2 = open(log_path2,"w+") +file_log2.write("teff_mcmc {}\n".format(str(teff_mcmc[0]))) +file_log2.write("logg_mcmc {}\n".format(str(logg_mcmc[0]))) +#file_log2.write("vsini_mcmc {}\n".format(str(vsini_mcmc[0]))) +file_log2.write("rv_mcmc {}\n".format(str(rv_mcmc[0]+barycorr))) +#file_log2.write("am_mcmc {}\n".format(str(am_mcmc[0]))) +#file_log2.write("pwv_mcmc {}\n".format(str(pwv_mcmc[0]))) +file_log2.write("A_mcmc {}\n".format(str(A_mcmc[0]))) +#file_log2.write("B_mcmc {}\n".format(str(B_mcmc[0]))) +file_log2.write("N_mcmc {}\n".format(str(N_mcmc[0]))) +file_log2.write("lsf_mcmc {}\n".format(str(lsf_mcmc[0]))) +file_log2.write("teff_mcmc_e {}\n".format(str(max(abs(teff_mcmc[1]), abs(teff_mcmc[2]))))) +file_log2.write("logg_mcmc_e {}\n".format(str(max(abs(logg_mcmc[1]), abs(logg_mcmc[2]))))) +#file_log2.write("vsini_mcmc_e {}\n".format(str(max(abs(vsini_mcmc[1]), abs(vsini_mcmc[2]))))) +file_log2.write("rv_mcmc_e {}\n".format(str(max(abs(rv_mcmc[1]), abs(rv_mcmc[2]))))) +#file_log2.write("am_mcmc_e {}\n".format(str(max(abs(am_mcmc[1]), abs(am_mcmc[2]))))) +#file_log2.write("pwv_mcmc_e {}\n".format(str(max(abs(pwv_mcmc[1]), abs(pwv_mcmc[2]))))) +file_log2.write("A_mcmc_e {}\n".format(str(max(abs(A_mcmc[1]), abs(A_mcmc[2]))))) +#file_log2.write("B_mcmc_e {}\n".format(str(max(abs(B_mcmc[1]), abs(B_mcmc[2]))))) +file_log2.write("N_mcmc_e {}\n".format(str(max(abs(N_mcmc[1]), abs(N_mcmc[2]))))) +file_log2.write("lsf_mcmc_e {}\n".format(str(max(abs(lsf_mcmc[1]), abs(lsf_mcmc[2]))))) +# upper and lower uncertainties +# upper uncertainties +file_log2.write("teff_mcmc_ue {}\n".format(str(abs(teff_mcmc[1])))) +file_log2.write("logg_mcmc_ue {}\n".format(str(abs(logg_mcmc[1])))) +#file_log2.write("vsini_mcmc_ue {}\n".format(str(abs(vsini_mcmc[1])))) +file_log2.write("rv_mcmc_ue {}\n".format(str(abs(rv_mcmc[1])))) +#file_log2.write("am_mcmc_ue {}\n".format(str(abs(am_mcmc[1])))) +#file_log2.write("pwv_mcmc_ue {}\n".format(str(abs(pwv_mcmc[1])))) +file_log2.write("A_mcmc_ue {}\n".format(str(abs(A_mcmc[1])))) +#file_log2.write("B_mcmc_ue {}\n".format(str(abs(B_mcmc[1])))) +file_log2.write("N_mcmc_ue {}\n".format(str(abs(N_mcmc[1])))) +file_log2.write("lsf_mcmc_ue {}\n".format(str(abs(lsf_mcmc[1])))) +# lower uncertainties +file_log2.write("teff_mcmc_le {}\n".format(str(abs(teff_mcmc[2])))) +file_log2.write("logg_mcmc_le {}\n".format(str(abs(logg_mcmc[2])))) +#file_log2.write("vsini_mcmc_le {}\n".format(str(abs(vsini_mcmc[2])))) +file_log2.write("rv_mcmc_le {}\n".format(str(abs(rv_mcmc[2])))) +#file_log2.write("am_mcmc_le {}\n".format(str(abs(am_mcmc[2])))) +#file_log2.write("pwv_mcmc_le {}\n".format(str(abs(pwv_mcmc[2])))) +file_log2.write("A_mcmc_le {}\n".format(str(abs(A_mcmc[2])))) +#file_log2.write("B_mcmc_le {}\n".format(str(abs(B_mcmc[2])))) +file_log2.write("N_mcmc_le {}\n".format(str(abs(N_mcmc[2])))) +file_log2.write("lsf_mcmc_le {}\n".format(str(abs(lsf_mcmc[2])))) +file_log2.close() + +#print(teff_mcmc, logg_mcmc, vsini_mcmc, rv_mcmc, am_mcmc, pwv_mcmc, A_mcmc, B_mcmc, N_mcmc) + +triangle_samples[:,2] += barycorr + +## triangular plots +plt.rc('font', family='sans-serif') +fig = corner.corner(triangle_samples, + labels=ylabels, + truths=[teff_mcmc[0], + logg_mcmc[0], + rv_mcmc[0]+barycorr, + A_mcmc[0], + N_mcmc[0], + lsf_mcmc[0] + ], + quantiles=[0.16, 0.84], + label_kwargs={"fontsize": 20}) +plt.minorticks_on() +fig.savefig(save_to_path+'/triangle.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +teff = teff_mcmc[0] +logg = logg_mcmc[0] +z = 0.0 +#vsini = vsini_mcmc[0] +rv = rv_mcmc[0] +A = A_mcmc[0] +#B = B_mcmc[0] +N = N_mcmc[0] +lsf = lsf_mcmc[0] + + +model = model_fit.makeModel(teff=teff, logg=logg, metal=0.0, + rv=rv, #wave_offset=B, + flux_mult=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, + include_fringe_model=False, instrument=instrument, tell=False, smooth=True) + +fig = plt.figure(figsize=(16,6)) +ax1 = fig.add_subplot(111) +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=15) +ax1.plot(model.wave, model.flux, color='C3', linestyle='-', label='model',alpha=0.8) +#ax1.plot(model_notell.wave,model_notell.flux, color='C0', linestyle='-', label='model no telluric',alpha=0.8) +ax1.plot(data.wave, data.flux,'k-', label='data',alpha=0.5) +#ax1.plot(data.wave, data.flux-model.flux,'k-',alpha=0.8, label='residual') +plt.fill_between(data.wave,-data.noise*N,data.noise*N,facecolor='C0',alpha=0.5) +#plt.axhline(y=0,color='k',linestyle='-',linewidth=0.5) +#plt.ylim(-np.max(np.append(np.abs(data.noise),np.abs(data.flux-model.flux)))*1.2,np.max(data.flux)*1.2) +plt.ylabel("Flux ($cnts/s$)",fontsize=15) +plt.xlabel("$\lambda$ ($\AA$)",fontsize=15) +#plt.figtext(0.89,0.85,str(data.header['OBJECT'])+' '+data.name+' O'+str(data.order), +# color='k', +# horizontalalignment='right', +# verticalalignment='center', +# fontsize=15) +plt.figtext(0.89,0.82,"$Teff \, {0}^{{+{1}}}_{{-{2}}}/ logg \, {3}^{{+{4}}}_{{-{5}}}/ en \, 0.0/ RV \, {6}^{{+{7}}}_{{-{8}}}$".format(\ + round(teff_mcmc[0]), + round(teff_mcmc[1]), + round(teff_mcmc[2]), + round(logg_mcmc[0],1), + round(logg_mcmc[1],3), + round(logg_mcmc[2],3), + round(rv_mcmc[0]+barycorr,2), + round(rv_mcmc[1],2), + round(rv_mcmc[2],2)), + color='C0', + horizontalalignment='right', + verticalalignment='center', + fontsize=12) +plt.figtext(0.89,0.79,r"$\chi^2$ = {}, DOF = {}".format(\ + round(smart.chisquare(data,model)), round(len(data.wave-ndim)/3)), +color='k', +horizontalalignment='right', +verticalalignment='center', +fontsize=12) +plt.legend(loc=4) +plt.minorticks_on() + +ax2 = ax1.twiny() +ax2.plot(pixel, data.flux, color='w', alpha=0) +ax2.set_xlabel('Pixel',fontsize=15) +ax2.tick_params(labelsize=15) +ax2.set_xlim(pixel[0], pixel[-1]) +ax2.minorticks_on() + +#plt.legend() +plt.savefig(save_to_path + '/spectrum.png', dpi=300, bbox_inches='tight') +plt.savefig(save_to_path + '/spectrum.pdf', bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# chi2 and dof in the log +log_path = save_to_path + '/mcmc_parameters.txt' +file_log = open(log_path,"a") +file_log.write("*** Below is the summary *** \n") +file_log.write("total_time {} min\n".format(str((time2-time1)/60))) +file_log.write("mean_acceptance_fraction {0:.3f} \n".format(np.mean(sampler.acceptance_fraction))) +file_log.write("mean_autocorrelation_time {0:.3f} \n".format(np.mean(autocorr_time))) +file_log.write("chi2 {} \n".format(round(smart.chisquare(data,model)))) +file_log.write("dof {} \n".format(round(len(data.wave-ndim)/3))) +file_log.write("teff_mcmc {} K\n".format(str(teff_mcmc))) +file_log.write("logg_mcmc {} dex (cgs)\n".format(str(logg_mcmc))) +#file_log.write("vsini_mcmc {} km/s\n".format(str(vsini_mcmc))) +file_log.write("rv_mcmc {} km/s\n".format(str(rv_mcmc))) +#file_log.write("am_mcmc {}\n".format(str(am_mcmc))) +#file_log.write("pwv_mcmc {}\n".format(str(pwv_mcmc))) +file_log.write("A_mcmc {}\n".format(str(A_mcmc))) +#file_log.write("B_mcmc {}\n".format(str(B_mcmc))) +file_log.write("N_mcmc {}\n".format(str(N_mcmc))) +file_log.write("lsf_mcmc {}\n".format(str(lsf_mcmc))) +file_log.close() + + +# excel summary file +''' +cat = pd.DataFrame(columns=['date_obs','date_name','tell_name','data_path''save_path', + 'model_date','model_time','data_mask','order','coadd','med_snr','lsf', + 'barycorr','modelset','priors','limits','ndim','nwalkers','step','burn', + 'rv','e_rv','ue_rv','le_rv','vsini','e_vsini','ue_vsini','le_vsini', + 'teff','e_teff','ue_teff','le_teff','logg','e_logg','ue_logg','le_logg', + 'cflux','e_cflux','ue_cflux','le_cflux','cwave','e_cwave','ue_cwave','le_cwave', + 'cnoise','e_cnoise','ue_cnoise','le_cnoise','wave_cal_err','chi2','dof','acceptance_fraction','autocorr_time']) + + +med_snr = np.nanmedian(data.flux/data.noise) +if instrument == 'nirspec': + wave_cal_err = tell_sp.header['STD'] +else: + wave_cal_err = np.nan + +cat = cat.append({ 'date_obs':date_obs,'date_name':sci_data_name, + 'data_path':data_path,'save_path':save_to_path, + 'model_date':today.isoformat(),'model_time':dt_string,'data_mask':custom_mask, + 'order':order,'coadd':coadd,'med_snr':med_snr,'lsf':lsf, 'barycorr':barycorr, + 'modelset':modelset, 'priors':priors, 'limits':limits, + 'ndim':ndim, 'nwalkers':nwalkers,'step':step, 'burn':burn, + 'rv':rv_mcmc[0]+barycorr, 'e_rv':max(rv_mcmc[1], rv_mcmc[2]), 'ue_rv':rv_mcmc[1], 'le_rv':rv_mcmc[2], + 'vsini':vsini_mcmc[0], 'e_vsini':max(vsini_mcmc[1], vsini_mcmc[2]), 'ue_vsini':vsini_mcmc[1], 'le_vsini':vsini_mcmc[2], + 'teff':teff_mcmc[0], 'e_teff':max(teff_mcmc[1],teff_mcmc[2]), 'ue_teff':teff_mcmc[1], 'le_teff':teff_mcmc[2], + 'logg':logg_mcmc[0], 'e_logg':max(logg_mcmc[1], logg_mcmc[2]), 'ue_logg':logg_mcmc[1], 'le_logg':logg_mcmc[2], + 'cflux':A_mcmc[0], 'e_cflux':max(A_mcmc[1], A_mcmc[2]), 'ue_cflux':A_mcmc[1], 'le_cflux':A_mcmc[2], + 'cwave':B_mcmc[0], 'e_cwave':max(B_mcmc[1], B_mcmc[2]), 'ue_cwave':B_mcmc[1], 'le_cwave':B_mcmc[2], + 'cnoise':N_mcmc[0],'e_cnoise':max(N_mcmc[1], N_mcmc[2]), 'ue_cnoise':N_mcmc[1], 'le_cnoise':N_mcmc[2], + 'wave_cal_err':wave_cal_err, }, ignore_index=True) + +cat.to_excel(save_to_path + '/mcmc_summary.xlsx', index=False) +''' diff --git a/smart/forward_model/run_mcmc_science_z.py b/smart/forward_model/run_mcmc_science_z.py new file mode 100644 index 0000000..178ce31 --- /dev/null +++ b/smart/forward_model/run_mcmc_science_z.py @@ -0,0 +1,715 @@ +import pandas as pd +import numpy as np +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +plt.ioff() +import matplotlib.gridspec as gridspec +from astropy.io import fits +import emcee +#from schwimmbad import MPIPool +from multiprocessing import Pool +import smart +import model_fit +import mcmc_utils +import corner +import os +import sys +import time +import copy +import argparse +import json +import ast +import warnings +from datetime import date, datetime +warnings.filterwarnings("ignore") + +############################################################################################## +## This is the script to make the code multiprocessing, using arcparse to pass the arguments +## The code is run with 8 parameters, including Teff, logg, RV, vsini, telluric alpha, and +## nuisance parameters for wavelength, flux and noise. +############################################################################################## + +parser = argparse.ArgumentParser(description="Run the forward-modeling routine for science files", + usage="run_mcmc_science.py order date_obs sci_data_name tell_data_name data_path tell_path save_to_path lsf priors limits") + +#parser.add_argument("source",metavar='src',type=str, +# default=None, help="source name", nargs="+") + +parser.add_argument("order",metavar='o',type=int, + default=None, help="order", nargs="+") + +parser.add_argument("date_obs",metavar='dobs',type=str, + default=None, help="source name", nargs="+") + +parser.add_argument("sci_data_name",metavar='sci',type=str, + default=None, help="science data name", nargs="+") + +parser.add_argument("tell_data_name",metavar='tell',type=str, + default=None, help="telluric data name", nargs="+") + +parser.add_argument("data_path",type=str, + default=None, help="science data path", nargs="+") + +parser.add_argument("tell_path",type=str, + default=None, help="telluric data path", nargs="+") + +parser.add_argument("save_to_path",type=str, + default=None, help="output path", nargs="+") + +parser.add_argument("lsf",type=float, + default=None, help="line spread function", nargs="+") + +parser.add_argument("-outlier_rejection",metavar='--rej',type=float, + default=3.0, help="outlier rejection based on the multiple of standard deviation of the residual; default 3.0") + +parser.add_argument("-ndim",type=int, + default=8, help="number of dimension; default 8") + +parser.add_argument("-nwalkers",type=int, + default=50, help="number of walkers of MCMC; default 50") + +parser.add_argument("-step",type=int, + default=600, help="number of steps of MCMC; default 600") + +parser.add_argument("-burn",type=int, + default=500, help="burn of MCMC; default 500") + +parser.add_argument("-moves",type=float, + default=2.0, help="moves of MCMC; default 2.0") + +parser.add_argument("-pixel_start",type=int, + default=10, help="starting pixel index for the science data; default 10") + +parser.add_argument("-pixel_end",type=int, + default=-40, help="ending pixel index for the science data; default -40") + +#parser.add_argument("-pwv",type=float, +# default=0.5, help="precipitable water vapor for telluric profile; default 0.5 mm") + +#parser.add_argument("-alpha_tell",type=float, +# default=1.0, help="telluric alpha; default 1.0") + +parser.add_argument("-applymask",type=bool, + default=False, help="apply a simple mask based on the STD of the average flux; default is False") + +parser.add_argument("-plot_show",type=bool, + default=False, help="show the MCMC plots; default is False") + +parser.add_argument("-coadd",type=bool, + default=False, help="coadd the spectra; default is False") + +parser.add_argument("-coadd_sp_name",type=str, + default=None, help="name of the coadded spectra") + +parser.add_argument("-modelset",type=str, + default='btsettl08', help="model set; default is btsettl08") + +parser.add_argument("-final_mcmc", action='store_true', help="run final mcmc; default False") + +args = parser.parse_args() + +###################################################################################################### + +#source = str(args.source[0]) +order = int(args.order[0]) +date_obs = str(args.date_obs[0]) +sci_data_name = str(args.sci_data_name[0]) +tell_data_name = str(args.tell_data_name[0]) +data_path = str(args.data_path[0]) +tell_path = str(args.tell_path[0]) +save_to_path_base = str(args.save_to_path[0]) +lsf = float(args.lsf[0]) +ndim, nwalkers, step = int(args.ndim), int(args.nwalkers), int(args.step) +burn = int(args.burn) +moves = float(args.moves) +applymask = args.applymask +pixel_start, pixel_end = int(args.pixel_start), int(args.pixel_end) +#pwv = float(args.pwv) +#alpha_tell = float(args.alpha_tell[0]) +plot_show = args.plot_show +coadd = args.coadd +outlier_rejection = float(args.outlier_rejection) +modelset = str(args.modelset) +final_mcmc = args.final_mcmc + +if final_mcmc: + #save_to_path1 = save_to_path_base + '/init_mcmc' + save_to_path = save_to_path_base + '/final_mcmc' + +else: + save_to_path = save_to_path_base + '/init_mcmc' + +# date +today = date.today() +now = datetime.now() +dt_string = now.strftime("%H:%M:%S") + +##################################### + +data = smart.Spectrum(name=sci_data_name, order=order, path=data_path, applymask=applymask) +tell_data_name2 = tell_data_name + '_calibrated' + +tell_sp = smart.Spectrum(name=tell_data_name2, order=data.order, path=tell_path, applymask=applymask) + +data.updateWaveSol(tell_sp) + +# MJD for logging +# upgraded NIRSPEC +if len(data.oriWave) == 2048: + mjd = data.header['MJD'] +# old NIRSPEC +else: + mjd = data.header['MJD-OBS'] + +if coadd: + sci_data_name2 = str(args.coadd_sp_name) + if not os.path.exists(save_to_path): + os.makedirs(save_to_path) + data1 = copy.deepcopy(data) + data2 = smart.Spectrum(name=sci_data_name2, order=order, path=data_path, applymask=applymask) + data.coadd(data2, method='pixel') + + plt.figure(figsize=(16,6)) + plt.plot(np.arange(1024),data.flux,'k', + label='coadd median S/N = {}'.format(np.median(data.flux/data.noise)),alpha=1) + plt.plot(np.arange(1024),data1.flux,'C0', + label='{} median S/N = {}'.format(sci_data_name,np.median(data1.flux/data1.noise)),alpha=0.5) + plt.plot(np.arange(1024),data2.flux,'C1', + label='{} median S/N = {}'.format(sci_data_name2,np.median(data2.flux/data2.noise)),alpha=0.5) + plt.plot(np.arange(1024),data.noise,'k',alpha=0.5) + plt.plot(np.arange(1024),data1.noise,'C0',alpha=0.5) + plt.plot(np.arange(1024),data2.noise,'C1',alpha=0.5) + plt.legend() + plt.xlabel('pixel') + plt.ylabel('cnts/s') + plt.minorticks_on() + plt.savefig(save_to_path+'/coadd_spectrum.png') + #plt.show() + plt.close() + +sci_data = data +tell_data = tell_sp + +""" +MCMC run for the science spectra. See the parameters in the makeModel function. + +Parameters +---------- + +sci_data : sepctrum object + science data + +tell_data : spectrum object + telluric data for calibrating the science spectra + +priors : dic + keys are teff_min, teff_max, logg_min, logg_max, vsini_min, vsini_max, rv_min, rv_max, + am_min, am_max, pwv_min, pwv_max, A_min, A_max, B_min, B_max + +Optional Parameters +------------------- + +limits : dic + mcmc limits with the same format as the input priors + +ndim : int + mcmc dimension + +nwalkers : int + number of walkers + + step : int + number of steps + + burn : int + burn for the mcmc + + moves : float + stretch parameter for the mcmc. The default is 2.0 based on the emcee package + + pixel_start : int + starting pixel number for the spectra in the MCMC + + pixel_end : int + ending pixel number for the spectra in the MCMC + + alpha_tell : float + power of telluric spectra for estimating the line spread function of the NIRSPEC instrument + + modelset : str + 'btsettl08' or 'phoenixaces' model sets + + save_to_path: str + path to savr the MCMC output + +""" + +if save_to_path is not None: + if not os.path.exists(save_to_path): + os.makedirs(save_to_path) +else: + save_to_path = '.' + +#if limits is None: limits = priors + +data = copy.deepcopy(sci_data) +tell_sp = copy.deepcopy(tell_data) +data.updateWaveSol(tell_sp) + +# barycentric corrction +#barycorr = smart.barycorr(data.header).value +#print("barycorr:",barycorr) + +## read the input custom mask and priors +lines = open(save_to_path+'/mcmc_parameters.txt').read().splitlines() +custom_mask = json.loads(lines[5].split('custom_mask')[1]) +priors = ast.literal_eval(lines[6].split('priors ')[1]) +barycorr = json.loads(lines[13].split('barycorr')[1]) + +# no logg 5.5 for teff lower than 900 +if modelset == 'btsettl08' and priors['teff_min'] < 900: logg_max = 5.0 +else: + logg_max = 5.5 + z_max = 0.5 + +# limit of the flux nuisance parameter: 5 percent of the median flux +A_const = 0.05 * abs(np.median(data.flux)) + +if modelset.lower() == 'btsettl08': + limits = { + 'teff_min':max(priors['teff_min']-300,500), 'teff_max':min(priors['teff_max']+300,3500), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':5.0 + } + +elif modelset.lower() == 'sonora': + limits = { + 'teff_min':max(priors['teff_min']-300,200), 'teff_max':min(priors['teff_max']+300,2400), + 'logg_min':3.5, 'logg_max':logg_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-0.6, 'B_max':0.6, + 'N_min':0.10, 'N_max':5.0 + } + +elif modelset.lower() == 'phoenix-aces-agss-cond-2011': + limits = { + 'teff_min':max(priors['teff_min']-300,2300), 'teff_max':min(priors['teff_max']+300,10000), + 'logg_min':3., 'logg_max':logg_max, + 'z_min':-2.5, 'z_max':z_max, + 'vsini_min':0.0, 'vsini_max':100.0, + 'rv_min':-200.0, 'rv_max':200.0, + 'am_min':1.0, 'am_max':3.0, + 'pwv_min':0.5, 'pwv_max':20.0, + 'A_min':-A_const, 'A_max':A_const, + 'B_min':-5, 'B_max':5, + 'N_min':0.10, 'N_max':5.50 + } + +if final_mcmc: + limits['rv_min'] = priors['rv_min'] - 10 + limits['rv_max'] = priors['rv_max'] + 10 + +## apply a custom mask +data.mask_custom(custom_mask=custom_mask) + +## add a pixel label for plotting +length1 = len(data.oriWave) +pixel = np.delete(np.arange(length1), data.mask) +pixel = pixel[pixel_start:pixel_end] + +### mask the end pixels +data.wave = data.wave[pixel_start:pixel_end] +data.flux = data.flux[pixel_start:pixel_end] +data.noise = data.noise[pixel_start:pixel_end] + +tell_sp.wave = tell_sp.wave[pixel_start:pixel_end] +tell_sp.flux = tell_sp.flux[pixel_start:pixel_end] +tell_sp.noise = tell_sp.noise[pixel_start:pixel_end] + +#if final_mcmc: +# priors, limits = mcmc_utils.generate_final_priors_and_limits(sp_type=sp_type, barycorr=barycorr, save_to_path1=save_to_path1) +#else: +# priors, limits = mcmc_utils.generate_initial_priors_and_limits(sp_type=sp_type) +#print(priors, limits) + +if lsf is None: + lsf = smart.getLSF(tell_sp, alpha=alpha_tell, test=True, save_path=save_to_path) +# print("LSF: ", lsf) +#else: +# print("Use input lsf:", lsf) + +# log file +log_path = save_to_path + '/mcmc_parameters.txt' +""" +file_log = open(log_path,"w+") +file_log.write("data_path {} \n".format(data.path)) +file_log.write("tell_path {} \n".format(tell_sp.path)) +file_log.write("data_name {} \n".format(data.name)) +file_log.write("tell_name {} \n".format(tell_sp.name)) +file_log.write("order {} \n".format(data.order)) +file_log.write("custom_mask {} \n".format(custom_mask)) +file_log.write("priors {} \n".format(priors)) +file_log.write("ndim {} \n".format(ndim)) +file_log.write("nwalkers {} \n".format(nwalkers)) +file_log.write("step {} \n".format(step)) +file_log.write("burn {} \n".format(burn)) +file_log.write("pixel_start {} \n".format(pixel_start)) +file_log.write("pixel_end {} \n".format(pixel_end)) +file_log.write("barycorr {} \n".format(barycorr)) +file_log.write("lsf {} \n".format(lsf)) +file_log.write("med_snr {} \n".format(med_snr)) +file_log.close() +""" + +######################################################################################### +## for multiprocessing +######################################################################################### + +def lnlike(theta, data, lsf): + """ + Log-likelihood, computed from chi-squared. + + Parameters + ---------- + theta + lsf + data + + Returns + ------- + -0.5 * chi-square + sum of the log of the noise + + """ + + ## Parameters MCMC + teff, logg, z, vsini, rv, am, pwv, A, B, N = theta #N noise prefactor + #teff, logg, vsini, rv, , am, pwv, A, B, freq, amp, phase = theta + + model = model_fit.makeModel(teff=teff, logg=logg, metal=z, vsini=vsini, rv=rv, tell_alpha=1.0, wave_offset=B, flux_offset=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, airmass=am, pwv=pwv) + + chisquare = smart.chisquare(data, model)/N**2 + + return -0.5 * (chisquare + np.sum(np.log(2*np.pi*(data.noise*N)**2))) + +def lnprior(theta, limits=limits): + """ + Specifies a flat prior + """ + ## Parameters for theta + teff, logg, z, vsini, rv, am, pwv, A, B, N = theta + + if limits['teff_min'] < teff < limits['teff_max'] \ + and limits['logg_min'] < logg < limits['logg_max'] \ + and limits['z_min'] < z < limits['z_max'] \ + and limits['vsini_min'] < vsini < limits['vsini_max']\ + and limits['rv_min'] < rv < limits['rv_max'] \ + and limits['am_min'] < am < limits['am_max']\ + and limits['pwv_min'] < pwv < limits['pwv_max']\ + and limits['A_min'] < A < limits['A_max']\ + and limits['B_min'] < B < limits['B_max']\ + and limits['N_min'] < N < limits['N_max']: + return 0.0 + + return -np.inf + +def lnprob(theta, data, lsf): + + lnp = lnprior(theta) + + if not np.isfinite(lnp): + return -np.inf + + return lnp + lnlike(theta, data, lsf) + +pos = [np.array([ priors['teff_min'] + (priors['teff_max'] - priors['teff_min'] ) * np.random.uniform(), + priors['logg_min'] + (priors['logg_max'] - priors['logg_min'] ) * np.random.uniform(), + priors['z_min'] + (priors['z_max'] - priors['z_min'] ) * np.random.uniform(), + priors['vsini_min'] + (priors['vsini_max'] - priors['vsini_min']) * np.random.uniform(), + priors['rv_min'] + (priors['rv_max'] - priors['rv_min'] ) * np.random.uniform(), + priors['am_min'] + (priors['am_max'] - priors['am_min']) * np.random.uniform(), + priors['pwv_min'] + (priors['pwv_max'] - priors['pwv_min']) * np.random.uniform(), + priors['A_min'] + (priors['A_max'] - priors['A_min']) * np.random.uniform(), + priors['B_min'] + (priors['B_max'] - priors['B_min']) * np.random.uniform(), + priors['N_min'] + (priors['N_max'] - priors['N_min']) * np.random.uniform()]) for i in range(nwalkers)] + +## TEST +''' +sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf), a=moves, moves=emcee.moves.KDEMove()) +time1 = time.time() +sampler.run_mcmc(pos, step, progress=True) +time2 = time.time() +''' +## multiprocessing +with Pool() as pool: + #sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf, pwv), a=moves, pool=pool) + sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=(data, lsf), a=moves, pool=pool, + moves=emcee.moves.KDEMove()) + time1 = time.time() + sampler.run_mcmc(pos, step, progress=True) + time2 = time.time() + +np.save(save_to_path + '/sampler_chain', sampler.chain[:, :, :]) + +samples = sampler.chain[:, :, :].reshape((-1, ndim)) + +np.save(save_to_path + '/samples', samples) + +print('total time: ',(time2-time1)/60,' min.') +print("Mean acceptance fraction: {0:.3f}".format(np.mean(sampler.acceptance_fraction))) +print(sampler.acceptance_fraction) +autocorr_time = sampler.get_autocorr_time(discard=burn, quiet=True) +print("Mean autocorrelation time: {0:.3f} steps".format(np.mean(autocorr_time))) +print(autocorr_time) + +# create walker plots +sampler_chain = np.load(save_to_path + '/sampler_chain.npy') +samples = np.load(save_to_path + '/samples.npy') + +ylabels = ["$T_{eff} (K)$","$log \, g$(dex)","z","$vsin \, i(km/s)$","$RV(km/s)$","$AM$", "pwv (mm)","$C_{F_{\lambda}}$ (cnt/s)","$C_{\lambda}$($\AA$)","$C_{noise}$"] + + +## create walker plots +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=30) +fig = plt.figure(tight_layout=True) +gs = gridspec.GridSpec(ndim, 1) +gs.update(hspace=0.1) + +for i in range(ndim): + ax = fig.add_subplot(gs[i, :]) + for j in range(nwalkers): + ax.plot(np.arange(1,int(step+1)), sampler_chain[j,:,i],'k',alpha=0.2) + ax.set_ylabel(ylabels[i]) +fig.align_labels() +plt.minorticks_on() +plt.xlabel('nstep') +plt.savefig(save_to_path+'/walker.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# create array triangle plots +triangle_samples = sampler_chain[:, burn:, :].reshape((-1, ndim)) +#print(triangle_samples.shape) + +# create the final spectra comparison +teff_mcmc, logg_mcmc, z_mcmc, vsini_mcmc, rv_mcmc, am_mcmc, pwv_mcmc, A_mcmc, B_mcmc, N_mcmc = map(lambda v: (v[1], v[2]-v[1], v[1]-v[0]), + zip(*np.percentile(triangle_samples, [16, 50, 84], axis=0))) + +# add the summary to the txt file +log_path = save_to_path + '/mcmc_parameters.txt' +file_log = open(log_path,"a") +file_log.write("*** Below is the summary *** \n") +file_log.write("total_time {} min\n".format(str((time2-time1)/60))) +file_log.write("mean_acceptance_fraction {0:.3f} \n".format(np.mean(sampler.acceptance_fraction))) +file_log.write("mean_autocorrelation_time {0:.3f} \n".format(np.mean(autocorr_time))) +file_log.write("teff_mcmc {} K\n".format(str(teff_mcmc))) +file_log.write("logg_mcmc {} dex (cgs)\n".format(str(logg_mcmc))) +file_log.write("z_mcmc {}\n".format(str(z_mcmc))) +file_log.write("vsini_mcmc {} km/s\n".format(str(vsini_mcmc))) +file_log.write("rv_mcmc {} km/s\n".format(str(rv_mcmc))) +file_log.write("am_mcmc {}\n".format(str(am_mcmc))) +file_log.write("pwv_mcmc {}\n".format(str(pwv_mcmc))) +file_log.write("A_mcmc {}\n".format(str(A_mcmc))) +file_log.write("B_mcmc {}\n".format(str(B_mcmc))) +file_log.write("N_mcmc {}\n".format(str(N_mcmc))) +file_log.close() + +# log file +log_path2 = save_to_path + '/mcmc_result.txt' + +file_log2 = open(log_path2,"w+") +file_log2.write("teff_mcmc {}\n".format(str(teff_mcmc[0]))) +file_log2.write("logg_mcmc {}\n".format(str(logg_mcmc[0]))) +file_log2.write("z_mcmc {}\n".format(str(z_mcmc[0]))) +file_log2.write("vsini_mcmc {}\n".format(str(vsini_mcmc[0]))) +file_log2.write("rv_mcmc {}\n".format(str(rv_mcmc[0]+barycorr))) +file_log2.write("am_mcmc {}\n".format(str(am_mcmc[0]))) +file_log2.write("pwv_mcmc {}\n".format(str(pwv_mcmc[0]))) +file_log2.write("A_mcmc {}\n".format(str(A_mcmc[0]))) +file_log2.write("B_mcmc {}\n".format(str(B_mcmc[0]))) +file_log2.write("N_mcmc {}\n".format(str(N_mcmc[0]))) +file_log2.write("teff_mcmc_e {}\n".format(str(max(abs(teff_mcmc[1]), abs(teff_mcmc[2]))))) +file_log2.write("logg_mcmc_e {}\n".format(str(max(abs(logg_mcmc[1]), abs(logg_mcmc[2]))))) +file_log2.write("z_mcmc_e {}\n".format(str(max(abs(z_mcmc[1]), abs(z_mcmc[2]))))) +file_log2.write("vsini_mcmc_e {}\n".format(str(max(abs(vsini_mcmc[1]), abs(vsini_mcmc[2]))))) +file_log2.write("rv_mcmc_e {}\n".format(str(max(abs(rv_mcmc[1]), abs(rv_mcmc[2]))))) +file_log2.write("am_mcmc_e {}\n".format(str(max(abs(am_mcmc[1]), abs(am_mcmc[2]))))) +file_log2.write("pwv_mcmc_e {}\n".format(str(max(abs(pwv_mcmc[1]), abs(pwv_mcmc[2]))))) +file_log2.write("A_mcmc_e {}\n".format(str(max(abs(A_mcmc[1]), abs(A_mcmc[2]))))) +file_log2.write("B_mcmc_e {}\n".format(str(max(abs(B_mcmc[1]), abs(B_mcmc[2]))))) +file_log2.write("N_mcmc_e {}\n".format(str(max(abs(N_mcmc[1]), abs(N_mcmc[2]))))) +# upper and lower uncertainties +# upper uncertainties +file_log2.write("teff_mcmc_ue {}\n".format(str(abs(teff_mcmc[1])))) +file_log2.write("logg_mcmc_ue {}\n".format(str(abs(logg_mcmc[1])))) +file_log2.write("z_mcmc_ue {}\n".format(str(abs(z_mcmc[1])))) +file_log2.write("vsini_mcmc_ue {}\n".format(str(abs(vsini_mcmc[1])))) +file_log2.write("rv_mcmc_ue {}\n".format(str(abs(rv_mcmc[1])))) +file_log2.write("am_mcmc_ue {}\n".format(str(abs(am_mcmc[1])))) +file_log2.write("pwv_mcmc_ue {}\n".format(str(abs(pwv_mcmc[1])))) +file_log2.write("A_mcmc_ue {}\n".format(str(abs(A_mcmc[1])))) +file_log2.write("B_mcmc_ue {}\n".format(str(abs(B_mcmc[1])))) +file_log2.write("N_mcmc_ue {}\n".format(str(abs(N_mcmc[1])))) +# lower uncertainties +file_log2.write("teff_mcmc_le {}\n".format(str(abs(teff_mcmc[2])))) +file_log2.write("logg_mcmc_le {}\n".format(str(abs(logg_mcmc[2])))) +file_log2.write("z_mcmc_le {}\n".format(str(abs(z_mcmc[2])))) +file_log2.write("vsini_mcmc_le {}\n".format(str(abs(vsini_mcmc[2])))) +file_log2.write("rv_mcmc_le {}\n".format(str(abs(rv_mcmc[2])))) +file_log2.write("am_mcmc_le {}\n".format(str(abs(am_mcmc[2])))) +file_log2.write("pwv_mcmc_le {}\n".format(str(abs(pwv_mcmc[2])))) +file_log2.write("A_mcmc_le {}\n".format(str(abs(A_mcmc[2])))) +file_log2.write("B_mcmc_le {}\n".format(str(abs(B_mcmc[2])))) +file_log2.write("N_mcmc_le {}\n".format(str(abs(N_mcmc[2])))) +file_log2.close() + +#print(teff_mcmc, logg_mcmc, vsini_mcmc, rv_mcmc, am_mcmc, pwv_mcmc, A_mcmc, B_mcmc, N_mcmc) + +triangle_samples[:,3] += barycorr + +## triangular plots +plt.rc('font', family='sans-serif') +fig = corner.corner(triangle_samples, + labels=ylabels, + truths=[teff_mcmc[0], + logg_mcmc[0], + z_mcmc[0], + vsini_mcmc[0], + rv_mcmc[0]+barycorr, + am_mcmc[0], + pwv_mcmc[0], + A_mcmc[0], + B_mcmc[0], + N_mcmc[0]], + quantiles=[0.16, 0.84], + label_kwargs={"fontsize": 20}) +plt.minorticks_on() +fig.savefig(save_to_path+'/triangle.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +teff = teff_mcmc[0] +logg = logg_mcmc[0] +z = z_mcmc[0] +vsini = vsini_mcmc[0] +rv = rv_mcmc[0] +am = am_mcmc[0] +pwv = pwv_mcmc[0] +A = A_mcmc[0] +B = B_mcmc[0] +N = N_mcmc[0] + + +model, model_notell = model_fit.makeModel(teff=teff, logg=logg, metal=z, + vsini=vsini, rv=rv, tell_alpha=1.0, wave_offset=B, flux_offset=A, + lsf=lsf, order=str(data.order), data=data, modelset=modelset, airmass=am, pwv=pwv, output_stellar_model=True) + +fig = plt.figure(figsize=(16,6)) +ax1 = fig.add_subplot(111) +plt.rc('font', family='sans-serif') +plt.tick_params(labelsize=15) +ax1.plot(model.wave, model.flux, color='C3', linestyle='-', label='model',alpha=0.8) +ax1.plot(model_notell.wave,model_notell.flux, color='C0', linestyle='-', label='model no telluric',alpha=0.8) +ax1.plot(data.wave,data.flux,'k-', + label='data',alpha=0.5) +ax1.plot(data.wave,data.flux-model.flux,'k-',alpha=0.8) +plt.fill_between(data.wave,-data.noise*N,data.noise*N,facecolor='C0',alpha=0.5) +plt.axhline(y=0,color='k',linestyle='-',linewidth=0.5) +plt.ylim(-np.max(np.append(np.abs(data.noise),np.abs(data.flux-model.flux)))*1.2,np.max(data.flux)*1.2) +plt.ylabel("Flux ($cnts/s$)",fontsize=15) +plt.xlabel("$\lambda$ ($\AA$)",fontsize=15) +plt.figtext(0.89,0.85,str(data.header['OBJECT'])+' '+data.name+' O'+str(data.order), + color='k', + horizontalalignment='right', + verticalalignment='center', + fontsize=15) +plt.figtext(0.89,0.82,"$Teff \, {0}^{{+{1}}}_{{-{2}}}/ logg \, {3}^{{+{4}}}_{{-{5}}}/ z \, {6}^{{+{7}}}_{{-{8}}}/ en \, 0.0/ vsini \, {9}^{{+{10}}}_{{-{11}}}/ RV \, {12}^{{+{13}}}_{{-{14}}}$".format(\ + round(teff_mcmc[0]), + round(teff_mcmc[1]), + round(teff_mcmc[2]), + round(logg_mcmc[0],1), + round(logg_mcmc[1],3), + round(logg_mcmc[2],3), + round(z_mcmc[0],1), + round(z_mcmc[1],3), + round(z_mcmc[2],3), + round(vsini_mcmc[0],2), + round(vsini_mcmc[1],2), + round(vsini_mcmc[2],2), + round(rv_mcmc[0]+barycorr,2), + round(rv_mcmc[1],2), + round(rv_mcmc[2],2)), + color='C0', + horizontalalignment='right', + verticalalignment='center', + fontsize=12) +plt.figtext(0.89,0.79,r"$\chi^2$ = {}, DOF = {}".format(\ + round(smart.chisquare(data,model)), round(len(data.wave-ndim)/3)), +color='k', +horizontalalignment='right', +verticalalignment='center', +fontsize=12) +plt.minorticks_on() + +ax2 = ax1.twiny() +ax2.plot(pixel, data.flux, color='w', alpha=0) +ax2.set_xlabel('Pixel',fontsize=15) +ax2.tick_params(labelsize=15) +ax2.set_xlim(pixel[0], pixel[-1]) +ax2.minorticks_on() + +#plt.legend() +plt.savefig(save_to_path + '/spectrum.png', dpi=300, bbox_inches='tight') +if plot_show: + plt.show() +plt.close() + +# excel summary file +cat = pd.DataFrame(columns=['date_obs','date_name','tell_name','data_path','tell_path','save_path', + 'model_date','model_time','data_mask','order','coadd','mjd','med_snr','lsf', + 'barycorr','modelset','priors','limits','ndim','nwalkers','step','burn', + 'rv','e_rv','ue_rv','le_rv','vsini','e_vsini','ue_vsini','le_vsini', + 'teff','e_teff','ue_teff','le_teff','logg','e_logg','ue_logg','le_logg', + 'z','e_z','ue_z','le_z', + 'am','e_am','ue_am','le_am','pwv','e_pwv','ue_pwv','le_pwv', + 'cflux','e_cflux','ue_cflux','le_cflux','cwave','e_cwave','ue_cwave','le_cwave', + 'cnoise','e_cnoise','ue_cnoise','le_cnoise','wave_cal_err']) + + +med_snr = np.nanmedian(data.flux/data.noise) +wave_cal_err = tell_sp.header['STD'] + +cat = cat.append({ 'date_obs':date_obs,'date_name':sci_data_name,'tell_name':tell_data_name, + 'data_path':data_path,'tell_path':tell_path,'save_path':save_to_path, + 'model_date':today.isoformat(),'model_time':dt_string,'data_mask':custom_mask, + 'order':order,'coadd':coadd,'mjd':mjd,'med_snr':med_snr,'lsf':lsf, 'barycorr':barycorr, + 'modelset':modelset, 'priors':priors, 'limits':limits, + 'ndim':ndim, 'nwalkers':nwalkers,'step':step, 'burn':burn, + 'rv':rv_mcmc[0]+barycorr, 'e_rv':max(rv_mcmc[1], rv_mcmc[2]), 'ue_rv':rv_mcmc[1], 'le_rv':rv_mcmc[2], + 'vsini':vsini_mcmc[0], 'e_vsini':max(vsini_mcmc[1], vsini_mcmc[2]), 'ue_vsini':vsini_mcmc[1], 'le_vsini':vsini_mcmc[2], + 'teff':teff_mcmc[0], 'e_teff':max(teff_mcmc[1],teff_mcmc[2]), 'ue_teff':teff_mcmc[1], 'le_teff':teff_mcmc[2], + 'logg':logg_mcmc[0], 'e_logg':max(logg_mcmc[1], logg_mcmc[2]), 'ue_logg':logg_mcmc[1], 'le_logg':logg_mcmc[2], + 'z':z_mcmc[0], 'e_z':max(z_mcmc[1], z_mcmc[2]), 'ue_z':z_mcmc[1], 'le_z':z_mcmc[2], + 'am':am_mcmc[0], 'e_am':max(am_mcmc[1], am_mcmc[2]), 'ue_am':am_mcmc[1], 'le_am':am_mcmc[2], + 'pwv':pwv_mcmc[0], 'e_pwv':max(pwv_mcmc[1], pwv_mcmc[2]), 'ue_pwv':pwv_mcmc[1], 'le_pwv':pwv_mcmc[2], + 'cflux':A_mcmc[0], 'e_cflux':max(A_mcmc[1], A_mcmc[2]), 'ue_cflux':A_mcmc[1], 'le_cflux':A_mcmc[2], + 'cwave':B_mcmc[0], 'e_cwave':max(B_mcmc[1], B_mcmc[2]), 'ue_cwave':B_mcmc[1], 'le_cwave':B_mcmc[2], + 'cnoise':N_mcmc[0],'e_cnoise':max(N_mcmc[1], N_mcmc[2]), 'ue_cnoise':N_mcmc[1], 'le_cnoise':N_mcmc[2], + 'wave_cal_err':wave_cal_err}, ignore_index=True) + +cat.to_excel(save_to_path + '/mcmc_summary.xlsx', index=False) + diff --git a/smart/forward_model/tellurics.py b/smart/forward_model/tellurics.py index fbed7a8..bae3888 100644 --- a/smart/forward_model/tellurics.py +++ b/smart/forward_model/tellurics.py @@ -117,10 +117,10 @@ def InterpTelluricModel(wavelow, wavehigh, airmass, pwv): # Get the four points Points = [ - [T1['airmass'][np.where( (T1['airmass'] == x1) & (T1['pwv'] == y1))], T1['pwv'][np.where((T1['airmass'] == x1) & (T1['pwv'] == y1))], np.log10(GetModel(wavelow=wavelow, wavehigh=wavehigh, airmass=T1['airmass'][np.where( (T1['airmass'] == x1) & (T1['pwv'] == y1))][0], pwv=T1['pwv'][np.where((T1['airmass'] == x1) & (T1['pwv'] == y1))][0]))], - [T1['airmass'][np.where( (T1['airmass'] == x1) & (T1['pwv'] == y2))], T1['pwv'][np.where((T1['airmass'] == x1) & (T1['pwv'] == y2))], np.log10(GetModel(wavelow=wavelow, wavehigh=wavehigh, airmass=T1['airmass'][np.where( (T1['airmass'] == x1) & (T1['pwv'] == y2))][0], pwv=T1['pwv'][np.where((T1['airmass'] == x1) & (T1['pwv'] == y2))][0]))], - [T1['airmass'][np.where( (T1['airmass'] == x2) & (T1['pwv'] == y1))], T1['pwv'][np.where((T1['airmass'] == x2) & (T1['pwv'] == y1))], np.log10(GetModel(wavelow=wavelow, wavehigh=wavehigh, airmass=T1['airmass'][np.where( (T1['airmass'] == x2) & (T1['pwv'] == y1))][0], pwv=T1['pwv'][np.where((T1['airmass'] == x2) & (T1['pwv'] == y1))][0]))], - [T1['airmass'][np.where( (T1['airmass'] == x2) & (T1['pwv'] == y2))], T1['pwv'][np.where((T1['airmass'] == x2) & (T1['pwv'] == y2))], np.log10(GetModel(wavelow=wavelow, wavehigh=wavehigh, airmass=T1['airmass'][np.where( (T1['airmass'] == x2) & (T1['pwv'] == y2))][0], pwv=T1['pwv'][np.where((T1['airmass'] == x2) & (T1['pwv'] == y2))][0]))], + [T1['airmass'][np.where( (T1['airmass'] == x1) & (T1['pwv'] == y1))].data[0], T1['pwv'][np.where((T1['airmass'] == x1) & (T1['pwv'] == y1))].data[0], np.log10(GetModel(wavelow=wavelow, wavehigh=wavehigh, airmass=T1['airmass'][np.where( (T1['airmass'] == x1) & (T1['pwv'] == y1))][0], pwv=T1['pwv'][np.where((T1['airmass'] == x1) & (T1['pwv'] == y1))][0]))], + [T1['airmass'][np.where( (T1['airmass'] == x1) & (T1['pwv'] == y2))].data[0], T1['pwv'][np.where((T1['airmass'] == x1) & (T1['pwv'] == y2))].data[0], np.log10(GetModel(wavelow=wavelow, wavehigh=wavehigh, airmass=T1['airmass'][np.where( (T1['airmass'] == x1) & (T1['pwv'] == y2))][0], pwv=T1['pwv'][np.where((T1['airmass'] == x1) & (T1['pwv'] == y2))][0]))], + [T1['airmass'][np.where( (T1['airmass'] == x2) & (T1['pwv'] == y1))].data[0], T1['pwv'][np.where((T1['airmass'] == x2) & (T1['pwv'] == y1))].data[0], np.log10(GetModel(wavelow=wavelow, wavehigh=wavehigh, airmass=T1['airmass'][np.where( (T1['airmass'] == x2) & (T1['pwv'] == y1))][0], pwv=T1['pwv'][np.where((T1['airmass'] == x2) & (T1['pwv'] == y1))][0]))], + [T1['airmass'][np.where( (T1['airmass'] == x2) & (T1['pwv'] == y2))].data[0], T1['pwv'][np.where((T1['airmass'] == x2) & (T1['pwv'] == y2))].data[0], np.log10(GetModel(wavelow=wavelow, wavehigh=wavehigh, airmass=T1['airmass'][np.where( (T1['airmass'] == x2) & (T1['pwv'] == y2))][0], pwv=T1['pwv'][np.where((T1['airmass'] == x2) & (T1['pwv'] == y2))][0]))], ] waves2 = GetModel(wavelow=wavelow, wavehigh=wavehigh, airmass=T1['airmass'][np.where( (T1['airmass'] == x1) & (T1['pwv'] == y1))][0], pwv=T1['pwv'][np.where((T1['airmass'] == x1) & (T1['pwv'] == y1))][0], wave=True) diff --git a/smart/initialize.py b/smart/initialize.py index 7861130..7e0acf9 100644 --- a/smart/initialize.py +++ b/smart/initialize.py @@ -9,14 +9,21 @@ ModelSets = { 'phoenix-aces-agss-cond-2011' : 'PHOENIX_ACES_AGSS_COND_2011', 'phoenix-btsettl-cifist2011' : 'PHOENIX_BTSETTL_CIFIST2011', - 'phoenix_btsettl_cifist2011_2015' : 'PHOENIX_BTSETTL_CIFIST2011_2015', + 'phoenix-btsettl-cifist2011-2015' : 'PHOENIX_BTSETTL_CIFIST2011_2015', 'sonora' : 'SONORA_2018', + 'sonora-bobcat' : 'SONORA_2021', 'phoenix-bt-dusty' : 'PHOENIX_BT_DUSTY', 'drift-phoenix' : 'DRIFT_PHOENIX', 'marcs-apogee-dr15' : 'MARCS_APOGEE_DR15', 'marcs-pp' : 'MARCS_PP', 'btsettl08' : 'BTSETTL08', - 'phoenix-btsettl08' : 'PHOENIX_BTSETTL08' + 'phoenix-btsettl08' : 'PHOENIX_BTSETTL08', + 'atmo-2020-ceq' : 'ATMO_2020_CEQ', + 'atmo-2020-neq-strong' : 'ATMO_2020_NEQ_STRONG', + 'atmo-2020-neq-weak' : 'ATMO_2020_NEQ_WEAK', + 'barman-20230830' : 'BARMAN_20230830', + 'pheonix-newera-aces-cond-2023' : 'PHOENIX_NEWERA_ACES_COND_2023', + 'hd206893-qkbbhires': 'HD206893_QKBBHIRES' } def getModelgrid(modelset = 'phoenix-aces-agss-cond-2011'): @@ -25,7 +32,8 @@ def getModelgrid(modelset = 'phoenix-aces-agss-cond-2011'): # Get the gridfile for the requested modelset FULL_PATH = os.path.realpath(__file__) BASE, NAME = os.path.split(FULL_PATH) - Gridfile = BASE + '/libraries/%s/%s_gridparams.csv'%(smart.ModelSets[modelset.upper()], smart.ModelSets[modelset.upper()]) + Gridfile = BASE + '/libraries/%s/%s_gridparams.csv'%(smart.ModelSets[modelset.lower()], smart.ModelSets[modelset.lower()]) + print('Gridfile:', Gridfile) # Read the grid file T1 = Table.read(Gridfile) diff --git a/smart/libraries/ATMO_2020_CEQ/ATMO_2020_CEQ_gridparams.csv b/smart/libraries/ATMO_2020_CEQ/ATMO_2020_CEQ_gridparams.csv new file mode 100644 index 0000000..59faa26 --- /dev/null +++ b/smart/libraries/ATMO_2020_CEQ/ATMO_2020_CEQ_gridparams.csv @@ -0,0 +1,232 @@ +teff,logg,M_H,en +200,2.5,0.0,0 +200,3.0,0.0,0 +200,3.5,0.0,0 +200,4.0,0.0,0 +200,4.5,0.0,0 +200,5.0,0.0,0 +200,5.5,0.0,0 +250,2.5,0.0,0 +250,3.0,0.0,0 +250,3.5,0.0,0 +250,4.0,0.0,0 +250,4.5,0.0,0 +250,5.0,0.0,0 +250,5.5,0.0,0 +300,2.5,0.0,0 +300,3.0,0.0,0 +300,3.5,0.0,0 +300,4.0,0.0,0 +300,4.5,0.0,0 +300,5.0,0.0,0 +300,5.5,0.0,0 +350,2.5,0.0,0 +350,3.0,0.0,0 +350,3.5,0.0,0 +350,4.0,0.0,0 +350,4.5,0.0,0 +350,5.0,0.0,0 +350,5.5,0.0,0 +400,2.5,0.0,0 +400,3.0,0.0,0 +400,3.5,0.0,0 +400,4.0,0.0,0 +400,4.5,0.0,0 +400,5.0,0.0,0 +400,5.5,0.0,0 +450,2.5,0.0,0 +450,3.0,0.0,0 +450,3.5,0.0,0 +450,4.0,0.0,0 +450,4.5,0.0,0 +450,5.0,0.0,0 +450,5.5,0.0,0 +500,2.5,0.0,0 +500,3.0,0.0,0 +500,3.5,0.0,0 +500,4.0,0.0,0 +500,4.5,0.0,0 +500,5.0,0.0,0 +500,5.5,0.0,0 +550,2.5,0.0,0 +550,3.0,0.0,0 +550,3.5,0.0,0 +550,4.0,0.0,0 +550,4.5,0.0,0 +550,5.0,0.0,0 +550,5.5,0.0,0 +600,2.5,0.0,0 +600,3.0,0.0,0 +600,3.5,0.0,0 +600,4.0,0.0,0 +600,4.5,0.0,0 +600,5.0,0.0,0 +600,5.5,0.0,0 +700,2.5,0.0,0 +700,3.0,0.0,0 +700,3.5,0.0,0 +700,4.0,0.0,0 +700,4.5,0.0,0 +700,5.0,0.0,0 +700,5.5,0.0,0 +800,2.5,0.0,0 +800,3.0,0.0,0 +800,3.5,0.0,0 +800,4.0,0.0,0 +800,4.5,0.0,0 +800,5.0,0.0,0 +800,5.5,0.0,0 +900,2.5,0.0,0 +900,3.0,0.0,0 +900,3.5,0.0,0 +900,4.0,0.0,0 +900,4.5,0.0,0 +900,5.0,0.0,0 +900,5.5,0.0,0 +1000,2.5,0.0,0 +1000,3.0,0.0,0 +1000,3.5,0.0,0 +1000,4.0,0.0,0 +1000,4.5,0.0,0 +1000,5.0,0.0,0 +1000,5.5,0.0,0 +1100,2.5,0.0,0 +1100,3.0,0.0,0 +1100,3.5,0.0,0 +1100,4.0,0.0,0 +1100,4.5,0.0,0 +1100,5.0,0.0,0 +1100,5.5,0.0,0 +1200,2.5,0.0,0 +1200,3.0,0.0,0 +1200,3.5,0.0,0 +1200,4.0,0.0,0 +1200,4.5,0.0,0 +1200,5.0,0.0,0 +1200,5.5,0.0,0 +1300,2.5,0.0,0 +1300,3.0,0.0,0 +1300,3.5,0.0,0 +1300,4.0,0.0,0 +1300,4.5,0.0,0 +1300,5.0,0.0,0 +1300,5.5,0.0,0 +1400,2.5,0.0,0 +1400,3.0,0.0,0 +1400,3.5,0.0,0 +1400,4.0,0.0,0 +1400,4.5,0.0,0 +1400,5.0,0.0,0 +1400,5.5,0.0,0 +1500,2.5,0.0,0 +1500,3.0,0.0,0 +1500,3.5,0.0,0 +1500,4.0,0.0,0 +1500,4.5,0.0,0 +1500,5.0,0.0,0 +1500,5.5,0.0,0 +1600,2.5,0.0,0 +1600,3.0,0.0,0 +1600,3.5,0.0,0 +1600,4.0,0.0,0 +1600,4.5,0.0,0 +1600,5.0,0.0,0 +1600,5.5,0.0,0 +1700,2.5,0.0,0 +1700,3.0,0.0,0 +1700,3.5,0.0,0 +1700,4.0,0.0,0 +1700,4.5,0.0,0 +1700,5.0,0.0,0 +1700,5.5,0.0,0 +1800,2.5,0.0,0 +1800,3.0,0.0,0 +1800,3.5,0.0,0 +1800,4.0,0.0,0 +1800,4.5,0.0,0 +1800,5.0,0.0,0 +1800,5.5,0.0,0 +1900,2.5,0.0,0 +1900,3.0,0.0,0 +1900,3.5,0.0,0 +1900,4.0,0.0,0 +1900,4.5,0.0,0 +1900,5.0,0.0,0 +1900,5.5,0.0,0 +2000,2.5,0.0,0 +2000,3.0,0.0,0 +2000,3.5,0.0,0 +2000,4.0,0.0,0 +2000,4.5,0.0,0 +2000,5.0,0.0,0 +2000,5.5,0.0,0 +2100,2.5,0.0,0 +2100,3.0,0.0,0 +2100,3.5,0.0,0 +2100,4.0,0.0,0 +2100,4.5,0.0,0 +2100,5.0,0.0,0 +2100,5.5,0.0,0 +2200,2.5,0.0,0 +2200,3.0,0.0,0 +2200,3.5,0.0,0 +2200,4.0,0.0,0 +2200,4.5,0.0,0 +2200,5.0,0.0,0 +2200,5.5,0.0,0 +2300,2.5,0.0,0 +2300,3.0,0.0,0 +2300,3.5,0.0,0 +2300,4.0,0.0,0 +2300,4.5,0.0,0 +2300,5.0,0.0,0 +2300,5.5,0.0,0 +2400,2.5,0.0,0 +2400,3.0,0.0,0 +2400,3.5,0.0,0 +2400,4.0,0.0,0 +2400,4.5,0.0,0 +2400,5.0,0.0,0 +2400,5.5,0.0,0 +2500,2.5,0.0,0 +2500,3.0,0.0,0 +2500,3.5,0.0,0 +2500,4.0,0.0,0 +2500,4.5,0.0,0 +2500,5.0,0.0,0 +2500,5.5,0.0,0 +2600,2.5,0.0,0 +2600,3.0,0.0,0 +2600,3.5,0.0,0 +2600,4.0,0.0,0 +2600,4.5,0.0,0 +2600,5.0,0.0,0 +2600,5.5,0.0,0 +2700,2.5,0.0,0 +2700,3.0,0.0,0 +2700,3.5,0.0,0 +2700,4.0,0.0,0 +2700,4.5,0.0,0 +2700,5.0,0.0,0 +2700,5.5,0.0,0 +2800,2.5,0.0,0 +2800,3.0,0.0,0 +2800,3.5,0.0,0 +2800,4.0,0.0,0 +2800,4.5,0.0,0 +2800,5.0,0.0,0 +2800,5.5,0.0,0 +2900,2.5,0.0,0 +2900,3.0,0.0,0 +2900,3.5,0.0,0 +2900,4.0,0.0,0 +2900,4.5,0.0,0 +2900,5.0,0.0,0 +2900,5.5,0.0,0 +3000,2.5,0.0,0 +3000,3.0,0.0,0 +3000,3.5,0.0,0 +3000,4.0,0.0,0 +3000,4.5,0.0,0 +3000,5.0,0.0,0 +3000,5.5,0.0,0 diff --git a/smart/libraries/ATMO_2020_NEQ_STRONG/ATMO_2020_NEQ_STRONG_gridparams.csv b/smart/libraries/ATMO_2020_NEQ_STRONG/ATMO_2020_NEQ_STRONG_gridparams.csv new file mode 100644 index 0000000..e6fd692 --- /dev/null +++ b/smart/libraries/ATMO_2020_NEQ_STRONG/ATMO_2020_NEQ_STRONG_gridparams.csv @@ -0,0 +1,141 @@ +teff,logg,M_H,en +200,2.5,0.0,0 +200,3.0,0.0,0 +200,3.5,0.0,0 +200,4.0,0.0,0 +200,4.5,0.0,0 +250,2.5,0.0,0 +250,3.0,0.0,0 +250,3.5,0.0,0 +250,4.0,0.0,0 +250,4.5,0.0,0 +300,2.5,0.0,0 +300,3.0,0.0,0 +300,3.5,0.0,0 +300,4.0,0.0,0 +300,4.5,0.0,0 +300,5.0,0.0,0 +350,2.5,0.0,0 +350,3.0,0.0,0 +350,3.5,0.0,0 +350,4.0,0.0,0 +350,4.5,0.0,0 +350,5.0,0.0,0 +350,5.5,0.0,0 +400,2.5,0.0,0 +400,3.0,0.0,0 +400,3.5,0.0,0 +400,4.0,0.0,0 +400,4.5,0.0,0 +400,5.0,0.0,0 +400,5.5,0.0,0 +450,2.5,0.0,0 +450,3.0,0.0,0 +450,3.5,0.0,0 +450,4.0,0.0,0 +450,4.5,0.0,0 +450,5.0,0.0,0 +450,5.5,0.0,0 +500,3.0,0.0,0 +500,3.5,0.0,0 +500,4.0,0.0,0 +500,4.5,0.0,0 +500,5.0,0.0,0 +500,5.5,0.0,0 +550,2.5,0.0,0 +550,3.0,0.0,0 +550,3.5,0.0,0 +550,4.0,0.0,0 +550,4.5,0.0,0 +550,5.0,0.0,0 +550,5.5,0.0,0 +600,2.5,0.0,0 +600,3.0,0.0,0 +600,3.5,0.0,0 +600,4.0,0.0,0 +600,4.5,0.0,0 +600,5.0,0.0,0 +600,5.5,0.0,0 +700,3.0,0.0,0 +700,3.5,0.0,0 +700,4.0,0.0,0 +700,4.5,0.0,0 +700,5.0,0.0,0 +700,5.5,0.0,0 +800,2.5,0.0,0 +800,3.0,0.0,0 +800,3.5,0.0,0 +800,4.0,0.0,0 +800,4.5,0.0,0 +800,5.0,0.0,0 +800,5.5,0.0,0 +900,2.5,0.0,0 +900,3.0,0.0,0 +900,3.5,0.0,0 +900,4.0,0.0,0 +900,4.5,0.0,0 +900,5.0,0.0,0 +900,5.5,0.0,0 +1000,2.5,0.0,0 +1000,3.0,0.0,0 +1000,3.5,0.0,0 +1000,4.0,0.0,0 +1000,4.5,0.0,0 +1000,5.0,0.0,0 +1000,5.5,0.0,0 +1100,2.5,0.0,0 +1100,3.0,0.0,0 +1100,3.5,0.0,0 +1100,4.0,0.0,0 +1100,4.5,0.0,0 +1100,5.0,0.0,0 +1100,5.5,0.0,0 +1200,2.5,0.0,0 +1200,3.0,0.0,0 +1200,3.5,0.0,0 +1200,4.0,0.0,0 +1200,4.5,0.0,0 +1200,5.0,0.0,0 +1200,5.5,0.0,0 +1300,2.5,0.0,0 +1300,3.0,0.0,0 +1300,3.5,0.0,0 +1300,4.0,0.0,0 +1300,4.5,0.0,0 +1300,5.0,0.0,0 +1300,5.5,0.0,0 +1400,2.5,0.0,0 +1400,3.0,0.0,0 +1400,3.5,0.0,0 +1400,4.0,0.0,0 +1400,4.5,0.0,0 +1400,5.0,0.0,0 +1400,5.5,0.0,0 +1500,2.5,0.0,0 +1500,3.0,0.0,0 +1500,3.5,0.0,0 +1500,4.0,0.0,0 +1500,4.5,0.0,0 +1500,5.0,0.0,0 +1500,5.5,0.0,0 +1600,2.5,0.0,0 +1600,3.0,0.0,0 +1600,3.5,0.0,0 +1600,4.0,0.0,0 +1600,4.5,0.0,0 +1600,5.0,0.0,0 +1600,5.5,0.0,0 +1700,2.5,0.0,0 +1700,3.0,0.0,0 +1700,3.5,0.0,0 +1700,4.0,0.0,0 +1700,4.5,0.0,0 +1700,5.0,0.0,0 +1700,5.5,0.0,0 +1800,2.5,0.0,0 +1800,3.0,0.0,0 +1800,3.5,0.0,0 +1800,4.0,0.0,0 +1800,4.5,0.0,0 +1800,5.0,0.0,0 +1800,5.5,0.0,0 diff --git a/smart/libraries/ATMO_2020_NEQ_WEAK/ATMO_2020_NEQ_WEAK_gridparams.csv b/smart/libraries/ATMO_2020_NEQ_WEAK/ATMO_2020_NEQ_WEAK_gridparams.csv new file mode 100644 index 0000000..ef62f09 --- /dev/null +++ b/smart/libraries/ATMO_2020_NEQ_WEAK/ATMO_2020_NEQ_WEAK_gridparams.csv @@ -0,0 +1,140 @@ +teff,logg,M_H,en +200,2.5,0.0,0 +200,3.0,0.0,0 +200,4.0,0.0,0 +250,2.5,0.0,0 +250,3.0,0.0,0 +250,3.5,0.0,0 +250,4.0,0.0,0 +250,4.5,0.0,0 +300,2.5,0.0,0 +300,3.0,0.0,0 +300,3.5,0.0,0 +300,4.0,0.0,0 +300,4.5,0.0,0 +300,5.0,0.0,0 +350,2.5,0.0,0 +350,3.0,0.0,0 +350,3.5,0.0,0 +350,4.0,0.0,0 +350,4.5,0.0,0 +350,5.0,0.0,0 +350,5.5,0.0,0 +400,2.5,0.0,0 +400,3.0,0.0,0 +400,3.5,0.0,0 +400,4.0,0.0,0 +400,4.5,0.0,0 +400,5.0,0.0,0 +400,5.5,0.0,0 +450,2.5,0.0,0 +450,3.0,0.0,0 +450,3.5,0.0,0 +450,4.0,0.0,0 +450,4.5,0.0,0 +450,5.0,0.0,0 +450,5.5,0.0,0 +500,2.5,0.0,0 +500,3.0,0.0,0 +500,3.5,0.0,0 +500,4.0,0.0,0 +500,4.5,0.0,0 +500,5.0,0.0,0 +500,5.5,0.0,0 +550,2.5,0.0,0 +550,3.0,0.0,0 +550,3.5,0.0,0 +550,4.0,0.0,0 +550,4.5,0.0,0 +550,5.0,0.0,0 +550,5.5,0.0,0 +600,2.5,0.0,0 +600,3.0,0.0,0 +600,3.5,0.0,0 +600,4.0,0.0,0 +600,4.5,0.0,0 +600,5.0,0.0,0 +600,5.5,0.0,0 +700,2.5,0.0,0 +700,3.0,0.0,0 +700,3.5,0.0,0 +700,4.0,0.0,0 +700,4.5,0.0,0 +700,5.0,0.0,0 +700,5.5,0.0,0 +800,2.5,0.0,0 +800,3.0,0.0,0 +800,3.5,0.0,0 +800,4.0,0.0,0 +800,4.5,0.0,0 +800,5.0,0.0,0 +800,5.5,0.0,0 +900,2.5,0.0,0 +900,3.0,0.0,0 +900,3.5,0.0,0 +900,4.0,0.0,0 +900,4.5,0.0,0 +900,5.0,0.0,0 +900,5.5,0.0,0 +1000,2.5,0.0,0 +1000,3.0,0.0,0 +1000,3.5,0.0,0 +1000,4.0,0.0,0 +1000,4.5,0.0,0 +1000,5.0,0.0,0 +1000,5.5,0.0,0 +1100,2.5,0.0,0 +1100,3.0,0.0,0 +1100,4.0,0.0,0 +1100,4.5,0.0,0 +1100,5.0,0.0,0 +1100,5.5,0.0,0 +1200,2.5,0.0,0 +1200,3.0,0.0,0 +1200,3.5,0.0,0 +1200,4.0,0.0,0 +1200,4.5,0.0,0 +1200,5.0,0.0,0 +1200,5.5,0.0,0 +1300,2.5,0.0,0 +1300,3.0,0.0,0 +1300,3.5,0.0,0 +1300,4.0,0.0,0 +1300,4.5,0.0,0 +1300,5.0,0.0,0 +1300,5.5,0.0,0 +1400,2.5,0.0,0 +1400,3.0,0.0,0 +1400,3.5,0.0,0 +1400,4.0,0.0,0 +1400,4.5,0.0,0 +1400,5.0,0.0,0 +1400,5.5,0.0,0 +1500,2.5,0.0,0 +1500,3.0,0.0,0 +1500,3.5,0.0,0 +1500,4.0,0.0,0 +1500,4.5,0.0,0 +1500,5.0,0.0,0 +1500,5.5,0.0,0 +1600,2.5,0.0,0 +1600,3.0,0.0,0 +1600,3.5,0.0,0 +1600,4.0,0.0,0 +1600,4.5,0.0,0 +1600,5.0,0.0,0 +1600,5.5,0.0,0 +1700,2.5,0.0,0 +1700,3.0,0.0,0 +1700,3.5,0.0,0 +1700,4.0,0.0,0 +1700,4.5,0.0,0 +1700,5.0,0.0,0 +1700,5.5,0.0,0 +1800,2.5,0.0,0 +1800,3.0,0.0,0 +1800,3.5,0.0,0 +1800,4.0,0.0,0 +1800,4.5,0.0,0 +1800,5.0,0.0,0 +1800,5.5,0.0,0 diff --git a/smart/libraries/BARMAN_20230830/BARMAN_20230830_gridparams.csv b/smart/libraries/BARMAN_20230830/BARMAN_20230830_gridparams.csv new file mode 100644 index 0000000..64d6c58 --- /dev/null +++ b/smart/libraries/BARMAN_20230830/BARMAN_20230830_gridparams.csv @@ -0,0 +1,93 @@ +teff,logg,M_H,en,kzz +800,4.5,0.0,0.0,100.0 +800,4.5,0.0,0.0,10000.0 +800,4.5,0.0,0.0,1000000.0 +800,4.5,0.0,0.0,100000000.0 +800,5.0,0.0,0.0,100.0 +800,5.0,0.0,0.0,10000.0 +800,5.0,0.0,0.0,1000000.0 +800,5.0,0.0,0.0,100000000.0 +800,5.5,0.0,0.0,100.0 +800,5.5,0.0,0.0,10000.0 +800,5.5,0.0,0.0,1000000.0 +800,5.5,0.0,0.0,100000000.0 +#850,4.5,0.0,0.0,100000000.0 +#850,5.0,0.0,0.0,100000000.0 +#850,5.5,0.0,0.0,100000000.0 +900,4.5,0.0,0.0,100.0 +900,4.5,0.0,0.0,10000.0 +900,4.5,0.0,0.0,1000000.0 +900,4.5,0.0,0.0,100000000.0 +#900,4.75,0.0,0.0,100000000.0 +900,5.0,0.0,0.0,100.0 +900,5.0,0.0,0.0,10000.0 +900,5.0,0.0,0.0,1000000.0 +900,5.0,0.0,0.0,100000000.0 +900,5.25,0.0,0.0,100.0 +900,5.25,0.0,0.0,10000.0 +900,5.25,0.0,0.0,1000000.0 +900,5.25,0.0,0.0,100000000.0 +900,5.5,0.0,0.0,100.0 +900,5.5,0.0,0.0,10000.0 +900,5.5,0.0,0.0,1000000.0 +900,5.5,0.0,0.0,100000000.0 +#950,4.5,0.0,0.0,100000000.0 +#950,4.75,0.0,0.0,100000000.0 +#950,5.0,0.0,0.0,100000000.0 +#950,5.25,0.0,0.0,100000000.0 +#950,5.5,0.0,0.0,100000000.0 +1000,4.5,0.0,0.0,100.0 +1000,4.5,0.0,0.0,10000.0 +1000,4.5,0.0,0.0,1000000.0 +1000,4.5,0.0,0.0,100000000.0 +#1000,4.75,0.0,0.0,100000000.0 +1000,5.0,0.0,0.0,100.0 +1000,5.0,0.0,0.0,10000.0 +1000,5.0,0.0,0.0,1000000.0 +1000,5.0,0.0,0.0,100000000.0 +#1000,5.25,0.0,0.0,100000000.0 +1000,5.5,0.0,0.0,100.0 +1000,5.5,0.0,0.0,10000.0 +1000,5.5,0.0,0.0,1000000.0 +1000,5.5,0.0,0.0,100000000.0 +#1050,4.5,0.0,0.0,100000000.0 +#1050,4.75,0.0,0.0,100000000.0 +#1050,5.0,0.0,0.0,100000000.0 +#1050,5.25,0.0,0.0,100000000.0 +#1050,5.5,0.0,0.0,100000000.0 +1100,4.5,0.0,0.0,100.0 +1100,4.5,0.0,0.0,10000.0 +1100,4.5,0.0,0.0,1000000.0 +1100,4.5,0.0,0.0,100000000.0 +#1100,4.75,0.0,0.0,100000000.0 +1100,5.0,0.0,0.0,100.0 +1100,5.0,0.0,0.0,10000.0 +1100,5.0,0.0,0.0,1000000.0 +1100,5.0,0.0,0.0,100000000.0 +#1100,5.25,0.0,0.0,100000000.0 +1100,5.5,0.0,0.0,100.0 +1100,5.5,0.0,0.0,10000.0 +1100,5.5,0.0,0.0,1000000.0 +1100,5.5,0.0,0.0,100000000.0 +#1150,4.5,0.0,0.0,100000000.0 +#1150,4.75,0.0,0.0,100000000.0 +#1150,5.0,0.0,0.0,100000000.0 +#1150,5.25,0.0,0.0,100000000.0 +#1150,5.5,0.0,0.0,100000000.0 +1200,4.5,0.0,0.0,100.0 +1200,4.5,0.0,0.0,10000.0 +1200,4.5,0.0,0.0,1000000.0 +1200,4.5,0.0,0.0,100000000.0 +#1200,4.75,0.0,0.0,100000000.0 +1200,5.0,0.0,0.0,100.0 +1200,5.0,0.0,0.0,10000.0 +1200,5.0,0.0,0.0,1000000.0 +1200,5.0,0.0,0.0,100000000.0 +#1200,5.25,0.0,0.0,100000000.0 +1200,5.5,0.0,0.0,100.0 +1200,5.5,0.0,0.0,10000.0 +1200,5.5,0.0,0.0,1000000.0 +1200,5.5,0.0,0.0,100000000.0 +#1250,4.5,0.0,0.0,100000000.0 +#1250,5.0,0.0,0.0,100000000.0 +#1250,5.5,0.0,0.0,100000000.0 diff --git a/smart/libraries/BARMAN_20230830/BARMAN_20230830_gridparams0.csv b/smart/libraries/BARMAN_20230830/BARMAN_20230830_gridparams0.csv new file mode 100644 index 0000000..4105844 --- /dev/null +++ b/smart/libraries/BARMAN_20230830/BARMAN_20230830_gridparams0.csv @@ -0,0 +1,93 @@ +teff,logg,M_H,en,kzz +800,4.5,0.0,0.0,100.0 +800,4.5,0.0,0.0,10000.0 +800,4.5,0.0,0.0,1000000.0 +800,4.5,0.0,0.0,100000000.0 +800,5.0,0.0,0.0,100.0 +800,5.0,0.0,0.0,10000.0 +800,5.0,0.0,0.0,1000000.0 +800,5.0,0.0,0.0,100000000.0 +800,5.5,0.0,0.0,100.0 +800,5.5,0.0,0.0,10000.0 +800,5.5,0.0,0.0,1000000.0 +800,5.5,0.0,0.0,100000000.0 +850,4.5,0.0,0.0,100000000.0 +850,5.0,0.0,0.0,100000000.0 +850,5.5,0.0,0.0,100000000.0 +900,4.5,0.0,0.0,100.0 +900,4.5,0.0,0.0,10000.0 +900,4.5,0.0,0.0,1000000.0 +900,4.5,0.0,0.0,100000000.0 +900,4.75,0.0,0.0,100000000.0 +900,5.0,0.0,0.0,100.0 +900,5.0,0.0,0.0,10000.0 +900,5.0,0.0,0.0,1000000.0 +900,5.0,0.0,0.0,100000000.0 +900,5.25,0.0,0.0,100.0 +900,5.25,0.0,0.0,10000.0 +900,5.25,0.0,0.0,1000000.0 +900,5.25,0.0,0.0,100000000.0 +900,5.5,0.0,0.0,100.0 +900,5.5,0.0,0.0,10000.0 +900,5.5,0.0,0.0,1000000.0 +900,5.5,0.0,0.0,100000000.0 +950,4.5,0.0,0.0,100000000.0 +950,4.75,0.0,0.0,100000000.0 +950,5.0,0.0,0.0,100000000.0 +950,5.25,0.0,0.0,100000000.0 +950,5.5,0.0,0.0,100000000.0 +1000,4.5,0.0,0.0,100.0 +1000,4.5,0.0,0.0,10000.0 +1000,4.5,0.0,0.0,1000000.0 +1000,4.5,0.0,0.0,100000000.0 +1000,4.75,0.0,0.0,100000000.0 +1000,5.0,0.0,0.0,100.0 +1000,5.0,0.0,0.0,10000.0 +1000,5.0,0.0,0.0,1000000.0 +1000,5.0,0.0,0.0,100000000.0 +1000,5.25,0.0,0.0,100000000.0 +1000,5.5,0.0,0.0,100.0 +1000,5.5,0.0,0.0,10000.0 +1000,5.5,0.0,0.0,1000000.0 +1000,5.5,0.0,0.0,100000000.0 +1050,4.5,0.0,0.0,100000000.0 +1050,4.75,0.0,0.0,100000000.0 +1050,5.0,0.0,0.0,100000000.0 +1050,5.25,0.0,0.0,100000000.0 +1050,5.5,0.0,0.0,100000000.0 +1100,4.5,0.0,0.0,100.0 +1100,4.5,0.0,0.0,10000.0 +1100,4.5,0.0,0.0,1000000.0 +1100,4.5,0.0,0.0,100000000.0 +1100,4.75,0.0,0.0,100000000.0 +1100,5.0,0.0,0.0,100.0 +1100,5.0,0.0,0.0,10000.0 +1100,5.0,0.0,0.0,1000000.0 +1100,5.0,0.0,0.0,100000000.0 +1100,5.25,0.0,0.0,100000000.0 +1100,5.5,0.0,0.0,100.0 +1100,5.5,0.0,0.0,10000.0 +1100,5.5,0.0,0.0,1000000.0 +1100,5.5,0.0,0.0,100000000.0 +1150,4.5,0.0,0.0,100000000.0 +1150,4.75,0.0,0.0,100000000.0 +1150,5.0,0.0,0.0,100000000.0 +1150,5.25,0.0,0.0,100000000.0 +1150,5.5,0.0,0.0,100000000.0 +1200,4.5,0.0,0.0,100.0 +1200,4.5,0.0,0.0,10000.0 +1200,4.5,0.0,0.0,1000000.0 +1200,4.5,0.0,0.0,100000000.0 +1200,4.75,0.0,0.0,100000000.0 +1200,5.0,0.0,0.0,100.0 +1200,5.0,0.0,0.0,10000.0 +1200,5.0,0.0,0.0,1000000.0 +1200,5.0,0.0,0.0,100000000.0 +1200,5.25,0.0,0.0,100000000.0 +1200,5.5,0.0,0.0,100.0 +1200,5.5,0.0,0.0,10000.0 +1200,5.5,0.0,0.0,1000000.0 +1200,5.5,0.0,0.0,100000000.0 +1250,4.5,0.0,0.0,100000000.0 +1250,5.0,0.0,0.0,100000000.0 +1250,5.5,0.0,0.0,100000000.0 diff --git a/smart/libraries/HD206893_QKBBHIRES/HD206893_QKBBHIRES_gridparams.csv b/smart/libraries/HD206893_QKBBHIRES/HD206893_QKBBHIRES_gridparams.csv new file mode 100644 index 0000000..8040324 --- /dev/null +++ b/smart/libraries/HD206893_QKBBHIRES/HD206893_QKBBHIRES_gridparams.csv @@ -0,0 +1,46 @@ +teff,logg,M_H,en,kzz +1200,3.0,0.0,0.0,100000000.0 +1200,3.5,0.0,0.0,100000000.0 +1200,4.0,0.0,0.0,100000000.0 +1200,4.5,0.0,0.0,100000000.0 +1200,5.0,0.0,0.0,100000000.0 +1300,3.0,0.0,0.0,100000000.0 +1300,3.5,0.0,0.0,100000000.0 +1300,4.0,0.0,0.0,100000000.0 +1300,4.5,0.0,0.0,100000000.0 +1300,5.0,0.0,0.0,100000000.0 +1400,3.0,0.0,0.0,100000000.0 +1400,3.5,0.0,0.0,100000000.0 +1400,4.0,0.0,0.0,100000000.0 +1400,4.5,0.0,0.0,100000000.0 +1400,5.0,0.0,0.0,100000000.0 +1500,3.0,0.0,0.0,100000000.0 +1500,3.5,0.0,0.0,100000000.0 +1500,4.0,0.0,0.0,100000000.0 +1500,4.5,0.0,0.0,100000000.0 +1500,5.0,0.0,0.0,100000000.0 +1600,3.0,0.0,0.0,100000000.0 +1600,3.5,0.0,0.0,100000000.0 +1600,4.0,0.0,0.0,100000000.0 +1600,4.5,0.0,0.0,100000000.0 +1600,5.0,0.0,0.0,100000000.0 +1700,3.0,0.0,0.0,100000000.0 +1700,3.5,0.0,0.0,100000000.0 +1700,4.0,0.0,0.0,100000000.0 +1700,4.5,0.0,0.0,100000000.0 +1700,5.0,0.0,0.0,100000000.0 +1800,3.0,0.0,0.0,100000000.0 +1800,3.5,0.0,0.0,100000000.0 +1800,4.0,0.0,0.0,100000000.0 +1800,4.5,0.0,0.0,100000000.0 +1800,5.0,0.0,0.0,100000000.0 +1900,3.0,0.0,0.0,100000000.0 +1900,3.5,0.0,0.0,100000000.0 +1900,4.0,0.0,0.0,100000000.0 +1900,4.5,0.0,0.0,100000000.0 +1900,5.0,0.0,0.0,100000000.0 +2000,3.0,0.0,0.0,100000000.0 +2000,3.5,0.0,0.0,100000000.0 +2000,4.0,0.0,0.0,100000000.0 +2000,4.5,0.0,0.0,100000000.0 +2000,5.0,0.0,0.0,100000000.0 diff --git a/smart/libraries/MARCS_APOGEE_DR15/MARCS_APOGEE_DR15_3D_gridparams.csv b/smart/libraries/MARCS_APOGEE_DR15/MARCS_APOGEE_DR15_3D_gridparams.csv new file mode 100644 index 0000000..7e4bc06 --- /dev/null +++ b/smart/libraries/MARCS_APOGEE_DR15/MARCS_APOGEE_DR15_3D_gridparams.csv @@ -0,0 +1,1345 @@ +Temp,Logg,Metal,Alpha,File +2500,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +2500,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +2500,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +2500,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +2500,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +2500,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t2500_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +2500,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t2500_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +2500,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +2500,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +2500,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +2500,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +2500,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +2500,0.0,0.0,0.0,MARCS_APOGEE_DR15_t2500_g0.00_z0.00_en0.00_APOGEE-RAW.txt +2500,0.0,0.5,0.0,MARCS_APOGEE_DR15_t2500_g0.00_z0.50_en0.00_APOGEE-RAW.txt +2500,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +2500,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +2500,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +2500,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +2500,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +2500,0.5,0.0,0.0,MARCS_APOGEE_DR15_t2500_g0.50_z0.00_en0.00_APOGEE-RAW.txt +2500,0.5,0.5,0.0,MARCS_APOGEE_DR15_t2500_g0.50_z0.50_en0.00_APOGEE-RAW.txt +2500,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +2500,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +2500,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +2500,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +2500,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +2500,1.0,0.0,0.0,MARCS_APOGEE_DR15_t2500_g1.00_z0.00_en0.00_APOGEE-RAW.txt +2500,1.0,0.5,0.0,MARCS_APOGEE_DR15_t2500_g1.00_z0.50_en0.00_APOGEE-RAW.txt +2500,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +2500,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +2500,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +2500,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +2500,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +2500,1.5,0.0,0.0,MARCS_APOGEE_DR15_t2500_g1.50_z0.00_en0.00_APOGEE-RAW.txt +2500,1.5,0.5,0.0,MARCS_APOGEE_DR15_t2500_g1.50_z0.50_en0.00_APOGEE-RAW.txt +2500,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +2500,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +2500,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +2500,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +2500,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +2500,2.0,0.0,0.0,MARCS_APOGEE_DR15_t2500_g2.00_z0.00_en0.00_APOGEE-RAW.txt +2500,2.0,0.5,0.0,MARCS_APOGEE_DR15_t2500_g2.00_z0.50_en0.00_APOGEE-RAW.txt +2500,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +2500,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +2500,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +2500,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +2500,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +2500,2.5,0.0,0.0,MARCS_APOGEE_DR15_t2500_g2.50_z0.00_en0.00_APOGEE-RAW.txt +2500,2.5,0.5,0.0,MARCS_APOGEE_DR15_t2500_g2.50_z0.50_en0.00_APOGEE-RAW.txt +2500,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +2500,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +2500,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +2500,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +2500,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +2500,3.0,0.0,0.0,MARCS_APOGEE_DR15_t2500_g3.00_z0.00_en0.00_APOGEE-RAW.txt +2500,3.0,0.5,0.0,MARCS_APOGEE_DR15_t2500_g3.00_z0.50_en0.00_APOGEE-RAW.txt +2500,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +2500,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +2500,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +2500,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +2500,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +2500,3.5,0.0,0.0,MARCS_APOGEE_DR15_t2500_g3.50_z0.00_en0.00_APOGEE-RAW.txt +2500,3.5,0.5,0.0,MARCS_APOGEE_DR15_t2500_g3.50_z0.50_en0.00_APOGEE-RAW.txt +2500,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +2500,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +2500,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +2500,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +2500,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +2500,4.0,0.0,0.0,MARCS_APOGEE_DR15_t2500_g4.00_z0.00_en0.00_APOGEE-RAW.txt +2500,4.0,0.5,0.0,MARCS_APOGEE_DR15_t2500_g4.00_z0.50_en0.00_APOGEE-RAW.txt +2500,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +2500,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +2500,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +2500,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +2500,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +2500,4.5,0.0,0.0,MARCS_APOGEE_DR15_t2500_g4.50_z0.00_en0.00_APOGEE-RAW.txt +2500,4.5,0.5,0.0,MARCS_APOGEE_DR15_t2500_g4.50_z0.50_en0.00_APOGEE-RAW.txt +2500,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t2500_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +2500,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t2500_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +2500,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t2500_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +2500,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t2500_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +2500,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t2500_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +2500,5.0,0.0,0.0,MARCS_APOGEE_DR15_t2500_g5.00_z0.00_en0.00_APOGEE-RAW.txt +2500,5.0,0.5,0.0,MARCS_APOGEE_DR15_t2500_g5.00_z0.50_en0.00_APOGEE-RAW.txt +2600,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +2600,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +2600,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +2600,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +2600,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +2600,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t2600_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +2600,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t2600_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +2600,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +2600,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +2600,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +2600,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +2600,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +2600,0.0,0.0,0.0,MARCS_APOGEE_DR15_t2600_g0.00_z0.00_en0.00_APOGEE-RAW.txt +2600,0.0,0.5,0.0,MARCS_APOGEE_DR15_t2600_g0.00_z0.50_en0.00_APOGEE-RAW.txt +2600,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +2600,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +2600,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +2600,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +2600,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +2600,0.5,0.0,0.0,MARCS_APOGEE_DR15_t2600_g0.50_z0.00_en0.00_APOGEE-RAW.txt +2600,0.5,0.5,0.0,MARCS_APOGEE_DR15_t2600_g0.50_z0.50_en0.00_APOGEE-RAW.txt +2600,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +2600,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +2600,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +2600,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +2600,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +2600,1.0,0.0,0.0,MARCS_APOGEE_DR15_t2600_g1.00_z0.00_en0.00_APOGEE-RAW.txt +2600,1.0,0.5,0.0,MARCS_APOGEE_DR15_t2600_g1.00_z0.50_en0.00_APOGEE-RAW.txt +2600,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +2600,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +2600,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +2600,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +2600,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +2600,1.5,0.0,0.0,MARCS_APOGEE_DR15_t2600_g1.50_z0.00_en0.00_APOGEE-RAW.txt +2600,1.5,0.5,0.0,MARCS_APOGEE_DR15_t2600_g1.50_z0.50_en0.00_APOGEE-RAW.txt +2600,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +2600,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +2600,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +2600,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +2600,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +2600,2.0,0.0,0.0,MARCS_APOGEE_DR15_t2600_g2.00_z0.00_en0.00_APOGEE-RAW.txt +2600,2.0,0.5,0.0,MARCS_APOGEE_DR15_t2600_g2.00_z0.50_en0.00_APOGEE-RAW.txt +2600,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +2600,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +2600,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +2600,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +2600,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +2600,2.5,0.0,0.0,MARCS_APOGEE_DR15_t2600_g2.50_z0.00_en0.00_APOGEE-RAW.txt +2600,2.5,0.5,0.0,MARCS_APOGEE_DR15_t2600_g2.50_z0.50_en0.00_APOGEE-RAW.txt +2600,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +2600,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +2600,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +2600,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +2600,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +2600,3.0,0.0,0.0,MARCS_APOGEE_DR15_t2600_g3.00_z0.00_en0.00_APOGEE-RAW.txt +2600,3.0,0.5,0.0,MARCS_APOGEE_DR15_t2600_g3.00_z0.50_en0.00_APOGEE-RAW.txt +2600,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +2600,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +2600,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +2600,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +2600,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +2600,3.5,0.0,0.0,MARCS_APOGEE_DR15_t2600_g3.50_z0.00_en0.00_APOGEE-RAW.txt +2600,3.5,0.5,0.0,MARCS_APOGEE_DR15_t2600_g3.50_z0.50_en0.00_APOGEE-RAW.txt +2600,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +2600,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +2600,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +2600,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +2600,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +2600,4.0,0.0,0.0,MARCS_APOGEE_DR15_t2600_g4.00_z0.00_en0.00_APOGEE-RAW.txt +2600,4.0,0.5,0.0,MARCS_APOGEE_DR15_t2600_g4.00_z0.50_en0.00_APOGEE-RAW.txt +2600,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +2600,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +2600,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +2600,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +2600,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +2600,4.5,0.0,0.0,MARCS_APOGEE_DR15_t2600_g4.50_z0.00_en0.00_APOGEE-RAW.txt +2600,4.5,0.5,0.0,MARCS_APOGEE_DR15_t2600_g4.50_z0.50_en0.00_APOGEE-RAW.txt +2600,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t2600_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +2600,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t2600_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +2600,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t2600_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +2600,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t2600_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +2600,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t2600_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +2600,5.0,0.0,0.0,MARCS_APOGEE_DR15_t2600_g5.00_z0.00_en0.00_APOGEE-RAW.txt +2600,5.0,0.5,0.0,MARCS_APOGEE_DR15_t2600_g5.00_z0.50_en0.00_APOGEE-RAW.txt +2700,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +2700,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +2700,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +2700,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +2700,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +2700,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t2700_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +2700,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t2700_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +2700,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +2700,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +2700,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +2700,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +2700,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +2700,0.0,0.0,0.0,MARCS_APOGEE_DR15_t2700_g0.00_z0.00_en0.00_APOGEE-RAW.txt +2700,0.0,0.5,0.0,MARCS_APOGEE_DR15_t2700_g0.00_z0.50_en0.00_APOGEE-RAW.txt +2700,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +2700,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +2700,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +2700,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +2700,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +2700,0.5,0.0,0.0,MARCS_APOGEE_DR15_t2700_g0.50_z0.00_en0.00_APOGEE-RAW.txt +2700,0.5,0.5,0.0,MARCS_APOGEE_DR15_t2700_g0.50_z0.50_en0.00_APOGEE-RAW.txt +2700,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +2700,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +2700,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +2700,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +2700,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +2700,1.0,0.0,0.0,MARCS_APOGEE_DR15_t2700_g1.00_z0.00_en0.00_APOGEE-RAW.txt +2700,1.0,0.5,0.0,MARCS_APOGEE_DR15_t2700_g1.00_z0.50_en0.00_APOGEE-RAW.txt +2700,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +2700,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +2700,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +2700,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +2700,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +2700,1.5,0.0,0.0,MARCS_APOGEE_DR15_t2700_g1.50_z0.00_en0.00_APOGEE-RAW.txt +2700,1.5,0.5,0.0,MARCS_APOGEE_DR15_t2700_g1.50_z0.50_en0.00_APOGEE-RAW.txt +2700,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +2700,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +2700,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +2700,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +2700,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +2700,2.0,0.0,0.0,MARCS_APOGEE_DR15_t2700_g2.00_z0.00_en0.00_APOGEE-RAW.txt +2700,2.0,0.5,0.0,MARCS_APOGEE_DR15_t2700_g2.00_z0.50_en0.00_APOGEE-RAW.txt +2700,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +2700,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +2700,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +2700,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +2700,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +2700,2.5,0.0,0.0,MARCS_APOGEE_DR15_t2700_g2.50_z0.00_en0.00_APOGEE-RAW.txt +2700,2.5,0.5,0.0,MARCS_APOGEE_DR15_t2700_g2.50_z0.50_en0.00_APOGEE-RAW.txt +2700,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +2700,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +2700,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +2700,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +2700,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +2700,3.0,0.0,0.0,MARCS_APOGEE_DR15_t2700_g3.00_z0.00_en0.00_APOGEE-RAW.txt +2700,3.0,0.5,0.0,MARCS_APOGEE_DR15_t2700_g3.00_z0.50_en0.00_APOGEE-RAW.txt +2700,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +2700,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +2700,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +2700,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +2700,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +2700,3.5,0.0,0.0,MARCS_APOGEE_DR15_t2700_g3.50_z0.00_en0.00_APOGEE-RAW.txt +2700,3.5,0.5,0.0,MARCS_APOGEE_DR15_t2700_g3.50_z0.50_en0.00_APOGEE-RAW.txt +2700,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +2700,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +2700,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +2700,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +2700,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +2700,4.0,0.0,0.0,MARCS_APOGEE_DR15_t2700_g4.00_z0.00_en0.00_APOGEE-RAW.txt +2700,4.0,0.5,0.0,MARCS_APOGEE_DR15_t2700_g4.00_z0.50_en0.00_APOGEE-RAW.txt +2700,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +2700,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +2700,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +2700,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +2700,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +2700,4.5,0.0,0.0,MARCS_APOGEE_DR15_t2700_g4.50_z0.00_en0.00_APOGEE-RAW.txt +2700,4.5,0.5,0.0,MARCS_APOGEE_DR15_t2700_g4.50_z0.50_en0.00_APOGEE-RAW.txt +2700,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t2700_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +2700,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t2700_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +2700,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t2700_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +2700,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t2700_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +2700,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t2700_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +2700,5.0,0.0,0.0,MARCS_APOGEE_DR15_t2700_g5.00_z0.00_en0.00_APOGEE-RAW.txt +2700,5.0,0.5,0.0,MARCS_APOGEE_DR15_t2700_g5.00_z0.50_en0.00_APOGEE-RAW.txt +2800,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +2800,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +2800,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +2800,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +2800,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +2800,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t2800_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +2800,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t2800_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +2800,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +2800,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +2800,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +2800,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +2800,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +2800,0.0,0.0,0.0,MARCS_APOGEE_DR15_t2800_g0.00_z0.00_en0.00_APOGEE-RAW.txt +2800,0.0,0.5,0.0,MARCS_APOGEE_DR15_t2800_g0.00_z0.50_en0.00_APOGEE-RAW.txt +2800,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +2800,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +2800,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +2800,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +2800,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +2800,0.5,0.0,0.0,MARCS_APOGEE_DR15_t2800_g0.50_z0.00_en0.00_APOGEE-RAW.txt +2800,0.5,0.5,0.0,MARCS_APOGEE_DR15_t2800_g0.50_z0.50_en0.00_APOGEE-RAW.txt +2800,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +2800,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +2800,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +2800,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +2800,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +2800,1.0,0.0,0.0,MARCS_APOGEE_DR15_t2800_g1.00_z0.00_en0.00_APOGEE-RAW.txt +2800,1.0,0.5,0.0,MARCS_APOGEE_DR15_t2800_g1.00_z0.50_en0.00_APOGEE-RAW.txt +2800,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +2800,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +2800,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +2800,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +2800,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +2800,1.5,0.0,0.0,MARCS_APOGEE_DR15_t2800_g1.50_z0.00_en0.00_APOGEE-RAW.txt +2800,1.5,0.5,0.0,MARCS_APOGEE_DR15_t2800_g1.50_z0.50_en0.00_APOGEE-RAW.txt +2800,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +2800,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +2800,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +2800,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +2800,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +2800,2.0,0.0,0.0,MARCS_APOGEE_DR15_t2800_g2.00_z0.00_en0.00_APOGEE-RAW.txt +2800,2.0,0.5,0.0,MARCS_APOGEE_DR15_t2800_g2.00_z0.50_en0.00_APOGEE-RAW.txt +2800,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +2800,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +2800,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +2800,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +2800,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +2800,2.5,0.0,0.0,MARCS_APOGEE_DR15_t2800_g2.50_z0.00_en0.00_APOGEE-RAW.txt +2800,2.5,0.5,0.0,MARCS_APOGEE_DR15_t2800_g2.50_z0.50_en0.00_APOGEE-RAW.txt +2800,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +2800,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +2800,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +2800,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +2800,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +2800,3.0,0.0,0.0,MARCS_APOGEE_DR15_t2800_g3.00_z0.00_en0.00_APOGEE-RAW.txt +2800,3.0,0.5,0.0,MARCS_APOGEE_DR15_t2800_g3.00_z0.50_en0.00_APOGEE-RAW.txt +2800,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +2800,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +2800,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +2800,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +2800,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +2800,3.5,0.0,0.0,MARCS_APOGEE_DR15_t2800_g3.50_z0.00_en0.00_APOGEE-RAW.txt +2800,3.5,0.5,0.0,MARCS_APOGEE_DR15_t2800_g3.50_z0.50_en0.00_APOGEE-RAW.txt +2800,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +2800,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +2800,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +2800,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +2800,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +2800,4.0,0.0,0.0,MARCS_APOGEE_DR15_t2800_g4.00_z0.00_en0.00_APOGEE-RAW.txt +2800,4.0,0.5,0.0,MARCS_APOGEE_DR15_t2800_g4.00_z0.50_en0.00_APOGEE-RAW.txt +2800,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +2800,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +2800,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +2800,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +2800,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +2800,4.5,0.0,0.0,MARCS_APOGEE_DR15_t2800_g4.50_z0.00_en0.00_APOGEE-RAW.txt +2800,4.5,0.5,0.0,MARCS_APOGEE_DR15_t2800_g4.50_z0.50_en0.00_APOGEE-RAW.txt +2800,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t2800_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +2800,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t2800_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +2800,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t2800_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +2800,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t2800_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +2800,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t2800_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +2800,5.0,0.0,0.0,MARCS_APOGEE_DR15_t2800_g5.00_z0.00_en0.00_APOGEE-RAW.txt +2800,5.0,0.5,0.0,MARCS_APOGEE_DR15_t2800_g5.00_z0.50_en0.00_APOGEE-RAW.txt +2900,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +2900,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +2900,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +2900,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +2900,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +2900,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t2900_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +2900,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t2900_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +2900,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +2900,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +2900,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +2900,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +2900,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +2900,0.0,0.0,0.0,MARCS_APOGEE_DR15_t2900_g0.00_z0.00_en0.00_APOGEE-RAW.txt +2900,0.0,0.5,0.0,MARCS_APOGEE_DR15_t2900_g0.00_z0.50_en0.00_APOGEE-RAW.txt +2900,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +2900,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +2900,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +2900,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +2900,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +2900,0.5,0.0,0.0,MARCS_APOGEE_DR15_t2900_g0.50_z0.00_en0.00_APOGEE-RAW.txt +2900,0.5,0.5,0.0,MARCS_APOGEE_DR15_t2900_g0.50_z0.50_en0.00_APOGEE-RAW.txt +2900,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +2900,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +2900,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +2900,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +2900,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +2900,1.0,0.0,0.0,MARCS_APOGEE_DR15_t2900_g1.00_z0.00_en0.00_APOGEE-RAW.txt +2900,1.0,0.5,0.0,MARCS_APOGEE_DR15_t2900_g1.00_z0.50_en0.00_APOGEE-RAW.txt +2900,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +2900,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +2900,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +2900,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +2900,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +2900,1.5,0.0,0.0,MARCS_APOGEE_DR15_t2900_g1.50_z0.00_en0.00_APOGEE-RAW.txt +2900,1.5,0.5,0.0,MARCS_APOGEE_DR15_t2900_g1.50_z0.50_en0.00_APOGEE-RAW.txt +2900,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +2900,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +2900,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +2900,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +2900,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +2900,2.0,0.0,0.0,MARCS_APOGEE_DR15_t2900_g2.00_z0.00_en0.00_APOGEE-RAW.txt +2900,2.0,0.5,0.0,MARCS_APOGEE_DR15_t2900_g2.00_z0.50_en0.00_APOGEE-RAW.txt +2900,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +2900,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +2900,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +2900,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +2900,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +2900,2.5,0.0,0.0,MARCS_APOGEE_DR15_t2900_g2.50_z0.00_en0.00_APOGEE-RAW.txt +2900,2.5,0.5,0.0,MARCS_APOGEE_DR15_t2900_g2.50_z0.50_en0.00_APOGEE-RAW.txt +2900,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +2900,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +2900,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +2900,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +2900,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +2900,3.0,0.0,0.0,MARCS_APOGEE_DR15_t2900_g3.00_z0.00_en0.00_APOGEE-RAW.txt +2900,3.0,0.5,0.0,MARCS_APOGEE_DR15_t2900_g3.00_z0.50_en0.00_APOGEE-RAW.txt +2900,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +2900,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +2900,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +2900,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +2900,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +2900,3.5,0.0,0.0,MARCS_APOGEE_DR15_t2900_g3.50_z0.00_en0.00_APOGEE-RAW.txt +2900,3.5,0.5,0.0,MARCS_APOGEE_DR15_t2900_g3.50_z0.50_en0.00_APOGEE-RAW.txt +2900,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +2900,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +2900,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +2900,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +2900,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +2900,4.0,0.0,0.0,MARCS_APOGEE_DR15_t2900_g4.00_z0.00_en0.00_APOGEE-RAW.txt +2900,4.0,0.5,0.0,MARCS_APOGEE_DR15_t2900_g4.00_z0.50_en0.00_APOGEE-RAW.txt +2900,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +2900,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +2900,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +2900,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +2900,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +2900,4.5,0.0,0.0,MARCS_APOGEE_DR15_t2900_g4.50_z0.00_en0.00_APOGEE-RAW.txt +2900,4.5,0.5,0.0,MARCS_APOGEE_DR15_t2900_g4.50_z0.50_en0.00_APOGEE-RAW.txt +2900,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t2900_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +2900,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t2900_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +2900,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t2900_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +2900,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t2900_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +2900,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t2900_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +2900,5.0,0.0,0.0,MARCS_APOGEE_DR15_t2900_g5.00_z0.00_en0.00_APOGEE-RAW.txt +2900,5.0,0.5,0.0,MARCS_APOGEE_DR15_t2900_g5.00_z0.50_en0.00_APOGEE-RAW.txt +3000,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +3000,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +3000,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +3000,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +3000,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +3000,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t3000_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +3000,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t3000_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +3000,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +3000,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +3000,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +3000,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +3000,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +3000,0.0,0.0,0.0,MARCS_APOGEE_DR15_t3000_g0.00_z0.00_en0.00_APOGEE-RAW.txt +3000,0.0,0.5,0.0,MARCS_APOGEE_DR15_t3000_g0.00_z0.50_en0.00_APOGEE-RAW.txt +3000,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +3000,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +3000,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +3000,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +3000,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +3000,0.5,0.0,0.0,MARCS_APOGEE_DR15_t3000_g0.50_z0.00_en0.00_APOGEE-RAW.txt +3000,0.5,0.5,0.0,MARCS_APOGEE_DR15_t3000_g0.50_z0.50_en0.00_APOGEE-RAW.txt +3000,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +3000,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +3000,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +3000,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +3000,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +3000,1.0,0.0,0.0,MARCS_APOGEE_DR15_t3000_g1.00_z0.00_en0.00_APOGEE-RAW.txt +3000,1.0,0.5,0.0,MARCS_APOGEE_DR15_t3000_g1.00_z0.50_en0.00_APOGEE-RAW.txt +3000,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +3000,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +3000,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +3000,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +3000,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +3000,1.5,0.0,0.0,MARCS_APOGEE_DR15_t3000_g1.50_z0.00_en0.00_APOGEE-RAW.txt +3000,1.5,0.5,0.0,MARCS_APOGEE_DR15_t3000_g1.50_z0.50_en0.00_APOGEE-RAW.txt +3000,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +3000,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +3000,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +3000,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +3000,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +3000,2.0,0.0,0.0,MARCS_APOGEE_DR15_t3000_g2.00_z0.00_en0.00_APOGEE-RAW.txt +3000,2.0,0.5,0.0,MARCS_APOGEE_DR15_t3000_g2.00_z0.50_en0.00_APOGEE-RAW.txt +3000,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +3000,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +3000,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +3000,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +3000,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +3000,2.5,0.0,0.0,MARCS_APOGEE_DR15_t3000_g2.50_z0.00_en0.00_APOGEE-RAW.txt +3000,2.5,0.5,0.0,MARCS_APOGEE_DR15_t3000_g2.50_z0.50_en0.00_APOGEE-RAW.txt +3000,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +3000,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +3000,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +3000,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +3000,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +3000,3.0,0.0,0.0,MARCS_APOGEE_DR15_t3000_g3.00_z0.00_en0.00_APOGEE-RAW.txt +3000,3.0,0.5,0.0,MARCS_APOGEE_DR15_t3000_g3.00_z0.50_en0.00_APOGEE-RAW.txt +3000,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +3000,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +3000,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +3000,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +3000,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +3000,3.5,0.0,0.0,MARCS_APOGEE_DR15_t3000_g3.50_z0.00_en0.00_APOGEE-RAW.txt +3000,3.5,0.5,0.0,MARCS_APOGEE_DR15_t3000_g3.50_z0.50_en0.00_APOGEE-RAW.txt +3000,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +3000,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +3000,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +3000,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +3000,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +3000,4.0,0.0,0.0,MARCS_APOGEE_DR15_t3000_g4.00_z0.00_en0.00_APOGEE-RAW.txt +3000,4.0,0.5,0.0,MARCS_APOGEE_DR15_t3000_g4.00_z0.50_en0.00_APOGEE-RAW.txt +3000,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +3000,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +3000,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +3000,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +3000,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +3000,4.5,0.0,0.0,MARCS_APOGEE_DR15_t3000_g4.50_z0.00_en0.00_APOGEE-RAW.txt +3000,4.5,0.5,0.0,MARCS_APOGEE_DR15_t3000_g4.50_z0.50_en0.00_APOGEE-RAW.txt +3000,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t3000_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +3000,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t3000_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +3000,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t3000_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +3000,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t3000_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +3000,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t3000_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +3000,5.0,0.0,0.0,MARCS_APOGEE_DR15_t3000_g5.00_z0.00_en0.00_APOGEE-RAW.txt +3000,5.0,0.5,0.0,MARCS_APOGEE_DR15_t3000_g5.00_z0.50_en0.00_APOGEE-RAW.txt +3100,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +3100,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +3100,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +3100,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +3100,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +3100,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t3100_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +3100,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t3100_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +3100,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +3100,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +3100,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +3100,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +3100,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +3100,0.0,0.0,0.0,MARCS_APOGEE_DR15_t3100_g0.00_z0.00_en0.00_APOGEE-RAW.txt +3100,0.0,0.5,0.0,MARCS_APOGEE_DR15_t3100_g0.00_z0.50_en0.00_APOGEE-RAW.txt +3100,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +3100,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +3100,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +3100,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +3100,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +3100,0.5,0.0,0.0,MARCS_APOGEE_DR15_t3100_g0.50_z0.00_en0.00_APOGEE-RAW.txt +3100,0.5,0.5,0.0,MARCS_APOGEE_DR15_t3100_g0.50_z0.50_en0.00_APOGEE-RAW.txt +3100,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +3100,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +3100,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +3100,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +3100,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +3100,1.0,0.0,0.0,MARCS_APOGEE_DR15_t3100_g1.00_z0.00_en0.00_APOGEE-RAW.txt +3100,1.0,0.5,0.0,MARCS_APOGEE_DR15_t3100_g1.00_z0.50_en0.00_APOGEE-RAW.txt +3100,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +3100,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +3100,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +3100,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +3100,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +3100,1.5,0.0,0.0,MARCS_APOGEE_DR15_t3100_g1.50_z0.00_en0.00_APOGEE-RAW.txt +3100,1.5,0.5,0.0,MARCS_APOGEE_DR15_t3100_g1.50_z0.50_en0.00_APOGEE-RAW.txt +3100,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +3100,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +3100,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +3100,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +3100,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +3100,2.0,0.0,0.0,MARCS_APOGEE_DR15_t3100_g2.00_z0.00_en0.00_APOGEE-RAW.txt +3100,2.0,0.5,0.0,MARCS_APOGEE_DR15_t3100_g2.00_z0.50_en0.00_APOGEE-RAW.txt +3100,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +3100,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +3100,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +3100,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +3100,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +3100,2.5,0.0,0.0,MARCS_APOGEE_DR15_t3100_g2.50_z0.00_en0.00_APOGEE-RAW.txt +3100,2.5,0.5,0.0,MARCS_APOGEE_DR15_t3100_g2.50_z0.50_en0.00_APOGEE-RAW.txt +3100,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +3100,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +3100,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +3100,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +3100,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +3100,3.0,0.0,0.0,MARCS_APOGEE_DR15_t3100_g3.00_z0.00_en0.00_APOGEE-RAW.txt +3100,3.0,0.5,0.0,MARCS_APOGEE_DR15_t3100_g3.00_z0.50_en0.00_APOGEE-RAW.txt +3100,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +3100,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +3100,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +3100,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +3100,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +3100,3.5,0.0,0.0,MARCS_APOGEE_DR15_t3100_g3.50_z0.00_en0.00_APOGEE-RAW.txt +3100,3.5,0.5,0.0,MARCS_APOGEE_DR15_t3100_g3.50_z0.50_en0.00_APOGEE-RAW.txt +3100,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +3100,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +3100,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +3100,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +3100,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +3100,4.0,0.0,0.0,MARCS_APOGEE_DR15_t3100_g4.00_z0.00_en0.00_APOGEE-RAW.txt +3100,4.0,0.5,0.0,MARCS_APOGEE_DR15_t3100_g4.00_z0.50_en0.00_APOGEE-RAW.txt +3100,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +3100,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +3100,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +3100,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +3100,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +3100,4.5,0.0,0.0,MARCS_APOGEE_DR15_t3100_g4.50_z0.00_en0.00_APOGEE-RAW.txt +3100,4.5,0.5,0.0,MARCS_APOGEE_DR15_t3100_g4.50_z0.50_en0.00_APOGEE-RAW.txt +3100,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t3100_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +3100,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t3100_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +3100,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t3100_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +3100,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t3100_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +3100,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t3100_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +3100,5.0,0.0,0.0,MARCS_APOGEE_DR15_t3100_g5.00_z0.00_en0.00_APOGEE-RAW.txt +3100,5.0,0.5,0.0,MARCS_APOGEE_DR15_t3100_g5.00_z0.50_en0.00_APOGEE-RAW.txt +3200,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +3200,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +3200,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +3200,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +3200,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +3200,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t3200_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +3200,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t3200_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +3200,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +3200,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +3200,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +3200,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +3200,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +3200,0.0,0.0,0.0,MARCS_APOGEE_DR15_t3200_g0.00_z0.00_en0.00_APOGEE-RAW.txt +3200,0.0,0.5,0.0,MARCS_APOGEE_DR15_t3200_g0.00_z0.50_en0.00_APOGEE-RAW.txt +3200,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +3200,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +3200,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +3200,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +3200,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +3200,0.5,0.0,0.0,MARCS_APOGEE_DR15_t3200_g0.50_z0.00_en0.00_APOGEE-RAW.txt +3200,0.5,0.5,0.0,MARCS_APOGEE_DR15_t3200_g0.50_z0.50_en0.00_APOGEE-RAW.txt +3200,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +3200,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +3200,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +3200,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +3200,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +3200,1.0,0.0,0.0,MARCS_APOGEE_DR15_t3200_g1.00_z0.00_en0.00_APOGEE-RAW.txt +3200,1.0,0.5,0.0,MARCS_APOGEE_DR15_t3200_g1.00_z0.50_en0.00_APOGEE-RAW.txt +3200,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +3200,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +3200,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +3200,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +3200,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +3200,1.5,0.0,0.0,MARCS_APOGEE_DR15_t3200_g1.50_z0.00_en0.00_APOGEE-RAW.txt +3200,1.5,0.5,0.0,MARCS_APOGEE_DR15_t3200_g1.50_z0.50_en0.00_APOGEE-RAW.txt +3200,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +3200,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +3200,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +3200,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +3200,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +3200,2.0,0.0,0.0,MARCS_APOGEE_DR15_t3200_g2.00_z0.00_en0.00_APOGEE-RAW.txt +3200,2.0,0.5,0.0,MARCS_APOGEE_DR15_t3200_g2.00_z0.50_en0.00_APOGEE-RAW.txt +3200,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +3200,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +3200,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +3200,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +3200,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +3200,2.5,0.0,0.0,MARCS_APOGEE_DR15_t3200_g2.50_z0.00_en0.00_APOGEE-RAW.txt +3200,2.5,0.5,0.0,MARCS_APOGEE_DR15_t3200_g2.50_z0.50_en0.00_APOGEE-RAW.txt +3200,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +3200,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +3200,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +3200,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +3200,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +3200,3.0,0.0,0.0,MARCS_APOGEE_DR15_t3200_g3.00_z0.00_en0.00_APOGEE-RAW.txt +3200,3.0,0.5,0.0,MARCS_APOGEE_DR15_t3200_g3.00_z0.50_en0.00_APOGEE-RAW.txt +3200,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +3200,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +3200,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +3200,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +3200,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +3200,3.5,0.0,0.0,MARCS_APOGEE_DR15_t3200_g3.50_z0.00_en0.00_APOGEE-RAW.txt +3200,3.5,0.5,0.0,MARCS_APOGEE_DR15_t3200_g3.50_z0.50_en0.00_APOGEE-RAW.txt +3200,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +3200,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +3200,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +3200,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +3200,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +3200,4.0,0.0,0.0,MARCS_APOGEE_DR15_t3200_g4.00_z0.00_en0.00_APOGEE-RAW.txt +3200,4.0,0.5,0.0,MARCS_APOGEE_DR15_t3200_g4.00_z0.50_en0.00_APOGEE-RAW.txt +3200,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +3200,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +3200,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +3200,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +3200,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +3200,4.5,0.0,0.0,MARCS_APOGEE_DR15_t3200_g4.50_z0.00_en0.00_APOGEE-RAW.txt +3200,4.5,0.5,0.0,MARCS_APOGEE_DR15_t3200_g4.50_z0.50_en0.00_APOGEE-RAW.txt +3200,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t3200_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +3200,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t3200_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +3200,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t3200_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +3200,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t3200_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +3200,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t3200_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +3200,5.0,0.0,0.0,MARCS_APOGEE_DR15_t3200_g5.00_z0.00_en0.00_APOGEE-RAW.txt +3200,5.0,0.5,0.0,MARCS_APOGEE_DR15_t3200_g5.00_z0.50_en0.00_APOGEE-RAW.txt +3300,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +3300,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +3300,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +3300,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +3300,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +3300,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t3300_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +3300,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t3300_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +3300,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +3300,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +3300,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +3300,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +3300,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +3300,0.0,0.0,0.0,MARCS_APOGEE_DR15_t3300_g0.00_z0.00_en0.00_APOGEE-RAW.txt +3300,0.0,0.5,0.0,MARCS_APOGEE_DR15_t3300_g0.00_z0.50_en0.00_APOGEE-RAW.txt +3300,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +3300,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +3300,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +3300,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +3300,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +3300,0.5,0.0,0.0,MARCS_APOGEE_DR15_t3300_g0.50_z0.00_en0.00_APOGEE-RAW.txt +3300,0.5,0.5,0.0,MARCS_APOGEE_DR15_t3300_g0.50_z0.50_en0.00_APOGEE-RAW.txt +3300,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +3300,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +3300,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +3300,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +3300,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +3300,1.0,0.0,0.0,MARCS_APOGEE_DR15_t3300_g1.00_z0.00_en0.00_APOGEE-RAW.txt +3300,1.0,0.5,0.0,MARCS_APOGEE_DR15_t3300_g1.00_z0.50_en0.00_APOGEE-RAW.txt +3300,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +3300,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +3300,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +3300,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +3300,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +3300,1.5,0.0,0.0,MARCS_APOGEE_DR15_t3300_g1.50_z0.00_en0.00_APOGEE-RAW.txt +3300,1.5,0.5,0.0,MARCS_APOGEE_DR15_t3300_g1.50_z0.50_en0.00_APOGEE-RAW.txt +3300,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +3300,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +3300,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +3300,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +3300,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +3300,2.0,0.0,0.0,MARCS_APOGEE_DR15_t3300_g2.00_z0.00_en0.00_APOGEE-RAW.txt +3300,2.0,0.5,0.0,MARCS_APOGEE_DR15_t3300_g2.00_z0.50_en0.00_APOGEE-RAW.txt +3300,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +3300,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +3300,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +3300,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +3300,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +3300,2.5,0.0,0.0,MARCS_APOGEE_DR15_t3300_g2.50_z0.00_en0.00_APOGEE-RAW.txt +3300,2.5,0.5,0.0,MARCS_APOGEE_DR15_t3300_g2.50_z0.50_en0.00_APOGEE-RAW.txt +3300,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +3300,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +3300,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +3300,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +3300,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +3300,3.0,0.0,0.0,MARCS_APOGEE_DR15_t3300_g3.00_z0.00_en0.00_APOGEE-RAW.txt +3300,3.0,0.5,0.0,MARCS_APOGEE_DR15_t3300_g3.00_z0.50_en0.00_APOGEE-RAW.txt +3300,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +3300,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +3300,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +3300,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +3300,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +3300,3.5,0.0,0.0,MARCS_APOGEE_DR15_t3300_g3.50_z0.00_en0.00_APOGEE-RAW.txt +3300,3.5,0.5,0.0,MARCS_APOGEE_DR15_t3300_g3.50_z0.50_en0.00_APOGEE-RAW.txt +3300,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +3300,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +3300,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +3300,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +3300,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +3300,4.0,0.0,0.0,MARCS_APOGEE_DR15_t3300_g4.00_z0.00_en0.00_APOGEE-RAW.txt +3300,4.0,0.5,0.0,MARCS_APOGEE_DR15_t3300_g4.00_z0.50_en0.00_APOGEE-RAW.txt +3300,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +3300,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +3300,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +3300,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +3300,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +3300,4.5,0.0,0.0,MARCS_APOGEE_DR15_t3300_g4.50_z0.00_en0.00_APOGEE-RAW.txt +3300,4.5,0.5,0.0,MARCS_APOGEE_DR15_t3300_g4.50_z0.50_en0.00_APOGEE-RAW.txt +3300,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t3300_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +3300,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t3300_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +3300,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t3300_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +3300,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t3300_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +3300,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t3300_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +3300,5.0,0.0,0.0,MARCS_APOGEE_DR15_t3300_g5.00_z0.00_en0.00_APOGEE-RAW.txt +3300,5.0,0.5,0.0,MARCS_APOGEE_DR15_t3300_g5.00_z0.50_en0.00_APOGEE-RAW.txt +3400,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +3400,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +3400,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +3400,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +3400,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +3400,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t3400_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +3400,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t3400_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +3400,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +3400,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +3400,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +3400,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +3400,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +3400,0.0,0.0,0.0,MARCS_APOGEE_DR15_t3400_g0.00_z0.00_en0.00_APOGEE-RAW.txt +3400,0.0,0.5,0.0,MARCS_APOGEE_DR15_t3400_g0.00_z0.50_en0.00_APOGEE-RAW.txt +3400,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +3400,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +3400,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +3400,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +3400,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +3400,0.5,0.0,0.0,MARCS_APOGEE_DR15_t3400_g0.50_z0.00_en0.00_APOGEE-RAW.txt +3400,0.5,0.5,0.0,MARCS_APOGEE_DR15_t3400_g0.50_z0.50_en0.00_APOGEE-RAW.txt +3400,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +3400,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +3400,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +3400,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +3400,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +3400,1.0,0.0,0.0,MARCS_APOGEE_DR15_t3400_g1.00_z0.00_en0.00_APOGEE-RAW.txt +3400,1.0,0.5,0.0,MARCS_APOGEE_DR15_t3400_g1.00_z0.50_en0.00_APOGEE-RAW.txt +3400,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +3400,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +3400,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +3400,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +3400,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +3400,1.5,0.0,0.0,MARCS_APOGEE_DR15_t3400_g1.50_z0.00_en0.00_APOGEE-RAW.txt +3400,1.5,0.5,0.0,MARCS_APOGEE_DR15_t3400_g1.50_z0.50_en0.00_APOGEE-RAW.txt +3400,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +3400,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +3400,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +3400,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +3400,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +3400,2.0,0.0,0.0,MARCS_APOGEE_DR15_t3400_g2.00_z0.00_en0.00_APOGEE-RAW.txt +3400,2.0,0.5,0.0,MARCS_APOGEE_DR15_t3400_g2.00_z0.50_en0.00_APOGEE-RAW.txt +3400,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +3400,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +3400,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +3400,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +3400,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +3400,2.5,0.0,0.0,MARCS_APOGEE_DR15_t3400_g2.50_z0.00_en0.00_APOGEE-RAW.txt +3400,2.5,0.5,0.0,MARCS_APOGEE_DR15_t3400_g2.50_z0.50_en0.00_APOGEE-RAW.txt +3400,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +3400,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +3400,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +3400,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +3400,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +3400,3.0,0.0,0.0,MARCS_APOGEE_DR15_t3400_g3.00_z0.00_en0.00_APOGEE-RAW.txt +3400,3.0,0.5,0.0,MARCS_APOGEE_DR15_t3400_g3.00_z0.50_en0.00_APOGEE-RAW.txt +3400,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +3400,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +3400,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +3400,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +3400,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +3400,3.5,0.0,0.0,MARCS_APOGEE_DR15_t3400_g3.50_z0.00_en0.00_APOGEE-RAW.txt +3400,3.5,0.5,0.0,MARCS_APOGEE_DR15_t3400_g3.50_z0.50_en0.00_APOGEE-RAW.txt +3400,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +3400,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +3400,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +3400,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +3400,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +3400,4.0,0.0,0.0,MARCS_APOGEE_DR15_t3400_g4.00_z0.00_en0.00_APOGEE-RAW.txt +3400,4.0,0.5,0.0,MARCS_APOGEE_DR15_t3400_g4.00_z0.50_en0.00_APOGEE-RAW.txt +3400,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +3400,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +3400,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +3400,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +3400,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +3400,4.5,0.0,0.0,MARCS_APOGEE_DR15_t3400_g4.50_z0.00_en0.00_APOGEE-RAW.txt +3400,4.5,0.5,0.0,MARCS_APOGEE_DR15_t3400_g4.50_z0.50_en0.00_APOGEE-RAW.txt +3400,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t3400_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +3400,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t3400_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +3400,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t3400_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +3400,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t3400_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +3400,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t3400_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +3400,5.0,0.0,0.0,MARCS_APOGEE_DR15_t3400_g5.00_z0.00_en0.00_APOGEE-RAW.txt +3400,5.0,0.5,0.0,MARCS_APOGEE_DR15_t3400_g5.00_z0.50_en0.00_APOGEE-RAW.txt +3500,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +3500,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +3500,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +3500,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +3500,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +3500,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t3500_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +3500,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t3500_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +3500,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +3500,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +3500,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +3500,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +3500,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +3500,0.0,0.0,0.0,MARCS_APOGEE_DR15_t3500_g0.00_z0.00_en0.00_APOGEE-RAW.txt +3500,0.0,0.5,0.0,MARCS_APOGEE_DR15_t3500_g0.00_z0.50_en0.00_APOGEE-RAW.txt +3500,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +3500,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +3500,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +3500,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +3500,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +3500,0.5,0.0,0.0,MARCS_APOGEE_DR15_t3500_g0.50_z0.00_en0.00_APOGEE-RAW.txt +3500,0.5,0.5,0.0,MARCS_APOGEE_DR15_t3500_g0.50_z0.50_en0.00_APOGEE-RAW.txt +3500,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +3500,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +3500,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +3500,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +3500,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +3500,1.0,0.0,0.0,MARCS_APOGEE_DR15_t3500_g1.00_z0.00_en0.00_APOGEE-RAW.txt +3500,1.0,0.5,0.0,MARCS_APOGEE_DR15_t3500_g1.00_z0.50_en0.00_APOGEE-RAW.txt +3500,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +3500,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +3500,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +3500,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +3500,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +3500,1.5,0.0,0.0,MARCS_APOGEE_DR15_t3500_g1.50_z0.00_en0.00_APOGEE-RAW.txt +3500,1.5,0.5,0.0,MARCS_APOGEE_DR15_t3500_g1.50_z0.50_en0.00_APOGEE-RAW.txt +3500,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +3500,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +3500,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +3500,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +3500,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +3500,2.0,0.0,0.0,MARCS_APOGEE_DR15_t3500_g2.00_z0.00_en0.00_APOGEE-RAW.txt +3500,2.0,0.5,0.0,MARCS_APOGEE_DR15_t3500_g2.00_z0.50_en0.00_APOGEE-RAW.txt +3500,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +3500,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +3500,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +3500,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +3500,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +3500,2.5,0.0,0.0,MARCS_APOGEE_DR15_t3500_g2.50_z0.00_en0.00_APOGEE-RAW.txt +3500,2.5,0.5,0.0,MARCS_APOGEE_DR15_t3500_g2.50_z0.50_en0.00_APOGEE-RAW.txt +3500,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +3500,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +3500,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +3500,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +3500,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +3500,3.0,0.0,0.0,MARCS_APOGEE_DR15_t3500_g3.00_z0.00_en0.00_APOGEE-RAW.txt +3500,3.0,0.5,0.0,MARCS_APOGEE_DR15_t3500_g3.00_z0.50_en0.00_APOGEE-RAW.txt +3500,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +3500,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +3500,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +3500,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +3500,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +3500,3.5,0.0,0.0,MARCS_APOGEE_DR15_t3500_g3.50_z0.00_en0.00_APOGEE-RAW.txt +3500,3.5,0.5,0.0,MARCS_APOGEE_DR15_t3500_g3.50_z0.50_en0.00_APOGEE-RAW.txt +3500,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +3500,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +3500,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +3500,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +3500,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +3500,4.0,0.0,0.0,MARCS_APOGEE_DR15_t3500_g4.00_z0.00_en0.00_APOGEE-RAW.txt +3500,4.0,0.5,0.0,MARCS_APOGEE_DR15_t3500_g4.00_z0.50_en0.00_APOGEE-RAW.txt +3500,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +3500,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +3500,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +3500,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +3500,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +3500,4.5,0.0,0.0,MARCS_APOGEE_DR15_t3500_g4.50_z0.00_en0.00_APOGEE-RAW.txt +3500,4.5,0.5,0.0,MARCS_APOGEE_DR15_t3500_g4.50_z0.50_en0.00_APOGEE-RAW.txt +3500,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t3500_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +3500,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t3500_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +3500,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t3500_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +3500,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t3500_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +3500,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t3500_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +3500,5.0,0.0,0.0,MARCS_APOGEE_DR15_t3500_g5.00_z0.00_en0.00_APOGEE-RAW.txt +3500,5.0,0.5,0.0,MARCS_APOGEE_DR15_t3500_g5.00_z0.50_en0.00_APOGEE-RAW.txt +3600,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +3600,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +3600,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +3600,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +3600,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +3600,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t3600_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +3600,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t3600_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +3600,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +3600,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +3600,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +3600,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +3600,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +3600,0.0,0.0,0.0,MARCS_APOGEE_DR15_t3600_g0.00_z0.00_en0.00_APOGEE-RAW.txt +3600,0.0,0.5,0.0,MARCS_APOGEE_DR15_t3600_g0.00_z0.50_en0.00_APOGEE-RAW.txt +3600,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +3600,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +3600,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +3600,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +3600,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +3600,0.5,0.0,0.0,MARCS_APOGEE_DR15_t3600_g0.50_z0.00_en0.00_APOGEE-RAW.txt +3600,0.5,0.5,0.0,MARCS_APOGEE_DR15_t3600_g0.50_z0.50_en0.00_APOGEE-RAW.txt +3600,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +3600,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +3600,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +3600,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +3600,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +3600,1.0,0.0,0.0,MARCS_APOGEE_DR15_t3600_g1.00_z0.00_en0.00_APOGEE-RAW.txt +3600,1.0,0.5,0.0,MARCS_APOGEE_DR15_t3600_g1.00_z0.50_en0.00_APOGEE-RAW.txt +3600,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +3600,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +3600,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +3600,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +3600,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +3600,1.5,0.0,0.0,MARCS_APOGEE_DR15_t3600_g1.50_z0.00_en0.00_APOGEE-RAW.txt +3600,1.5,0.5,0.0,MARCS_APOGEE_DR15_t3600_g1.50_z0.50_en0.00_APOGEE-RAW.txt +3600,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +3600,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +3600,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +3600,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +3600,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +3600,2.0,0.0,0.0,MARCS_APOGEE_DR15_t3600_g2.00_z0.00_en0.00_APOGEE-RAW.txt +3600,2.0,0.5,0.0,MARCS_APOGEE_DR15_t3600_g2.00_z0.50_en0.00_APOGEE-RAW.txt +3600,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +3600,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +3600,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +3600,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +3600,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +3600,2.5,0.0,0.0,MARCS_APOGEE_DR15_t3600_g2.50_z0.00_en0.00_APOGEE-RAW.txt +3600,2.5,0.5,0.0,MARCS_APOGEE_DR15_t3600_g2.50_z0.50_en0.00_APOGEE-RAW.txt +3600,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +3600,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +3600,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +3600,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +3600,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +3600,3.0,0.0,0.0,MARCS_APOGEE_DR15_t3600_g3.00_z0.00_en0.00_APOGEE-RAW.txt +3600,3.0,0.5,0.0,MARCS_APOGEE_DR15_t3600_g3.00_z0.50_en0.00_APOGEE-RAW.txt +3600,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +3600,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +3600,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +3600,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +3600,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +3600,3.5,0.0,0.0,MARCS_APOGEE_DR15_t3600_g3.50_z0.00_en0.00_APOGEE-RAW.txt +3600,3.5,0.5,0.0,MARCS_APOGEE_DR15_t3600_g3.50_z0.50_en0.00_APOGEE-RAW.txt +3600,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +3600,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +3600,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +3600,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +3600,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +3600,4.0,0.0,0.0,MARCS_APOGEE_DR15_t3600_g4.00_z0.00_en0.00_APOGEE-RAW.txt +3600,4.0,0.5,0.0,MARCS_APOGEE_DR15_t3600_g4.00_z0.50_en0.00_APOGEE-RAW.txt +3600,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +3600,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +3600,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +3600,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +3600,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +3600,4.5,0.0,0.0,MARCS_APOGEE_DR15_t3600_g4.50_z0.00_en0.00_APOGEE-RAW.txt +3600,4.5,0.5,0.0,MARCS_APOGEE_DR15_t3600_g4.50_z0.50_en0.00_APOGEE-RAW.txt +3600,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t3600_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +3600,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t3600_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +3600,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t3600_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +3600,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t3600_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +3600,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t3600_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +3600,5.0,0.0,0.0,MARCS_APOGEE_DR15_t3600_g5.00_z0.00_en0.00_APOGEE-RAW.txt +3600,5.0,0.5,0.0,MARCS_APOGEE_DR15_t3600_g5.00_z0.50_en0.00_APOGEE-RAW.txt +3700,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +3700,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +3700,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +3700,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +3700,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +3700,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t3700_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +3700,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t3700_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +3700,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +3700,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +3700,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +3700,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +3700,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +3700,0.0,0.0,0.0,MARCS_APOGEE_DR15_t3700_g0.00_z0.00_en0.00_APOGEE-RAW.txt +3700,0.0,0.5,0.0,MARCS_APOGEE_DR15_t3700_g0.00_z0.50_en0.00_APOGEE-RAW.txt +3700,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +3700,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +3700,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +3700,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +3700,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +3700,0.5,0.0,0.0,MARCS_APOGEE_DR15_t3700_g0.50_z0.00_en0.00_APOGEE-RAW.txt +3700,0.5,0.5,0.0,MARCS_APOGEE_DR15_t3700_g0.50_z0.50_en0.00_APOGEE-RAW.txt +3700,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +3700,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +3700,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +3700,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +3700,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +3700,1.0,0.0,0.0,MARCS_APOGEE_DR15_t3700_g1.00_z0.00_en0.00_APOGEE-RAW.txt +3700,1.0,0.5,0.0,MARCS_APOGEE_DR15_t3700_g1.00_z0.50_en0.00_APOGEE-RAW.txt +3700,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +3700,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +3700,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +3700,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +3700,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +3700,1.5,0.0,0.0,MARCS_APOGEE_DR15_t3700_g1.50_z0.00_en0.00_APOGEE-RAW.txt +3700,1.5,0.5,0.0,MARCS_APOGEE_DR15_t3700_g1.50_z0.50_en0.00_APOGEE-RAW.txt +3700,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +3700,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +3700,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +3700,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +3700,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +3700,2.0,0.0,0.0,MARCS_APOGEE_DR15_t3700_g2.00_z0.00_en0.00_APOGEE-RAW.txt +3700,2.0,0.5,0.0,MARCS_APOGEE_DR15_t3700_g2.00_z0.50_en0.00_APOGEE-RAW.txt +3700,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +3700,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +3700,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +3700,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +3700,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +3700,2.5,0.0,0.0,MARCS_APOGEE_DR15_t3700_g2.50_z0.00_en0.00_APOGEE-RAW.txt +3700,2.5,0.5,0.0,MARCS_APOGEE_DR15_t3700_g2.50_z0.50_en0.00_APOGEE-RAW.txt +3700,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +3700,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +3700,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +3700,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +3700,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +3700,3.0,0.0,0.0,MARCS_APOGEE_DR15_t3700_g3.00_z0.00_en0.00_APOGEE-RAW.txt +3700,3.0,0.5,0.0,MARCS_APOGEE_DR15_t3700_g3.00_z0.50_en0.00_APOGEE-RAW.txt +3700,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +3700,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +3700,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +3700,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +3700,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +3700,3.5,0.0,0.0,MARCS_APOGEE_DR15_t3700_g3.50_z0.00_en0.00_APOGEE-RAW.txt +3700,3.5,0.5,0.0,MARCS_APOGEE_DR15_t3700_g3.50_z0.50_en0.00_APOGEE-RAW.txt +3700,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +3700,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +3700,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +3700,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +3700,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +3700,4.0,0.0,0.0,MARCS_APOGEE_DR15_t3700_g4.00_z0.00_en0.00_APOGEE-RAW.txt +3700,4.0,0.5,0.0,MARCS_APOGEE_DR15_t3700_g4.00_z0.50_en0.00_APOGEE-RAW.txt +3700,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +3700,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +3700,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +3700,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +3700,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +3700,4.5,0.0,0.0,MARCS_APOGEE_DR15_t3700_g4.50_z0.00_en0.00_APOGEE-RAW.txt +3700,4.5,0.5,0.0,MARCS_APOGEE_DR15_t3700_g4.50_z0.50_en0.00_APOGEE-RAW.txt +3700,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t3700_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +3700,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t3700_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +3700,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t3700_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +3700,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t3700_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +3700,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t3700_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +3700,5.0,0.0,0.0,MARCS_APOGEE_DR15_t3700_g5.00_z0.00_en0.00_APOGEE-RAW.txt +3700,5.0,0.5,0.0,MARCS_APOGEE_DR15_t3700_g5.00_z0.50_en0.00_APOGEE-RAW.txt +3800,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +3800,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +3800,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +3800,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +3800,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +3800,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t3800_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +3800,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t3800_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +3800,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +3800,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +3800,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +3800,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +3800,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +3800,0.0,0.0,0.0,MARCS_APOGEE_DR15_t3800_g0.00_z0.00_en0.00_APOGEE-RAW.txt +3800,0.0,0.5,0.0,MARCS_APOGEE_DR15_t3800_g0.00_z0.50_en0.00_APOGEE-RAW.txt +3800,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +3800,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +3800,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +3800,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +3800,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +3800,0.5,0.0,0.0,MARCS_APOGEE_DR15_t3800_g0.50_z0.00_en0.00_APOGEE-RAW.txt +3800,0.5,0.5,0.0,MARCS_APOGEE_DR15_t3800_g0.50_z0.50_en0.00_APOGEE-RAW.txt +3800,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +3800,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +3800,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +3800,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +3800,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +3800,1.0,0.0,0.0,MARCS_APOGEE_DR15_t3800_g1.00_z0.00_en0.00_APOGEE-RAW.txt +3800,1.0,0.5,0.0,MARCS_APOGEE_DR15_t3800_g1.00_z0.50_en0.00_APOGEE-RAW.txt +3800,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +3800,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +3800,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +3800,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +3800,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +3800,1.5,0.0,0.0,MARCS_APOGEE_DR15_t3800_g1.50_z0.00_en0.00_APOGEE-RAW.txt +3800,1.5,0.5,0.0,MARCS_APOGEE_DR15_t3800_g1.50_z0.50_en0.00_APOGEE-RAW.txt +3800,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +3800,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +3800,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +3800,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +3800,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +3800,2.0,0.0,0.0,MARCS_APOGEE_DR15_t3800_g2.00_z0.00_en0.00_APOGEE-RAW.txt +3800,2.0,0.5,0.0,MARCS_APOGEE_DR15_t3800_g2.00_z0.50_en0.00_APOGEE-RAW.txt +3800,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +3800,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +3800,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +3800,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +3800,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +3800,2.5,0.0,0.0,MARCS_APOGEE_DR15_t3800_g2.50_z0.00_en0.00_APOGEE-RAW.txt +3800,2.5,0.5,0.0,MARCS_APOGEE_DR15_t3800_g2.50_z0.50_en0.00_APOGEE-RAW.txt +3800,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +3800,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +3800,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +3800,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +3800,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +3800,3.0,0.0,0.0,MARCS_APOGEE_DR15_t3800_g3.00_z0.00_en0.00_APOGEE-RAW.txt +3800,3.0,0.5,0.0,MARCS_APOGEE_DR15_t3800_g3.00_z0.50_en0.00_APOGEE-RAW.txt +3800,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +3800,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +3800,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +3800,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +3800,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +3800,3.5,0.0,0.0,MARCS_APOGEE_DR15_t3800_g3.50_z0.00_en0.00_APOGEE-RAW.txt +3800,3.5,0.5,0.0,MARCS_APOGEE_DR15_t3800_g3.50_z0.50_en0.00_APOGEE-RAW.txt +3800,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +3800,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +3800,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +3800,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +3800,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +3800,4.0,0.0,0.0,MARCS_APOGEE_DR15_t3800_g4.00_z0.00_en0.00_APOGEE-RAW.txt +3800,4.0,0.5,0.0,MARCS_APOGEE_DR15_t3800_g4.00_z0.50_en0.00_APOGEE-RAW.txt +3800,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +3800,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +3800,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +3800,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +3800,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +3800,4.5,0.0,0.0,MARCS_APOGEE_DR15_t3800_g4.50_z0.00_en0.00_APOGEE-RAW.txt +3800,4.5,0.5,0.0,MARCS_APOGEE_DR15_t3800_g4.50_z0.50_en0.00_APOGEE-RAW.txt +3800,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t3800_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +3800,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t3800_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +3800,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t3800_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +3800,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t3800_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +3800,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t3800_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +3800,5.0,0.0,0.0,MARCS_APOGEE_DR15_t3800_g5.00_z0.00_en0.00_APOGEE-RAW.txt +3800,5.0,0.5,0.0,MARCS_APOGEE_DR15_t3800_g5.00_z0.50_en0.00_APOGEE-RAW.txt +3900,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +3900,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +3900,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +3900,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +3900,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +3900,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t3900_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +3900,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t3900_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +3900,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +3900,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +3900,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +3900,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +3900,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +3900,0.0,0.0,0.0,MARCS_APOGEE_DR15_t3900_g0.00_z0.00_en0.00_APOGEE-RAW.txt +3900,0.0,0.5,0.0,MARCS_APOGEE_DR15_t3900_g0.00_z0.50_en0.00_APOGEE-RAW.txt +3900,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +3900,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +3900,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +3900,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +3900,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +3900,0.5,0.0,0.0,MARCS_APOGEE_DR15_t3900_g0.50_z0.00_en0.00_APOGEE-RAW.txt +3900,0.5,0.5,0.0,MARCS_APOGEE_DR15_t3900_g0.50_z0.50_en0.00_APOGEE-RAW.txt +3900,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +3900,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +3900,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +3900,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +3900,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +3900,1.0,0.0,0.0,MARCS_APOGEE_DR15_t3900_g1.00_z0.00_en0.00_APOGEE-RAW.txt +3900,1.0,0.5,0.0,MARCS_APOGEE_DR15_t3900_g1.00_z0.50_en0.00_APOGEE-RAW.txt +3900,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +3900,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +3900,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +3900,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +3900,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +3900,1.5,0.0,0.0,MARCS_APOGEE_DR15_t3900_g1.50_z0.00_en0.00_APOGEE-RAW.txt +3900,1.5,0.5,0.0,MARCS_APOGEE_DR15_t3900_g1.50_z0.50_en0.00_APOGEE-RAW.txt +3900,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +3900,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +3900,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +3900,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +3900,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +3900,2.0,0.0,0.0,MARCS_APOGEE_DR15_t3900_g2.00_z0.00_en0.00_APOGEE-RAW.txt +3900,2.0,0.5,0.0,MARCS_APOGEE_DR15_t3900_g2.00_z0.50_en0.00_APOGEE-RAW.txt +3900,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +3900,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +3900,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +3900,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +3900,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +3900,2.5,0.0,0.0,MARCS_APOGEE_DR15_t3900_g2.50_z0.00_en0.00_APOGEE-RAW.txt +3900,2.5,0.5,0.0,MARCS_APOGEE_DR15_t3900_g2.50_z0.50_en0.00_APOGEE-RAW.txt +3900,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +3900,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +3900,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +3900,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +3900,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +3900,3.0,0.0,0.0,MARCS_APOGEE_DR15_t3900_g3.00_z0.00_en0.00_APOGEE-RAW.txt +3900,3.0,0.5,0.0,MARCS_APOGEE_DR15_t3900_g3.00_z0.50_en0.00_APOGEE-RAW.txt +3900,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +3900,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +3900,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +3900,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +3900,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +3900,3.5,0.0,0.0,MARCS_APOGEE_DR15_t3900_g3.50_z0.00_en0.00_APOGEE-RAW.txt +3900,3.5,0.5,0.0,MARCS_APOGEE_DR15_t3900_g3.50_z0.50_en0.00_APOGEE-RAW.txt +3900,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +3900,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +3900,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +3900,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +3900,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +3900,4.0,0.0,0.0,MARCS_APOGEE_DR15_t3900_g4.00_z0.00_en0.00_APOGEE-RAW.txt +3900,4.0,0.5,0.0,MARCS_APOGEE_DR15_t3900_g4.00_z0.50_en0.00_APOGEE-RAW.txt +3900,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +3900,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +3900,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +3900,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +3900,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +3900,4.5,0.0,0.0,MARCS_APOGEE_DR15_t3900_g4.50_z0.00_en0.00_APOGEE-RAW.txt +3900,4.5,0.5,0.0,MARCS_APOGEE_DR15_t3900_g4.50_z0.50_en0.00_APOGEE-RAW.txt +3900,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t3900_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +3900,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t3900_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +3900,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t3900_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +3900,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t3900_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +3900,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t3900_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +3900,5.0,0.0,0.0,MARCS_APOGEE_DR15_t3900_g5.00_z0.00_en0.00_APOGEE-RAW.txt +3900,5.0,0.5,0.0,MARCS_APOGEE_DR15_t3900_g5.00_z0.50_en0.00_APOGEE-RAW.txt +4000,-0.5,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g-0.50_z-2.50_en0.00_APOGEE-RAW.txt +4000,-0.5,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g-0.50_z-2.00_en0.00_APOGEE-RAW.txt +4000,-0.5,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g-0.50_z-1.50_en0.00_APOGEE-RAW.txt +4000,-0.5,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g-0.50_z-1.00_en0.00_APOGEE-RAW.txt +4000,-0.5,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g-0.50_z-0.50_en0.00_APOGEE-RAW.txt +4000,-0.5,0.0,0.0,MARCS_APOGEE_DR15_t4000_g-0.50_z0.00_en0.00_APOGEE-RAW.txt +4000,-0.5,0.5,0.0,MARCS_APOGEE_DR15_t4000_g-0.50_z0.50_en0.00_APOGEE-RAW.txt +4000,0.0,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g0.00_z-2.50_en0.00_APOGEE-RAW.txt +4000,0.0,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g0.00_z-2.00_en0.00_APOGEE-RAW.txt +4000,0.0,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g0.00_z-1.50_en0.00_APOGEE-RAW.txt +4000,0.0,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g0.00_z-1.00_en0.00_APOGEE-RAW.txt +4000,0.0,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g0.00_z-0.50_en0.00_APOGEE-RAW.txt +4000,0.0,0.0,0.0,MARCS_APOGEE_DR15_t4000_g0.00_z0.00_en0.00_APOGEE-RAW.txt +4000,0.0,0.5,0.0,MARCS_APOGEE_DR15_t4000_g0.00_z0.50_en0.00_APOGEE-RAW.txt +4000,0.5,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g0.50_z-2.50_en0.00_APOGEE-RAW.txt +4000,0.5,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g0.50_z-2.00_en0.00_APOGEE-RAW.txt +4000,0.5,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g0.50_z-1.50_en0.00_APOGEE-RAW.txt +4000,0.5,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g0.50_z-1.00_en0.00_APOGEE-RAW.txt +4000,0.5,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g0.50_z-0.50_en0.00_APOGEE-RAW.txt +4000,0.5,0.0,0.0,MARCS_APOGEE_DR15_t4000_g0.50_z0.00_en0.00_APOGEE-RAW.txt +4000,0.5,0.5,0.0,MARCS_APOGEE_DR15_t4000_g0.50_z0.50_en0.00_APOGEE-RAW.txt +4000,1.0,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g1.00_z-2.50_en0.00_APOGEE-RAW.txt +4000,1.0,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g1.00_z-2.00_en0.00_APOGEE-RAW.txt +4000,1.0,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g1.00_z-1.50_en0.00_APOGEE-RAW.txt +4000,1.0,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g1.00_z-1.00_en0.00_APOGEE-RAW.txt +4000,1.0,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g1.00_z-0.50_en0.00_APOGEE-RAW.txt +4000,1.0,0.0,0.0,MARCS_APOGEE_DR15_t4000_g1.00_z0.00_en0.00_APOGEE-RAW.txt +4000,1.0,0.5,0.0,MARCS_APOGEE_DR15_t4000_g1.00_z0.50_en0.00_APOGEE-RAW.txt +4000,1.5,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g1.50_z-2.50_en0.00_APOGEE-RAW.txt +4000,1.5,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g1.50_z-2.00_en0.00_APOGEE-RAW.txt +4000,1.5,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g1.50_z-1.50_en0.00_APOGEE-RAW.txt +4000,1.5,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g1.50_z-1.00_en0.00_APOGEE-RAW.txt +4000,1.5,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g1.50_z-0.50_en0.00_APOGEE-RAW.txt +4000,1.5,0.0,0.0,MARCS_APOGEE_DR15_t4000_g1.50_z0.00_en0.00_APOGEE-RAW.txt +4000,1.5,0.5,0.0,MARCS_APOGEE_DR15_t4000_g1.50_z0.50_en0.00_APOGEE-RAW.txt +4000,2.0,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g2.00_z-2.50_en0.00_APOGEE-RAW.txt +4000,2.0,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g2.00_z-2.00_en0.00_APOGEE-RAW.txt +4000,2.0,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g2.00_z-1.50_en0.00_APOGEE-RAW.txt +4000,2.0,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g2.00_z-1.00_en0.00_APOGEE-RAW.txt +4000,2.0,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g2.00_z-0.50_en0.00_APOGEE-RAW.txt +4000,2.0,0.0,0.0,MARCS_APOGEE_DR15_t4000_g2.00_z0.00_en0.00_APOGEE-RAW.txt +4000,2.0,0.5,0.0,MARCS_APOGEE_DR15_t4000_g2.00_z0.50_en0.00_APOGEE-RAW.txt +4000,2.5,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g2.50_z-2.50_en0.00_APOGEE-RAW.txt +4000,2.5,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g2.50_z-2.00_en0.00_APOGEE-RAW.txt +4000,2.5,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g2.50_z-1.50_en0.00_APOGEE-RAW.txt +4000,2.5,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g2.50_z-1.00_en0.00_APOGEE-RAW.txt +4000,2.5,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g2.50_z-0.50_en0.00_APOGEE-RAW.txt +4000,2.5,0.0,0.0,MARCS_APOGEE_DR15_t4000_g2.50_z0.00_en0.00_APOGEE-RAW.txt +4000,2.5,0.5,0.0,MARCS_APOGEE_DR15_t4000_g2.50_z0.50_en0.00_APOGEE-RAW.txt +4000,3.0,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g3.00_z-2.50_en0.00_APOGEE-RAW.txt +4000,3.0,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g3.00_z-2.00_en0.00_APOGEE-RAW.txt +4000,3.0,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g3.00_z-1.50_en0.00_APOGEE-RAW.txt +4000,3.0,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g3.00_z-1.00_en0.00_APOGEE-RAW.txt +4000,3.0,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g3.00_z-0.50_en0.00_APOGEE-RAW.txt +4000,3.0,0.0,0.0,MARCS_APOGEE_DR15_t4000_g3.00_z0.00_en0.00_APOGEE-RAW.txt +4000,3.0,0.5,0.0,MARCS_APOGEE_DR15_t4000_g3.00_z0.50_en0.00_APOGEE-RAW.txt +4000,3.5,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g3.50_z-2.50_en0.00_APOGEE-RAW.txt +4000,3.5,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g3.50_z-2.00_en0.00_APOGEE-RAW.txt +4000,3.5,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g3.50_z-1.50_en0.00_APOGEE-RAW.txt +4000,3.5,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g3.50_z-1.00_en0.00_APOGEE-RAW.txt +4000,3.5,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g3.50_z-0.50_en0.00_APOGEE-RAW.txt +4000,3.5,0.0,0.0,MARCS_APOGEE_DR15_t4000_g3.50_z0.00_en0.00_APOGEE-RAW.txt +4000,3.5,0.5,0.0,MARCS_APOGEE_DR15_t4000_g3.50_z0.50_en0.00_APOGEE-RAW.txt +4000,4.0,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g4.00_z-2.50_en0.00_APOGEE-RAW.txt +4000,4.0,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g4.00_z-2.00_en0.00_APOGEE-RAW.txt +4000,4.0,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g4.00_z-1.50_en0.00_APOGEE-RAW.txt +4000,4.0,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g4.00_z-1.00_en0.00_APOGEE-RAW.txt +4000,4.0,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g4.00_z-0.50_en0.00_APOGEE-RAW.txt +4000,4.0,0.0,0.0,MARCS_APOGEE_DR15_t4000_g4.00_z0.00_en0.00_APOGEE-RAW.txt +4000,4.0,0.5,0.0,MARCS_APOGEE_DR15_t4000_g4.00_z0.50_en0.00_APOGEE-RAW.txt +4000,4.5,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g4.50_z-2.50_en0.00_APOGEE-RAW.txt +4000,4.5,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g4.50_z-2.00_en0.00_APOGEE-RAW.txt +4000,4.5,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g4.50_z-1.50_en0.00_APOGEE-RAW.txt +4000,4.5,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g4.50_z-1.00_en0.00_APOGEE-RAW.txt +4000,4.5,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g4.50_z-0.50_en0.00_APOGEE-RAW.txt +4000,4.5,0.0,0.0,MARCS_APOGEE_DR15_t4000_g4.50_z0.00_en0.00_APOGEE-RAW.txt +4000,4.5,0.5,0.0,MARCS_APOGEE_DR15_t4000_g4.50_z0.50_en0.00_APOGEE-RAW.txt +4000,5.0,-2.5,0.0,MARCS_APOGEE_DR15_t4000_g5.00_z-2.50_en0.00_APOGEE-RAW.txt +4000,5.0,-2.0,0.0,MARCS_APOGEE_DR15_t4000_g5.00_z-2.00_en0.00_APOGEE-RAW.txt +4000,5.0,-1.5,0.0,MARCS_APOGEE_DR15_t4000_g5.00_z-1.50_en0.00_APOGEE-RAW.txt +4000,5.0,-1.0,0.0,MARCS_APOGEE_DR15_t4000_g5.00_z-1.00_en0.00_APOGEE-RAW.txt +4000,5.0,-0.5,0.0,MARCS_APOGEE_DR15_t4000_g5.00_z-0.50_en0.00_APOGEE-RAW.txt +4000,5.0,0.0,0.0,MARCS_APOGEE_DR15_t4000_g5.00_z0.00_en0.00_APOGEE-RAW.txt +4000,5.0,0.5,0.0,MARCS_APOGEE_DR15_t4000_g5.00_z0.50_en0.00_APOGEE-RAW.txt diff --git a/smart/libraries/MARCS_PP/MARCS_PP_gridparams.csv b/smart/libraries/MARCS_PP/MARCS_PP_gridparams.csv new file mode 100644 index 0000000..2014265 --- /dev/null +++ b/smart/libraries/MARCS_PP/MARCS_PP_gridparams.csv @@ -0,0 +1,1639 @@ +teff,logg,mass,microTurb,composition,FeH,a_Fe,C_Fe,N_Fe,O_Fe +2500,3.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2500,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2500,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2500,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2500,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +2500,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2500,3.0,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2500,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2500,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2500,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2500,3.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2500,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2500,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2500,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2500,4.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2500,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2500,4.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2500,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2500,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2500,5.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,5.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,5.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2600,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2600,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2600,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2600,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2600,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2600,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +2600,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,3.0,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2600,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2600,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2600,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2600,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2600,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,3.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2600,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2600,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2600,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2600,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2600,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,4.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2600,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2600,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2600,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,4.5,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2600,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2600,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2600,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,5.0,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,5.5,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +2700,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2700,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2700,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2700,3.0,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,3.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2700,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2700,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2700,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2700,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2700,4.0,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2700,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2700,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2700,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2700,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2700,4.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2700,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2700,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2700,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2700,5.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2700,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2700,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2700,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2700,5.5,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,3.0,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2800,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2800,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2800,3.5,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2800,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2800,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2800,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2800,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2800,4.0,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2800,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2800,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2800,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2800,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2800,4.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2800,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2800,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2800,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2800,5.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2800,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2800,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2800,5.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2900,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +2900,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2900,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2900,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2900,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2900,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2900,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2900,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2900,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2900,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2900,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2900,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2900,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2900,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3000,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3000,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3000,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3000,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3100,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,5.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3100,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3100,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3100,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3100,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3100,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3200,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3200,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3200,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3200,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3200,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3200,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3200,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,5.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3200,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3200,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3200,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3300,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3300,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3300,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3300,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,5.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3300,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3300,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3300,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3400,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,5.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3500,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3500,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3500,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3500,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,5.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,5.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3500,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3500,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3600,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3600,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3600,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3600,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3600,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3600,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3600,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3600,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3600,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3600,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3600,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,5.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3600,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3600,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3700,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,3.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3700,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,4.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3700,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,4.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3700,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,5.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,5.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,5.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3700,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,3.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,4.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,4.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,5.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,5.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,5.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,5.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3900,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3900,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3900,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3900,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,3.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,4.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,4.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,4.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,4.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,5.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,5.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,5.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3900,5.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3900,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,5.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +4000,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4250,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4250,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4250,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4250,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4250,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4750,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4750,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4750,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4750,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4750,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5000,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5250,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5250,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5250,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5250,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5250,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5750,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5750,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5750,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5750,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5750,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6000,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6250,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6250,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6250,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6250,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6250,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6750,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6750,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6750,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6750,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6750,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7000,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7250,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7250,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7250,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7250,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7250,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7750,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7750,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7750,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7750,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7750,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +8000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +8000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +8000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +8000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 diff --git a/smart/libraries/MARCS_PP/MARCS_PP_gridparams0.csv b/smart/libraries/MARCS_PP/MARCS_PP_gridparams0.csv new file mode 100644 index 0000000..2014265 --- /dev/null +++ b/smart/libraries/MARCS_PP/MARCS_PP_gridparams0.csv @@ -0,0 +1,1639 @@ +teff,logg,mass,microTurb,composition,FeH,a_Fe,C_Fe,N_Fe,O_Fe +2500,3.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2500,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2500,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2500,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2500,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +2500,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2500,3.0,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2500,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2500,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2500,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2500,3.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,3.5,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2500,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2500,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2500,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2500,4.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2500,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2500,4.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,4.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2500,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2500,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2500,5.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,5.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2500,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2500,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2500,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2500,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2500,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2500,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2500,5.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2500,5.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2500,5.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2600,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2600,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2600,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2600,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2600,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2600,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +2600,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,3.0,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2600,3.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2600,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2600,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2600,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2600,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2600,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,3.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,3.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2600,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2600,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2600,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2600,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2600,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,4.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2600,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2600,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2600,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,4.5,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,4.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2600,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2600,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2600,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,5.0,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2600,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2600,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2600,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2600,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2600,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2600,5.5,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2600,5.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +2700,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2700,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2700,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2700,3.0,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,3.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2700,3.5,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2700,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2700,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2700,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2700,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2700,4.0,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2700,4.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2700,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2700,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2700,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2700,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2700,4.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2700,4.5,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2700,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2700,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2700,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2700,5.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,5.0,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2700,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2700,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2700,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2700,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2700,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2700,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2700,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2700,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2700,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2700,5.5,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2700,5.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,3.0,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2800,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2800,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2800,3.5,0.0,1,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-2.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2800,3.5,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2800,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2800,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2800,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2800,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2800,4.0,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2800,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2800,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2800,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2800,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2800,4.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,0.25,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2800,4.5,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,an,1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2800,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2800,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2800,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2800,5.0,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,1,an,1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,0.0,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,0.5,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2800,5.0,0.0,2,an,1.0,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,an,0.75,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2800,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2800,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2800,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2800,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2800,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2800,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2800,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2800,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2800,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2800,5.5,0.0,1,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,0.0,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,1,an,0.75,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,-1.5,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,-1.0,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,-0.75,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,-0.5,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,-0.25,-0.4,0.0,0.0,-0.4 +2800,5.5,0.0,2,an,0.75,-0.4,0.0,0.0,-0.4 +2900,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +2900,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2900,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2900,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2900,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2900,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2900,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2900,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +2900,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2900,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +2900,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2900,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +2900,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +2900,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +2900,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +2900,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +2900,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +2900,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +2900,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +2900,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +2900,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +2900,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3000,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3000,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3000,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3000,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3000,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3000,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3000,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3000,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3000,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3000,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3000,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3000,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3000,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3100,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,5.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3100,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3100,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3100,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3100,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3100,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3100,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3100,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3100,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3100,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3100,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3100,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3100,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3100,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3200,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3200,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3200,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3200,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3200,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3200,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3200,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,5.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3200,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3200,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3200,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3200,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3200,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3200,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3200,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3200,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3200,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3200,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3200,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3200,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3300,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3300,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3300,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3300,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,5.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3300,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3300,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3300,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3300,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3300,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3300,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3300,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3300,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3300,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3300,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3300,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3400,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,5.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3400,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3400,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3400,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3400,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3400,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3400,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3400,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3400,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3400,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3400,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,3.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3500,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3500,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3500,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3500,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,5.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3500,5.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3500,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3500,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3500,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3500,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3500,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3500,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3500,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3500,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3500,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3500,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3600,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3600,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3600,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3600,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,3.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3600,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3600,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,4.0,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3600,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3600,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,4.5,0.0,0,st,-5.0,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3600,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3600,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3600,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3600,5.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3600,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3600,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3600,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3600,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3600,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3600,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3600,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3600,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3600,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3600,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3700,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,3.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3700,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,4.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3700,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,4.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3700,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3700,5.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3700,5.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3700,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3700,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3700,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3700,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3700,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3700,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3700,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3700,5.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3700,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3700,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3700,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,3.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,3.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,4.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,4.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,5.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3800,5.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3800,5.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3800,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3800,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3800,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3800,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3800,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3800,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3800,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3800,5.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3800,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3800,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3800,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,3.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3900,3.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3900,3.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,3.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,3.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,3.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,3.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,3.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,3.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,3.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,3.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,3.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,3.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3900,3.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3900,3.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,3.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,3.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,3.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,3.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,3.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,3.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,3.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,3.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,3.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,4.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,4.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,4.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,4.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,4.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,4.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,4.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,4.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,4.5,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,4.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,4.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,4.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,4.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,4.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,4.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,4.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,5.0,0.0,0,st,-4.0,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,5.0,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,5.0,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,5.0,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,5.0,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,5.0,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,5.0,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,5.0,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +3900,5.5,0.0,0,st,-3.0,0.4,0.0,0.0,0.4 +3900,5.5,0.0,0,st,-2.5,0.4,0.0,0.0,0.4 +3900,5.5,0.0,0,st,-2.0,0.4,0.0,0.0,0.4 +3900,5.5,0.0,0,st,-1.5,0.4,0.0,0.0,0.4 +3900,5.5,0.0,0,st,-1.0,0.4,0.0,0.0,0.4 +3900,5.5,0.0,0,st,-0.75,0.3,0.0,0.0,0.3 +3900,5.5,0.0,0,st,-0.5,0.2,0.0,0.0,0.2 +3900,5.5,0.0,0,st,-0.25,0.1,0.0,0.0,0.1 +3900,5.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +3900,5.5,0.0,0,st,0.25,0.0,0.0,0.0,0.0 +3900,5.5,0.0,0,st,0.5,0.0,0.0,0.0,0.0 +3900,5.5,0.0,0,st,0.75,0.0,0.0,0.0,0.0 +3900,5.5,0.0,0,st,1.0,0.0,0.0,0.0,0.0 +4000,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4250,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4250,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4250,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4250,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4250,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4750,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4750,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4750,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4750,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +4750,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5000,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5250,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5250,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5250,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5250,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5250,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5750,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5750,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5750,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5750,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +5750,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6000,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6250,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6250,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6250,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6250,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6250,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6750,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6750,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6750,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6750,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +6750,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7000,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7250,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7250,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7250,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7250,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7250,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7500,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7500,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7500,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7500,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7500,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7750,3.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7750,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7750,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7750,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +7750,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +8000,3.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +8000,4.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +8000,4.5,0.0,0,st,0.0,0.0,0.0,0.0,0.0 +8000,5.0,0.0,0,st,0.0,0.0,0.0,0.0,0.0 diff --git a/smart/libraries/PHOENIX_BTSETTL08/PHOENIX_BTSETTL08_gridparams.csv b/smart/libraries/PHOENIX_BTSETTL08/PHOENIX_BTSETTL08_gridparams.csv index a5fd5c0..5a899f9 100644 --- a/smart/libraries/PHOENIX_BTSETTL08/PHOENIX_BTSETTL08_gridparams.csv +++ b/smart/libraries/PHOENIX_BTSETTL08/PHOENIX_BTSETTL08_gridparams.csv @@ -1,1779 +1,370 @@ -teff,logg,M_H,en -400,3.5,0.0,0.0 -400,4.0,0.0,0.0 -400,4.5,0.0,0.0 -400,5.0,0.0,0.0 -420,4.5,0.0,0.0 -420,5.0,0.0,0.0 -450,3.0,0.0,0.0 -450,3.5,0.0,0.0 -450,4.0,0.0,0.0 -450,4.5,0.0,0.0 -450,5.0,0.0,0.0 -500,3.0,0.0,0.0 -500,3.5,0.0,0.0 -500,4.0,0.0,0.0 -500,4.5,0.0,0.0 -500,5.0,0.0,0.0 -550,3.0,0.0,0.0 -550,3.5,0.0,0.0 -550,4.0,0.0,0.0 -550,4.5,0.0,0.0 -550,5.0,0.0,0.0 -600,3.0,0.0,0.0 -600,3.5,0.0,0.0 -600,4.0,0.0,0.0 -600,4.5,0.0,0.0 -600,5.0,0.0,0.0 -650,3.0,0.0,0.0 -650,3.5,0.0,0.0 -650,4.0,0.0,0.0 -650,4.5,0.0,0.0 -650,5.0,0.0,0.0 -700,3.0,0.0,0.0 -700,3.5,0.0,0.0 -700,4.0,0.0,0.0 -700,4.5,0.0,0.0 -700,5.0,0.0,0.0 -750,3.0,0.0,0.0 -750,3.5,0.0,0.0 -750,4.0,0.0,0.0 -750,4.5,0.0,0.0 -750,5.0,0.0,0.0 -800,3.0,0.0,0.0 -800,3.5,0.0,0.0 -800,4.0,0.0,0.0 -800,4.0,0.5,0.0 -800,4.5,0.0,0.0 -800,5.0,0.0,0.0 -850,3.0,0.0,0.0 -850,3.5,0.0,0.0 -850,4.0,0.0,0.0 -850,4.0,0.5,0.0 -850,4.5,0.0,0.0 -850,5.0,0.0,0.0 -850,5.5,0.0,0.0 -900,3.0,0.0,0.0 -900,3.5,0.0,0.0 -900,4.0,0.0,0.0 -900,4.0,0.5,0.0 -900,4.5,0.0,0.0 -900,5.0,0.0,0.0 -900,5.5,0.0,0.0 -950,3.0,0.0,0.0 -950,3.5,0.0,0.0 -950,4.0,0.0,0.0 -950,4.0,0.5,0.0 -950,4.5,0.0,0.0 -950,5.0,0.0,0.0 -950,5.5,0.0,0.0 -1000,3.5,0.0,0.0 -1000,4.0,-0.5,0.2 -1000,4.0,0.0,0.0 -1000,4.0,0.5,0.0 -1000,4.5,-0.5,0.2 -1000,4.5,0.0,0.0 -1000,5.0,-0.5,0.2 -1000,5.0,0.0,0.0 -1000,5.5,0.0,0.0 -1050,3.5,0.0,0.0 -1050,4.0,-0.5,0.2 -1050,4.0,0.0,0.0 -1050,4.0,0.5,0.0 -1050,4.5,-0.5,0.2 -1050,4.5,0.0,0.0 -1050,5.0,-0.5,0.2 -1050,5.0,0.0,0.0 -1050,5.5,0.0,0.0 -1100,3.5,-0.5,0.2 -1100,3.5,0.0,0.0 -1100,4.0,-0.5,0.2 -1100,4.0,0.0,0.0 -1100,4.0,0.5,0.0 -1100,4.5,-0.5,0.2 -1100,4.5,0.0,0.0 -1100,5.0,-0.5,0.2 -1100,5.0,0.0,0.0 -1100,5.5,0.0,0.0 -1150,3.5,-0.5,0.2 -1150,3.5,0.0,0.0 -1150,3.5,0.5,0.0 -1150,4.0,-0.5,0.2 -1150,4.0,0.0,0.0 -1150,4.0,0.5,0.0 -1150,4.5,-0.5,0.2 -1150,4.5,0.0,0.0 -1150,5.0,-0.5,0.2 -1150,5.0,0.0,0.0 -1150,5.5,0.0,0.0 -1200,3.5,-0.5,0.2 -1200,3.5,0.0,0.0 -1200,3.5,0.5,0.0 -1200,4.0,-0.5,0.2 -1200,4.0,0.0,0.0 -1200,4.0,0.5,0.0 -1200,4.5,-0.5,0.2 -1200,4.5,0.0,0.0 -1200,4.5,0.5,0.0 -1200,5.0,-0.5,0.2 -1200,5.0,0.0,0.0 -1200,5.0,0.5,0.0 -1200,5.5,0.0,0.0 -1250,3.5,-0.5,0.2 -1250,3.5,0.0,0.0 -1250,4.0,-0.5,0.2 -1250,4.0,0.0,0.0 -1250,4.0,0.5,0.0 -1250,4.5,-0.5,0.2 -1250,4.5,0.0,0.0 -1250,4.5,0.5,0.0 -1250,5.0,-0.5,0.2 -1250,5.0,0.0,0.0 -1250,5.0,0.5,0.0 -1250,5.5,0.0,0.0 -1300,3.5,-0.5,0.2 -1300,3.5,0.0,0.0 -1300,3.5,0.5,0.0 -1300,4.0,-0.5,0.2 -1300,4.0,0.0,0.0 -1300,4.0,0.5,0.0 -1300,4.5,-0.5,0.2 -1300,4.5,0.0,0.0 -1300,4.5,0.5,0.0 -1300,5.0,-0.5,0.2 -1300,5.0,0.0,0.0 -1300,5.0,0.5,0.0 -1300,5.5,0.0,0.0 -1350,3.5,-0.5,0.2 -1350,3.5,0.0,0.0 -1350,3.5,0.5,0.0 -1350,4.0,-0.5,0.2 -1350,4.0,0.0,0.0 -1350,4.0,0.5,0.0 -1350,4.5,-0.5,0.2 -1350,4.5,0.0,0.0 -1350,4.5,0.5,0.0 -1350,5.0,-0.5,0.2 -1350,5.0,0.0,0.0 -1350,5.0,0.5,0.0 -1350,5.5,0.0,0.0 -1400,3.5,-0.5,0.2 -1400,3.5,0.0,0.0 -1400,3.5,0.5,0.0 -1400,4.0,-0.5,0.2 -1400,4.0,0.0,0.0 -1400,4.0,0.5,0.0 -1400,4.5,-0.5,0.2 -1400,4.5,0.0,0.0 -1400,4.5,0.5,0.0 -1400,5.0,-0.5,0.2 -1400,5.0,0.0,0.0 -1400,5.0,0.5,0.0 -1400,5.5,0.0,0.0 -1450,3.5,-0.5,0.2 -1450,3.5,0.0,0.0 -1450,3.5,0.5,0.0 -1450,4.0,-0.5,0.2 -1450,4.0,0.5,0.0 -1450,4.5,-0.5,0.2 -1450,4.5,0.0,0.0 -1450,4.5,0.5,0.0 -1450,5.0,-0.5,0.2 -1450,5.0,0.0,0.0 -1450,5.0,0.5,0.0 -1450,5.5,0.0,0.0 -1500,3.5,-0.5,0.2 -1500,3.5,0.0,0.0 -1500,3.5,0.5,0.0 -1500,4.0,-0.5,0.2 -1500,4.0,0.0,0.0 -1500,4.0,0.5,0.0 -1500,4.5,-0.5,0.2 -1500,4.5,0.0,0.0 -1500,4.5,0.5,0.0 -1500,5.0,-0.5,0.2 -1500,5.0,0.0,0.0 -1500,5.0,0.5,0.0 -1500,5.5,0.0,0.0 -1550,3.5,0.0,0.0 -1550,4.0,-0.5,0.2 -1550,4.0,0.0,0.0 -1550,4.5,0.0,0.0 -1550,5.0,0.0,0.0 -1550,5.5,0.0,0.0 -1600,3.5,-0.5,0.2 -1600,3.5,0.0,0.0 -1600,3.5,0.5,0.0 -1600,4.0,-0.5,0.2 -1600,4.0,0.0,0.0 -1600,4.0,0.5,0.0 -1600,4.5,-0.5,0.2 -1600,4.5,0.0,0.0 -1600,4.5,0.5,0.0 -1600,5.0,-0.5,0.2 -1600,5.0,0.0,0.0 -1600,5.0,0.5,0.0 -1600,5.5,0.0,0.0 -1650,4.0,0.0,0.0 -1650,4.5,0.0,0.0 -1650,5.0,0.0,0.0 -1650,5.5,0.0,0.0 -1700,3.5,-0.5,0.2 -1700,3.5,0.0,0.0 -1700,3.5,0.5,0.0 -1700,4.0,-0.5,0.2 -1700,4.0,0.0,0.0 -1700,4.0,0.5,0.0 -1700,4.5,-0.5,0.2 -1700,4.5,0.0,0.0 -1700,4.5,0.5,0.0 -1700,5.0,-0.5,0.2 -1700,5.0,0.0,0.0 -1700,5.0,0.5,0.0 -1700,5.5,0.0,0.0 -1750,3.5,0.0,0.0 -1750,4.0,0.0,0.0 -1750,4.5,0.0,0.0 -1750,5.0,0.0,0.0 -1750,5.5,0.0,0.0 -1800,3.5,-0.5,0.2 -1800,3.5,0.0,0.0 -1800,3.5,0.5,0.0 -1800,4.0,-0.5,0.2 -1800,4.0,0.0,0.0 -1800,4.0,0.5,0.0 -1800,4.5,-0.5,0.2 -1800,4.5,0.0,0.0 -1800,4.5,0.5,0.0 -1800,5.0,-0.5,0.2 -1800,5.0,0.0,0.0 -1800,5.0,0.5,0.0 -1800,5.5,0.0,0.0 -1850,3.5,0.0,0.0 -1850,4.0,0.0,0.0 -1850,4.5,0.0,0.0 -1850,5.0,0.0,0.0 -1850,5.5,0.0,0.0 -1900,3.0,0.0,0.0 -1900,3.5,0.0,0.0 -1900,3.5,0.5,0.0 -1900,4.0,-0.5,0.2 -1900,4.0,0.0,0.0 -1900,4.0,0.5,0.0 -1900,4.5,0.0,0.0 -1900,4.5,0.5,0.0 -1900,5.0,-0.5,0.2 -1900,5.0,0.0,0.0 -1900,5.0,0.5,0.0 -1900,5.5,0.0,0.0 -1950,3.5,0.0,0.0 -1950,4.0,0.0,0.0 -1950,4.5,0.0,0.0 -1950,5.0,0.0,0.0 -1950,5.5,0.0,0.0 -2000,3.0,0.0,0.0 -2000,3.5,0.0,0.0 -2000,3.5,0.5,0.0 -2000,4.0,-0.5,0.2 -2000,4.0,0.0,0.0 -2000,4.0,0.5,0.0 -2000,4.5,-0.5,0.2 -2000,4.5,0.0,0.0 -2000,4.5,0.5,0.0 -2000,5.0,-0.5,0.2 -2000,5.0,0.0,0.0 -2000,5.0,0.5,0.0 -2000,5.5,0.0,0.0 -2100,2.5,0.0,0.0 -2100,3.0,0.0,0.0 -2100,3.5,-0.5,0.2 -2100,3.5,0.0,0.0 -2100,3.5,0.5,0.0 -2100,4.0,-0.5,0.2 -2100,4.0,0.0,0.0 -2100,4.0,0.5,0.0 -2100,4.5,-0.5,0.2 -2100,4.5,0.0,0.0 -2100,4.5,0.5,0.0 -2100,5.0,-0.5,0.2 -2100,5.0,0.0,0.0 -2100,5.0,0.5,0.0 -2100,5.5,0.0,0.0 -2200,3.0,0.0,0.0 -2200,3.5,-0.5,0.2 -2200,3.5,0.0,0.0 -2200,4.0,-0.5,0.2 -2200,4.0,0.0,0.0 -2200,4.0,0.5,0.0 -2200,4.5,-0.5,0.2 -2200,4.5,0.0,0.0 -2200,4.5,0.5,0.0 -2200,5.0,-0.5,0.2 -2200,5.0,0.0,0.0 -2200,5.0,0.5,0.0 -2200,5.5,0.0,0.0 -2300,2.5,0.0,0.0 -2300,3.0,0.0,0.0 -2300,3.5,-0.5,0.2 -2300,3.5,0.0,0.0 -2300,4.0,-0.5,0.2 -2300,4.0,0.0,0.0 -2300,4.5,-0.5,0.2 -2300,4.5,0.0,0.0 -2300,4.5,0.5,0.0 -2300,5.0,-0.5,0.2 -2300,5.0,0.0,0.0 -2300,5.0,0.5,0.0 -2300,5.5,0.0,0.0 -2400,3.0,0.0,0.0 -2400,3.5,-0.5,0.2 -2400,3.5,0.0,0.0 -2400,4.0,-0.5,0.2 -2400,4.0,0.0,0.0 -2400,4.5,-0.5,0.2 -2400,4.5,0.0,0.0 -2400,4.5,0.5,0.0 -2400,5.0,-0.5,0.2 -2400,5.0,0.0,0.0 -2400,5.0,0.5,0.0 -2400,5.5,0.0,0.0 -2500,0.0,0.0,0.0 -2500,0.5,0.0,0.0 -2500,1.0,0.0,0.0 -2500,1.5,0.0,0.0 -2500,2.0,0.0,0.0 -2500,2.5,0.0,0.0 -2500,3.0,0.0,0.0 -2500,3.5,-0.5,0.2 -2500,3.5,0.0,0.0 -2500,4.0,-0.5,0.2 -2500,4.0,0.0,0.0 -2500,4.5,-0.5,0.2 -2500,4.5,0.0,0.0 -2500,4.5,0.5,0.0 -2500,5.0,-0.5,0.2 -2500,5.0,0.0,0.0 -2500,5.0,0.5,0.0 -2500,5.5,0.0,0.0 -2500,5.5,0.5,0.0 -2600,0.0,0.0,0.0 -2600,0.5,0.0,0.0 -2600,1.0,0.0,0.0 -2600,1.5,0.0,0.0 -2600,2.0,0.0,0.0 -2600,2.5,0.0,0.0 -2600,3.0,0.0,0.0 -2600,3.5,-0.5,0.2 -2600,3.5,0.0,0.0 -2600,4.0,-0.5,0.2 -2600,4.0,0.0,0.0 -2600,4.5,-2.5,0.4 -2600,4.5,-2.0,0.4 -2600,4.5,-1.0,0.4 -2600,4.5,-0.5,0.2 -2600,4.5,0.0,0.0 -2600,4.5,0.5,0.0 -2600,5.0,-2.5,0.4 -2600,5.0,-2.0,0.4 -2600,5.0,-1.0,0.4 -2600,5.0,-0.5,0.2 -2600,5.0,0.0,0.0 -2600,5.0,0.5,0.0 -2600,5.5,-2.5,0.4 -2600,5.5,-2.0,0.4 -2600,5.5,-1.5,0.4 -2600,5.5,-1.0,0.4 -2600,5.5,-0.5,0.2 -2600,5.5,0.0,0.0 -2600,5.5,0.5,0.0 -2700,-0.5,0.0,0.0 -2700,0.0,0.0,0.0 -2700,0.5,0.0,0.0 -2700,1.0,0.0,0.0 -2700,1.5,0.0,0.0 -2700,2.0,0.0,0.0 -2700,2.5,0.0,0.0 -2700,3.0,0.0,0.0 -2700,3.5,-0.5,0.2 -2700,3.5,0.0,0.0 -2700,4.0,-0.5,0.2 -2700,4.0,0.0,0.0 -2700,4.5,-2.5,0.4 -2700,4.5,-2.0,0.4 -2700,4.5,-1.0,0.4 -2700,4.5,-0.5,0.2 -2700,4.5,0.0,0.0 -2700,4.5,0.5,0.0 -2700,5.0,-2.5,0.4 -2700,5.0,-2.0,0.4 -2700,5.0,-1.0,0.4 -2700,5.0,-0.5,0.2 -2700,5.0,0.0,0.0 -2700,5.0,0.5,0.0 -2700,5.5,-2.5,0.4 -2700,5.5,-2.0,0.4 -2700,5.5,-1.0,0.4 -2700,5.5,-0.5,0.2 -2700,5.5,0.0,0.0 -2700,5.5,0.5,0.0 -2800,-0.5,0.0,0.0 -2800,0.0,0.0,0.0 -2800,0.5,0.0,0.0 -2800,1.0,0.0,0.0 -2800,1.5,0.0,0.0 -2800,2.0,0.0,0.0 -2800,2.5,0.0,0.0 -2800,3.0,0.0,0.0 -2800,3.5,0.0,0.0 -2800,4.0,0.0,0.0 -2800,4.5,-2.5,0.4 -2800,4.5,-2.0,0.4 -2800,4.5,-1.0,0.4 -2800,4.5,-0.5,0.2 -2800,4.5,0.0,0.0 -2800,4.5,0.5,0.0 -2800,5.0,-2.5,0.4 -2800,5.0,-2.0,0.4 -2800,5.0,-1.5,0.4 -2800,5.0,-1.0,0.4 -2800,5.0,-0.5,0.2 -2800,5.0,0.0,0.0 -2800,5.0,0.5,0.0 -2800,5.5,-2.5,0.4 -2800,5.5,-2.0,0.4 -2800,5.5,-1.0,0.4 -2800,5.5,-0.5,0.2 -2800,5.5,0.0,0.0 -2800,5.5,0.5,0.0 -2900,-0.5,0.0,0.0 -2900,0.0,0.0,0.0 -2900,0.5,0.0,0.0 -2900,1.0,0.0,0.0 -2900,1.5,0.0,0.0 -2900,2.0,0.0,0.0 -2900,2.5,0.0,0.0 -2900,3.0,0.0,0.0 -2900,3.5,0.0,0.0 -2900,4.0,0.0,0.0 -2900,4.5,-2.5,0.4 -2900,4.5,-2.0,0.4 -2900,4.5,-1.0,0.4 -2900,4.5,-0.5,0.2 -2900,4.5,0.0,0.0 -2900,4.5,0.5,0.0 -2900,5.0,-2.5,0.4 -2900,5.0,-2.0,0.4 -2900,5.0,-1.5,0.4 -2900,5.0,-1.0,0.4 -2900,5.0,0.0,0.0 -2900,5.0,0.5,0.0 -2900,5.5,-2.5,0.4 -2900,5.5,-2.0,0.4 -2900,5.5,-1.0,0.4 -2900,5.5,-0.5,0.2 -2900,5.5,0.0,0.0 -2900,5.5,0.5,0.0 -3000,0.0,0.0,0.0 -3000,0.5,0.0,0.0 -3000,1.0,0.0,0.0 -3000,1.5,0.0,0.0 -3000,2.0,0.0,0.0 -3000,2.5,-1.0,0.4 -3000,2.5,0.0,0.0 -3000,3.0,-1.0,0.4 -3000,3.0,-0.5,0.2 -3000,3.0,0.0,0.0 -3000,3.5,-0.5,0.2 -3000,3.5,0.0,0.0 -3000,4.0,-0.5,0.2 -3000,4.0,0.0,0.0 -3000,4.5,-2.5,0.4 -3000,4.5,-2.0,0.4 -3000,4.5,-1.5,0.4 -3000,4.5,-1.0,0.4 -3000,4.5,-0.5,0.2 -3000,4.5,0.0,0.0 -3000,4.5,0.5,0.0 -3000,5.0,-2.5,0.4 -3000,5.0,-2.0,0.4 -3000,5.0,-1.5,0.4 -3000,5.0,-1.0,0.4 -3000,5.0,-0.5,0.2 -3000,5.0,0.0,0.0 -3000,5.0,0.0,0.2 -3000,5.0,0.5,0.0 -3000,5.5,-2.5,0.4 -3000,5.5,-2.0,0.4 -3000,5.5,-1.5,0.4 -3000,5.5,-1.0,0.4 -3000,5.5,-0.5,0.2 -3000,5.5,0.0,0.0 -3000,5.5,0.0,0.2 -3000,5.5,0.5,0.0 -3000,6.0,-1.0,0.4 -3000,6.0,-0.5,0.2 -3100,0.0,0.0,0.0 -3100,0.5,0.0,0.0 -3100,1.0,0.0,0.0 -3100,1.5,0.0,0.0 -3100,2.0,-1.0,0.4 -3100,2.0,0.0,0.0 -3100,2.5,-1.0,0.4 -3100,2.5,0.0,0.0 -3100,3.0,-1.0,0.4 -3100,3.0,-0.5,0.2 -3100,3.0,0.0,0.0 -3100,3.5,-0.5,0.2 -3100,3.5,0.0,0.0 -3100,4.0,-0.5,0.2 -3100,4.0,0.0,0.0 -3100,4.5,-2.5,0.4 -3100,4.5,-2.0,0.4 -3100,4.5,-1.5,0.4 -3100,4.5,-1.0,0.4 -3100,4.5,-0.5,0.2 -3100,4.5,0.0,0.0 -3100,4.5,0.5,0.0 -3100,5.0,-2.5,0.4 -3100,5.0,-2.0,0.4 -3100,5.0,-1.5,0.4 -3100,5.0,-1.0,0.4 -3100,5.0,-0.5,0.2 -3100,5.0,0.0,0.0 -3100,5.0,0.0,0.2 -3100,5.0,0.5,0.0 -3100,5.5,-2.5,0.4 -3100,5.5,-2.0,0.4 -3100,5.5,-1.5,0.4 -3100,5.5,-1.0,0.4 -3100,5.5,-0.5,0.2 -3100,5.5,0.0,0.0 -3100,5.5,0.0,0.2 -3100,5.5,0.5,0.0 -3100,6.0,-1.0,0.4 -3100,6.0,-0.5,0.2 -3200,-0.5,0.0,0.0 -3200,0.0,0.0,0.0 -3200,0.5,0.0,0.0 -3200,1.0,0.0,0.0 -3200,1.5,0.0,0.0 -3200,2.0,0.0,0.0 -3200,2.5,-1.0,0.4 -3200,2.5,0.0,0.0 -3200,3.0,-1.0,0.4 -3200,3.0,-0.5,0.2 -3200,3.0,0.0,0.0 -3200,3.5,-0.5,0.2 -3200,3.5,0.0,0.0 -3200,4.0,-0.5,0.2 -3200,4.0,0.0,0.0 -3200,4.5,-2.5,0.4 -3200,4.5,-2.0,0.4 -3200,4.5,-1.5,0.4 -3200,4.5,-1.0,0.4 -3200,4.5,-0.5,0.2 -3200,4.5,0.0,0.0 -3200,4.5,0.5,0.0 -3200,5.0,-2.5,0.4 -3200,5.0,-2.0,0.4 -3200,5.0,-1.5,0.4 -3200,5.0,-1.0,0.4 -3200,5.0,-0.5,0.2 -3200,5.0,0.0,0.0 -3200,5.0,0.0,0.2 -3200,5.0,0.5,0.0 -3200,5.5,-2.5,0.4 -3200,5.5,-2.0,0.4 -3200,5.5,-1.5,0.4 -3200,5.5,-1.0,0.4 -3200,5.5,-0.5,0.2 -3200,5.5,0.0,0.0 -3200,5.5,0.0,0.2 -3200,5.5,0.5,0.0 -3200,6.0,-0.5,0.2 -3300,-0.5,0.0,0.0 -3300,0.0,0.0,0.0 -3300,0.5,0.0,0.0 -3300,1.0,0.0,0.0 -3300,1.5,0.0,0.0 -3300,2.0,-1.0,0.4 -3300,2.0,0.0,0.0 -3300,2.5,0.0,0.0 -3300,3.0,-1.0,0.4 -3300,3.0,-0.5,0.2 -3300,3.0,0.0,0.0 -3300,3.5,-0.5,0.2 -3300,3.5,0.0,0.0 -3300,4.0,-0.5,0.2 -3300,4.0,0.0,0.0 -3300,4.5,-2.5,0.4 -3300,4.5,-2.0,0.4 -3300,4.5,-1.5,0.4 -3300,4.5,-1.0,0.4 -3300,4.5,-0.5,0.2 -3300,4.5,0.0,0.0 -3300,4.5,0.5,0.0 -3300,5.0,-2.5,0.4 -3300,5.0,-2.0,0.4 -3300,5.0,-1.5,0.4 -3300,5.0,-1.0,0.4 -3300,5.0,-0.5,0.2 -3300,5.0,0.0,0.0 -3300,5.0,0.0,0.2 -3300,5.0,0.5,0.0 -3300,5.5,-2.5,0.4 -3300,5.5,-2.0,0.4 -3300,5.5,-1.5,0.4 -3300,5.5,-1.0,0.4 -3300,5.5,-0.5,0.2 -3300,5.5,0.0,0.0 -3300,5.5,0.0,0.2 -3300,5.5,0.5,0.0 -3300,6.0,-0.5,0.2 -3400,-0.5,0.0,0.0 -3400,0.0,0.0,0.0 -3400,0.5,0.0,0.0 -3400,1.0,0.0,0.0 -3400,1.5,0.0,0.0 -3400,2.0,-1.0,0.4 -3400,2.0,0.0,0.0 -3400,2.5,-1.0,0.4 -3400,2.5,0.0,0.0 -3400,3.0,-1.0,0.4 -3400,3.0,-0.5,0.2 -3400,3.0,0.0,0.0 -3400,3.5,-0.5,0.2 -3400,3.5,0.0,0.0 -3400,4.0,-0.5,0.2 -3400,4.0,0.0,0.0 -3400,4.5,-2.5,0.4 -3400,4.5,-2.0,0.4 -3400,4.5,-1.5,0.4 -3400,4.5,-1.0,0.4 -3400,4.5,-0.5,0.2 -3400,4.5,0.0,0.0 -3400,4.5,0.5,0.0 -3400,5.0,-2.5,0.4 -3400,5.0,-2.0,0.4 -3400,5.0,-1.5,0.4 -3400,5.0,-1.0,0.4 -3400,5.0,-0.5,0.2 -3400,5.0,0.0,0.0 -3400,5.0,0.0,0.2 -3400,5.0,0.5,0.0 -3400,5.5,-2.5,0.4 -3400,5.5,-2.0,0.4 -3400,5.5,-1.5,0.4 -3400,5.5,-1.0,0.4 -3400,5.5,-0.5,0.2 -3400,5.5,0.0,0.0 -3400,5.5,0.0,0.2 -3400,5.5,0.5,0.0 -3400,6.0,-1.0,0.4 -3400,6.0,-0.5,0.2 -3500,-0.5,0.0,0.0 -3500,0.0,0.0,0.0 -3500,0.5,0.0,0.0 -3500,1.0,0.0,0.0 -3500,1.5,0.0,0.0 -3500,2.0,-1.0,0.4 -3500,2.0,0.0,0.0 -3500,2.5,-1.0,0.4 -3500,2.5,0.0,0.0 -3500,3.0,-1.0,0.4 -3500,3.0,-0.5,0.2 -3500,3.0,0.0,0.0 -3500,3.5,-0.5,0.2 -3500,3.5,0.0,0.0 -3500,4.0,-0.5,0.2 -3500,4.0,0.0,0.0 -3500,4.5,-2.5,0.4 -3500,4.5,-2.0,0.4 -3500,4.5,-1.5,0.4 -3500,4.5,-1.0,0.4 -3500,4.5,-0.5,0.2 -3500,4.5,0.0,0.0 -3500,4.5,0.5,0.0 -3500,5.0,-2.5,0.4 -3500,5.0,-2.0,0.4 -3500,5.0,-1.5,0.4 -3500,5.0,-1.0,0.4 -3500,5.0,-0.5,0.2 -3500,5.0,0.0,0.0 -3500,5.0,0.0,0.2 -3500,5.0,0.5,0.0 -3500,5.5,-2.5,0.4 -3500,5.5,-2.0,0.4 -3500,5.5,-1.5,0.4 -3500,5.5,-1.0,0.4 -3500,5.5,-0.5,0.2 -3500,5.5,0.0,0.0 -3500,5.5,0.0,0.2 -3500,5.5,0.5,0.0 -3500,6.0,-0.5,0.2 -3600,-0.5,0.0,0.0 -3600,0.0,0.0,0.0 -3600,0.5,0.0,0.0 -3600,1.0,0.0,0.0 -3600,1.5,0.0,0.0 -3600,2.0,-1.0,0.4 -3600,2.0,0.0,0.0 -3600,2.5,0.0,0.0 -3600,3.0,-1.0,0.4 -3600,3.0,-0.5,0.2 -3600,3.0,0.0,0.0 -3600,3.5,-0.5,0.2 -3600,3.5,0.0,0.0 -3600,4.0,-0.5,0.2 -3600,4.0,0.0,0.0 -3600,4.5,-2.5,0.4 -3600,4.5,-2.0,0.4 -3600,4.5,-1.5,0.4 -3600,4.5,-1.0,0.4 -3600,4.5,-0.5,0.2 -3600,4.5,0.0,0.0 -3600,4.5,0.5,0.0 -3600,5.0,-2.5,0.4 -3600,5.0,-2.0,0.4 -3600,5.0,-1.5,0.4 -3600,5.0,-1.0,0.4 -3600,5.0,-0.5,0.2 -3600,5.0,0.0,0.0 -3600,5.0,0.0,0.2 -3600,5.0,0.5,0.0 -3600,5.5,-2.5,0.4 -3600,5.5,-2.0,0.4 -3600,5.5,-1.5,0.4 -3600,5.5,-1.0,0.4 -3600,5.5,-0.5,0.2 -3600,5.5,0.0,0.0 -3600,5.5,0.0,0.2 -3600,5.5,0.5,0.0 -3600,6.0,-0.5,0.2 -3700,-0.5,0.0,0.0 -3700,0.0,0.0,0.0 -3700,0.5,0.0,0.0 -3700,1.0,0.0,0.0 -3700,1.5,0.0,0.0 -3700,2.0,-1.0,0.4 -3700,2.0,0.0,0.0 -3700,2.5,-1.0,0.4 -3700,2.5,0.0,0.0 -3700,3.0,-1.0,0.4 -3700,3.0,-0.5,0.2 -3700,3.0,0.0,0.0 -3700,3.5,-0.5,0.2 -3700,3.5,0.0,0.0 -3700,4.0,-0.5,0.2 -3700,4.0,0.0,0.0 -3700,4.5,-2.5,0.4 -3700,4.5,-2.0,0.4 -3700,4.5,-1.5,0.4 -3700,4.5,-1.0,0.4 -3700,4.5,-0.5,0.2 -3700,4.5,0.0,0.0 -3700,4.5,0.5,0.0 -3700,5.0,-2.5,0.4 -3700,5.0,-2.0,0.4 -3700,5.0,-1.5,0.4 -3700,5.0,-1.0,0.4 -3700,5.0,-0.5,0.2 -3700,5.0,0.0,0.0 -3700,5.0,0.0,0.2 -3700,5.0,0.5,0.0 -3700,5.5,-2.5,0.4 -3700,5.5,-2.0,0.4 -3700,5.5,-1.5,0.4 -3700,5.5,-1.0,0.4 -3700,5.5,-0.5,0.2 -3700,5.5,0.0,0.0 -3700,5.5,0.0,0.2 -3700,5.5,0.5,0.0 -3700,6.0,-0.5,0.2 -3800,-0.5,0.0,0.0 -3800,0.0,0.0,0.0 -3800,0.5,0.0,0.0 -3800,1.0,0.0,0.0 -3800,1.5,0.0,0.0 -3800,2.0,0.0,0.0 -3800,2.5,-1.0,0.4 -3800,2.5,0.0,0.0 -3800,3.0,-1.0,0.4 -3800,3.0,-0.5,0.2 -3800,3.0,0.0,0.0 -3800,3.5,-0.5,0.2 -3800,3.5,0.0,0.0 -3800,4.0,-0.5,0.2 -3800,4.0,0.0,0.0 -3800,4.5,-2.5,0.4 -3800,4.5,-2.0,0.4 -3800,4.5,-1.5,0.4 -3800,4.5,-1.0,0.4 -3800,4.5,-0.5,0.2 -3800,4.5,0.0,0.0 -3800,4.5,0.5,0.0 -3800,5.0,-2.5,0.4 -3800,5.0,-2.0,0.4 -3800,5.0,-1.5,0.4 -3800,5.0,-1.0,0.4 -3800,5.0,-0.5,0.2 -3800,5.0,0.0,0.0 -3800,5.0,0.0,0.2 -3800,5.0,0.5,0.0 -3800,5.5,-2.5,0.4 -3800,5.5,-2.0,0.4 -3800,5.5,-1.5,0.4 -3800,5.5,-1.0,0.4 -3800,5.5,-0.5,0.2 -3800,5.5,0.0,0.0 -3800,5.5,0.0,0.2 -3800,5.5,0.5,0.0 -3800,6.0,-0.5,0.2 -3900,-0.5,0.0,0.0 -3900,0.0,0.0,0.0 -3900,0.5,0.0,0.0 -3900,1.0,0.0,0.0 -3900,1.5,0.0,0.0 -3900,2.0,0.0,0.0 -3900,2.5,0.0,0.0 -3900,3.0,-1.0,0.4 -3900,3.0,-0.5,0.2 -3900,3.0,0.0,0.0 -3900,3.5,-0.5,0.2 -3900,3.5,0.0,0.0 -3900,4.0,-0.5,0.2 -3900,4.0,0.0,0.0 -3900,4.5,-2.5,0.4 -3900,4.5,-2.0,0.4 -3900,4.5,-1.5,0.4 -3900,4.5,-1.0,0.4 -3900,4.5,-0.5,0.2 -3900,4.5,0.0,0.0 -3900,4.5,0.5,0.0 -3900,5.0,-2.5,0.4 -3900,5.0,-2.0,0.4 -3900,5.0,-1.5,0.4 -3900,5.0,-1.0,0.4 -3900,5.0,-0.5,0.2 -3900,5.0,0.0,0.0 -3900,5.0,0.0,0.2 -3900,5.0,0.5,0.0 -3900,5.5,-2.5,0.4 -3900,5.5,-2.0,0.4 -3900,5.5,-1.5,0.4 -3900,5.5,-1.0,0.4 -3900,5.5,-0.5,0.2 -3900,5.5,0.0,0.0 -3900,5.5,0.0,0.2 -3900,5.5,0.5,0.0 -3900,6.0,-0.5,0.2 -4000,-0.5,0.0,0.0 -4000,0.0,0.0,0.0 -4000,0.5,0.0,0.0 -4000,1.0,0.0,0.0 -4000,1.5,0.0,0.0 -4000,2.0,-1.0,0.4 -4000,2.0,0.0,0.0 -4000,2.5,-1.0,0.4 -4000,2.5,0.0,0.0 -4000,3.0,-1.0,0.4 -4000,3.0,-0.5,0.2 -4000,3.0,0.0,0.0 -4000,3.5,-0.5,0.2 -4000,3.5,0.0,0.0 -4000,4.0,-0.5,0.2 -4000,4.0,0.0,0.0 -4000,4.5,-2.5,0.4 -4000,4.5,-2.0,0.4 -4000,4.5,-1.5,0.4 -4000,4.5,-1.0,0.4 -4000,4.5,-0.5,0.2 -4000,4.5,0.0,0.0 -4000,4.5,0.5,0.0 -4000,5.0,-2.5,0.4 -4000,5.0,-2.0,0.4 -4000,5.0,-1.5,0.4 -4000,5.0,-1.0,0.4 -4000,5.0,-0.5,0.2 -4000,5.0,0.0,0.0 -4000,5.0,0.0,0.2 -4000,5.0,0.5,0.0 -4000,5.5,-2.5,0.4 -4000,5.5,-2.0,0.4 -4000,5.5,-1.5,0.4 -4000,5.5,-1.0,0.4 -4000,5.5,-0.5,0.2 -4000,5.5,0.0,0.0 -4000,5.5,0.0,0.2 -4000,5.5,0.5,0.0 -4000,6.0,-0.5,0.2 -4100,2.0,-1.0,0.4 -4100,2.0,0.0,0.0 -4100,2.5,-1.0,0.4 -4100,2.5,0.0,0.0 -4100,3.0,-1.0,0.4 -4100,3.0,-0.5,0.2 -4100,3.0,0.0,0.0 -4100,3.5,-0.5,0.2 -4100,3.5,0.0,0.0 -4100,4.0,-0.5,0.2 -4100,4.0,0.0,0.0 -4100,4.5,-2.5,0.4 -4100,4.5,-2.0,0.4 -4100,4.5,-1.5,0.4 -4100,4.5,-1.0,0.4 -4100,4.5,-0.5,0.2 -4100,4.5,0.0,0.0 -4100,5.0,-2.5,0.4 -4100,5.0,-2.0,0.4 -4100,5.0,-1.5,0.4 -4100,5.0,-1.0,0.4 -4100,5.0,-0.5,0.2 -4100,5.0,0.0,0.0 -4100,5.0,0.0,0.2 -4100,5.0,0.5,0.0 -4100,5.5,-2.5,0.4 -4100,5.5,-2.0,0.4 -4100,5.5,-1.5,0.4 -4100,5.5,-1.0,0.4 -4100,5.5,-0.5,0.2 -4100,5.5,0.0,0.0 -4100,5.5,0.0,0.2 -4100,5.5,0.5,0.0 -4100,6.0,-1.0,0.4 -4100,6.0,-0.5,0.2 -4200,2.0,-1.0,0.4 -4200,2.0,0.0,0.0 -4200,2.5,-1.0,0.4 -4200,2.5,0.0,0.0 -4200,3.0,-1.0,0.4 -4200,3.0,-0.5,0.2 -4200,3.0,0.0,0.0 -4200,3.5,-0.5,0.2 -4200,3.5,0.0,0.0 -4200,4.0,-0.5,0.2 -4200,4.0,0.0,0.0 -4200,4.5,-2.5,0.4 -4200,4.5,-2.0,0.4 -4200,4.5,-1.5,0.4 -4200,4.5,-1.0,0.4 -4200,4.5,-0.5,0.2 -4200,4.5,0.0,0.0 -4200,5.0,-2.5,0.4 -4200,5.0,-2.0,0.4 -4200,5.0,-1.5,0.4 -4200,5.0,-1.0,0.4 -4200,5.0,-0.5,0.2 -4200,5.0,0.0,0.0 -4200,5.0,0.0,0.2 -4200,5.0,0.5,0.0 -4200,5.5,-2.5,0.4 -4200,5.5,-2.0,0.4 -4200,5.5,-1.5,0.4 -4200,5.5,-1.0,0.4 -4200,5.5,-0.5,0.2 -4200,5.5,0.0,0.0 -4200,5.5,0.0,0.2 -4200,5.5,0.5,0.0 -4200,6.0,-1.0,0.4 -4200,6.0,-0.5,0.2 -4300,2.0,-1.0,0.4 -4300,2.0,0.0,0.0 -4300,2.5,0.0,0.0 -4300,3.0,-1.0,0.4 -4300,3.0,-0.5,0.2 -4300,3.0,0.0,0.0 -4300,3.5,-0.5,0.2 -4300,3.5,0.0,0.0 -4300,4.0,-0.5,0.2 -4300,4.0,0.0,0.0 -4300,4.5,-2.5,0.4 -4300,4.5,-2.0,0.4 -4300,4.5,-1.5,0.4 -4300,4.5,-1.0,0.4 -4300,4.5,-0.5,0.2 -4300,4.5,0.0,0.0 -4300,5.0,-2.5,0.4 -4300,5.0,-2.0,0.4 -4300,5.0,-1.5,0.4 -4300,5.0,-1.0,0.4 -4300,5.0,-0.5,0.2 -4300,5.0,0.0,0.0 -4300,5.0,0.0,0.2 -4300,5.0,0.5,0.0 -4300,5.5,-2.5,0.4 -4300,5.5,-2.0,0.4 -4300,5.5,-1.5,0.4 -4300,5.5,-1.0,0.4 -4300,5.5,-0.5,0.2 -4300,5.5,0.0,0.0 -4300,5.5,0.0,0.2 -4300,5.5,0.5,0.0 -4300,6.0,-1.0,0.4 -4300,6.0,-0.5,0.2 -4400,2.0,0.0,0.0 -4400,2.5,-1.0,0.4 -4400,2.5,0.0,0.0 -4400,3.0,-1.0,0.4 -4400,3.0,-0.5,0.2 -4400,3.0,0.0,0.0 -4400,3.5,-0.5,0.2 -4400,3.5,0.0,0.0 -4400,4.0,-0.5,0.2 -4400,4.0,0.0,0.0 -4400,4.5,-2.5,0.4 -4400,4.5,-2.0,0.4 -4400,4.5,-1.5,0.4 -4400,4.5,-1.0,0.4 -4400,4.5,-0.5,0.2 -4400,4.5,0.0,0.0 -4400,5.0,-2.5,0.4 -4400,5.0,-2.0,0.4 -4400,5.0,-1.5,0.4 -4400,5.0,-1.0,0.4 -4400,5.0,-0.5,0.2 -4400,5.0,0.0,0.0 -4400,5.0,0.0,0.2 -4400,5.0,0.5,0.0 -4400,5.5,-2.5,0.4 -4400,5.5,-2.0,0.4 -4400,5.5,-1.5,0.4 -4400,5.5,-1.0,0.4 -4400,5.5,-0.5,0.2 -4400,5.5,0.0,0.0 -4400,5.5,0.0,0.2 -4400,5.5,0.5,0.0 -4400,6.0,-1.0,0.4 -4400,6.0,-0.5,0.2 -4500,2.0,0.0,0.0 -4500,2.5,0.0,0.0 -4500,3.0,-1.0,0.4 -4500,3.0,-0.5,0.2 -4500,3.0,0.0,0.0 -4500,3.5,-0.5,0.2 -4500,3.5,0.0,0.0 -4500,4.0,-0.5,0.2 -4500,4.0,0.0,0.0 -4500,4.5,-2.5,0.4 -4500,4.5,-2.0,0.4 -4500,4.5,-1.5,0.4 -4500,4.5,-1.0,0.4 -4500,4.5,-0.5,0.2 -4500,4.5,0.0,0.0 -4500,5.0,-2.5,0.4 -4500,5.0,-2.0,0.4 -4500,5.0,-1.5,0.4 -4500,5.0,-1.0,0.4 -4500,5.0,-0.5,0.2 -4500,5.0,0.0,0.0 -4500,5.0,0.0,0.2 -4500,5.0,0.5,0.0 -4500,5.5,-2.5,0.4 -4500,5.5,-2.0,0.4 -4500,5.5,-1.5,0.4 -4500,5.5,-1.0,0.4 -4500,5.5,-0.5,0.2 -4500,5.5,0.0,0.0 -4500,5.5,0.0,0.2 -4500,5.5,0.5,0.0 -4500,6.0,-1.0,0.4 -4500,6.0,-0.5,0.2 -4600,2.0,-1.0,0.4 -4600,2.0,0.0,0.0 -4600,2.5,-1.0,0.4 -4600,2.5,0.0,0.0 -4600,3.0,-1.0,0.4 -4600,3.0,-0.5,0.2 -4600,3.0,0.0,0.0 -4600,3.5,-0.5,0.2 -4600,3.5,0.0,0.0 -4600,4.0,-0.5,0.2 -4600,4.0,0.0,0.0 -4600,4.5,-2.5,0.4 -4600,4.5,-2.0,0.4 -4600,4.5,-1.5,0.4 -4600,4.5,-1.0,0.4 -4600,4.5,-0.5,0.2 -4600,4.5,0.0,0.0 -4600,5.0,-2.5,0.4 -4600,5.0,-2.0,0.4 -4600,5.0,-1.5,0.4 -4600,5.0,-1.0,0.4 -4600,5.0,-0.5,0.2 -4600,5.0,0.0,0.0 -4600,5.0,0.0,0.2 -4600,5.0,0.5,0.0 -4600,5.5,-2.5,0.4 -4600,5.5,-2.0,0.4 -4600,5.5,-1.5,0.4 -4600,5.5,-1.0,0.4 -4600,5.5,-0.5,0.2 -4600,5.5,0.0,0.0 -4600,5.5,0.0,0.2 -4600,5.5,0.5,0.0 -4600,6.0,-1.0,0.4 -4600,6.0,-0.5,0.2 -4700,2.0,0.0,0.0 -4700,2.5,0.0,0.0 -4700,3.0,-1.0,0.4 -4700,3.0,-0.5,0.2 -4700,3.0,0.0,0.0 -4700,3.5,-0.5,0.2 -4700,3.5,0.0,0.0 -4700,4.0,-0.5,0.2 -4700,4.0,0.0,0.0 -4700,4.5,-2.5,0.4 -4700,4.5,-2.0,0.4 -4700,4.5,-1.5,0.4 -4700,4.5,-1.0,0.4 -4700,4.5,-0.5,0.2 -4700,4.5,0.0,0.0 -4700,5.0,-2.5,0.4 -4700,5.0,-2.0,0.4 -4700,5.0,-1.5,0.4 -4700,5.0,-1.0,0.4 -4700,5.0,-0.5,0.2 -4700,5.0,0.0,0.0 -4700,5.0,0.0,0.2 -4700,5.0,0.5,0.0 -4700,5.5,-2.5,0.4 -4700,5.5,-2.0,0.4 -4700,5.5,-1.5,0.4 -4700,5.5,-1.0,0.4 -4700,5.5,-0.5,0.2 -4700,5.5,0.0,0.0 -4700,5.5,0.0,0.2 -4700,5.5,0.5,0.0 -4700,6.0,-1.0,0.4 -4700,6.0,-0.5,0.2 -4800,2.0,-1.0,0.4 -4800,2.0,0.0,0.0 -4800,2.5,-1.0,0.4 -4800,2.5,0.0,0.0 -4800,3.0,-1.0,0.4 -4800,3.0,-0.5,0.2 -4800,3.0,0.0,0.0 -4800,3.5,-0.5,0.2 -4800,3.5,0.0,0.0 -4800,4.0,-0.5,0.2 -4800,4.0,0.0,0.0 -4800,4.5,-2.5,0.4 -4800,4.5,-2.0,0.4 -4800,4.5,-1.5,0.4 -4800,4.5,-1.0,0.4 -4800,4.5,-0.5,0.2 -4800,4.5,0.0,0.0 -4800,5.0,-2.5,0.4 -4800,5.0,-2.0,0.4 -4800,5.0,-1.5,0.4 -4800,5.0,-1.0,0.4 -4800,5.0,-0.5,0.2 -4800,5.0,0.0,0.0 -4800,5.0,0.0,0.2 -4800,5.0,0.5,0.0 -4800,5.5,-2.5,0.4 -4800,5.5,-2.0,0.4 -4800,5.5,-1.5,0.4 -4800,5.5,-1.0,0.4 -4800,5.5,-0.5,0.2 -4800,5.5,0.0,0.0 -4800,5.5,0.5,0.0 -4800,6.0,-1.0,0.4 -4800,6.0,-0.5,0.2 -4900,2.0,-1.0,0.4 -4900,2.0,0.0,0.0 -4900,2.5,0.0,0.0 -4900,3.0,-1.0,0.4 -4900,3.0,-0.5,0.2 -4900,3.0,0.0,0.0 -4900,3.5,-0.5,0.2 -4900,3.5,0.0,0.0 -4900,4.0,-0.5,0.2 -4900,4.0,0.0,0.0 -4900,4.5,-2.5,0.4 -4900,4.5,-2.0,0.4 -4900,4.5,-1.5,0.4 -4900,4.5,-1.0,0.4 -4900,4.5,-0.5,0.2 -4900,4.5,0.0,0.0 -4900,5.0,-2.5,0.4 -4900,5.0,-2.0,0.4 -4900,5.0,-1.5,0.4 -4900,5.0,-1.0,0.4 -4900,5.0,-0.5,0.2 -4900,5.0,0.0,0.0 -4900,5.0,0.0,0.2 -4900,5.0,0.5,0.0 -4900,5.5,-2.5,0.4 -4900,5.5,-2.0,0.4 -4900,5.5,-1.5,0.4 -4900,5.5,-1.0,0.4 -4900,5.5,-0.5,0.2 -4900,5.5,0.0,0.0 -4900,5.5,0.0,0.2 -4900,5.5,0.5,0.0 -4900,6.0,-1.0,0.4 -4900,6.0,-0.5,0.2 -5000,2.0,0.0,0.0 -5000,2.5,0.0,0.0 -5000,3.0,-1.0,0.4 -5000,3.0,-0.5,0.2 -5000,3.0,0.0,0.0 -5000,3.5,-0.5,0.2 -5000,3.5,0.0,0.0 -5000,4.0,-0.5,0.2 -5000,4.0,0.0,0.0 -5000,4.5,-2.5,0.4 -5000,4.5,-2.0,0.4 -5000,4.5,-1.5,0.4 -5000,4.5,-1.0,0.4 -5000,4.5,-0.5,0.2 -5000,4.5,0.0,0.0 -5000,5.0,-2.5,0.4 -5000,5.0,-2.0,0.4 -5000,5.0,-1.5,0.4 -5000,5.0,-1.0,0.4 -5000,5.0,-0.5,0.2 -5000,5.0,0.0,0.0 -5000,5.0,0.0,0.2 -5000,5.0,0.5,0.0 -5000,5.5,-2.5,0.4 -5000,5.5,-2.0,0.4 -5000,5.5,-1.5,0.4 -5000,5.5,-1.0,0.4 -5000,5.5,-0.5,0.2 -5000,5.5,0.0,0.0 -5000,5.5,0.0,0.2 -5000,5.5,0.5,0.0 -5000,6.0,-1.0,0.4 -5000,6.0,-0.5,0.2 -5100,2.0,-1.0,0.4 -5100,2.0,0.0,0.0 -5100,2.5,0.0,0.0 -5100,3.0,-0.5,0.2 -5100,3.0,0.0,0.0 -5100,3.5,-0.5,0.2 -5100,3.5,0.0,0.0 -5100,4.0,-0.5,0.2 -5100,4.0,0.0,0.0 -5100,4.5,-2.5,0.4 -5100,4.5,-2.0,0.4 -5100,4.5,-1.0,0.4 -5100,4.5,-0.5,0.2 -5100,4.5,0.0,0.0 -5100,5.0,-2.5,0.4 -5100,5.0,-2.0,0.4 -5100,5.0,-1.5,0.4 -5100,5.0,-1.0,0.4 -5100,5.0,-0.5,0.2 -5100,5.0,0.0,0.0 -5100,5.0,0.0,0.2 -5100,5.5,-1.0,0.4 -5100,5.5,-0.5,0.2 -5100,5.5,0.0,0.0 -5100,5.5,0.0,0.2 -5100,6.0,-1.0,0.4 -5100,6.0,-0.5,0.2 -5200,2.0,0.0,0.0 -5200,2.5,0.0,0.0 -5200,3.0,-0.5,0.2 -5200,3.0,0.0,0.0 -5200,3.5,-0.5,0.2 -5200,3.5,0.0,0.0 -5200,4.0,-0.5,0.2 -5200,4.0,0.0,0.0 -5200,4.5,-2.5,0.4 -5200,4.5,-2.0,0.4 -5200,4.5,-1.0,0.4 -5200,4.5,-0.5,0.2 -5200,4.5,0.0,0.0 -5200,5.0,-2.5,0.4 -5200,5.0,-2.0,0.4 -5200,5.0,-1.5,0.4 -5200,5.0,-1.0,0.4 -5200,5.0,-0.5,0.2 -5200,5.0,0.0,0.0 -5200,5.0,0.0,0.2 -5200,5.5,-1.0,0.4 -5200,5.5,-0.5,0.2 -5200,5.5,0.0,0.0 -5200,5.5,0.0,0.2 -5200,6.0,-1.0,0.4 -5200,6.0,-0.5,0.2 -5300,2.0,0.0,0.0 -5300,2.5,0.0,0.0 -5300,3.0,-0.5,0.2 -5300,3.0,0.0,0.0 -5300,3.5,-0.5,0.2 -5300,3.5,0.0,0.0 -5300,4.0,-0.5,0.2 -5300,4.0,0.0,0.0 -5300,4.5,-2.5,0.4 -5300,4.5,-2.0,0.4 -5300,4.5,-1.0,0.4 -5300,4.5,-0.5,0.2 -5300,4.5,0.0,0.0 -5300,5.0,-2.5,0.4 -5300,5.0,-2.0,0.4 -5300,5.0,-1.5,0.4 -5300,5.0,-1.0,0.4 -5300,5.0,-0.5,0.2 -5300,5.0,0.0,0.0 -5300,5.0,0.0,0.2 -5300,5.5,-1.0,0.4 -5300,5.5,-0.5,0.2 -5300,5.5,0.0,0.0 -5300,5.5,0.0,0.2 -5300,6.0,-1.0,0.4 -5300,6.0,-0.5,0.2 -5400,2.0,-1.0,0.4 -5400,2.0,0.0,0.0 -5400,2.5,0.0,0.0 -5400,3.0,-0.5,0.2 -5400,3.0,0.0,0.0 -5400,3.5,-0.5,0.2 -5400,3.5,0.0,0.0 -5400,4.0,-0.5,0.2 -5400,4.0,0.0,0.0 -5400,4.5,-2.5,0.4 -5400,4.5,-2.0,0.4 -5400,4.5,-1.0,0.4 -5400,4.5,-0.5,0.2 -5400,4.5,0.0,0.0 -5400,5.0,-2.5,0.4 -5400,5.0,-2.0,0.4 -5400,5.0,-1.5,0.4 -5400,5.0,-1.0,0.4 -5400,5.0,-0.5,0.2 -5400,5.0,0.0,0.0 -5400,5.0,0.0,0.2 -5400,5.5,-1.0,0.4 -5400,5.5,-0.5,0.2 -5400,5.5,0.0,0.0 -5400,5.5,0.0,0.2 -5400,6.0,-1.0,0.4 -5400,6.0,-0.5,0.2 -5500,2.0,0.0,0.0 -5500,2.5,0.0,0.0 -5500,3.0,-0.5,0.2 -5500,3.0,0.0,0.0 -5500,3.5,-0.5,0.2 -5500,3.5,0.0,0.0 -5500,4.0,-0.5,0.2 -5500,4.0,0.0,0.0 -5500,4.5,-2.5,0.4 -5500,4.5,-2.0,0.4 -5500,4.5,-1.0,0.4 -5500,4.5,-0.5,0.2 -5500,4.5,0.0,0.0 -5500,5.0,-2.5,0.4 -5500,5.0,-2.0,0.4 -5500,5.0,-1.5,0.4 -5500,5.0,-1.0,0.4 -5500,5.0,-0.5,0.2 -5500,5.0,0.0,0.0 -5500,5.0,0.0,0.2 -5500,5.5,-1.0,0.4 -5500,5.5,-0.5,0.2 -5500,5.5,0.0,0.0 -5500,5.5,0.0,0.2 -5500,6.0,-1.0,0.4 -5500,6.0,-0.5,0.2 -5600,2.0,-1.0,0.4 -5600,2.0,0.0,0.0 -5600,2.5,0.0,0.0 -5600,3.0,-0.5,0.2 -5600,3.0,0.0,0.0 -5600,3.5,-0.5,0.2 -5600,3.5,0.0,0.0 -5600,4.0,-0.5,0.2 -5600,4.0,0.0,0.0 -5600,4.5,-2.5,0.4 -5600,4.5,-2.0,0.4 -5600,4.5,-1.0,0.4 -5600,4.5,-0.5,0.2 -5600,4.5,0.0,0.0 -5600,5.0,-2.5,0.4 -5600,5.0,-2.0,0.4 -5600,5.0,-1.5,0.4 -5600,5.0,-1.0,0.4 -5600,5.0,-0.5,0.2 -5600,5.0,0.0,0.0 -5600,5.0,0.0,0.2 -5600,5.5,-1.0,0.4 -5600,5.5,-0.5,0.2 -5600,5.5,0.0,0.0 -5600,5.5,0.0,0.2 -5600,6.0,-1.0,0.4 -5600,6.0,-0.5,0.2 -5700,2.0,0.0,0.0 -5700,2.5,0.0,0.0 -5700,3.0,-0.5,0.2 -5700,3.0,0.0,0.0 -5700,3.5,-0.5,0.2 -5700,3.5,0.0,0.0 -5700,4.0,-0.5,0.2 -5700,4.0,0.0,0.0 -5700,4.5,-2.5,0.4 -5700,4.5,-2.0,0.4 -5700,4.5,-1.0,0.4 -5700,4.5,-0.5,0.2 -5700,4.5,0.0,0.0 -5700,5.0,-2.5,0.4 -5700,5.0,-2.0,0.4 -5700,5.0,-1.5,0.4 -5700,5.0,-1.0,0.4 -5700,5.0,-0.5,0.2 -5700,5.0,0.0,0.0 -5700,5.0,0.0,0.2 -5700,5.5,-1.0,0.4 -5700,5.5,-0.5,0.2 -5700,5.5,0.0,0.0 -5700,5.5,0.0,0.2 -5700,6.0,-1.0,0.4 -5700,6.0,-0.5,0.2 -5800,2.0,0.0,0.0 -5800,2.5,-1.0,0.4 -5800,2.5,0.0,0.0 -5800,3.0,-0.5,0.2 -5800,3.0,0.0,0.0 -5800,3.5,-0.5,0.2 -5800,3.5,0.0,0.0 -5800,4.0,-0.5,0.2 -5800,4.0,0.0,0.0 -5800,4.5,-2.5,0.4 -5800,4.5,-2.0,0.4 -5800,4.5,-1.0,0.4 -5800,4.5,-0.5,0.2 -5800,4.5,0.0,0.0 -5800,5.0,-2.5,0.4 -5800,5.0,-2.0,0.4 -5800,5.0,-1.5,0.4 -5800,5.0,-1.0,0.4 -5800,5.0,-0.5,0.2 -5800,5.0,0.0,0.0 -5800,5.0,0.0,0.2 -5800,5.5,-1.0,0.4 -5800,5.5,-0.5,0.2 -5800,5.5,0.0,0.0 -5800,5.5,0.0,0.2 -5800,6.0,-1.0,0.4 -5800,6.0,-0.5,0.2 -5900,2.0,0.0,0.0 -5900,2.5,0.0,0.0 -5900,3.0,-0.5,0.2 -5900,3.0,0.0,0.0 -5900,3.5,-0.5,0.2 -5900,3.5,0.0,0.0 -5900,4.0,-0.5,0.2 -5900,4.0,0.0,0.0 -5900,4.5,-2.5,0.4 -5900,4.5,-2.0,0.4 -5900,4.5,-1.0,0.4 -5900,4.5,-0.5,0.2 -5900,4.5,0.0,0.0 -5900,5.0,-2.5,0.4 -5900,5.0,-2.0,0.4 -5900,5.0,-1.5,0.4 -5900,5.0,-1.0,0.4 -5900,5.0,-0.5,0.2 -5900,5.0,0.0,0.0 -5900,5.0,0.0,0.2 -5900,5.5,-1.0,0.4 -5900,5.5,-0.5,0.2 -5900,5.5,0.0,0.0 -5900,5.5,0.0,0.2 -5900,6.0,-1.0,0.4 -5900,6.0,-0.5,0.2 -6000,2.0,-1.0,0.4 -6000,2.0,0.0,0.0 -6000,2.5,-1.0,0.4 -6000,2.5,0.0,0.0 -6000,3.0,-0.5,0.2 -6000,3.0,0.0,0.0 -6000,3.5,-0.5,0.2 -6000,3.5,0.0,0.0 -6000,4.0,-0.5,0.2 -6000,4.0,0.0,0.0 -6000,4.5,-2.5,0.4 -6000,4.5,-2.0,0.4 -6000,4.5,-1.0,0.4 -6000,4.5,-0.5,0.2 -6000,4.5,0.0,0.0 -6000,5.0,-2.5,0.4 -6000,5.0,-2.0,0.4 -6000,5.0,-1.5,0.4 -6000,5.0,-1.0,0.4 -6000,5.0,-0.5,0.2 -6000,5.0,0.0,0.0 -6000,5.0,0.0,0.2 -6000,5.5,-1.0,0.4 -6000,5.5,-0.5,0.2 -6000,5.5,0.0,0.0 -6000,5.5,0.0,0.2 -6000,6.0,-1.0,0.4 -6000,6.0,-0.5,0.2 -6100,2.0,0.0,0.0 -6100,2.5,-1.0,0.4 -6100,2.5,0.0,0.0 -6100,3.0,-0.5,0.2 -6100,3.0,0.0,0.0 -6100,3.5,-0.5,0.2 -6100,3.5,0.0,0.0 -6100,4.0,-0.5,0.2 -6100,4.0,0.0,0.0 -6100,4.5,-2.5,0.4 -6100,4.5,-2.0,0.4 -6100,4.5,-1.0,0.4 -6100,4.5,-0.5,0.2 -6100,4.5,0.0,0.0 -6100,5.0,-2.5,0.4 -6100,5.0,-2.0,0.4 -6100,5.0,-1.5,0.4 -6100,5.0,-1.0,0.4 -6100,5.0,-0.5,0.2 -6100,5.0,0.0,0.0 -6100,5.0,0.0,0.2 -6100,5.5,-1.0,0.4 -6100,5.5,-0.5,0.2 -6100,5.5,0.0,0.0 -6100,5.5,0.0,0.2 -6100,6.0,-1.0,0.4 -6100,6.0,-0.5,0.2 -6200,2.0,0.0,0.0 -6200,2.5,-1.0,0.4 -6200,2.5,0.0,0.0 -6200,3.0,-0.5,0.2 -6200,3.0,0.0,0.0 -6200,3.5,-0.5,0.2 -6200,3.5,0.0,0.0 -6200,4.0,-0.5,0.2 -6200,4.0,0.0,0.0 -6200,4.5,-2.5,0.4 -6200,4.5,-2.0,0.4 -6200,4.5,-1.0,0.4 -6200,4.5,-0.5,0.2 -6200,4.5,0.0,0.0 -6200,5.0,-2.5,0.4 -6200,5.0,-2.0,0.4 -6200,5.0,-1.5,0.4 -6200,5.0,-1.0,0.4 -6200,5.0,-0.5,0.2 -6200,5.0,0.0,0.0 -6200,5.0,0.0,0.2 -6200,5.5,-1.0,0.4 -6200,5.5,-0.5,0.2 -6200,5.5,0.0,0.0 -6200,5.5,0.0,0.2 -6200,6.0,-1.0,0.4 -6200,6.0,-0.5,0.2 -6300,2.0,-1.0,0.4 -6300,2.0,0.0,0.0 -6300,2.5,-1.0,0.4 -6300,2.5,0.0,0.0 -6300,3.0,-0.5,0.2 -6300,3.0,0.0,0.0 -6300,3.5,-0.5,0.2 -6300,3.5,0.0,0.0 -6300,4.0,-0.5,0.2 -6300,4.0,0.0,0.0 -6300,4.5,-2.5,0.4 -6300,4.5,-2.0,0.4 -6300,4.5,-1.0,0.4 -6300,4.5,-0.5,0.2 -6300,4.5,0.0,0.0 -6300,5.0,-2.5,0.4 -6300,5.0,-2.0,0.4 -6300,5.0,-1.5,0.4 -6300,5.0,-1.0,0.4 -6300,5.0,-0.5,0.2 -6300,5.0,0.0,0.0 -6300,5.0,0.0,0.2 -6300,5.5,-1.0,0.4 -6300,5.5,-0.5,0.2 -6300,5.5,0.0,0.0 -6300,5.5,0.0,0.2 -6300,6.0,-1.0,0.4 -6300,6.0,-0.5,0.2 -6400,2.0,-1.0,0.4 -6400,2.0,0.0,0.0 -6400,2.5,-1.0,0.4 -6400,2.5,0.0,0.0 -6400,3.0,-0.5,0.2 -6400,3.0,0.0,0.0 -6400,3.5,-0.5,0.2 -6400,3.5,0.0,0.0 -6400,4.0,-0.5,0.2 -6400,4.0,0.0,0.0 -6400,4.5,-2.5,0.4 -6400,4.5,-2.0,0.4 -6400,4.5,-1.0,0.4 -6400,4.5,-0.5,0.2 -6400,4.5,0.0,0.0 -6400,5.0,-2.5,0.4 -6400,5.0,-2.0,0.4 -6400,5.0,-1.5,0.4 -6400,5.0,-1.0,0.4 -6400,5.0,-0.5,0.2 -6400,5.0,0.0,0.0 -6400,5.0,0.0,0.2 -6400,5.5,-1.0,0.4 -6400,5.5,-0.5,0.2 -6400,5.5,0.0,0.0 -6400,5.5,0.0,0.2 -6400,6.0,-1.0,0.4 -6400,6.0,-0.5,0.2 -6500,2.0,0.0,0.0 -6500,2.5,0.0,0.0 -6500,3.0,-0.5,0.2 -6500,3.0,0.0,0.0 -6500,3.5,-0.5,0.2 -6500,3.5,0.0,0.0 -6500,4.0,-0.5,0.2 -6500,4.0,0.0,0.0 -6500,4.5,-2.5,0.4 -6500,4.5,-2.0,0.4 -6500,4.5,-1.0,0.4 -6500,4.5,-0.5,0.2 -6500,4.5,0.0,0.0 -6500,5.0,-2.5,0.4 -6500,5.0,-2.0,0.4 -6500,5.0,-1.5,0.4 -6500,5.0,-1.0,0.4 -6500,5.0,-0.5,0.2 -6500,5.0,0.0,0.0 -6500,5.0,0.0,0.2 -6500,5.5,-1.0,0.4 -6500,5.5,-0.5,0.2 -6500,5.5,0.0,0.0 -6500,5.5,0.0,0.2 -6500,6.0,-1.0,0.4 -6500,6.0,-0.5,0.2 -6600,2.0,0.0,0.0 -6600,2.5,0.0,0.0 -6600,3.0,-0.5,0.2 -6600,3.0,0.0,0.0 -6600,3.5,-0.5,0.2 -6600,3.5,0.0,0.0 -6600,4.0,-0.5,0.2 -6600,4.0,0.0,0.0 -6600,4.5,-2.5,0.4 -6600,4.5,-2.0,0.4 -6600,4.5,-1.0,0.4 -6600,4.5,-0.5,0.2 -6600,4.5,0.0,0.0 -6600,5.0,-2.5,0.4 -6600,5.0,-2.0,0.4 -6600,5.0,-1.5,0.4 -6600,5.0,-1.0,0.4 -6600,5.0,-0.5,0.2 -6600,5.0,0.0,0.0 -6600,5.0,0.0,0.2 -6600,5.5,-1.0,0.4 -6600,5.5,-0.5,0.2 -6600,5.5,0.0,0.0 -6600,5.5,0.0,0.2 -6600,6.0,-1.0,0.4 -6600,6.0,-0.5,0.2 -6700,2.5,-1.0,0.4 -6700,2.5,0.0,0.0 -6700,3.0,-0.5,0.2 -6700,3.0,0.0,0.0 -6700,3.5,-0.5,0.2 -6700,3.5,0.0,0.0 -6700,4.0,-0.5,0.2 -6700,4.0,0.0,0.0 -6700,4.5,-2.5,0.4 -6700,4.5,-2.0,0.4 -6700,4.5,-1.0,0.4 -6700,4.5,-0.5,0.2 -6700,4.5,0.0,0.0 -6700,5.0,-2.5,0.4 -6700,5.0,-2.0,0.4 -6700,5.0,-1.5,0.4 -6700,5.0,-1.0,0.4 -6700,5.0,-0.5,0.2 -6700,5.0,0.0,0.0 -6700,5.0,0.0,0.2 -6700,5.5,-1.0,0.4 -6700,5.5,-0.5,0.2 -6700,5.5,0.0,0.0 -6700,5.5,0.0,0.2 -6700,6.0,-1.0,0.4 -6700,6.0,-0.5,0.2 -6800,2.0,-1.0,0.4 -6800,3.0,-0.5,0.2 -6800,3.0,0.0,0.0 -6800,3.5,-0.5,0.2 -6800,3.5,0.0,0.0 -6800,4.0,-0.5,0.2 -6800,4.0,0.0,0.0 -6800,4.5,-2.5,0.4 -6800,4.5,-2.0,0.4 -6800,4.5,-1.0,0.4 -6800,4.5,-0.5,0.2 -6800,4.5,0.0,0.0 -6800,5.0,-2.5,0.4 -6800,5.0,-2.0,0.4 -6800,5.0,-1.5,0.4 -6800,5.0,-1.0,0.4 -6800,5.0,-0.5,0.2 -6800,5.0,0.0,0.0 -6800,5.0,0.0,0.2 -6800,5.5,-1.0,0.4 -6800,5.5,-0.5,0.2 -6800,5.5,0.0,0.0 -6800,5.5,0.0,0.2 -6800,6.0,-1.0,0.4 -6800,6.0,-0.5,0.2 -6900,2.5,-1.0,0.4 -6900,2.5,0.0,0.0 -6900,3.0,-0.5,0.2 -6900,3.0,0.0,0.0 -6900,3.5,-0.5,0.2 -6900,3.5,0.0,0.0 -6900,4.0,-0.5,0.2 -6900,4.0,0.0,0.0 -6900,4.5,-2.5,0.4 -6900,4.5,-2.0,0.4 -6900,4.5,-1.0,0.4 -6900,4.5,-0.5,0.2 -6900,4.5,0.0,0.0 -6900,5.0,-2.5,0.4 -6900,5.0,-2.0,0.4 -6900,5.0,-1.5,0.4 -6900,5.0,-1.0,0.4 -6900,5.0,-0.5,0.2 -6900,5.0,0.0,0.0 -6900,5.0,0.0,0.2 -6900,5.5,-1.0,0.4 -6900,5.5,-0.5,0.2 -6900,5.5,0.0,0.0 -6900,5.5,0.0,0.2 -6900,6.0,-1.0,0.4 -6900,6.0,-0.5,0.2 -7000,2.5,-1.0,0.4 -7000,3.0,-0.5,0.2 -7000,3.0,0.0,0.0 -7000,3.5,-0.5,0.2 -7000,3.5,0.0,0.0 -7000,4.0,-0.5,0.2 -7000,4.0,0.0,0.0 -7000,4.5,-2.5,0.4 -7000,4.5,-2.0,0.4 -7000,4.5,-1.0,0.4 -7000,4.5,-0.5,0.2 -7000,4.5,0.0,0.0 -7000,5.0,-2.5,0.4 -7000,5.0,-2.0,0.4 -7000,5.0,-1.5,0.4 -7000,5.0,-1.0,0.4 -7000,5.0,-0.5,0.2 -7000,5.0,0.0,0.0 -7000,5.0,0.0,0.2 -7000,5.5,-1.0,0.4 -7000,5.5,-0.5,0.2 -7000,5.5,0.0,0.0 -7000,5.5,0.0,0.2 -7000,6.0,-1.0,0.4 -7000,6.0,-0.5,0.2 +File,teff,logg,M_H,en +lte005.0-3.5-0.0a+0.0.BT-Settl.spec.7,500,3.5,0,0 +lte005.0-4.0-0.0a+0.0.BT-Settl.spec.7,500,4,0,0 +lte005.0-4.5-0.0a+0.0.BT-Settl.spec.7,500,4.5,0,0 +lte005.0-5.0-0.0a+0.0.BT-Settl.spec.7,500,5,0,0 +lte006.0-3.5-0.0a+0.0.BT-Settl.spec.7,600,3.5,0,0 +lte006.0-4.0-0.0a+0.0.BT-Settl.spec.7,600,4,0,0 +lte006.0-4.5-0.0a+0.0.BT-Settl.spec.7,600,4.5,0,0 +lte006.0-5.0-0.0a+0.0.BT-Settl.spec.7,600,5,0,0 +lte007.0-3.5-0.0a+0.0.BT-Settl.spec.7,700,3.5,0,0 +lte007.0-4.0-0.0a+0.0.BT-Settl.spec.7,700,4,0,0 +lte007.0-4.5-0.0a+0.0.BT-Settl.spec.7,700,4.5,0,0 +lte007.0-5.0-0.0a+0.0.BT-Settl.spec.7,700,5,0,0 +lte008.0-3.5-0.0a+0.0.BT-Settl.spec.7,800,3.5,0,0 +lte008.0-4.0-0.0a+0.0.BT-Settl.spec.7,800,4,0,0 +lte008.0-4.5-0.0a+0.0.BT-Settl.spec.7,800,4.5,0,0 +lte008.0-5.0-0.0a+0.0.BT-Settl.spec.7,800,5,0,0 +lte009.0-3.5-0.0a+0.0.BT-Settl.spec.7,900,3.5,0,0 +lte009.0-4.0-0.0a+0.0.BT-Settl.spec.7,900,4,0,0 +lte009.0-4.5-0.0a+0.0.BT-Settl.spec.7,900,4.5,0,0 +lte009.0-5.0-0.0a+0.0.BT-Settl.spec.7,900,5,0,0 +lte009.0-5.5-0.0a+0.0.BT-Settl.spec.7,900,5.5,0,0 +lte010.0-3.5-0.0a+0.0.BT-Settl.spec.7,1000,3.5,0,0 +lte010.0-4.0-0.0a+0.0.BT-Settl.spec.7,1000,4,0,0 +lte010.0-4.5-0.0a+0.0.BT-Settl.spec.7,1000,4.5,0,0 +lte010.0-5.0-0.0a+0.0.BT-Settl.spec.7,1000,5,0,0 +lte010.0-5.5-0.0a+0.0.BT-Settl.spec.7,1000,5.5,0,0 +lte011.0-3.5-0.0a+0.0.BT-Settl.spec.7,1100,3.5,0,0 +lte011.0-4.0-0.0a+0.0.BT-Settl.spec.7,1100,4,0,0 +lte011.0-4.5-0.0a+0.0.BT-Settl.spec.7,1100,4.5,0,0 +lte011.0-5.0-0.0a+0.0.BT-Settl.spec.7,1100,5,0,0 +lte011.0-5.5-0.0a+0.0.BT-Settl.spec.7,1100,5.5,0,0 +lte012.0-3.5-0.0a+0.0.BT-Settl.spec.7,1200,3.5,0,0 +lte012.0-4.0-0.0a+0.0.BT-Settl.spec.7,1200,4,0,0 +lte012.0-4.5-0.0a+0.0.BT-Settl.spec.7,1200,4.5,0,0 +lte012.0-5.0-0.0a+0.0.BT-Settl.spec.7,1200,5,0,0 +lte012.0-5.5-0.0a+0.0.BT-Settl.spec.7,1200,5.5,0,0 +lte013.0-3.5-0.0a+0.0.BT-Settl.spec.7,1300,3.5,0,0 +lte013.0-4.0-0.0a+0.0.BT-Settl.spec.7,1300,4,0,0 +lte013.0-4.5-0.0a+0.0.BT-Settl.spec.7,1300,4.5,0,0 +lte013.0-5.0-0.0a+0.0.BT-Settl.spec.7,1300,5,0,0 +lte013.0-5.5-0.0a+0.0.BT-Settl.spec.7,1300,5.5,0,0 +lte014.0-3.0-0.0a+0.0.BT-Settl.spec.7,1400,3,0,0 +lte014.0-3.5-0.0a+0.0.BT-Settl.spec.7,1400,3.5,0,0 +lte014.0-4.0-0.0a+0.0.BT-Settl.spec.7,1400,4,0,0 +lte014.0-4.5-0.0a+0.0.BT-Settl.spec.7,1400,4.5,0,0 +lte014.0-5.0-0.0a+0.0.BT-Settl.spec.7,1400,5,0,0 +lte014.0-5.5-0.0a+0.0.BT-Settl.spec.7,1400,5.5,0,0 +lte015.0-2.5-0.0a+0.0.BT-Settl.spec.7,1500,2.5,0,0 +lte015.0-3.0-0.0a+0.0.BT-Settl.spec.7,1500,3,0,0 +lte015.0-3.5-0.0a+0.0.BT-Settl.spec.7,1500,3.5,0,0 +lte015.0-4.0-0.0a+0.0.BT-Settl.spec.7,1500,4,0,0 +lte015.0-4.5-0.0a+0.0.BT-Settl.spec.7,1500,4.5,0,0 +lte015.0-5.0-0.0a+0.0.BT-Settl.spec.7,1500,5,0,0 +lte015.0-5.5-0.0a+0.0.BT-Settl.spec.7,1500,5.5,0,0 +lte016.0-2.5-0.0a+0.0.BT-Settl.spec.7,1600,2.5,0,0 +lte016.0-3.0-0.0a+0.0.BT-Settl.spec.7,1600,3,0,0 +lte016.0-3.5-0.0a+0.0.BT-Settl.spec.7,1600,3.5,0,0 +lte016.0-4.0-0.0a+0.0.BT-Settl.spec.7,1600,4,0,0 +lte016.0-4.5-0.0a+0.0.BT-Settl.spec.7,1600,4.5,0,0 +lte016.0-5.0-0.0a+0.0.BT-Settl.spec.7,1600,5,0,0 +lte016.0-5.5-0.0a+0.0.BT-Settl.spec.7,1600,5.5,0,0 +lte017.0-2.5-0.0a+0.0.BT-Settl.spec.7,1700,2.5,0,0 +lte017.0-3.0-0.0a+0.0.BT-Settl.spec.7,1700,3,0,0 +lte017.0-3.5-0.0a+0.0.BT-Settl.spec.7,1700,3.5,0,0 +lte017.0-4.0-0.0a+0.0.BT-Settl.spec.7,1700,4,0,0 +lte017.0-4.5-0.0a+0.0.BT-Settl.spec.7,1700,4.5,0,0 +lte017.0-5.0-0.0a+0.0.BT-Settl.spec.7,1700,5,0,0 +lte017.0-5.5-0.0a+0.0.BT-Settl.spec.7,1700,5.5,0,0 +lte018.0-2.5-0.0a+0.0.BT-Settl.spec.7,1800,2.5,0,0 +lte018.0-3.0-0.0a+0.0.BT-Settl.spec.7,1800,3,0,0 +lte018.0-3.5-0.0a+0.0.BT-Settl.spec.7,1800,3.5,0,0 +lte018.0-4.0-0.0a+0.0.BT-Settl.spec.7,1800,4,0,0 +lte018.0-4.5-0.0a+0.0.BT-Settl.spec.7,1800,4.5,0,0 +lte018.0-5.0-0.0a+0.0.BT-Settl.spec.7,1800,5,0,0 +lte018.0-5.5-0.0a+0.0.BT-Settl.spec.7,1800,5.5,0,0 +lte019.0-2.5-0.0a+0.0.BT-Settl.spec.7,1900,2.5,0,0 +lte019.0-3.0-0.0a+0.0.BT-Settl.spec.7,1900,3,0,0 +lte019.0-3.5-0.0a+0.0.BT-Settl.spec.7,1900,3.5,0,0 +lte019.0-4.0-0.0a+0.0.BT-Settl.spec.7,1900,4,0,0 +lte019.0-4.5-0.0a+0.0.BT-Settl.spec.7,1900,4.5,0,0 +lte019.0-5.0-0.0a+0.0.BT-Settl.spec.7,1900,5,0,0 +lte019.0-5.5-0.0a+0.0.BT-Settl.spec.7,1900,5.5,0,0 +lte020.0-2.5-0.0a+0.0.BT-Settl.spec.7,2000,2.5,0,0 +lte020.0-3.0-0.0a+0.0.BT-Settl.spec.7,2000,3,0,0 +lte020.0-3.5-0.0a+0.0.BT-Settl.spec.7,2000,3.5,0,0 +lte020.0-4.0-0.0a+0.0.BT-Settl.spec.7,2000,4,0,0 +lte020.0-4.5-0.0a+0.0.BT-Settl.spec.7,2000,4.5,0,0 +lte020.0-5.0-0.0a+0.0.BT-Settl.spec.7,2000,5,0,0 +lte020.0-5.5-0.0a+0.0.BT-Settl.spec.7,2000,5.5,0,0 +lte021.0-2.5-0.0a+0.0.BT-Settl.spec.7,2100,2.5,0,0 +lte021.0-3.0-0.0a+0.0.BT-Settl.spec.7,2100,3,0,0 +lte021.0-3.5-0.0a+0.0.BT-Settl.spec.7,2100,3.5,0,0 +lte021.0-4.0-0.0a+0.0.BT-Settl.spec.7,2100,4,0,0 +lte021.0-4.5-0.0a+0.0.BT-Settl.spec.7,2100,4.5,0,0 +lte021.0-5.0-0.0a+0.0.BT-Settl.spec.7,2100,5,0,0 +lte021.0-5.5-0.0a+0.0.BT-Settl.spec.7,2100,5.5,0,0 +lte022.0-2.5-0.0a+0.0.BT-Settl.spec.7,2200,2.5,0,0 +lte022.0-3.0-0.0a+0.0.BT-Settl.spec.7,2200,3,0,0 +lte022.0-3.5-0.0a+0.0.BT-Settl.spec.7,2200,3.5,0,0 +lte022.0-4.0-0.0a+0.0.BT-Settl.spec.7,2200,4,0,0 +lte022.0-4.5-0.0a+0.0.BT-Settl.spec.7,2200,4.5,0,0 +lte022.0-5.0-0.0a+0.0.BT-Settl.spec.7,2200,5,0,0 +lte022.0-5.5-0.0a+0.0.BT-Settl.spec.7,2200,5.5,0,0 +lte023.0-2.5-0.0a+0.0.BT-Settl.spec.7,2300,2.5,0,0 +lte023.0-3.0-0.0a+0.0.BT-Settl.spec.7,2300,3,0,0 +lte023.0-3.5-0.0a+0.0.BT-Settl.spec.7,2300,3.5,0,0 +lte023.0-4.0-0.0a+0.0.BT-Settl.spec.7,2300,4,0,0 +lte023.0-4.5-0.0a+0.0.BT-Settl.spec.7,2300,4.5,0,0 +lte023.0-5.0-0.0a+0.0.BT-Settl.spec.7,2300,5,0,0 +lte023.0-5.5-0.0a+0.0.BT-Settl.spec.7,2300,5.5,0,0 +lte024.0-2.5-0.0a+0.0.BT-Settl.spec.7,2400,2.5,0,0 +lte024.0-3.0-0.0a+0.0.BT-Settl.spec.7,2400,3,0,0 +lte024.0-3.5-0.0a+0.0.BT-Settl.spec.7,2400,3.5,0,0 +lte024.0-4.0-0.0a+0.0.BT-Settl.spec.7,2400,4,0,0 +lte024.0-4.5-0.0a+0.0.BT-Settl.spec.7,2400,4.5,0,0 +lte024.0-5.0-0.0a+0.0.BT-Settl.spec.7,2400,5,0,0 +lte024.0-5.5-0.0a+0.0.BT-Settl.spec.7,2400,5.5,0,0 +lte025.0-2.5-0.0a+0.0.BT-Settl.spec.7,2500,2.5,0,0 +lte025.0-3.0-0.0a+0.0.BT-Settl.spec.7,2500,3,0,0 +lte025.0-3.5-0.0a+0.0.BT-Settl.spec.7,2500,3.5,0,0 +lte025.0-4.0-0.0a+0.0.BT-Settl.spec.7,2500,4,0,0 +lte025.0-4.5-0.0a+0.0.BT-Settl.spec.7,2500,4.5,0,0 +lte025.0-5.0-0.0a+0.0.BT-Settl.spec.7,2500,5,0,0 +lte025.0-5.5-0.0a+0.0.BT-Settl.spec.7,2500,5.5,0,0 +lte026.0-2.5-0.0a+0.0.BT-Settl.spec.7,2600,2.5,0,0 +lte026.0-3.0-0.0a+0.0.BT-Settl.spec.7,2600,3,0,0 +lte026.0-3.5-0.0a+0.0.BT-Settl.spec.7,2600,3.5,0,0 +lte026.0-4.0-0.0a+0.0.BT-Settl.spec.7,2600,4,0,0 +lte026.0-4.5-0.0a+0.0.BT-Settl.spec.7,2600,4.5,0,0 +lte026.0-5.0-0.0a+0.0.BT-Settl.spec.7,2600,5,0,0 +lte026.0-5.5-0.0a+0.0.BT-Settl.spec.7,2600,5.5,0,0 +lte027.0-2.5-0.0a+0.0.BT-Settl.spec.7,2700,2.5,0,0 +lte027.0-3.0-0.0a+0.0.BT-Settl.spec.7,2700,3,0,0 +lte027.0-3.5-0.0a+0.0.BT-Settl.spec.7,2700,3.5,0,0 +lte027.0-4.0-0.0a+0.0.BT-Settl.spec.7,2700,4,0,0 +lte027.0-4.5-0.0a+0.0.BT-Settl.spec.7,2700,4.5,0,0 +lte027.0-5.0-0.0a+0.0.BT-Settl.spec.7,2700,5,0,0 +lte027.0-5.5-0.0a+0.0.BT-Settl.spec.7,2700,5.5,0,0 +lte028.0-2.5-0.0a+0.0.BT-Settl.spec.7,2800,2.5,0,0 +lte028.0-3.0-0.0a+0.0.BT-Settl.spec.7,2800,3,0,0 +lte028.0-3.5-0.0a+0.0.BT-Settl.spec.7,2800,3.5,0,0 +lte028.0-4.0-0.0a+0.0.BT-Settl.spec.7,2800,4,0,0 +lte028.0-4.5-0.0a+0.0.BT-Settl.spec.7,2800,4.5,0,0 +lte028.0-5.0-0.0a+0.0.BT-Settl.spec.7,2800,5,0,0 +lte028.0-5.5-0.0a+0.0.BT-Settl.spec.7,2800,5.5,0,0 +lte029.0-2.5-0.0a+0.0.BT-Settl.spec.7,2900,2.5,0,0 +lte029.0-3.0-0.0a+0.0.BT-Settl.spec.7,2900,3,0,0 +lte029.0-3.5-0.0a+0.0.BT-Settl.spec.7,2900,3.5,0,0 +lte029.0-4.0-0.0a+0.0.BT-Settl.spec.7,2900,4,0,0 +lte029.0-4.5-0.0a+0.0.BT-Settl.spec.7,2900,4.5,0,0 +lte029.0-5.0-0.0a+0.0.BT-Settl.spec.7,2900,5,0,0 +lte029.0-5.5-0.0a+0.0.BT-Settl.spec.7,2900,5.5,0,0 +lte030.0-2.5-0.0a+0.0.BT-Settl.spec.7,3000,2.5,0,0 +lte030.0-3.0-0.0a+0.0.BT-Settl.spec.7,3000,3,0,0 +lte030.0-3.5-0.0a+0.0.BT-Settl.spec.7,3000,3.5,0,0 +lte030.0-4.0-0.0a+0.0.BT-Settl.spec.7,3000,4,0,0 +lte030.0-4.5-0.0a+0.0.BT-Settl.spec.7,3000,4.5,0,0 +lte030.0-5.0-0.0a+0.0.BT-Settl.spec.7,3000,5,0,0 +lte030.0-5.5-0.0a+0.0.BT-Settl.spec.7,3000,5.5,0,0 +lte031.0-2.5-0.0a+0.0.BT-Settl.spec.7,3100,2.5,0,0 +lte031.0-3.0-0.0a+0.0.BT-Settl.spec.7,3100,3,0,0 +lte031.0-3.5-0.0a+0.0.BT-Settl.spec.7,3100,3.5,0,0 +lte031.0-4.0-0.0a+0.0.BT-Settl.spec.7,3100,4,0,0 +lte031.0-4.5-0.0a+0.0.BT-Settl.spec.7,3100,4.5,0,0 +lte031.0-5.0-0.0a+0.0.BT-Settl.spec.7,3100,5,0,0 +lte031.0-5.5-0.0a+0.0.BT-Settl.spec.7,3100,5.5,0,0 +lte032.0-2.5-0.0a+0.0.BT-Settl.spec.7,3200,2.5,0,0 +lte032.0-3.0-0.0a+0.0.BT-Settl.spec.7,3200,3,0,0 +lte032.0-3.5-0.0a+0.0.BT-Settl.spec.7,3200,3.5,0,0 +lte032.0-4.0-0.0a+0.0.BT-Settl.spec.7,3200,4,0,0 +lte032.0-4.5-0.0a+0.0.BT-Settl.spec.7,3200,4.5,0,0 +lte032.0-5.0-0.0a+0.0.BT-Settl.spec.7,3200,5,0,0 +lte032.0-5.5-0.0a+0.0.BT-Settl.spec.7,3200,5.5,0,0 +lte033.0-2.5-0.0a+0.0.BT-Settl.spec.7,3300,2.5,0,0 +lte033.0-3.0-0.0a+0.0.BT-Settl.spec.7,3300,3,0,0 +lte033.0-3.5-0.0a+0.0.BT-Settl.spec.7,3300,3.5,0,0 +lte033.0-4.0-0.0a+0.0.BT-Settl.spec.7,3300,4,0,0 +lte033.0-4.5-0.0a+0.0.BT-Settl.spec.7,3300,4.5,0,0 +lte033.0-5.0-0.0a+0.0.BT-Settl.spec.7,3300,5,0,0 +lte033.0-5.5-0.0a+0.0.BT-Settl.spec.7,3300,5.5,0,0 +lte034.0-2.5-0.0a+0.0.BT-Settl.spec.7,3400,2.5,0,0 +lte034.0-3.0-0.0a+0.0.BT-Settl.spec.7,3400,3,0,0 +lte034.0-3.5-0.0a+0.0.BT-Settl.spec.7,3400,3.5,0,0 +lte034.0-4.0-0.0a+0.0.BT-Settl.spec.7,3400,4,0,0 +lte034.0-4.5-0.0a+0.0.BT-Settl.spec.7,3400,4.5,0,0 +lte034.0-5.0-0.0a+0.0.BT-Settl.spec.7,3400,5,0,0 +lte034.0-5.5-0.0a+0.0.BT-Settl.spec.7,3400,5.5,0,0 +lte035.0-2.5-0.0a+0.0.BT-Settl.spec.7,3500,2.5,0,0 +lte035.0-3.0-0.0a+0.0.BT-Settl.spec.7,3500,3,0,0 +lte035.0-3.5-0.0a+0.0.BT-Settl.spec.7,3500,3.5,0,0 +lte035.0-4.0-0.0a+0.0.BT-Settl.spec.7,3500,4,0,0 +lte035.0-4.5-0.0a+0.0.BT-Settl.spec.7,3500,4.5,0,0 +lte035.0-5.0-0.0a+0.0.BT-Settl.spec.7,3500,5,0,0 +lte035.0-5.5-0.0a+0.0.BT-Settl.spec.7,3500,5.5,0,0 +lte036.0-2.5-0.0a+0.0.BT-Settl.spec.7,3600,2.5,0,0 +lte036.0-3.0-0.0a+0.0.BT-Settl.spec.7,3600,3,0,0 +lte036.0-3.5-0.0a+0.0.BT-Settl.spec.7,3600,3.5,0,0 +lte036.0-4.0-0.0a+0.0.BT-Settl.spec.7,3600,4,0,0 +lte036.0-4.5-0.0a+0.0.BT-Settl.spec.7,3600,4.5,0,0 +lte036.0-5.0-0.0a+0.0.BT-Settl.spec.7,3600,5,0,0 +lte036.0-5.5-0.0a+0.0.BT-Settl.spec.7,3600,5.5,0,0 +lte037.0-2.5-0.0a+0.0.BT-Settl.spec.7,3700,2.5,0,0 +lte037.0-3.0-0.0a+0.0.BT-Settl.spec.7,3700,3,0,0 +lte037.0-3.5-0.0a+0.0.BT-Settl.spec.7,3700,3.5,0,0 +lte037.0-4.0-0.0a+0.0.BT-Settl.spec.7,3700,4,0,0 +lte037.0-4.5-0.0a+0.0.BT-Settl.spec.7,3700,4.5,0,0 +lte037.0-5.0-0.0a+0.0.BT-Settl.spec.7,3700,5,0,0 +lte037.0-5.5-0.0a+0.0.BT-Settl.spec.7,3700,5.5,0,0 +lte038.0-2.5-0.0a+0.0.BT-Settl.spec.7,3800,2.5,0,0 +lte038.0-3.0-0.0a+0.0.BT-Settl.spec.7,3800,3,0,0 +lte038.0-3.5-0.0a+0.0.BT-Settl.spec.7,3800,3.5,0,0 +lte038.0-4.0-0.0a+0.0.BT-Settl.spec.7,3800,4,0,0 +lte038.0-4.5-0.0a+0.0.BT-Settl.spec.7,3800,4.5,0,0 +lte038.0-5.0-0.0a+0.0.BT-Settl.spec.7,3800,5,0,0 +lte038.0-5.5-0.0a+0.0.BT-Settl.spec.7,3800,5.5,0,0 +lte039.0-2.5-0.0a+0.0.BT-Settl.spec.7,3900,2.5,0,0 +lte039.0-3.0-0.0a+0.0.BT-Settl.spec.7,3900,3,0,0 +lte039.0-3.5-0.0a+0.0.BT-Settl.spec.7,3900,3.5,0,0 +lte039.0-4.0-0.0a+0.0.BT-Settl.spec.7,3900,4,0,0 +lte039.0-4.5-0.0a+0.0.BT-Settl.spec.7,3900,4.5,0,0 +lte039.0-5.0-0.0a+0.0.BT-Settl.spec.7,3900,5,0,0 +lte039.0-5.5-0.0a+0.0.BT-Settl.spec.7,3900,5.5,0,0 +lte040.0-2.5-0.0a+0.0.BT-Settl.spec.7,4000,2.5,0,0 +lte040.0-3.0-0.0a+0.0.BT-Settl.spec.7,4000,3,0,0 +lte040.0-3.5-0.0a+0.0.BT-Settl.spec.7,4000,3.5,0,0 +lte040.0-4.0-0.0a+0.0.BT-Settl.spec.7,4000,4,0,0 +lte040.0-4.5-0.0a+0.0.BT-Settl.spec.7,4000,4.5,0,0 +lte040.0-5.0-0.0a+0.0.BT-Settl.spec.7,4000,5,0,0 +lte040.0-5.5-0.0a+0.0.BT-Settl.spec.7,4000,5.5,0,0 +lte041.0-2.5-0.0a+0.0.BT-Settl.spec.7,4100,2.5,0,0 +lte041.0-3.0-0.0a+0.0.BT-Settl.spec.7,4100,3,0,0 +lte041.0-3.5-0.0a+0.0.BT-Settl.spec.7,4100,3.5,0,0 +lte041.0-4.0-0.0a+0.0.BT-Settl.spec.7,4100,4,0,0 +lte041.0-4.5-0.0a+0.0.BT-Settl.spec.7,4100,4.5,0,0 +lte041.0-5.0-0.0a+0.0.BT-Settl.spec.7,4100,5,0,0 +lte041.0-5.5-0.0a+0.0.BT-Settl.spec.7,4100,5.5,0,0 +lte042.0-2.5-0.0a+0.0.BT-Settl.spec.7,4200,2.5,0,0 +lte042.0-3.0-0.0a+0.0.BT-Settl.spec.7,4200,3,0,0 +lte042.0-3.5-0.0a+0.0.BT-Settl.spec.7,4200,3.5,0,0 +lte042.0-4.0-0.0a+0.0.BT-Settl.spec.7,4200,4,0,0 +lte042.0-4.5-0.0a+0.0.BT-Settl.spec.7,4200,4.5,0,0 +lte042.0-5.0-0.0a+0.0.BT-Settl.spec.7,4200,5,0,0 +lte042.0-5.5-0.0a+0.0.BT-Settl.spec.7,4200,5.5,0,0 +lte043.0-2.5-0.0a+0.0.BT-Settl.spec.7,4300,2.5,0,0 +lte043.0-3.0-0.0a+0.0.BT-Settl.spec.7,4300,3,0,0 +lte043.0-3.5-0.0a+0.0.BT-Settl.spec.7,4300,3.5,0,0 +lte043.0-4.0-0.0a+0.0.BT-Settl.spec.7,4300,4,0,0 +lte043.0-4.5-0.0a+0.0.BT-Settl.spec.7,4300,4.5,0,0 +lte043.0-5.0-0.0a+0.0.BT-Settl.spec.7,4300,5,0,0 +lte043.0-5.5-0.0a+0.0.BT-Settl.spec.7,4300,5.5,0,0 +lte044.0-2.5-0.0a+0.0.BT-Settl.spec.7,4400,2.5,0,0 +lte044.0-3.0-0.0a+0.0.BT-Settl.spec.7,4400,3,0,0 +lte044.0-3.5-0.0a+0.0.BT-Settl.spec.7,4400,3.5,0,0 +lte044.0-4.0-0.0a+0.0.BT-Settl.spec.7,4400,4,0,0 +lte044.0-4.5-0.0a+0.0.BT-Settl.spec.7,4400,4.5,0,0 +lte044.0-5.0-0.0a+0.0.BT-Settl.spec.7,4400,5,0,0 +lte044.0-5.5-0.0a+0.0.BT-Settl.spec.7,4400,5.5,0,0 +lte045.0-2.5-0.0a+0.0.BT-Settl.spec.7,4500,2.5,0,0 +lte045.0-3.0-0.0a+0.0.BT-Settl.spec.7,4500,3,0,0 +lte045.0-3.5-0.0a+0.0.BT-Settl.spec.7,4500,3.5,0,0 +lte045.0-4.0-0.0a+0.0.BT-Settl.spec.7,4500,4,0,0 +lte045.0-4.5-0.0a+0.0.BT-Settl.spec.7,4500,4.5,0,0 +lte045.0-5.0-0.0a+0.0.BT-Settl.spec.7,4500,5,0,0 +lte045.0-5.5-0.0a+0.0.BT-Settl.spec.7,4500,5.5,0,0 +lte046.0-2.5-0.0a+0.0.BT-Settl.spec.7,4600,2.5,0,0 +lte046.0-3.0-0.0a+0.0.BT-Settl.spec.7,4600,3,0,0 +lte046.0-3.5-0.0a+0.0.BT-Settl.spec.7,4600,3.5,0,0 +lte046.0-4.0-0.0a+0.0.BT-Settl.spec.7,4600,4,0,0 +lte046.0-4.5-0.0a+0.0.BT-Settl.spec.7,4600,4.5,0,0 +lte046.0-5.0-0.0a+0.0.BT-Settl.spec.7,4600,5,0,0 +lte046.0-5.5-0.0a+0.0.BT-Settl.spec.7,4600,5.5,0,0 +lte047.0-2.5-0.0a+0.0.BT-Settl.spec.7,4700,2.5,0,0 +lte047.0-3.0-0.0a+0.0.BT-Settl.spec.7,4700,3,0,0 +lte047.0-3.5-0.0a+0.0.BT-Settl.spec.7,4700,3.5,0,0 +lte047.0-4.0-0.0a+0.0.BT-Settl.spec.7,4700,4,0,0 +lte047.0-4.5-0.0a+0.0.BT-Settl.spec.7,4700,4.5,0,0 +lte047.0-5.0-0.0a+0.0.BT-Settl.spec.7,4700,5,0,0 +lte047.0-5.5-0.0a+0.0.BT-Settl.spec.7,4700,5.5,0,0 +lte048.0-2.5-0.0a+0.0.BT-Settl.spec.7,4800,2.5,0,0 +lte048.0-3.0-0.0a+0.0.BT-Settl.spec.7,4800,3,0,0 +lte048.0-3.5-0.0a+0.0.BT-Settl.spec.7,4800,3.5,0,0 +lte048.0-4.0-0.0a+0.0.BT-Settl.spec.7,4800,4,0,0 +lte048.0-4.5-0.0a+0.0.BT-Settl.spec.7,4800,4.5,0,0 +lte048.0-5.0-0.0a+0.0.BT-Settl.spec.7,4800,5,0,0 +lte048.0-5.5-0.0a+0.0.BT-Settl.spec.7,4800,5.5,0,0 +lte049.0-2.5-0.0a+0.0.BT-Settl.spec.7,4900,2.5,0,0 +lte049.0-3.0-0.0a+0.0.BT-Settl.spec.7,4900,3,0,0 +lte049.0-3.5-0.0a+0.0.BT-Settl.spec.7,4900,3.5,0,0 +lte049.0-4.0-0.0a+0.0.BT-Settl.spec.7,4900,4,0,0 +lte049.0-4.5-0.0a+0.0.BT-Settl.spec.7,4900,4.5,0,0 +lte049.0-5.0-0.0a+0.0.BT-Settl.spec.7,4900,5,0,0 +lte049.0-5.5-0.0a+0.0.BT-Settl.spec.7,4900,5.5,0,0 +lte050.0-2.5-0.0a+0.0.BT-Settl.spec.7,5000,2.5,0,0 +lte050.0-3.0-0.0a+0.0.BT-Settl.spec.7,5000,3,0,0 +lte050.0-3.5-0.0a+0.0.BT-Settl.spec.7,5000,3.5,0,0 +lte050.0-4.0-0.0a+0.0.BT-Settl.spec.7,5000,4,0,0 +lte050.0-4.5-0.0a+0.0.BT-Settl.spec.7,5000,4.5,0,0 +lte050.0-5.0-0.0a+0.0.BT-Settl.spec.7,5000,5,0,0 +lte050.0-5.5-0.0a+0.0.BT-Settl.spec.7,5000,5.5,0,0 +lte051.0-2.5-0.0a+0.0.BT-Settl.spec.7,5100,2.5,0,0 +lte051.0-3.0-0.0a+0.0.BT-Settl.spec.7,5100,3,0,0 +lte051.0-3.5-0.0a+0.0.BT-Settl.spec.7,5100,3.5,0,0 +lte051.0-4.0-0.0a+0.0.BT-Settl.spec.7,5100,4,0,0 +lte051.0-4.5-0.0a+0.0.BT-Settl.spec.7,5100,4.5,0,0 +lte051.0-5.0-0.0a+0.0.BT-Settl.spec.7,5100,5,0,0 +lte051.0-5.5-0.0a+0.0.BT-Settl.spec.7,5100,5.5,0,0 +lte052.0-2.5-0.0a+0.0.BT-Settl.spec.7,5200,2.5,0,0 +lte052.0-3.0-0.0a+0.0.BT-Settl.spec.7,5200,3,0,0 +lte052.0-3.5-0.0a+0.0.BT-Settl.spec.7,5200,3.5,0,0 +lte052.0-4.0-0.0a+0.0.BT-Settl.spec.7,5200,4,0,0 +lte052.0-4.5-0.0a+0.0.BT-Settl.spec.7,5200,4.5,0,0 +lte052.0-5.0-0.0a+0.0.BT-Settl.spec.7,5200,5,0,0 +lte052.0-5.5-0.0a+0.0.BT-Settl.spec.7,5200,5.5,0,0 +lte053.0-2.5-0.0a+0.0.BT-Settl.spec.7,5300,2.5,0,0 +lte053.0-3.0-0.0a+0.0.BT-Settl.spec.7,5300,3,0,0 +lte053.0-3.5-0.0a+0.0.BT-Settl.spec.7,5300,3.5,0,0 +lte053.0-4.0-0.0a+0.0.BT-Settl.spec.7,5300,4,0,0 +lte053.0-4.5-0.0a+0.0.BT-Settl.spec.7,5300,4.5,0,0 +lte053.0-5.0-0.0a+0.0.BT-Settl.spec.7,5300,5,0,0 +lte053.0-5.5-0.0a+0.0.BT-Settl.spec.7,5300,5.5,0,0 +lte054.0-2.5-0.0a+0.0.BT-Settl.spec.7,5400,2.5,0,0 +lte054.0-3.0-0.0a+0.0.BT-Settl.spec.7,5400,3,0,0 +lte054.0-3.5-0.0a+0.0.BT-Settl.spec.7,5400,3.5,0,0 +lte054.0-4.0-0.0a+0.0.BT-Settl.spec.7,5400,4,0,0 +lte054.0-4.5-0.0a+0.0.BT-Settl.spec.7,5400,4.5,0,0 +lte054.0-5.0-0.0a+0.0.BT-Settl.spec.7,5400,5,0,0 +lte054.0-5.5-0.0a+0.0.BT-Settl.spec.7,5400,5.5,0,0 +lte055.0-2.5-0.0a+0.0.BT-Settl.spec.7,5500,2.5,0,0 +lte055.0-3.0-0.0a+0.0.BT-Settl.spec.7,5500,3,0,0 +lte055.0-3.5-0.0a+0.0.BT-Settl.spec.7,5500,3.5,0,0 +lte055.0-4.0-0.0a+0.0.BT-Settl.spec.7,5500,4,0,0 +lte055.0-4.5-0.0a+0.0.BT-Settl.spec.7,5500,4.5,0,0 +lte055.0-5.0-0.0a+0.0.BT-Settl.spec.7,5500,5,0,0 +lte055.0-5.5-0.0a+0.0.BT-Settl.spec.7,5500,5.5,0,0 +lte056.0-2.5-0.0a+0.0.BT-Settl.spec.7,5600,2.5,0,0 +lte056.0-3.0-0.0a+0.0.BT-Settl.spec.7,5600,3,0,0 +lte056.0-3.5-0.0a+0.0.BT-Settl.spec.7,5600,3.5,0,0 +lte056.0-4.0-0.0a+0.0.BT-Settl.spec.7,5600,4,0,0 +lte056.0-4.5-0.0a+0.0.BT-Settl.spec.7,5600,4.5,0,0 +lte056.0-5.0-0.0a+0.0.BT-Settl.spec.7,5600,5,0,0 +lte056.0-5.5-0.0a+0.0.BT-Settl.spec.7,5600,5.5,0,0 +lte057.0-2.5-0.0a+0.0.BT-Settl.spec.7,5700,2.5,0,0 +lte057.0-3.0-0.0a+0.0.BT-Settl.spec.7,5700,3,0,0 +lte057.0-3.5-0.0a+0.0.BT-Settl.spec.7,5700,3.5,0,0 +lte057.0-4.0-0.0a+0.0.BT-Settl.spec.7,5700,4,0,0 +lte057.0-4.5-0.0a+0.0.BT-Settl.spec.7,5700,4.5,0,0 +lte057.0-5.0-0.0a+0.0.BT-Settl.spec.7,5700,5,0,0 +lte057.0-5.5-0.0a+0.0.BT-Settl.spec.7,5700,5.5,0,0 +lte058.0-2.5-0.0a+0.0.BT-Settl.spec.7,5800,2.5,0,0 +lte058.0-3.0-0.0a+0.0.BT-Settl.spec.7,5800,3,0,0 +lte058.0-3.5-0.0a+0.0.BT-Settl.spec.7,5800,3.5,0,0 +lte058.0-4.0-0.0a+0.0.BT-Settl.spec.7,5800,4,0,0 +lte058.0-4.5-0.0a+0.0.BT-Settl.spec.7,5800,4.5,0,0 +lte058.0-5.0-0.0a+0.0.BT-Settl.spec.7,5800,5,0,0 +lte058.0-5.5-0.0a+0.0.BT-Settl.spec.7,5800,5.5,0,0 +lte059.0-2.5-0.0a+0.0.BT-Settl.spec.7,5900,2.5,0,0 +lte059.0-3.0-0.0a+0.0.BT-Settl.spec.7,5900,3,0,0 +lte059.0-3.5-0.0a+0.0.BT-Settl.spec.7,5900,3.5,0,0 +lte059.0-4.0-0.0a+0.0.BT-Settl.spec.7,5900,4,0,0 +lte059.0-4.5-0.0a+0.0.BT-Settl.spec.7,5900,4.5,0,0 +lte059.0-5.0-0.0a+0.0.BT-Settl.spec.7,5900,5,0,0 +lte059.0-5.5-0.0a+0.0.BT-Settl.spec.7,5900,5.5,0,0 +lte060.0-2.5-0.0a+0.0.BT-Settl.spec.7,6000,2.5,0,0 +lte060.0-3.0-0.0a+0.0.BT-Settl.spec.7,6000,3,0,0 +lte060.0-3.5-0.0a+0.0.BT-Settl.spec.7,6000,3.5,0,0 +lte060.0-4.0-0.0a+0.0.BT-Settl.spec.7,6000,4,0,0 +lte060.0-4.5-0.0a+0.0.BT-Settl.spec.7,6000,4.5,0,0 +lte060.0-5.0-0.0a+0.0.BT-Settl.spec.7,6000,5,0,0 +lte060.0-5.5-0.0a+0.0.BT-Settl.spec.7,6000,5.5,0,0 \ No newline at end of file diff --git a/smart/libraries/PHOENIX_NEWERA_ACES_COND_2023/PHOENIX_NEWERA_ACES_COND_2023_gridparams.csv b/smart/libraries/PHOENIX_NEWERA_ACES_COND_2023/PHOENIX_NEWERA_ACES_COND_2023_gridparams.csv new file mode 100644 index 0000000..4006480 --- /dev/null +++ b/smart/libraries/PHOENIX_NEWERA_ACES_COND_2023/PHOENIX_NEWERA_ACES_COND_2023_gridparams.csv @@ -0,0 +1,241 @@ +teff,logg,M_H,en,kzz +800,4.0,0.0,0.0,100.0 +800,4.0,0.0,0.0,10000.0 +800,4.0,0.0,0.0,1000000.0 +800,4.0,0.0,0.0,100000000.0 +800,4.0,0.0,0.0,10000000000.0 +800,4.5,0.0,0.0,100.0 +800,4.5,0.0,0.0,10000.0 +800,4.5,0.0,0.0,1000000.0 +800,4.5,0.0,0.0,100000000.0 +800,4.5,0.0,0.0,10000000000.0 +800,5.0,0.0,0.0,100.0 +800,5.0,0.0,0.0,10000.0 +800,5.0,0.0,0.0,1000000.0 +800,5.0,0.0,0.0,100000000.0 +800,5.0,0.0,0.0,10000000000.0 +800,5.5,0.0,0.0,100.0 +800,5.5,0.0,0.0,10000.0 +800,5.5,0.0,0.0,1000000.0 +800,5.5,0.0,0.0,100000000.0 +800,5.5,0.0,0.0,10000000000.0 +850,4.0,0.0,0.0,100.0 +850,4.0,0.0,0.0,10000.0 +850,4.0,0.0,0.0,1000000.0 +850,4.0,0.0,0.0,100000000.0 +850,4.0,0.0,0.0,10000000000.0 +850,4.5,0.0,0.0,100.0 +850,4.5,0.0,0.0,10000.0 +850,4.5,0.0,0.0,1000000.0 +850,4.5,0.0,0.0,100000000.0 +850,4.5,0.0,0.0,10000000000.0 +850,5.0,0.0,0.0,100.0 +850,5.0,0.0,0.0,10000.0 +850,5.0,0.0,0.0,1000000.0 +850,5.0,0.0,0.0,100000000.0 +850,5.0,0.0,0.0,10000000000.0 +850,5.5,0.0,0.0,100.0 +850,5.5,0.0,0.0,10000.0 +850,5.5,0.0,0.0,1000000.0 +850,5.5,0.0,0.0,100000000.0 +850,5.5,0.0,0.0,10000000000.0 +900,4.0,0.0,0.0,100.0 +900,4.0,0.0,0.0,10000.0 +900,4.0,0.0,0.0,1000000.0 +900,4.0,0.0,0.0,100000000.0 +900,4.0,0.0,0.0,10000000000.0 +900,4.5,0.0,0.0,100.0 +900,4.5,0.0,0.0,10000.0 +900,4.5,0.0,0.0,1000000.0 +900,4.5,0.0,0.0,100000000.0 +900,4.5,0.0,0.0,10000000000.0 +900,5.0,0.0,0.0,100.0 +900,5.0,0.0,0.0,10000.0 +900,5.0,0.0,0.0,1000000.0 +900,5.0,0.0,0.0,100000000.0 +900,5.0,0.0,0.0,10000000000.0 +900,5.5,0.0,0.0,100.0 +900,5.5,0.0,0.0,10000.0 +900,5.5,0.0,0.0,1000000.0 +900,5.5,0.0,0.0,100000000.0 +900,5.5,0.0,0.0,10000000000.0 +950,4.0,0.0,0.0,100.0 +950,4.0,0.0,0.0,10000.0 +950,4.0,0.0,0.0,1000000.0 +950,4.0,0.0,0.0,100000000.0 +950,4.0,0.0,0.0,10000000000.0 +950,4.5,0.0,0.0,100.0 +950,4.5,0.0,0.0,10000.0 +950,4.5,0.0,0.0,1000000.0 +950,4.5,0.0,0.0,100000000.0 +950,4.5,0.0,0.0,10000000000.0 +950,5.0,0.0,0.0,100.0 +950,5.0,0.0,0.0,10000.0 +950,5.0,0.0,0.0,1000000.0 +950,5.0,0.0,0.0,100000000.0 +950,5.0,0.0,0.0,10000000000.0 +950,5.5,0.0,0.0,100.0 +950,5.5,0.0,0.0,10000.0 +950,5.5,0.0,0.0,1000000.0 +950,5.5,0.0,0.0,100000000.0 +950,5.5,0.0,0.0,10000000000.0 +1000,4.0,0.0,0.0,100.0 +1000,4.0,0.0,0.0,10000.0 +1000,4.0,0.0,0.0,1000000.0 +1000,4.0,0.0,0.0,100000000.0 +1000,4.0,0.0,0.0,10000000000.0 +1000,4.5,0.0,0.0,100.0 +1000,4.5,0.0,0.0,10000.0 +1000,4.5,0.0,0.0,1000000.0 +1000,4.5,0.0,0.0,100000000.0 +1000,4.5,0.0,0.0,10000000000.0 +1000,5.0,0.0,0.0,100.0 +1000,5.0,0.0,0.0,10000.0 +1000,5.0,0.0,0.0,1000000.0 +1000,5.0,0.0,0.0,100000000.0 +1000,5.0,0.0,0.0,10000000000.0 +1000,5.5,0.0,0.0,100.0 +1000,5.5,0.0,0.0,10000.0 +1000,5.5,0.0,0.0,1000000.0 +1000,5.5,0.0,0.0,100000000.0 +1000,5.5,0.0,0.0,10000000000.0 +1050,4.0,0.0,0.0,100.0 +1050,4.0,0.0,0.0,10000.0 +1050,4.0,0.0,0.0,1000000.0 +1050,4.0,0.0,0.0,100000000.0 +1050,4.0,0.0,0.0,10000000000.0 +1050,4.5,0.0,0.0,100.0 +1050,4.5,0.0,0.0,10000.0 +1050,4.5,0.0,0.0,1000000.0 +1050,4.5,0.0,0.0,100000000.0 +1050,4.5,0.0,0.0,10000000000.0 +1050,5.0,0.0,0.0,100.0 +1050,5.0,0.0,0.0,10000.0 +1050,5.0,0.0,0.0,1000000.0 +1050,5.0,0.0,0.0,100000000.0 +1050,5.0,0.0,0.0,10000000000.0 +1050,5.5,0.0,0.0,100.0 +1050,5.5,0.0,0.0,10000.0 +1050,5.5,0.0,0.0,1000000.0 +1050,5.5,0.0,0.0,100000000.0 +1050,5.5,0.0,0.0,10000000000.0 +1100,4.0,0.0,0.0,100.0 +1100,4.0,0.0,0.0,10000.0 +1100,4.0,0.0,0.0,1000000.0 +1100,4.0,0.0,0.0,100000000.0 +1100,4.0,0.0,0.0,10000000000.0 +1100,4.5,0.0,0.0,100.0 +1100,4.5,0.0,0.0,10000.0 +1100,4.5,0.0,0.0,1000000.0 +1100,4.5,0.0,0.0,100000000.0 +1100,4.5,0.0,0.0,10000000000.0 +1100,5.0,0.0,0.0,100.0 +1100,5.0,0.0,0.0,10000.0 +1100,5.0,0.0,0.0,1000000.0 +1100,5.0,0.0,0.0,100000000.0 +1100,5.0,0.0,0.0,10000000000.0 +1100,5.5,0.0,0.0,100.0 +1100,5.5,0.0,0.0,10000.0 +1100,5.5,0.0,0.0,1000000.0 +1100,5.5,0.0,0.0,100000000.0 +1100,5.5,0.0,0.0,10000000000.0 +1150,4.0,0.0,0.0,100.0 +1150,4.0,0.0,0.0,10000.0 +1150,4.0,0.0,0.0,1000000.0 +1150,4.0,0.0,0.0,100000000.0 +1150,4.0,0.0,0.0,10000000000.0 +1150,4.5,0.0,0.0,100.0 +1150,4.5,0.0,0.0,10000.0 +1150,4.5,0.0,0.0,1000000.0 +1150,4.5,0.0,0.0,100000000.0 +1150,4.5,0.0,0.0,10000000000.0 +1150,5.0,0.0,0.0,100.0 +1150,5.0,0.0,0.0,10000.0 +1150,5.0,0.0,0.0,1000000.0 +1150,5.0,0.0,0.0,100000000.0 +1150,5.0,0.0,0.0,10000000000.0 +1150,5.5,0.0,0.0,100.0 +1150,5.5,0.0,0.0,10000.0 +1150,5.5,0.0,0.0,1000000.0 +1150,5.5,0.0,0.0,100000000.0 +1150,5.5,0.0,0.0,10000000000.0 +1200,4.0,0.0,0.0,100.0 +1200,4.0,0.0,0.0,10000.0 +1200,4.0,0.0,0.0,1000000.0 +1200,4.0,0.0,0.0,100000000.0 +1200,4.0,0.0,0.0,10000000000.0 +1200,4.5,0.0,0.0,100.0 +1200,4.5,0.0,0.0,10000.0 +1200,4.5,0.0,0.0,1000000.0 +1200,4.5,0.0,0.0,100000000.0 +1200,4.5,0.0,0.0,10000000000.0 +1200,5.0,0.0,0.0,100.0 +1200,5.0,0.0,0.0,10000.0 +1200,5.0,0.0,0.0,1000000.0 +1200,5.0,0.0,0.0,100000000.0 +1200,5.0,0.0,0.0,10000000000.0 +1200,5.5,0.0,0.0,100.0 +1200,5.5,0.0,0.0,10000.0 +1200,5.5,0.0,0.0,1000000.0 +1200,5.5,0.0,0.0,100000000.0 +1200,5.5,0.0,0.0,10000000000.0 +1250,4.0,0.0,0.0,100.0 +1250,4.0,0.0,0.0,10000.0 +1250,4.0,0.0,0.0,1000000.0 +1250,4.0,0.0,0.0,100000000.0 +1250,4.0,0.0,0.0,10000000000.0 +1250,4.5,0.0,0.0,100.0 +1250,4.5,0.0,0.0,10000.0 +1250,4.5,0.0,0.0,1000000.0 +1250,4.5,0.0,0.0,100000000.0 +1250,4.5,0.0,0.0,10000000000.0 +1250,5.0,0.0,0.0,100.0 +1250,5.0,0.0,0.0,10000.0 +1250,5.0,0.0,0.0,1000000.0 +1250,5.0,0.0,0.0,100000000.0 +1250,5.0,0.0,0.0,10000000000.0 +1250,5.5,0.0,0.0,100.0 +1250,5.5,0.0,0.0,10000.0 +1250,5.5,0.0,0.0,1000000.0 +1250,5.5,0.0,0.0,100000000.0 +1250,5.5,0.0,0.0,10000000000.0 +1300,4.0,0.0,0.0,100.0 +1300,4.0,0.0,0.0,10000.0 +1300,4.0,0.0,0.0,1000000.0 +1300,4.0,0.0,0.0,100000000.0 +1300,4.0,0.0,0.0,10000000000.0 +1300,4.5,0.0,0.0,100.0 +1300,4.5,0.0,0.0,10000.0 +1300,4.5,0.0,0.0,1000000.0 +1300,4.5,0.0,0.0,100000000.0 +1300,4.5,0.0,0.0,10000000000.0 +1300,5.0,0.0,0.0,100.0 +1300,5.0,0.0,0.0,10000.0 +1300,5.0,0.0,0.0,1000000.0 +1300,5.0,0.0,0.0,100000000.0 +1300,5.0,0.0,0.0,10000000000.0 +1300,5.5,0.0,0.0,100.0 +1300,5.5,0.0,0.0,10000.0 +1300,5.5,0.0,0.0,1000000.0 +1300,5.5,0.0,0.0,100000000.0 +1300,5.5,0.0,0.0,10000000000.0 +1350,4.0,0.0,0.0,100.0 +1350,4.0,0.0,0.0,10000.0 +1350,4.0,0.0,0.0,1000000.0 +1350,4.0,0.0,0.0,100000000.0 +1350,4.0,0.0,0.0,10000000000.0 +1350,4.5,0.0,0.0,100.0 +1350,4.5,0.0,0.0,10000.0 +1350,4.5,0.0,0.0,1000000.0 +1350,4.5,0.0,0.0,100000000.0 +1350,4.5,0.0,0.0,10000000000.0 +1350,5.0,0.0,0.0,100.0 +1350,5.0,0.0,0.0,10000.0 +1350,5.0,0.0,0.0,1000000.0 +1350,5.0,0.0,0.0,100000000.0 +1350,5.0,0.0,0.0,10000000000.0 +1350,5.5,0.0,0.0,100.0 +1350,5.5,0.0,0.0,10000.0 +1350,5.5,0.0,0.0,1000000.0 +1350,5.5,0.0,0.0,100000000.0 +1350,5.5,0.0,0.0,10000000000.0 diff --git a/smart/libraries/SONORA_2021/SONORA_2021_gridparams.csv b/smart/libraries/SONORA_2021/SONORA_2021_gridparams.csv new file mode 100644 index 0000000..13259ed --- /dev/null +++ b/smart/libraries/SONORA_2021/SONORA_2021_gridparams.csv @@ -0,0 +1,820 @@ +teff,logg,Y,f_rain,kzz,FeH,CO,f_hole +200,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +200,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +200,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +200,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +200,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +200,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +200,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +200,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +200,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +200,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +200,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +200,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +200,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +200,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +200,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +200,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +200,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +200,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +200,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +200,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +200,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +225,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +225,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +225,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +225,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +225,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +225,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +225,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +225,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +225,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +225,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +225,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +225,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +225,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +225,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +225,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +225,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +225,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +225,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +225,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +225,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +225,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +250,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +250,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +250,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +250,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +250,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +250,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +250,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +250,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +250,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +250,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +250,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +250,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +250,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +250,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +250,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +250,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +250,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +250,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +250,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +250,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +250,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +275,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +275,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +275,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +275,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +275,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +275,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +275,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +275,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +275,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +275,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +275,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +275,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +275,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +275,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +275,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +275,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +275,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +275,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +275,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +275,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +275,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +300,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +300,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +300,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +300,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +300,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +300,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +300,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +300,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +300,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +300,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +300,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +300,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +300,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +300,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +300,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +300,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +300,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +300,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +300,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +300,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +300,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +325,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +325,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +325,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +325,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +325,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +325,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +325,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +325,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +325,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +325,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +325,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +325,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +325,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +325,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +325,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +325,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +325,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +325,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +325,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +325,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +325,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +350,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +350,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +350,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +350,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +350,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +350,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +350,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +350,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +350,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +350,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +350,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +350,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +350,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +350,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +350,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +350,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +350,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +350,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +350,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +350,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +350,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +375,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +375,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +375,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +375,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +375,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +375,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +375,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +375,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +375,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +375,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +375,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +375,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +375,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +375,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +375,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +375,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +375,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +375,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +375,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +375,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +375,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +400,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +400,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +400,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +400,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +400,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +400,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +400,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +400,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +400,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +400,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +400,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +400,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +400,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +400,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +400,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +400,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +400,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +400,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +400,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +400,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +400,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +425,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +425,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +425,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +425,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +425,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +425,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +425,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +425,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +425,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +425,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +425,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +425,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +425,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +425,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +425,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +425,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +425,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +425,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +425,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +425,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +425,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +450,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +450,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +450,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +450,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +450,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +450,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +450,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +450,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +450,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +450,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +450,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +450,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +450,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +450,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +450,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +450,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +450,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +450,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +450,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +450,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +450,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +475,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +475,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +475,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +475,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +475,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +475,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +475,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +475,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +475,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +475,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +475,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +475,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +475,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +475,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +475,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +475,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +475,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +475,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +475,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +475,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +475,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +500,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +500,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +500,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +500,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +500,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +500,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +500,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +500,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +500,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +500,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +500,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +500,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +500,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +500,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +500,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +500,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +500,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +500,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +500,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +500,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +500,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +525,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +525,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +525,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +525,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +525,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +525,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +525,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +525,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +525,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +525,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +525,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +525,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +525,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +525,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +525,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +525,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +525,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +525,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +525,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +525,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +525,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +550,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +550,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +550,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +550,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +550,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +550,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +550,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +550,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +550,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +550,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +550,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +550,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +550,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +550,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +550,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +550,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +550,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +550,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +550,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +550,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +550,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +575,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +575,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +575,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +575,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +575,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +575,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +575,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +575,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +575,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +575,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +575,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +575,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +575,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +575,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +575,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +575,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +575,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +575,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +575,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +575,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +575,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +600,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +600,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +600,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +600,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +600,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +600,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +600,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +600,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +600,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +600,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +600,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +600,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +600,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +600,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +600,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +600,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +600,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +600,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +600,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +600,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +600,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +650,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +650,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +650,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +650,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +650,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +650,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +650,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +650,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +650,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +650,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +650,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +650,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +650,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +650,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +650,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +650,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +650,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +650,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +650,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +650,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +650,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +700,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +700,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +700,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +700,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +700,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +700,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +700,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +700,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +700,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +700,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +700,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +700,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +700,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +700,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +700,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +700,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +700,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +700,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +700,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +700,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +700,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +750,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +750,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +750,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +750,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +750,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +750,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +750,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +750,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +750,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +750,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +750,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +750,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +750,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +750,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +750,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +750,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +750,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +750,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +750,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +750,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +750,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +800,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +800,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +800,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +800,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +800,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +800,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +800,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +800,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +800,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +800,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +800,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +800,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +800,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +800,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +800,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +800,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +800,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +800,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +800,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +800,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +800,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +850,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +850,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +850,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +850,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +850,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +850,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +850,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +850,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +850,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +850,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +850,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +850,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +850,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +850,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +850,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +850,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +850,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +850,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +850,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +850,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +850,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +900,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +900,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +900,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +900,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +900,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +900,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +900,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +900,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +900,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +900,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +900,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +900,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +900,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +900,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +900,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +900,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +900,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +900,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +900,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +900,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +900,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +950,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +950,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +950,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +950,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +950,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +950,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +950,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +950,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +950,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +950,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +950,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +950,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +950,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +950,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +950,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +950,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +950,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +950,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +950,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +950,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +950,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1000,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1000,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1000,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1000,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1000,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1000,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +1000,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +1000,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1000,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1000,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1000,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1100,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1100,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1100,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1100,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1100,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1100,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +1100,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +1100,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1100,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1100,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1100,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1200,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1200,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1200,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1200,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1200,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1200,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +1200,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +1200,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1200,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1200,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1200,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1300,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1300,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1300,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1300,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1300,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1300,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +1300,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +1300,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1300,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1300,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1300,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1400,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1400,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1400,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1400,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1400,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1400,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +1400,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +1400,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1400,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1400,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1400,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1500,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1500,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1500,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1500,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1500,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1500,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +1500,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +1500,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1500,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1500,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1500,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1600,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1600,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1600,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1600,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1600,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1600,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +1600,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +1600,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1600,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1600,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1600,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1700,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1700,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1700,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1700,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1700,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1700,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +1700,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +1700,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1700,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1700,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1700,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1800,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1800,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1800,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1800,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1800,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1800,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +1800,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +1800,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1800,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1800,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1800,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1900,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1900,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1900,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1900,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1900,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +1900,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +1900,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +1900,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +1900,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +1900,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +1900,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2000,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +2000,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2000,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2000,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2000,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2000,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +2000,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +2000,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +2000,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2000,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2000,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2100,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +2100,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2100,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2100,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2100,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2100,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +2100,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +2100,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +2100,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2100,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2100,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2200,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +2200,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2200,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2200,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2200,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2200,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +2200,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +2200,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +2200,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2200,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2200,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2300,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +2300,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2300,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2300,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2300,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2300,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +2300,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +2300,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +2300,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2300,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2300,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,3.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2400,3.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,3.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +2400,3.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,3.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2400,3.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,3.75,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,4.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2400,4.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,4.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,4.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2400,4.5,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,4.75,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,5.0,0.28,0.0,100000.0,-0.5,1.0,1.0 +2400,5.0,0.28,0.0,100000.0,0.0,0.5,1.0 +2400,5.0,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,5.0,0.28,0.0,100000.0,0.0,1.5,1.0 +2400,5.25,0.28,0.0,100000.0,-0.5,1.0,1.0 +2400,5.25,0.28,0.0,100000.0,0.0,1.0,1.0 +2400,5.5,0.28,0.0,100000.0,-0.5,1.0,1.0 +2400,5.5,0.28,0.0,100000.0,0.0,1.0,1.0 diff --git a/smart/utils/interpolations.py b/smart/utils/interpolations.py index 78ee61e..1be0436 100644 --- a/smart/utils/interpolations.py +++ b/smart/utils/interpolations.py @@ -21,6 +21,12 @@ def bilinear_interpolation(x, y, points): (x0, y0, q00), (x0, y1, q01), (x1, y0, q10), (x1, y1, q11) = points + # Pull the data out of the Table object + #x0 = x0.data[0] + #x1 = x1.data[0] + #y0 = y0.data[0] + #y1 = y1.data[0] + # Check if we just need linear interpolation! if x0 == x1: interpFlux = 10**( ( q00 * ( y1 - y ) + q11 * ( y - y0 ) ) / ( ( y1 - y0 ) ) ) @@ -119,6 +125,7 @@ def quadlinear_interpolation(x, y, z, t, points): (x1, y0, z0, t1, q1001), (x0, y1, z0, t1, q0101), (x0, y0, z1, t1, q0011), (x1, y0, z1, t1, q1011), (x0, y1, z1, t1, q0111), \ (x1, y1, z1, t1, q1111), (x0, y1, z1, t0, q0110), (x1, y0, z1, t0, q1010), (x1, y1, z0, t0, q1100), (x1, y1, z0, t1, q1101), \ (x1, y1, z1, t0, q1110) = points + #print(x0, z1, y0, y1, z0, z1, t0, t1) #x0 = x0.data[0] #x1 = x1.data[0] #y0 = y0.data[0] diff --git a/smart/wavelength_calibration/telluric_wavelength_fit.py b/smart/wavelength_calibration/telluric_wavelength_fit.py index a8d9fd6..d763063 100644 --- a/smart/wavelength_calibration/telluric_wavelength_fit.py +++ b/smart/wavelength_calibration/telluric_wavelength_fit.py @@ -46,7 +46,7 @@ def waveSolution(pixel, wfit0, wfit1, wfit2, wfit3, wfit4, wfit5, c3, c4, **kwar """ order = kwargs.get('order', None) - + wave_sol = wfit0 + wfit1*pixel + wfit2*pixel**2 + \ (wfit3 + wfit4*pixel + wfit5*pixel**2)/order + \ c3*pixel**3 + c4*pixel**4 @@ -733,10 +733,9 @@ def wavelengthSolutionFit(data, model, order, **kwargs): x3 = np.arange(x2[-1]+width//2, spec_range-endwidth, step_size) width_ranges = np.concatenate( [ x1, x2, x3 ] ) width_range_centers = np.concatenate( [ x1 + endwidth, x2 + width//2, x3 + endwidth ] ) - widths = np.concatenate( [ np.zeros(len(x1), dtype=int) + endwidth, - np.zeros(len(x2), dtype=int) + width, - np.zeros(len(x3), dtype=int) + endwidth ] ) - + widths = np.concatenate( [ np.zeros(len(x1), dtype=np.int64) + endwidth, + np.zeros(len(x2), dtype=np.int64) + width, + np.zeros(len(x3), dtype=np.int64) + endwidth ] ) #print(i, width, width//2, spec_range+pixel_range_start-width//2, spec_range) #print(spec_range+pixel_range_start) #print(i, width, width//2, spec_range-width, spec_range) @@ -749,7 +748,7 @@ def wavelengthSolutionFit(data, model, order, **kwargs): spec_range = len(pixel) # window range coverage for xcorr width_ranges = np.arange(pixel_range_start, spec_range+pixel_range_start-width, step_size) width_range_centers = np.arange(pixel_range_start, spec_range+pixel_range_start-width, step_size) + width//2 - widths = np.zeros(len(width_ranges), dtype=int) + width + widths = np.zeros(len(width_ranges), dtype=np.int64) + width #print(i, width, spec_range) #print(width_range_centers) #print(widths)