In [ ]:
from collections import OrderedDict
import astropy.units as u
import astropy.coordinates as coord
import numpy as np
from numpy.polynomial.polynomial import polyval
import matplotlib.pyplot as pl
pl.style.use('apw-notebook')
%matplotlib inline
import h5py
from scipy.ndimage import gaussian_filter
from scipy.stats import scoreatpercentile
from astroML.density_estimation import XDGMM
from astroML.utils import log_multivariate_gaussian
from scipy.misc import logsumexp
In [ ]:
XCov_filename = "/Users/adrian/projects/globber/data/ngc5897/XCov_med.h5"
In [ ]:
with h5py.File(XCov_filename, "r") as f:
ra = f['search']['ra'][:]
dec = f['search']['dec'][:]
allX = f['search']['X'][:]
allCov = f['search']['Cov'][:]
nonX = f['control']['X'][:]
nonCov = f['control']['Cov'][:]
cluX = f['cluster']['X'][:]
isoX = f['isochrone']['X'][:]
non_ll = f['search']['control_log_likelihood'][:]
iso_ll = f['search']['isochrone_15.55_log_likelihood'][:]
idx = np.isfinite(non_ll)
ra = ra[idx]
dec = dec[idx]
allX = allX[idx]
allCov = allCov[idx]
non_ll = non_ll[idx]
iso_ll = iso_ll[idx]
In [ ]:
bins = np.linspace(-50, 25, 64)
pl.hist(iso_ll, bins=bins, alpha=0.5)
pl.hist(non_ll, bins=bins, alpha=0.5)
# pl.hist(ll, bins=bins, alpha=0.5)
# pl.axvline(threshold)
pl.yscale('log')
In [ ]:
def worker(allX, allCov, otherX, otherCov, smooth=None, alpha=0.02):
V = allCov[:,np.newaxis,:,:] + otherCov
if smooth is not None:
H = np.zeros(allCov.shape[-2:]) + smooth**2
V += H[np.newaxis,np.newaxis]
ll = log_multivariate_gaussian(allX[:,np.newaxis,:], otherX, V)
N = ll.shape[1]
bg = N*alpha/(1-alpha) * np.ones((ll.shape[0],1))
ll = np.hstack((ll,bg))
ll = logsumexp(ll, axis=-1) - np.log(N*(1-alpha))
return ll
In [ ]:
bad_idx, = np.where(non_ll < -10)
bad_ra = ra[bad_idx]
bad_dec = dec[bad_idx]
bad_idx = bad_idx[(bad_ra > ps1['ra'].min()) & (bad_ra < ps1['ra'].max()) &
(bad_dec > ps1['dec'].min()) & (bad_dec < ps1['dec'].max())]
In [ ]:
fig,axes = pl.subplots(1,3,figsize=(12,6),sharex=True,sharey=True)
for i,j in enumerate([1,2,3]):
axes[i].plot(nonX[::10,j], nonX[::10,0], ls='none', marker=',')
axes[0].set_xlim(0,1.)
axes[0].set_ylim(21,14)
In [ ]:
fig,axes = pl.subplots(1,3,figsize=(12,6),sharex=True,sharey=True)
# derp_idx = allX[bad_idx,1] < 0.1
for i,j in enumerate([1,2,3]):
axes[i].plot(allX[bad_idx,j], allX[bad_idx,0], ls='none')
for i,j in enumerate([1,2,3]):
axes[i].plot(allX[bad_idx[0],j], allX[bad_idx[0],0], ls='none', color='r', marker='o')
axes[0].set_xlim(0,1.)
axes[0].set_ylim(21,14)
In [ ]:
ll = worker(allX[bad_idx], allCov[bad_idx],
nonX[::1000], nonCov[::1000], smooth=0.05, alpha=0.1E-2)
In [ ]:
ll
In [ ]:
ps1 = np.load("/Users/adrian/projects/globber/data/ngc5897/PS1_stars_pv3_dered_sm.npy")
In [ ]:
ps1_c = coord.SkyCoord(ra=ps1['ra']*u.degree, dec=ps1['dec']*u.degree)
In [ ]:
yo = 1
bad_c = coord.SkyCoord(ra=ra[bad_idx[yo]]*u.degree, dec=dec[bad_idx[yo]]*u.degree)
ll[yo].max()
In [ ]:
match_ix,sep,_ = bad_c.match_to_catalog_sky(ps1_c)
print(sep)
print(ps1[match_ix]['i'] - ps1[match_ix]['dered_i'])
In [ ]:
((ps1['i'] - ps1['dered_i']) > 0.2).sum()
In [ ]:
pl.hist(ps1['sg_r'], bins=np.linspace(-6.5,0.2,156))
pl.yscale('log')
In [ ]: