In [1]:
import splat
import wisps
from astropy.io import fits, ascii
import matplotlib.pyplot as plt
import glob
import pandas as pd
import numpy as np
%matplotlib inline
In [2]:
data='/Users/caganze/research/wisps/data/manjavacas/final_data_journal/*.csv'
In [3]:
splat.initiateStandards()
In [4]:
spectra=[]
for f in glob.glob(data):
try:
d=ascii.read(f).to_pandas()
s=wisps.Spectrum(wave=d.col1, flux=d.col2, noise=d.col3)
s._filename=f.split('/')[-1].split('.csv')[0]
spectra.append(s)
except:
pass
In [5]:
indices=pd.DataFrame([s.indices for s in spectra])
snrs=pd.DataFrame([s.snr for s in spectra])
ftests=pd.DataFrame.from_records([{'spex_chi': s.spex_chi, 'line_chi':s.line_chi, 'spt':s.spectral_type, 'f_test':s.f_test} for s in spectra])
In [6]:
df=pd.DataFrame()
for k in indices.columns: df[k]=indices[k]
for k in ftests.columns: df[k]=ftests[k]
for k in snrs.columns: df[k]=snrs[k]
df['name']=[s.filename for s in spectra]
#df['spectra']=spectra
In [7]:
df.to_pickle(wisps.LIBRARIES+'/manjavacas.pkl')
In [8]:
for s in spectra:
s.splat_spectrum.plot(ylabel=s.filename)
In [9]:
#ghjkla
#spex=wisps.spex_sample_ids(stype='spex_sample', from_file=False)
#spexids=pd.DataFrame([x for x in spex['Indices']])
#for k in spexids.columns: spex[k]=spexids[k]
#ref=wisps.Annotator.reformat_table(spexids)
df['spectra']=spectra
df=wisps.Annotator.reformat_table(df)
In [10]:
f=df[(df['CH_4/H-Cont'] <0.5) & (df['H-cont/J-Cont'] >0.6)].spectra.apply(lambda x: x.splat_spectrum.plot(ylabel=x.filename))
In [11]:
np.vstack(df.spt.values)[:,0]
Out[11]:
In [12]:
ydwarfs=df[np.vstack(df.spt.values)[:,0]>37]
#df[(df['CH_4/H-Cont'] <0.5) & (df['H-cont/J-Cont'] >0.6)]
In [13]:
schn='/Users/caganze/research/wisps/data/schneider/*.txt'
In [14]:
schntb=pd.read_csv('/Users/caganze/research/wisps/data/schneider2015.txt', delimiter=' ').drop(columns='Unnamed: 14')
In [15]:
def get_shortname(n):
return splat.designationToShortName(n).replace('J', 'WISE')
In [16]:
schntb['shortname']=schntb.Name.apply(get_shortname)
In [17]:
schntb
Out[17]:
In [18]:
spectra_schn=[]
shortnams=[]
for f in glob.glob(schn):
d=ascii.read(f).to_pandas()
shortname=(f.split('/')[-1]).split('.txt')[0]
s=wisps.Spectrum(wave=d.col1, flux=d.col2, noise=d.col3)
s._filename=shortname
spectra_schn.append(s)
shortnams.append((f.split('/')[-1]).split('.txt')[0])
In [19]:
indices=pd.DataFrame([s.indices for s in spectra_schn])
snrs=pd.DataFrame([s.snr for s in spectra_schn])
fs=pd.DataFrame.from_records([{'spex_chi': s.spex_chi,
'line_chi':s.line_chi, 'spt':s.spectral_type, 'f_test':s.f_test} for s in spectra_schn])
In [20]:
df=pd.DataFrame()
df['name']=[s.filename.replace('.txt', '') for s in spectra_schn ]
df['shortname']=shortnams
In [21]:
new_df=df.join(indices).join(snrs).join(fs)
In [22]:
nf_df=new_df.merge(schntb)
In [23]:
#nf_df['spectra']=spectra_schn
In [24]:
nf_df.to_pickle(wisps.LIBRARIES+'/schneider.pkl')
In [25]:
dfnnn=wisps.Annotator.reformat_table(nf_df[wisps.INDEX_NAMES])
In [26]:
import wisps
import numpy as np
import splat as spl
In [27]:
nan=np.nan
In [28]:
distances=wisps.distance({'F110W': (nan, nan), 'F160W': (19.614, 0.004), 'F140W': (nan, nan)}, 20, 1)
In [29]:
ds=np.array([distances[k] for k in distances.keys() if ('dist' in k) and ('dist_er' not in k)])
ers=np.array([distances[k] for k in distances.keys() if 'dist_er' in k])
#distance is the weighted mean and std
nans=np.isnan(ds)
val, unc=spl.weightedMeanVar(ds[~nans], ers[~nans])
In [30]:
val, (unc**2+(ers[~nans]**2).sum())**0.5
Out[30]:
In [31]:
distances
Out[31]:
In [ ]: