Check the geometry of LSLGA galaxies derived from ellipse-fitting against the original geometry from Hyperleda.
In [2]:
import os, glob
import fitsio
import numpy as np
import matplotlib.pyplot as plt
from astropy.table import vstack, Table, hstack
In [3]:
import seaborn as sns
sns.set(context='talk', style='ticks', font_scale=1.0)
%matplotlib inline
In [4]:
lslgaver = b'L6'
lslgafile = '/global/cfs/cdirs/desi/users/ioannis/LSLGA-data-DR9fg/LSLGA-model-v6.0.fits'
#lslgafile = '/global/project/projectdirs/cosmo/staging/largegalaxies/v6.0/LSLGA-model-v6.0.fits'
#lslgafile = os.getenv('LARGEGALAXIES_CAT')
lslga = Table(fitsio.read(lslgafile))
print('Read {} galaxies from {}'.format(len(lslga), lslgafile))
#lslga
In [5]:
plslga = lslga[lslga['REF_CAT'] == lslgaver]
In [6]:
fig, (ax1, ax2, ax3) = plt.subplots(3, 1, figsize=(6, 14))
ax1.hexbin(np.log10(plslga['D25']), np.log10(plslga['D25_ORIG']), mincnt=1,
cmap=plt.cm.Blues_r)
#ax1.scatter(np.log10(lslga['D25']), np.log10(lslga['D25_ORIG']), s=15)
ax1.set_xlim(-0.7, 1)
ax1.set_ylim(-0.7, 1)
ax1.plot([-1, 1], [-1, 1], color='k', ls='--', lw=3, alpha=0.7)
ax1.set_xlabel(r'$\log_{10}\ D_{25}$ [ellipse-fit, arcmin]')
ax1.set_ylabel(r'$\log_{10}\ D_{25}$ [Hyperleda, arcmin]')
ax2.hexbin(plslga['PA'], plslga['PA_ORIG'], mincnt=1,
cmap=plt.cm.Blues_r)
ax2.set_xlabel('PA [ellipse-fit, degrees]')
ax2.set_ylabel('PA [Hyperleda, degrees]')
ax2.plot([0, 180], [0, 180], color='k', ls='--', lw=3, alpha=0.7)
ax3.hexbin(plslga['BA'], plslga['BA_ORIG'], mincnt=1,
cmap=plt.cm.Blues_r)
ax3.set_xlabel('b/a [ellipse-fit]')
ax3.set_ylabel('b/a [Hyperleda]')
ax3.plot([0, 1], [0, 1], color='k', ls='--', lw=3, alpha=0.7)
fig.subplots_adjust(hspace=0.3)
In [7]:
lslga[(lslga['LSLGA_ID'] > 0) * (lslga['D25'] == 0)]
Out[7]:
In [8]:
ff = Table.read('/global/cfs/cdirs/desi/users/ioannis/LSLGA-data-DR9fg/LSLGA-reject-v6.0.fits')
ff
Out[8]:
In [9]:
rr = Table.read('/global/cfs/cdirs/desi/users/ioannis/LSLGA-data-DR9fg/LSLGA-inspect-v6.0.fits')
rr
Out[9]:
In [10]:
plslga.colnames
Out[10]:
In [11]:
def qa_radii(ax, xx, yy, xlim, ylim):
ax.hexbin(np.log10(xx), np.log10(yy), mincnt=1, cmap=plt.cm.Blues_r)
ax.set_xlim(xlim)
ax.set_ylim(ylim)
#ax.plot([-1, 1], [-1, 1], color='k', ls='--', lw=3, alpha=0.7)
#ax.set_xlabel(r'$\log_{10}\ D_{25}$ [ellipse-fit, arcmin]')
#ax.set_ylabel(r'$\log_{10}\ D_{25}$ [Hyperleda, arcmin]')
In [19]:
fig, ax = plt.subplots(2, 2, figsize=(12, 8), sharey=True, sharex=True)
for ax1, typ in zip(ax.flat, ['REX', 'DEV', 'EXP', 'SER']):
ww = np.where(plslga['TYPE'] == typ)[0]
xx = plslga['RADIUS_SB26'][ww] / 60
yy = plslga['RADIUS_SB26'][ww] / plslga['RADIUS_SB25'][ww]
print(typ, np.median(yy))
ax1.set_xlim(-1, 0.7)
ax1.set_ylim(-0.1, 0.3)
ax1.axhline(y=0, ls='-', lw=2, color='gray')
ax1.axhline(y=np.log10(1.25), ls='--', lw=2, color='red')
if typ == 'SER':
ax1.hexbin(np.log10(xx), np.log10(yy), mincnt=1, cmap=plt.cm.Blues_r)
else:
ax1.scatter(np.log10(xx), np.log10(yy), s=5, color='cornflowerblue')
ax1.text(0.9, 0.9, '{} (N={})'.format(typ, len(ww)),
transform=ax1.transAxes, ha='right', va='center',
fontsize=14)
ax[0, 0].set_ylabel(r'$\log_{10}\ R(26) / R(25)$')
ax[1, 0].set_ylabel(r'$\log_{10}\ R(26) / R(25)$')
ax[1, 0].set_xlabel(r'$\log_{10}\ R(26)$ (arcmin)')
ax[1, 1].set_xlabel(r'$\log_{10}\ R(26)$ (arcmin)')
fig.subplots_adjust(hspace=0.1, wspace=0.1)
print('Median over all types: {:.4f}'.format(np.median(plslga['RADIUS_SB26'] / plslga['RADIUS_SB25'])))
In [20]:
fig, ax = plt.subplots(2, 2, figsize=(12, 8), sharey=True, sharex=True)
for ax1, typ in zip(ax.flat, ['REX', 'DEV', 'EXP', 'SER']):
ww = np.where(plslga['TYPE'] == typ)[0]
xx = plslga['RADIUS_SB26'][ww] / 60
yy = plslga['RADIUS_SB26'][ww] / plslga['RADIUS_SB24'][ww]
print(typ, np.median(yy))
ax1.set_xlim(-1, 0.7)
ax1.set_ylim(-0.1, 0.6)
ax1.axhline(y=0, ls='-', lw=2, color='gray')
ax1.axhline(y=np.log10(1.25), ls='--', lw=2, color='red')
if typ == 'SER':
ax1.hexbin(np.log10(xx), np.log10(yy), mincnt=1, cmap=plt.cm.Blues_r)
else:
ax1.scatter(np.log10(xx), np.log10(yy), s=5, color='cornflowerblue')
ax1.text(0.9, 0.9, '{} (N={})'.format(typ, len(ww)),
transform=ax1.transAxes, ha='right', va='center',
fontsize=14)
ax[0, 0].set_ylabel(r'$\log_{10}\ R(26) / R(24)$')
ax[1, 0].set_ylabel(r'$\log_{10}\ R(26) / R(24)$')
ax[1, 0].set_xlabel(r'$\log_{10}\ R(26)$ (arcmin)')
ax[1, 1].set_xlabel(r'$\log_{10}\ R(26)$ (arcmin)')
fig.subplots_adjust(hspace=0.1, wspace=0.1)
print('Median over all types: {:.4f}'.format(np.median(plslga['RADIUS_SB26'] / plslga['RADIUS_SB24'])))
In [ ]: