In [46]:
from astropy.io import fits,ascii
import numpy as np
from matplotlib import pyplot as plt
import os
import sys
import warnings
warnings.filterwarnings('ignore')
from astropy.table import Table
from astropy.coordinates import SkyCoord
from scipy.stats import ks_2samp
from astropy import units as u

In [4]:
sys.path.append('/home/rfinn/github/APPSS/')

In [5]:
from a100sdss import ks, anderson

In [6]:
sys.path.append('/home/rfinn/github/LCS/python/Python3/')

In [7]:
from LCScommon import *


Running on coma

In [8]:
homedir = os.getenv("HOME")

In [9]:
def colormass(x1,y1,x2,y2,name1,name2, figname, hexbinflag=False,contourflag=False, \
             xmin=7.9, xmax=11.6, ymin=-1.2, ymax=1.2, contour_bins = 40, ncontour_levels=5,\
             xlabel='$\log_{10}(M_\star/M_\odot) $', ylabel='$(g-i)_{corrected} $', color2='c',\
             nhistbin=50, alphagray=.1):
    fig = plt.figure(figsize=(8,8))
    nrow = 4
    ncol = 4
    
    # for purposes of this plot, only keep data within the 
    # window specified by [xmin:xmax, ymin:ymax]
    
    keepflag1 = (x1 >= xmin) & (x1 <= xmax) & (y1 >= ymin) & (y1 <= ymax)
    keepflag2 = (x2 >= xmin) & (x2 <= xmax) & (y2 >= ymin) & (y2 <= ymax)
    
    x1 = x1[keepflag1]
    y1 = y1[keepflag1]
    
    x2 = x2[keepflag2]
    y2 = y2[keepflag2]
    
    ax1 = plt.subplot2grid((nrow,ncol),(1,0),rowspan=nrow-1,colspan=ncol-1, fig=fig)
    if hexbinflag:
        #t1 = plt.hist2d(x1,y1,bins=100,cmap='gray_r')
        #H, xbins,ybins = np.histogram2d(x1,y1,bins=20)
        #extent = [xbins[0], xbins[-1], ybins[0], ybins[-1]]
        #plt.contour(np.log10(H.T+1),  10, extent = extent, zorder=1,colors='k')
        #plt.hexbin(xvar2,yvar2,bins='log',cmap='Blues', gridsize=100)

        plt.hexbin(x1,y1,bins='log',cmap='gray_r', gridsize=75,label=name1)
    else:
        plt.plot(x1,y1,'k.',alpha=alphagray,label=name1, zorder=2)
    if contourflag:
        H, xbins,ybins = np.histogram2d(x2,y2,bins=contour_bins)
        extent = [xbins[0], xbins[-1], ybins[0], ybins[-1]]
        plt.contour((H.T), levels=ncontour_levels, extent = extent, zorder=1,colors=color2, label='__nolegend__')
        #plt.legend()
    else:
        plt.plot(x2,y2,'c.',color=color2,alpha=.3, label=name2)
        
        
        #plt.legend()
    #sns.kdeplot(agc['LogMstarTaylor'][keepagc],agc['gmi_corrected'][keepagc])#,bins='log',gridsize=200,cmap='blue_r')
    #plt.colorbar()
    
    plt.axis([xmin,xmax,ymin,ymax])
    plt.xticks(fontsize=12)
    plt.yticks(fontsize=12)
    plt.xlabel(xlabel,fontsize=22)
    plt.ylabel(ylabel,fontsize=22)
    #plt.axis([7.9,11.6,-.05,2])
    ax2 = plt.subplot2grid((nrow,ncol),(0,0),rowspan=1,colspan=ncol-1, fig=fig, sharex = ax1, yticks=[])
    t = plt.hist(x1, normed=True, bins=nhistbin,color='k',histtype='step',lw=1.5, label=name1)
    t = plt.hist(x2, normed=True, bins=nhistbin,color=color2,histtype='step',lw=1.5, label=name2)
    #plt.legend()
    ax2.legend(fontsize=10,loc='upper left')
    ax2.xaxis.tick_top()
    ax3 = plt.subplot2grid((nrow,ncol),(1,ncol-1),rowspan=nrow-1,colspan=1, fig=fig, sharey = ax1, xticks=[])
    t=plt.hist(y1, normed=True, orientation='horizontal',bins=nhistbin,color='k',histtype='step',lw=1.5, label=name1)
    t=plt.hist(y2, normed=True, orientation='horizontal',bins=nhistbin,color=color2,histtype='step',lw=1.5, label=name2)
    
    plt.yticks(rotation='horizontal')
    ax3.yaxis.tick_right()
    plt.savefig(figname)

    print('############################################################# ')
    print('KS test comparising galaxies within range shown on the plot')
    print('')
    print('STELLAR MASS')
    t = ks(x1,x2,run_anderson=False)
    print('')
    print('COLOR')
    t = ks(y1,y2,run_anderson=False)

In [10]:
def plotsalim07():
    #plot the main sequence from Salim+07 for a Chabrier IMF

    lmstar=np.arange(8.5,11.5,0.1)

    #use their equation 11 for pure SF galaxies
    lssfr = -0.35*(lmstar - 10) - 9.83

    #use their equation 12 for color-selected galaxies including
    #AGN/SF composites.  This is for log(Mstar)>9.4
    #lssfr = -0.53*(lmstar - 10) - 9.87

    lsfr = lmstar + lssfr -.3
    sfr = 10.**lsfr

    plt.plot(lmstar, lsfr, 'w-', lw=4)
    plt.plot(lmstar, lsfr, c='salmon',ls='-', lw=2, label='$Salim+07$')
    plt.plot(lmstar, lsfr-np.log10(5.), 'w--', lw=4)
    plt.plot(lmstar, lsfr-np.log10(5.), c='salmon',ls='--', lw=2)
        
def plotelbaz():
    #plot the main sequence from Elbaz+13
        
    xe=np.arange(8.5,11.5,.1)
    xe=10.**xe

    #I think that this comes from the intercept of the
    #Main-sequence curve in Fig. 18 of Elbaz+11.  They make the
    #assumption that galaxies at a fixed redshift have a constant
    #sSFR=SFR/Mstar.  This is the value at z=0.  This is
    #consistent with the value in their Eq. 13

    #This is for a Salpeter IMF
    ye=(.08e-9)*xe   
        
        
    plt.plot(log10(xe),np.log19(ye),'w-',lw=3)
    plt.plot(log10(xe),np.log10(ye),'k-',lw=2,label='$Elbaz+2011$')
    #plot(log10(xe),(2*ye),'w-',lw=4)
    #plot(log10(xe),(2*ye),'k:',lw=2,label='$2 \ SFR_{MS}$')
    plt.plot(log10(xe),np.log10(ye/5.),'w--',lw=4)
    plt.plot(log10(xe),np.log10(ye/5.),'k--',lw=2,label='$SFR_{MS}/5$')

In [11]:
lcs = fits.getdata(homedir+'/github/LCS/tables/LCS_all_size.fits')

In [12]:
mstar = lcs['MSTAR_50']
sfr = np.log10(lcs['SFR_ZDIST'])
core = (lcs['DR_R200'] < 0.6) & (lcs['DELTA_V'] < 3.)
ssfr = sfr-mstar
sf_flag = ssfr > -11.2

In [13]:
plt.figure(figsize=(8,6))
plt.plot(mstar[core],(sfr[core]),'ro',label='Core')
plt.plot(mstar[~core],(sfr[~core]),'bo',label='External')
plt.xlabel('M*')
plt.ylabel('SFR')
#plt.gca().set_yscale('log')
xl = np.linspace(8,12,100)
yl = -11.2 + xl
plt.plot(xl,yl,'k--')


Out[13]:
[<matplotlib.lines.Line2D at 0x7f89549e9b50>]

In [14]:
plt.figure()
mybins = np.linspace(-14,-8,20)
plt.hist(ssfr[core],bins=mybins,color='r',histtype='step',label='core')
plt.hist(ssfr[~core],bins=mybins,color='b',histtype='step',label='external')


Out[14]:
(array([ 0.,  0.,  0.,  1.,  7., 37., 33., 39., 31., 44., 70., 85., 83.,
        36., 17.,  6.,  4.,  2.,  0.]),
 array([-14.        , -13.68421053, -13.36842105, -13.05263158,
        -12.73684211, -12.42105263, -12.10526316, -11.78947368,
        -11.47368421, -11.15789474, -10.84210526, -10.52631579,
        -10.21052632,  -9.89473684,  -9.57894737,  -9.26315789,
         -8.94736842,  -8.63157895,  -8.31578947,  -8.        ]),
 <a list of 1 Patch objects>)

In [15]:
flag1 = core & sf_flag #& (mstar > 9.5)  & (mstar < 10.)
flag2 = ~core & sf_flag #& (mstar > 9.5) & (mstar < 10.)
colormass(mstar[flag1],(sfr[flag1]),mstar[flag2],(sfr[flag2]),'core','external','sfr-mstar.pdf',ymin=-3,ymax=1,nhistbin=20,ylabel='$\log_{10}(SFR)$')


############################################################# 
KS test comparising galaxies within range shown on the plot

STELLAR MASS
KS Test:
D =   0.11
p-vale = 0.11276 (prob that samples are from same distribution)

COLOR
KS Test:
D =   0.09
p-vale = 0.29821 (prob that samples are from same distribution)

So if we compare the core and external samples in the SFR-M* plane, we find no significant differences in either mass or SFR distribution.

Reading in LCSbase instead


In [16]:
%run ~/github/LCS/python/Python3/LCSbase.py


nothing happening here
(1800, 1800)
updating table

In [17]:
sfr = g.SFR_NUV_BEST
sfr = g.SFR_BEST
sfr = g.logSFR_NUV_BEST
#sfr = np.log10(g.s['SFR_ZDIST'])
mstar = g.logstellarmass
ssfr = sfr - mstar

sf_flag = ssfr > -11

In [18]:
core = g.membflag
core = (g.s['DR_R200'] < 0.6) & (g.s['DELTA_V'] < 3.)

Comparing UV and IR SFRs


In [19]:
plt.figure()
sfr_uv = g.logSFR_NUV_BEST
sfr_ir = np.log10(g.SFR_BEST)
plt.plot(sfr_ir,sfr_uv,'bo')
plt.xlabel('SFR IR')
plt.ylabel('SFR UV+IR')
xmin=-2
xmax=1
plt.axis([xmin,xmax,xmin,xmax])
xl = np.linspace(xmin,xmax,100)
plt.plot(xl,xl,'k-',lw=3)


Out[19]:
[<matplotlib.lines.Line2D at 0x7f8957ff0810>]

Using Kennicutt & Evans SFR Conversions from LCS catalog

Switched from chary & elbaz to kennicutt and Evans SFRs. The plot below shows UV, IR, and UV+IR SFRs. The IR is sensitive to highests SFRs, and UV misses or underestimates these. However, the UV detects lower SFRs that IR tracers miss. Thus, the optimum tracer of SF is UV+IR.


In [20]:
# compare distribution of SFRs
plt.figure()
mybins = np.linspace(-5,1,20)
plt.hist(g.logSFR_NUVIR_KE,histtype='step',color='c',bins=mybins,label='UV+IR')
plt.hist(g.logSFR_IR_KE,histtype='step',color='r',bins=mybins,label='IR')
plt.hist(g.logSFR_NUV_KE,histtype='step',color='b',bins=mybins,label='UV')
plt.legend(loc='upper left')


Out[20]:
<matplotlib.legend.Legend at 0x7f8957ff5650>

UV+IR probes to lower SFRs than IR alone.

SFR- Mstar with Kennicutt & Evans SFRs


In [21]:
sfr = g.logSFR_NUVIR_KE
mstar = g.logstellarmass
ssfr = sfr - mstar
flag1 = core #& sf_flag #& (mstar > 9.5)  & (mstar < 10.)
flag2 = ~core #& sf_flag #& (mstar > 9.5) & (mstar < 10.)
colormass(mstar[flag1],(sfr[flag1]),mstar[flag2],(sfr[flag2]),'core','external','sfr-mstar.pdf',ymin=-3,ymax=1,nhistbin=20,ylabel='$\log_{10}(SFR)$')


############################################################# 
KS test comparising galaxies within range shown on the plot

STELLAR MASS
KS Test:
D =   0.11
p-vale = 0.00005 (prob that samples are from same distribution)

COLOR
KS Test:
D =   0.17
p-vale = 0.00000 (prob that samples are from same distribution)

This difference we see between the core and external sample is do to the higher fraction of galaxies on the passive sequence. The SFRs on the passive sequence are not reliable and should be thought of as upper limits (according to Leroy+2019).

We also need to apply mass cuts.

plot distribution of sSFR to see where to cut the passive galaxies


In [22]:
plt.figure()
sfr = g.logSFR_NUVIR_KE
mstar = g.logstellarmass
ssfr = sfr - mstar
flag1 = core & (mstar > 9.5)  #& (mstar < 10.)
flag2 = ~core &  (mstar > 9.5) #& (mstar < 10.)
plt.hist(ssfr[~core],bins=np.linspace(-14,-8,30),color='b',histtype='step')
plt.hist(ssfr[core],bins=np.linspace(-14,-8,30),color='r',histtype='step')
plt.axvline(x=-11.5,color='k')
plt.axvline(x=-11.,color='k')


Out[22]:
<matplotlib.lines.Line2D at 0x7f8954494ed0>

Checking Redshift distribution to see if sample is in Leroy

Our internal analysis for LCS is limited by :

  • the size of the external comparison sample
  • the fact that the external sample is not a true field sample.

We are looking for other field samples to compare with.

Leroy+2019

This is a reprocessing of galaxies with $z < 3500$~km/s. There are only 18 galaxies in common with LCS. However, we can use this as a field comparison.

Salim+2017

The GALEX-SDSS-WISE Legacy survey has SFR and Mstar for SDSS galaxies out to $z < ??$

We have $\sim$1500 galaxies in common b/w LCS and GSWLC. This is definitely a better field sample. And we can use the SFRs and Mstar values from GSW for all comparisons (including LCS galaxies) so that there is in no potential systematics related to how these quantities are calculated.


In [24]:
plt.figure()
plt.hist(g.s['ZDIST']*3.e5)
plt.xlabel('Recession Velocity')
plt.ylabel('number')
plt.title('Recession Velocity Distribution of LCS')


Out[24]:
Text(0.5, 1.0, 'Recession Velocity Distribution of LCS')

Make LCS catalog to upload to IRSA


In [25]:
search_radius = 30.*np.ones(len(g.s)) # units are arcsec
newtable = Table([g.s['NSAID'],g.s['RA'],g.s['DEC'],search_radius],names=['galid','ra','dec','major'])
newtable.write('/home/rfinn/research/lcs_sample.txt',format='ipac',overwrite=True)

In [27]:
lcsmgs = ascii.read('/home/rfinn/research/LCS/tables/lcs_z0mgs_match.tbl',format='ipac')

In [28]:
# number of matches
print(sum(lcsmgs['ra'] > 0))


18

We have 18 galaxies that overlap between the Local Cluster Survey and the z0MGS. We compare the stellar mass and SFR estimates from LCS and z0MGS for these galaxies. Both the stellar mass and SFRs are consistent.


In [29]:
# compare SFRs
plt.figure(figsize=(8,6))
sfr1 = g.logSFR_NUVIR_KE
sfr2 = lcsmgs['logsfr']
plt.plot(sfr1,sfr2,'bo')
xl = np.linspace(-1.5,1,10)
plt.plot(xl,xl,'k-')
plt.xlabel('$\log_{10}(SFR \ LCS)$',fontsize=20)
plt.ylabel('$ \log_{10}(SFR \ z0MGS)$',fontsize=20)


Out[29]:
Text(0, 0.5, '$ \\log_{10}(SFR \\ z0MGS)$')

In [30]:
# compare SFRs
plt.figure()
sfr1 = g.logstellarmass
sfr2 = lcsmgs['logmass']
plt.plot(sfr1,sfr2,'bo')
xl = np.linspace(9,12,10)
plt.plot(xl,xl,'k-')
plt.xlabel('$\log_{10}(M_\star \ LCS/M_\odot)$',fontsize=20)
plt.ylabel('$\log_{10}(M_\star \ z0MGS/M_\odot)$',fontsize=20)


Out[30]:
Text(0, 0.5, '$\\log_{10}(M_\\star \\ z0MGS/M_\\odot)$')

The z0MGS SFRs are systematically higher than the K&E SFRs that I calculated for the LCS galaxies.

The slope of the z0MGS vs Moustakas stellar masses is less than 1, meaning that z0MGS has lower masses for high mass galaxies and higher masses for low-mass galaxies. Not sure what to make of this...

GSWLC is a better comparison sample, so skip z0MGS for now.

downloaded full z0MGS catalog from irsa


In [32]:
mgs = ascii.read('/home/rfinn/research/z0mgs/z0mgs_full_catalog.tbl',format='ipac')

In [33]:
mgs.columns


Out[33]:
<TableColumns names=('pgc_name','pgc','ra','dec','gl_deg','gb_deg','resolution','has_fuv','has_nuv','has_wise1','has_wise2','has_wise3','has_wise4','time_fuv','time_nuv','afuv','anuv','rms_fuv','std_fuv','rms_nuv','std_nuv','rms_wise1','std_wise1','rms_wise2','std_wise2','rms_wise3','std_wise3','rms_wise4','std_wise4','sat_effects_fuv','star_area_fuv','star_flux_fuv','star_flag_fuv','sat_effects_nuv','star_area_nuv','star_flux_nuv','star_flag_nuv','sat_effects_wise1','star_area_wise1','star_flux_wise1','star_flag_wise1','sat_effects_wise2','star_area_wise2','star_flux_wise2','star_flag_wise2','sat_effects_wise3','star_area_wise3','star_flux_wise3','star_flag_wise3','sat_effects_wise4','star_area_wise4','star_flux_wise4','star_flag_wise4','galaxy_mask_overlap','galaxy_overlap_flag','flux_fuv','rms_flux_fuv','std_flux_fuv','flux_nuv','rms_flux_nuv','std_flux_nuv','flux_wise1','rms_flux_wise1','std_flux_wise1','flux_wise2','rms_flux_wise2','std_flux_wise2','flux_wise3','rms_flux_wise3','std_flux_wise3','flux_wise4','rms_flux_wise4','std_flux_wise4','dist_mpc','e_dist_dex','mtol','method_mtol','logmass','e_logmass','logsfr','e_logsfr','method_sfr','deltams','absbtc','complete_sample','summary_url')>

In [34]:
plt.figure(figsize=(8,6))
plt.plot(mgs['ra'],mgs['dec'],'k.',alpha=.05)
plt.gca().invert_xaxis()
ra = mgs['ra']
dec = mgs['dec']
region1 = (ra > 225) & (dec > 50)
region2 = (ra < 150) & (dec < -50)
region3 = (ra < 100) & (dec > 60)
plt.plot(ra[region1],dec[region1],'c.',alpha=.1)
plt.plot(ra[region2],dec[region2],'c.',alpha=.1)
plt.plot(ra[region3],dec[region3],'c.',alpha=.1)
print(sum(region1)+sum(region2) + sum(region3))
fieldsample = region1 | region2 | region3
plt.xlabel('RA (deg)',fontsize=20)
plt.ylabel('DEC (deg)',fontsize=20)
plt.title('Leroy+2019 z0MGS')
plt.savefig('z0mgs-positions.pdf')


1081

The cyan regions are areas that we selected "by eye" to be relatively low density regions. This is a first attempt at creating a field sample.

A more quantitative comparison is to calculate local density, and then select a "field" sample according to local density.


In [36]:
pos = SkyCoord(ra=mgs['ra'],dec=mgs['dec'], distance=mgs['dist_mpc'],frame='icrs')

In [66]:
NN = 10
idx, d2d, d3d = pos.match_to_catalog_3d(pos,nthneighbor=NN)

In [75]:
plt.figure(figsize=(10,8))
densN = NN/d3d
plt.scatter(mgs['ra'],mgs['dec'],c=np.log10(densN*u.Mpc),vmin=-.5,vmax=1.,s=10)
plt.colorbar(label='$\log_{10}(N/d_N)$')
plt.xlabel('RA')
plt.ylabel('DEC')
plt.gca().invert_xaxis()



In [79]:
plt.figure()
t = plt.hist(np.log10(densN*u.Mpc), bins=20)
plt.xlabel('$ \log_{10} (N/d_N)$')


Out[79]:
Text(0.5, 0, '$ \\log_{10} (N/d_N)$')

Seems reasonable to select "field" as galaxies with $\log_{10}(N/d_N) < 0.5$

Comparison of LCS with GSWLC

  • The GSWLC provides a better comparison sample for us.
  • I matched to GSWLC-X2 - used 5 arcsecond radius. found 1496 matches.
    • I didn't note how I did the match. I don't see any python programs, so I probably used topcat.
  • we can use the GSWLC SFRs and Stellar masses for both the LCS and comparison galaxies. This removes significant uncertainty associated with mixing methods for calculating SFR and Mstar.

  • redshift limit $0.01 < z < 0.3$

  • mag limit r petrosian $r = 18.0$
  • main sequence: $log10(sSFR) > -11$
  • explanation of GSWLC-2 catalog http://pages.iu.edu/~salims/gswlc/table2.pdf

Stellar Mass Limit

  • convert r to Mr at maximum distance of LCS ($z=.0433$)
  • then plot Mstar vs Mr, and estimate Mstar limit from Mr limit

SFR Limit

  • Salim+2018 use $log10(sSFR) > -11$ to select star-forming galaxies
  • $log10(sSFR) < -11.5$ should be considered upper limits GSWLC-A (Salim+2018, pg 11, col2)
    • we use this as our sSFR limit
  • for SF galaxies, SFR errors are typically below 0.1dex

Environment Catalogs


In [12]:
# this catalog is a joined catalog between LCS and GSWLC
# it contains 1505 rows - the number of matches b/w the two catalogs
lcsgsw = fits.getdata('/home/rfinn/research/LCS/tables/lcs-gswlc-x2-match.fits')
#lcsgsw['sampleflag'] = lcsgsw['sampleflag'] == 84

In [38]:
print('number of matches between LCS and GSWLC = ',len(lcsgsw))
print('number with UV = ',sum(lcsgsw['flag_uv'] == 2))
print('number with mid IR = ',sum(lcsgsw['flag_midir'] == 1))
print('number with SDSS galaxy data = ',sum(lcsgsw['flag_mgs'] == 1))


number of matches between LCS and GSWLC =  1505
number with UV =  546
number with mid IR =  437
number with SDSS galaxy data =  1477

DETERMINING STELLAR MASS LIMIT


In [26]:
zmax = max(lcsgsw['ZDIST'])
print(zmax)
# assume hubble flow
dmax = zmax*3.e5/70
r_limit = 18.
# abs r
# m - M = 5logd_pc - 5
# M = m - 5logd_pc + 5
## r = 22.5 - np.log10(lcsgsw['NMGY'][:,4])
Mr = r_limit - 5*np.log10(dmax*1.e6) +5
print(Mr)


0.04320573
-18.337822841201557

In [38]:
ssfr = lcsgsw['logSFR'] - lcsgsw['logMstar']
flag = (lcsgsw['logMstar'] > 0) & (ssfr > -11.5)
Mr = lcsgsw['ABSMAG'][:,4]
plt.figure()
plt.plot(Mr[flag],lcsgsw['logMstar'][flag],'bo',alpha=.2,markersize=3)
plt.axvline(x=-18.33)
plt.axhline(y=9.8)
plt.axhline(y=9.5)
plt.xlabel('Mr')
plt.ylabel('logMstar GSWLC')
plt.grid(True)


Compare SFRs and Stellar Masses


In [219]:
plt.figure()
plt.plot((lcsgsw['MSTAR_50']),lcsgsw['logMstar'],'ko',color='0.5',alpha=.5)
flag = lcsgsw['sampleflag']
plt.plot(lcsgsw['MSTAR_50'][flag],lcsgsw['logMstar'][flag],'bo',alpha=.5)
axis([8,12,8,12])
xl = np.linspace(8,12,100)
plt.plot(xl,xl,'k--',lw=3)
plt.xlabel('Moustakas Mstar')
plt.ylabel('GSWLC Mstar')


Out[219]:
Text(0, 0.5, 'GSWLC Mstar')

The fact that GSWLC and JM's stellar mass values agree is reassuring. However, we will be using GSWLC measurements for both the LCS and comparison samples, so this is not as critical.


In [274]:
plt.figure()
mybins=np.arange(8,12,.125)
plt.hist(lcsgsw['logMstar'],bins=mybins)
plt.axvline(x=9.5,c='k')
plt.title('Distribution of GSWLC Mstar for LCS Galaxies')
#print(sum(lcsgsw.sampleflag))


Out[274]:
Text(0.5, 1.0, 'Distribution of GSWLC Mstar for LCS Galaxies')

In [287]:
plt.figure()
flag = lcsgsw['logMstar']> 0
x = lcsgsw['Z']*3.e5
y = lcsgsw['logMstar']
plt.plot(x[flag],y[flag],'k.')
plt.xlim([3000,15000])
plt.axhline(y=9.5)
plt.title('Mstar limits of LCS+GSWLC')
plt.xlabel('vr (km/s)',fontsize=16)
plt.ylabel('GSWLC logMstar',fontsize=16)
print('number of galaxies with logMstar > 9.5 = ',sum(y > 9.5))


number of galaxies with logMstar > 9.5 =  1025

In [40]:
plt.figure()
flag = lcsgsw['logMstar']> 0
x = lcsgsw['Z']*3.e5
y = lcsgsw['logSFR']
plt.plot(x[flag],y[flag],'k.')
plt.xlim([3000,15000])
#plt.axhline(y=9.5)
plt.title('SFR limits of LCS+GSWLC')
plt.xlabel('vr (km/s)',fontsize=16)
plt.ylabel('GSWLC logSFR',fontsize=16)


Out[40]:
Text(0, 0.5, 'GSWLC logSFR')

make SFR-Mstar plot using 11,000 < vr < 13,000. Set sSFR limits using this plot.


In [55]:
plt.figure()
x = lcsgsw['Z']*3.e5
flag = (lcsgsw['logMstar']> 0) #& (x < 13000) & (x > 10000)
flag2 = (lcsgsw['logMstar']> 0) & (x < 13000) & (x > 10000)
y = lcsgsw['logSFR']
x = lcsgsw['logMstar']
plt.plot(x[flag],y[flag],'k.',alpha=.5)
plt.plot(x[flag2],y[flag2],'c.')
#plt.xlim([3000,15000])
#plt.axhline(y=9.5)
xl = np.linspace(8.5,10.5,20)
ssfr = -10
plt.plot(xl,xl+ssfr,'b--',lw=3)
plotsalim07()
plt.title('SFR - Mstar of LCS+GSWLC')
plt.xlabel('GSWLC logMstar',fontsize=16)
plt.ylabel('GSWLC logSFR',fontsize=16)


Out[55]:
Text(0, 0.5, 'GSWLC logSFR')

In [207]:
plt.figure(figsize=(8,6))
flag = lcsgsw['sampleflag'] & ~lcsgsw['membflag']
flag = lcsgsw['lirflag']
plt.plot(lcsgsw['logSFR_NUVIR_KE'][flag],lcsgsw['logSFR'][flag],'bo')
axis([-2,1.5,-2,1.5])
xl = np.linspace(-1.5,1,20)
plt.plot(xl,xl,'c-',lw=3,label='1:1')
offset=.18
plt.plot(xl,xl+offset,'c--',lw=3,label='1:1+'+str(offset))
plt.xlabel('SFR LCS',fontsize=16)
plt.ylabel('SFR GSWLC',fontsize=16)
plt.legend()


Out[207]:
<matplotlib.legend.Legend at 0x7f0fd33961d0>

need to check which IMF is used in Kennicutt & Evans, and by GSWLC

SFR - Mstar with GSWLC Values for SFR and Mstar

  • Comparing core and external samples using GSWLC measures of SFR and stellar mass.

  • results are sensitive to mass and ssfr cuts.

  • if we use log(Mstar) > 9.5 and log(sSFR)> -1.5, then we detect an offset in SFR between cluster and field


In [236]:
masscut = 9.25
#core = (g.s['DR_R200'] < 0.6) & (g.s['DELTA_V'] < 3.)

mstar = lcsgsw['logMstar']
sfr = lcsgsw['logSFR']
ssfr = sfr - mstar
mybins = np.arange(-14,-8,.2)
t=plt.hist(ssfr,bins=mybins)



In [244]:
plt.figure()
flag = mstar > -20
print(sum(flag))
print(sum(flag & (mstar > 9.5)))
plt.plot(mstar[flag],sfr[flag],'k.',alpha=.5)


1496
1025
Out[244]:
[<matplotlib.lines.Line2D at 0x7f0fd24da410>]

In [295]:
masscut = 9.5
ssfrcut = -11.5
#core = (g.s['DR_R200'] < 0.6) & (g.s['DELTA_V'] < 3.)
mstar = lcsgsw['logMstar']
sfr = lcsgsw['logSFR']
ssfr = sfr - mstar
ssfr_flag = (ssfr < -7) & (ssfr > ssfrcut)
#core = (g.s['DR_R200'] < 0.6) & (g.s['DELTA_V'] < 3.)
flag1 = lcsgsw['membflag'] &  (lcsgsw['logMstar']> masscut)  & ssfr_flag
#fieldflag = (lcsgsw['DR_R200'] > 3) & (lcsgsw['DELTA_V'] > 3)
#print('number in field = ',print(sum(fieldflag)))
flag2 = ~lcsgsw['membflag'] &  (lcsgsw['logMstar']> masscut)  & ssfr_flag
#flag2 = fieldflag &  (lcsgsw['logMstar']> masscut)  & ssfr_flag
print('number in core sample = ',sum(flag1))
print('number in external sample = ',sum(flag2))
colormass(mstar[flag1],sfr[flag1],mstar[flag2],sfr[flag2],'core','external','sfr-mstar-gswlc.pdf',ymin=-3,ymax=1.6,xmin=8.5,xmax=11.5,nhistbin=15,ylabel='$\log_{10}(SFR)$')
#plt.plot(xl,xl+ssfr_lower_limit,'k--',c='0.5'6
#plt.axis([9,12,-2,1.5]),


8
number in field =  None
number in core sample =  220
number in external sample =  222
############################################################# 
KS test comparising galaxies within range shown on the plot

STELLAR MASS
KS Test:
D =   0.11
p-vale = 0.13052 (prob that samples are from same distribution)

COLOR
KS Test:
D =   0.20
p-vale = 0.00030 (prob that samples are from same distribution)

Creating Field Sample from Full GSWLC

  • for a quick test, use entire GSWLC catalog

In [43]:
gsw = ascii.read('/home/rfinn/research/GSWLC/GSWLC-X2.dat')
gsw = gsw[((gsw['Z']*3.e5 < 13000.) & (gsw['logMstar']> 0))] 
print('number is GSWLC = ',len(gsw))


number is GSWLC =  65611

measure local densities

cut GSWLC by local density to create a field sample

could also try matching to Yang catalog - see if it matters.


In [44]:
print(sum(gsw['flag_mgs']))


63521

In [47]:
pos = SkyCoord(ra=gsw['RA']*u.deg,dec=gsw['DEC']*u.deg, distance=gsw['Z']*3.e5/70*u.Mpc,frame='icrs')
NN = 10
idx, d2d, d3d = pos.match_to_catalog_3d(pos,nthneighbor=NN)

In [48]:
plt.figure(figsize=(14,8))
densN = NN/d3d
plt.scatter(gsw['RA'],gsw['DEC'],c=np.log10(densN*u.Mpc),vmin=-.5,vmax=1.,s=10)
plt.colorbar(label='$\log_{10}(N/d_N)$')
plt.xlabel('RA')
plt.ylabel('DEC')
plt.gca().invert_xaxis()
plt.axhline(y=5)
plt.axhline(y=60)
plt.axvline(x=135)
plt.axvline(x=225)


Out[48]:
<matplotlib.lines.Line2D at 0x7fc1f3db8310>

cutting GSWLC to main SDSS survey area, and then recalculating local densities


In [49]:
ramin=135
ramax=225
decmin=5
decmax=60
gsw_position_flag = (gsw['RA'] > ramin) & (gsw['RA'] < ramax) & (gsw['DEC'] > decmin) & (gsw['DEC'] < decmax)

In [50]:
gsw = gsw[gsw_position_flag]

In [51]:
pos = SkyCoord(ra=gsw['RA']*u.deg,dec=gsw['DEC']*u.deg, distance=gsw['Z']*3.e5/70*u.Mpc,frame='icrs')
NN = 10
idx, d2d, d3d = pos.match_to_catalog_3d(pos,nthneighbor=NN)

In [52]:
plt.figure(figsize=(14,8))
densN = NN/d3d
plt.scatter(gsw['RA'],gsw['DEC'],c=np.log10(densN*u.Mpc),vmin=-.5,vmax=1.,s=10)
plt.colorbar(label='$\log_{10}(N/d_N)$')
plt.xlabel('RA')
plt.ylabel('DEC')
plt.gca().invert_xaxis()
plt.axhline(y=5)
plt.axhline(y=60)
plt.axvline(x=135)
plt.axvline(x=225)


Out[52]:
<matplotlib.lines.Line2D at 0x7fc1ea345a90>

In [53]:
# make a histogram of local densities
plt.figure()
t = plt.hist(np.log10(densN*u.Mpc), bins=20)
plt.xlabel('$ \log_{10} (N/d_N)$')
print('median local density =  %.3f'%(np.median(np.log10(densN*u.Mpc))))
plt.axvline(x = (np.median(np.log10(densN*u.Mpc))),c='k')
gsw_density_flag = np.log10(densN*u.Mpc) < np.median(np.log10(densN*u.Mpc))
gsw_density_flag = np.log10(densN*u.Mpc) < .2


median local density =  0.488

Could also use Yang catalog to remove all galaxies in halos with log M_halo > 13.5 or 14

To determine SFR M* limits

  • read Salim GSWLC paper - do they mention any limits?
  • things that aren't detected in GALEX or WISE
  • stellar mass

In [55]:
# repeat above, but only keep galaxies in redshift range of LCS
# so that we can judge the mass limit where we can probe SF a factor of 
# 5 (or N) below the main sequence

# redshift range of LCS
# 0.0137 < z < 0.0433.
zmin = 0.0137
zmax = 0.0433
zflag = (gsw['Z'] > zmin) & (gsw['Z'] < zmax)
plt.figure(figsize=(8,6))
x = gsw['logMstar'][zflag]
y = gsw['logSFR'][zflag]
plt.plot(x,y,'k.',alpha=.1)
#plt.hexbin(x,y,gridsize=30,vmin=5,cmap='gray_r')
#plt.colorbar()
xl=np.linspace(8,12,50)
ssfr_limit = -10
#plt.plot(xl,xl+ssfr_limit,'r-')
plotsalim07()
plt.xlabel('logMstar',fontsize=16)
plt.ylabel('logSFR',fontsize=16)


Out[55]:
Text(0, 0.5, 'logSFR')

In [56]:
field_gsw = zflag & gsw_density_flag

The Figure above shows the Salim+07 fit to SF main sequence, minus 0.3 dex. Apparently there is a normalization offset b/w Salim+07 and GSWLC from Salim+16. The solid line is the mass-dependent fit to the MS, and the dashed line is a factor of 5 below the MS. The function to plot the lines is from Greg.

lssfr = -0.35*(lmstar - 10) - 9.83

#use their equation 12 for color-selected galaxies including
#AGN/SF composites.  This is for log(Mstar)>9.4
#lssfr = -0.53*(lmstar - 10) - 9.87

lsfr = lmstar + lssfr -.3
sfr = 10.**lsfr

Plot samples vs distance from MS.

Comparing LCS vs GSWLC with correct mass and sSFR cuts

According to Salim+2016, the mass limit is log10Mstar = 9.8, and the ssfr cut is -11.5.

When we apply these cuts and compare the LCS and GSWLC in the SFR-Mstar plane, the LCS galaxies have a similar distribution of stellar masses, but significantly lower SFRs.

We can also compare sSFRs.


In [58]:
#masscut = 8.5
masscut = 9.8
ssfrcut = -11.5

In [ ]:
mstar = lcsgsw['logMstar']
sfr = lcsgsw['logSFR']
ssfr = sfr - mstar
gswssfr = gsw['logSFR'] - gsw['logMstar']

In [77]:
flag1 = lcsgsw['membflag'] &  (lcsgsw['logMstar']> masscut)  & (ssfr > ssfrcut)
flag2 = (gsw['logMstar'] > masscut) & (gswssfr > ssfrcut)  & field_gsw
print('number in core sample = ',sum(flag1))
print('number in external sample = ',sum(flag2))
colormass(mstar[flag1],sfr[flag1],gsw['logMstar'][flag2],gsw['logSFR'][flag2],'LCS core','GSWLC','sfr-mstar-gswlc-field.pdf',ymin=-2,ymax=1.6,xmin=9.75,xmax=11.5,nhistbin=10,ylabel='$\log_{10}(SFR)$',contourflag=False,alphagray=.8)
plt.savefig(homedir+'/research/LCS/plots/lcscore-gsw-sfms.pdf')
plt.savefig(homedir+'/research/LCS/plots/lcscore-gsw-sfms.png')


number in core sample =  137
number in external sample =  1159
############################################################# 
KS test comparising galaxies within range shown on the plot

STELLAR MASS
KS Test:
D =   0.10
p-vale = 0.14328 (prob that samples are from same distribution)

COLOR
KS Test:
D =   0.34
p-vale = 0.00000 (prob that samples are from same distribution)

LCS Infall vs GSWLC Field

CONCLUSION:

  • LCS infall galaxies have significantly lower SFRs

In [78]:
lcsinfall = ~lcsgsw['membflag'] & (lcsgsw['DELTA_V'] < 3.)
mstar = lcsgsw['logMstar']
sfr = lcsgsw['logSFR']
ssfr = sfr - mstar
gswssfr = gsw['logSFR'] - gsw['logMstar']
flag1 = lcsinfall &  (lcsgsw['logMstar']> masscut)  & (ssfr > ssfrcut)
flag2 = (gsw['logMstar'] > masscut) & (gswssfr > ssfrcut)  & field_gsw
print('number in infall sample = ',sum(flag1))
print('number in GSWLC field sample = ',sum(flag2))
colormass(mstar[flag1],sfr[flag1],gsw['logMstar'][flag2],gsw['logSFR'][flag2],'LCS infall','GSWLC','lcsinfall-gswlc-sfms.pdf',ymin=-2,ymax=1.6,xmin=9.75,xmax=11.5,nhistbin=15,ylabel='$\log_{10}(SFR)$',contourflag=False,alphagray=.8)
plt.savefig(homedir+'/research/LCS/plots/lcsinfall-gsw-sfms.pdf')
plt.savefig(homedir+'/research/LCS/plots/lcsinfall-gsw-sfms.png')


number in infall sample =  118
number in GSWLC field sample =  1159
############################################################# 
KS test comparising galaxies within range shown on the plot

STELLAR MASS
KS Test:
D =   0.13
p-vale = 0.04050 (prob that samples are from same distribution)

COLOR
KS Test:
D =   0.26
p-vale = 0.00000 (prob that samples are from same distribution)

Splitting LCS by Cluster/group vs GSWLC Field

CONCLUSIONS:

Group members have lower SFRs compared to GSWLC sample.


In [80]:
sigma_split = 600
group = lcsgsw['CLUSTER_SIGMA'] < sigma_split
cluster = lcsgsw['CLUSTER_SIGMA'] > sigma_split

In [81]:
flag1 = lcsgsw['membflag'] &   (lcsgsw['logMstar']> masscut)  & (ssfr > ssfrcut) & group
flag2 = (gsw['logMstar'] > masscut) & (gswssfr > ssfrcut)  & field_gsw
print('number in core sample = ',sum(flag1))
print('number in external sample = ',sum(flag2))
colormass(mstar[flag1],sfr[flag1],gsw['logMstar'][flag2],gsw['logSFR'][flag2],'LCS core groups','GSWLC','sfr-mstar-gswlc-field.pdf',ymin=-2,ymax=1.6,xmin=9.5,xmax=11.5,nhistbin=15,ylabel='$\log_{10}(SFR)$',contourflag=False,alphagray=.8)
plt.savefig(homedir+'/research/LCS/plots/lcsgroup-gsw-sfms.pdf')
plt.savefig(homedir+'/research/LCS/plots/lcsgroup-gsw-sfms.png')


number in core sample =  32
number in external sample =  1159
############################################################# 
KS test comparising galaxies within range shown on the plot

STELLAR MASS
KS Test:
D =   0.16
p-vale = 0.38027 (prob that samples are from same distribution)

COLOR
KS Test:
D =   0.50
p-vale = 0.00000 (prob that samples are from same distribution)

In [82]:
flag1 = lcsgsw['membflag'] &  (lcsgsw['logMstar']> masscut)  & (ssfr > ssfrcut) & cluster
flag2 = (gsw['logMstar'] > masscut) & (gswssfr > ssfrcut)  & field_gsw
print('number in core sample = ',sum(flag1))
print('number in external sample = ',sum(flag2))
colormass(mstar[flag1],sfr[flag1],gsw['logMstar'][flag2],gsw['logSFR'][flag2],'LCS core cluster','GSWLC','sfr-mstar-gswlc-field.pdf',ymin=-2,ymax=1.6,xmin=9.5,xmax=11.5,nhistbin=15,ylabel='$\log_{10}(SFR)$',contourflag=False,alphagray=.8)
plt.savefig(homedir+'/research/LCS/plots/lcscluster-gsw-sfms.pdf')
plt.savefig(homedir+'/research/LCS/plots/lcscluster-gsw-sfms.png')


number in core sample =  105
number in external sample =  1159
############################################################# 
KS test comparising galaxies within range shown on the plot

STELLAR MASS
KS Test:
D =   0.12
p-vale = 0.10553 (prob that samples are from same distribution)

COLOR
KS Test:
D =   0.32
p-vale = 0.00000 (prob that samples are from same distribution)

Comparing sSFRs of LCS vs GSWLC


In [99]:
flag1 = lcsgsw['membflag'] &  (lcsgsw['logMstar']> masscut)  & (ssfr > ssfrcut)
flag2 = (gsw['logMstar'] > masscut) & (gswssfr > ssfrcut)  & field_gsw
flag3 = ~lcsgsw['membflag'] &  (lcsgsw['logMstar']> masscut)  & (ssfr > ssfrcut)
print('number in core sample = ',sum(flag1))
print('number in external sample = ',sum(flag2))
ks(ssfr[flag1],gswssfr[flag2])
plt.figure(figsize=(6,8))
plt.subplot(2,1,1)
mybins = np.linspace(-11.5,-8.75,20)
t = plt.hist(ssfr[flag1],bins=mybins,histtype='step',normed=True,lw=2,label='LCS Core')
t = plt.hist(gswssfr[flag2],bins=mybins,histtype='step',normed=True,lw=2,label='GSWLC')
#t = plt.hist(ssfr[flag3],bins=mybins,histtype='step',normed=True,lw=2,label='LCS External')
plt.legend()
#plt.xlabel('$\log_{10}(sSFR)$',fontsize=20)
plt.ylabel('$Normalized \ Frequency$',fontsize=20)
plt.subplot(2,1,2)
mybins = np.linspace(-11.5,-8.75,20)
#t = plt.hist(ssfr[flag1],bins=mybins,histtype='step',normed=True,lw=2,label='LCS Core')
t = plt.hist(ssfr[flag3],bins=mybins,histtype='step',normed=True,lw=2,label='LCS External')
t = plt.hist(gswssfr[flag2],bins=mybins,histtype='step',normed=True,lw=2,label='GSWLC')
plt.legend()
plt.xlabel('$\log_{10}(sSFR)$',fontsize=20)
plt.ylabel('$Normalized \ Frequency$',fontsize=20)


number in core sample =  137
number in external sample =  1159
KS Test:
D =   0.33
p-vale = 0.00000 (prob that samples are from same distribution)
Anderson-Darling test Test:
D =  39.14
p-vale = 0.04896 (prob that samples are from same distribution)
Out[99]:
Text(0, 0.5, '$Normalized \\ Frequency$')

In [ ]:

Looking at Distance from the main sequence for LCS vs GSWLC

CONCLUSION: not much difference


In [72]:
sfms_dist_lcs = lcsgsw['logSFR'] - ((-0.35*(lcsgsw['logMstar'] - 10) -9.83+ lcsgsw['logMstar']-.3))
sfms_dist_gsw = gsw['logSFR'] - ((-0.35*(gsw['logMstar'] - 10) -9.83+ gsw['logMstar']-.3))

In [73]:
mstar = lcsgsw['logMstar']
sfr = lcsgsw['logSFR']
ssfr = sfr - mstar

lcs_flag = lcsgsw['membflag'] &  (lcsgsw['logMstar']> masscut)  & (ssfr_cut_lcs)
gsw_flag = (gsw['logMstar'] > masscut) & (ssfr_cut_gsw)

plt.figure(figsize=(8,6))
#mybins = np.arange(-1,1.5,20)
t = plt.hist(sfms_dist_lcs[lcs_flag],histtype='step',normed=True,lw=2,label='LCS')#,bins=mybins)
t = plt.hist(sfms_dist_gsw[gsw_flag],histtype='step',normed=True,lw=2,label='GSWLC')#,bins=mybins)
plt.legend(loc='upper right')

plt.xlabel('$\log_{10}(SFR) - \log_{10}(SFR_{MS})$',fontsize=20)
plt.ylabel('$Frequency$',fontsize=20)

# KS test
ks_2samp(sfms_dist_lcs[lcs_flag],sfms_dist_gsw[gsw_flag])


Out[73]:
Ks_2sampResult(statistic=0.09121373796175454, pvalue=0.48079983165134577)

Repeat, but for cluster and groups separately

Define cluster as velocity dispersion > 700 km/s.


In [234]:
sigma_split = 600
group = lcsgsw['CLUSTER_SIGMA'] < sigma_split
cluster = lcsgsw['CLUSTER_SIGMA'] > sigma_split

In [235]:
mstar = lcsgsw['logMstar']
sfr = lcsgsw['logSFR']
ssfr = sfr - mstar

lcs_flag = lcsgsw['membflag'] &  (lcsgsw['logMstar']> masscut)  & (ssfr_cut_lcs) & group
gsw_flag = (gsw['logMstar'] > masscut) & (ssfr_cut_gsw)

plt.figure(figsize=(8,6))
#mybins = np.arange(-1,1.5,20)
t = plt.hist(sfms_dist_lcs[lcs_flag],histtype='step',normed=True,lw=2,label='LCS')#,bins=mybins)
t = plt.hist(sfms_dist_gsw[gsw_flag],histtype='step',normed=True,lw=2,label='GSWLC')#,bins=mybins)
plt.legend(loc='upper right')

plt.xlabel('$\log_{10}(SFR) - \log_{10}(SFR_{MS})$',fontsize=20)
plt.ylabel('$Frequency$',fontsize=20)

# KS test
ks_2samp(sfms_dist_lcs[lcs_flag],sfms_dist_gsw[gsw_flag])


Out[235]:
Ks_2sampResult(statistic=0.3636488321288114, pvalue=2.0486979262773031e-07)

In [236]:
mstar = lcsgsw['logMstar']
sfr = lcsgsw['logSFR']
ssfr = sfr - mstar

lcs_flag = lcsgsw['membflag'] &  (lcsgsw['logMstar']> masscut)  & (ssfr_cut_lcs) & cluster
gsw_flag = (gsw['logMstar'] > masscut) & (ssfr_cut_gsw)

plt.figure(figsize=(8,6))
mybins = np.arange(-1,1.5,20)
t = plt.hist(sfms_dist_lcs[lcs_flag],histtype='step',normed=True,lw=2,label='LCS')#,bins=mybins)
t = plt.hist(sfms_dist_gsw[gsw_flag],histtype='step',normed=True,lw=2,label='GSWLC')#,bins=mybins)
plt.legend(loc='upper right')

plt.xlabel('$\log_{10}(SFR) - \log_{10}(SFR_{MS})$',fontsize=20)
plt.ylabel('$Frequency$',fontsize=20)

# KS test
ks_2samp(sfms_dist_lcs[lcs_flag],sfms_dist_gsw[gsw_flag])


Out[236]:
Ks_2sampResult(statistic=0.14784326997609093, pvalue=5.6320797302554005e-05)

Comparing Each Cluster Separately


In [237]:
clusters = set(lcsgsw['CLUSTER'])
print(clusters)


{'Coma', 'MKW8', 'Hercules', 'MKW11', 'A1367', 'A2052', 'A2063', 'NGC6107', 'AWM4'}

In [238]:
mstar = lcsgsw['logMstar']
sfr = lcsgsw['logSFR']
ssfr = sfr - mstar

for c in clusters:
    lcs_flag = lcsgsw['membflag'] &  (lcsgsw['logMstar']> masscut)  & (ssfr_cut_lcs) & (lcsgsw['CLUSTER'] == c)
    gsw_flag = (gsw['logMstar'] > masscut) & (ssfr_cut_gsw)

    plt.figure(figsize=(8,6))
    mybins = np.arange(-1,1.5,20)
    t = plt.hist(sfms_dist_lcs[lcs_flag],histtype='step',normed=True,lw=2,label='LCS')#,bins=mybins)
    t = plt.hist(sfms_dist_gsw[gsw_flag],histtype='step',normed=True,lw=2,label='GSWLC')#,bins=mybins)
    plt.legend(loc='upper right')

    plt.xlabel('$\log_{10}(SFR) - \log_{10}(SFR_{MS})$',fontsize=20)
    plt.ylabel('$Frequency$',fontsize=20)
    plt.title(c,fontsize=22)
    # KS test
    t = ks_2samp(sfms_dist_lcs[lcs_flag],sfms_dist_gsw[gsw_flag])
    print(c,sum(lcs_flag),sum(gsw_flag),t)


Coma 141 24981 Ks_2sampResult(statistic=0.20749045870606347, pvalue=1.1427847135524038e-05)
MKW8 16 24981 Ks_2sampResult(statistic=0.4786487730675313, pvalue=0.0013155388464662888)
Hercules 26 24981 Ks_2sampResult(statistic=0.12075177134622317, pvalue=0.843264696149085)
MKW11 14 24981 Ks_2sampResult(statistic=0.25086208375508245, pvalue=0.341966123474646)
A1367 12 24981 Ks_2sampResult(statistic=0.1674472599175373, pvalue=0.889708035176863)
A2052 19 24981 Ks_2sampResult(statistic=0.23312454307378871, pvalue=0.25346706607229447)
A2063 44 24981 Ks_2sampResult(statistic=0.11259557263520281, pvalue=0.6335374786599515)
NGC6107 20 24981 Ks_2sampResult(statistic=0.42266522557143427, pvalue=0.0015853150902229044)
AWM4 11 24981 Ks_2sampResult(statistic=0.4040270605660301, pvalue=0.055214688850238884)

Creating Field Sample from LCS local densities


In [256]:
plt.figure()
x = lcsgsw['DELTA_V']
y = lcsgsw['DR_R200']
plt.plot(x,y,'k.')
#plt.gca().set_xscale('log')
plt.xlim(0,5)
print(len(x))


1505

In [ ]:

SFR - Mstar for Most Massive Clusters vs Field

  • selecting Coma and A2063 - most massive clusters

In [ ]:


In [34]:
sfr = g.logSFR_NUVIR_KE
mstar = g.logstellarmass
ssfr = sfr - mstar
sf_flag = ssfr > -99
ssfr_lower_limit = -11.5
xl = np.linspace(8.5,11.5)

In [51]:
flag1 = core & g.clusterflag & sf_flag & (mstar > masscut)  #& (mstar < 10.)
flag2 = ~core & sf_flag & (mstar > masscut) #& (mstar < 10.)
plt.figure()
plt.plot(mstar[flag1],ssfr[flag1],'k.')
plt.plot(mstar[flag2],ssfr[flag2],'c.')
plt.ylim(-12.5,-9)
xl = np.linspace(9,12,20)
plt.plot(xl,-.25*(xl-9)-11.1,'m-',lw=3)
plt.xlabel('$\log_{10}(M_star/M_\odot) $')
plt.ylabel('$\log_{10}(SFR/M_star) $')
plt.savefig('ssfr_cut.pdf')
ssfr_flag = ssfr > (-.25*(mstar-9)-11.1)



In [96]:
plt.figure(figsize=(10,8))

flag1 = core & g.clusterflag & sf_flag & (mstar > masscut)  #& (mstar < 10.)
flag2 = ~core & sf_flag & (mstar > masscut) #& (mstar < 10.)
plt.plot(mgs['logmass'][fieldsample],mgs['logsfr'][fieldsample],'k.',alpha=.2)
plt.plot(mstar[flag2],sfr[flag2],'c.',alpha=.2)
plt.xlabel('$\log_{10}(M_\star/M_\odot) $')
plt.ylabel('$\log_{10}(SFR) $')
plt.ylim(-4,2)
plt.savefig('sfms_with_mgs.pdf')



In [136]:
masscut = 9.5
#core = (g.s['DR_R200'] < 0.6) & (g.s['DELTA_V'] < 3.)
core = g.membflag
#core = (g.s['DR_R200'] < 0.6) & (g.s['DELTA_V'] < 3.)
flag1 = core &  (mstar > masscut)  & (ssfr > -11.)
flag2 = fieldsample & (mgs['logmass'] > masscut) & (mgs['logsfr']-mgs['logmass'] > -11.)
colormass(mstar[flag1],sfr[flag1],mgs['logmass'][flag2],mgs['logsfr'][flag2],'core','mgs','sfr-mstar-cluster-mgs.pdf',ymin=-1.6,ymax=1.6,xmin=9,xmax=11.5,nhistbin=15,ylabel='$\log_{10}(SFR)$')
#plt.plot(xl,xl+ssfr_lower_limit,'k--',c='0.5'6
#plt.axis([9,12,-2,1.5]),


############################################################# 
KS test comparising galaxies within range shown on the plot

STELLAR MASS
KS Test:
D =   0.11
p-vale = 0.18009 (prob that samples are from same distribution)

COLOR
KS Test:
D =   0.30
p-vale = 0.00000 (prob that samples are from same distribution)

Still to do

  • bootstrap our external sample, selecting galaxies that have some distribution in SFR-Mass plane as the z0MGS sample.
  • this will let us include size in the SF MS plot, using bootstrapped external sample
  • incorporate SF in the disk shrinking model. apply to SF-stellar mass plane. where do objects go in main sequence. do we reproduce low SF tail seen in core sample.
  • what if we split LCS into low and high mass clusters

Results

  • pop of galaxies with low sSFRs in clusters
  • we show that SF is suppressed in infall regions because the external sample is similar in SF-M* to core sample.
  • drop in SFRs can be explained by disk shrinking?

In [128]:
masscut = 9.5
ssfr_cut = -11
core = (g.s['DR_R200'] < 0.6) & (g.s['DELTA_V'] < 3.)
flag1 = core  & (mstar > masscut)  & (ssfr > ssfr_cut)
flag2 = ~core & sf_flag & (mstar > masscut) & (ssfr > ssfr_cut)
colormass(mstar[flag1],(sfr[flag1]),mstar[flag2],(sfr[flag2]),'core','external','sfr-mstar.pdf',ymin=-1.5,ymax=1.5,xmin=9,xmax=11.5,nhistbin=15,ylabel='$\log_{10}(SFR)$')
#plt.plot(xl,xl+ssfr_lower_limit,'k--',c='0.5')


############################################################# 
KS test comparising galaxies within range shown on the plot

STELLAR MASS
KS Test:
D =   0.15
p-vale = 0.08799 (prob that samples are from same distribution)

COLOR
KS Test:
D =   0.14
p-vale = 0.13513 (prob that samples are from same distribution)

In [103]:
plt.figure()
mybins = np.linspace(-13,-8,20)
plt.hist(ssfr[core],bins=mybins,color='r',histtype='step',label='core')
plt.hist(ssfr[~core],bins=mybins,color='b',histtype='step',label='external')


Out[103]:
(array([  4.,   5.,  59., 141.,  99.,  72.,  53.,  51.,  59.,  80.,  84.,
         47.,  26.,  11.,   7.,   4.,   1.,   1.,   0.]),
 array([-13.        , -12.73684211, -12.47368421, -12.21052632,
        -11.94736842, -11.68421053, -11.42105263, -11.15789474,
        -10.89473684, -10.63157895, -10.36842105, -10.10526316,
         -9.84210526,  -9.57894737,  -9.31578947,  -9.05263158,
         -8.78947368,  -8.52631579,  -8.26315789,  -8.        ]),
 <a list of 1 Patch objects>)

In [22]:
flag1 = g.membflag & sf_flag 
flag2 = ~core & sf_flag 
colormass(mstar[flag1],(sfr[flag1]),mstar[flag2],(sfr[flag2]),'core','external','sfr-mstar.pdf',ymin=-3,ymax=1,nhistbin=20,ylabel='$\log_{10}(SFR)$')


############################################################# 
KS test comparising galaxies within range shown on the plot

STELLAR MASS
KS Test:
D =   0.09
p-vale = 0.00081 (prob that samples are from same distribution)

COLOR
KS Test:
D =   0.18
p-vale = 0.00000 (prob that samples are from same distribution)

Ratio of two different SFR measures, comparing field and cluster

seems like we get many more passive field galaxies when using UV+IR sfr


In [105]:
sfr_ir = np.log10(g.s['SFR_ZDIST'])
sfr_uvir =  g.logSFR_NUV_ZDIST
sfr_ratio = sfr_ir - sfr_uvir


/home/rfinn/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: RuntimeWarning: divide by zero encountered in log10
  """Entry point for launching an IPython kernel.

In [109]:
plt.figure()
mybins = np.linspace(-1,1,20)
plt.hist(sfr_ratio[core],bins=mybins,color='r',histtype='step',label='core')
plt.hist(sfr_ratio[~core],bins=mybins,color='b',histtype='step',label='external')
plt.legend(loc='upper left')


Out[109]:
<matplotlib.legend.Legend at 0x7f254fc59990>

In [97]:
nuv24 = g.s.ABSMAG[:,1] - g.s.fcmag1

In [100]:
plt.figure()
mybins = np.linspace(-20,0,20)
plt.hist(nuv24[core],bins=mybins,color='r',histtype='step',label='core')
plt.hist(nuv24[~core],bins=mybins,color='b',histtype='step',label='external')


Out[100]:
(array([  0.,   0.,   2.,  18.,  47., 103., 121.,  57.,  25.,   2.,   2.,
          1.,   2.,   2.,   1.,   0.,   1.,   1.,   0.]),
 array([-20.        , -18.94736842, -17.89473684, -16.84210526,
        -15.78947368, -14.73684211, -13.68421053, -12.63157895,
        -11.57894737, -10.52631579,  -9.47368421,  -8.42105263,
         -7.36842105,  -6.31578947,  -5.26315789,  -4.21052632,
         -3.15789474,  -2.10526316,  -1.05263158,   0.        ]),
 <a list of 1 Patch objects>)

In [99]:
plt.figure()
plt.hist(nuv24)


Out[99]:
(array([  2.,   0.,   1.,   5.,  51., 803.,   8., 567., 352.,  11.]),
 array([-66.16591454, -59.51406432, -52.8622141 , -46.21036388,
        -39.55851367, -32.90666345, -26.25481323, -19.60296301,
        -12.95111279,  -6.29926258,   0.35258764]),
 <a list of 10 Patch objects>)

In [23]:
sfr = g.SFR_NUV_BEST
sfr = g.SFR_BEST
sfr = g.logSFR_NUV_BEST
#sfr = np.log10(g.s['SFR_ZDIST'])
mstar = g.logstellarmass
ssfr = sfr - mstar
sf_flag = ssfr > -11.8

In [24]:
inner_cluster = g.membflag & (g.s['DR_R200'] < .5) 
outer_cluster = g.membflag & (g.s['DR_R200'] >= .5)

flags = [inner_cluster & g.galfitflag, outer_cluster & g.galfitflag, ~g.membflag & g.galfitflag]
plt.figure(figsize=(14,4))
all_axes=[]
for i in range(len(flags)):
    plt.subplot(1,3,i+1)
    plt.scatter(mstar[flags[i]],sfr[flags[i]],c=g.sizeratio[flags[i]],vmin=.1,vmax=1)
    if i > 0:
        plt.yticks([])
    plt.axis([8,12,-2,1])
    all_axes.append(plt.gca())
    xl = np.linspace(8,12,100)
    yl = -11.8 + xl
    plt.plot(xl,yl,'k--')
    yl = -10.4 + xl
    plt.plot(xl,yl,'k-')
    xbin,ybin,ybinerr= binxycolor(mstar[flags[i]& sf_flag],sfr[flags[i]& sf_flag],g.sizeratio[flags[i] & sf_flag],6,use_median=True)
    
    print(xbin,ybin)
    plt.scatter(xbin,ybin,c=ybinerr,s=300,vmin=.1,vmax=1,marker='s')
plt.colorbar(ax=all_axes)


[ 8.069622  9.062393  9.729434 10.248668 10.885409 11.372235] [ 0.08951795 -1.0090549  -0.5784401  -0.42475212 -0.25589257  0.35476857]
[ 7.9588914  8.949782   9.357066   9.858171  10.342478  11.0165415] [-0.9262373  -1.0165286  -0.9824431  -0.6500736  -0.43450513 -0.22929856]
[ 7.2959633  8.451033   9.239992   9.795658  10.494736  11.000428 ] [-1.4427719  -0.8278848  -0.90380096 -0.5443306  -0.12281922 -0.10765491]
Out[24]:
<matplotlib.colorbar.Colorbar at 0x7f0fda2c1e10>

In [153]:
# size vs color for SF field pop

plt.figure()
flag = ~g.membflag & g.galfitflag & sf_flag

plt.scatter(g.sizeratio[flag],g.NUVr[flag],c=g.s['SERSIC_N'][flag],vmin=1,vmax=4)
plt.colorbar()


Out[153]:
<matplotlib.colorbar.Colorbar at 0x7f254793f890>

In [155]:
inner_cluster = g.membflag & (g.s['DR_R200'] < .5) 
outer_cluster = g.membflag & (g.s['DR_R200'] >= .5)

flags = [inner_cluster & g.galfitflag, outer_cluster & g.galfitflag, ~g.membflag & g.galfitflag]
plt.figure(figsize=(14,4))
all_axes=[]
for i in range(len(flags)):
    plt.subplot(1,3,i+1)
    plt.scatter(mstar[flags[i]],sfr[flags[i]],c=g.s['SERSIC_N'][flags[i]],vmin=1,vmax=4)
    if i > 0:
        plt.yticks([])
    plt.axis([8,12,-2,1])
    all_axes.append(plt.gca())
    xl = np.linspace(8,12,100)
    yl = -11.8 + xl
    plt.plot(xl,yl,'k--')
    yl = -10.4 + xl
    plt.plot(xl,yl,'k-')
    xbin,ybin,ybinerr= binxycolor(mstar[flags[i]& sf_flag],sfr[flags[i]& sf_flag],g.s['SERSIC_N'][flags[i] & sf_flag],6,use_median=True)
    
    print(xbin,ybin)
    plt.scatter(xbin,ybin,c=ybinerr,s=300,vmin=1,vmax=4,marker='s')
plt.colorbar(ax=all_axes)


[ 8.069622  8.945342  9.516651 10.056835 10.519292 11.085979] [ 0.08951795 -1.2655075  -0.5784401  -0.27247596 -0.284118    0.4257636 ]
[ 7.9588914  8.809036   9.318189   9.757981  10.265377  10.72887  ] [-0.9262373  -1.0489608  -0.9824431  -0.72975135 -0.13846084  0.00188851]
[ 7.2959633  8.399897   8.913061   9.466389  10.02633   10.55502  ] [-1.4427719  -0.77720845 -0.91076326 -0.75322783 -0.34723625  0.11348807]
Out[155]:
<matplotlib.colorbar.Colorbar at 0x7f25476b5e90>

In [191]:
def sfr_mstar(flags,colorvar,plotbinned=True,v1=.1,v2=1):

    plt.figure(figsize=(14,4))
    all_axes=[]
    for i in range(len(flags)):
        plt.subplot(1,3,i+1)
        plt.scatter(mstar[flags[i]],sfr[flags[i]],c=colorvar[flags[i]],vmin=v1,vmax=v2)
        if i > 0:
            plt.yticks([])
        plt.axis([8,12,-2,1])
        all_axes.append(plt.gca())
        xl = np.linspace(8,12,100)
        # chi by eye split b/w SF and quiescent
        yl = -11.8 + xl
        plt.plot(xl,yl,'k--')
        # chi by eye fit to main sequence in field
        yl = -10.4 + xl
        plt.plot(xl,yl,'k-')
        if plotbinned:
            xbin,ybin,ybinerr= binxycolor(mstar[flags[i]& sf_flag],sfr[flags[i]& sf_flag],colorvar[flags[i] & sf_flag],6,use_median=True)
 
            plt.scatter(xbin,ybin,c=ybinerr,s=300,vmin=v1,vmax=v2,marker='s')
    plt.colorbar(ax=all_axes)
    
def size_vs_size(flags,colorvar,plotbinned=True,v1=1,v2=10):
    xmin=0
    xmax=15
    plt.figure(figsize=(14,4))
    all_axes=[]
    for i in range(len(flags)):
        plt.subplot(1,3,i+1)
        #plt.scatter(g.s['Rd'][flags[i]],g.s['fre1'][flags[i]],c=colorvar[flags[i]],vmin=v1,vmax=v2)
        plt.scatter(g.s['Rd'][flags[i]],g.s['fre1'][flags[i]],c=colorvar[flags[i]],vmin=v1,vmax=v2)
        if i > 0:
            plt.yticks([])
        plt.axis([xmin,xmax,xmin,xmax])
        #plt.gca().set_xscale('log')
        #plt.gca().set_yscale('log')
        all_axes.append(plt.gca())
        xl = np.linspace(xmin,xmax,100)
        # chi by eye split b/w SF and quiescent
        #yl = -11.8 + xl
        plt.plot(xl,xl,'k--')
        # chi by eye fit to main sequence in field
        #yl = -10.4 + xl
        #plt.plot(xl,yl,'k-')
        if plotbinned:
            xbin,ybin,ybinerr= binxycolor(mstar[flags[i]& sf_flag],sfr[flags[i]& sf_flag],colorvar[flags[i] & sf_flag],6,use_median=True)
 
            plt.scatter(xbin,ybin,c=ybinerr,s=300,vmin=v1,vmax=v2,marker='s')
    plt.colorbar(ax=all_axes)

In [176]:
inner_cluster = g.membflag & (g.s['DR_R200'] < .5) 
outer_cluster = g.membflag & (g.s['DR_R200'] >= .5)
flags = [inner_cluster & g.galfitflag, outer_cluster & g.galfitflag, ~g.membflag & g.galfitflag]
sfr_mstar(flags,g.s['SERSIC_N'],v1=1,v2=4)



In [169]:
myclusters = set(g.s['CLUSTER'])
for c in myclusters:
    inner_cluster = g.membflag & (g.s['DR_R200'] < .5) 
    outer_cluster = g.membflag & (g.s['DR_R200'] >= .5)
    flags = [inner_cluster & g.galfitflag, outer_cluster & g.galfitflag, ~g.membflag & g.galfitflag]
    #flags = [inner_cluster , outer_cluster, ~g.membflag ]
    for i in range(len(flags)):
        flags[i] = flags[i] & (g.s['CLUSTER'] == c)
    sfr_mstar(flags,g.sizeratio,plotbinned=False)
    plt.title(c)


Removing galfit flag to see about what we are cutting out with this.

Hercules looses A LOT of points. This was the cluster where I had PSF problems and ended up using the standard MIPS PRF rather than one from the actual scan.

Perhaps we should make a measurement using the galfit models without the PRF folded in.


In [168]:
myclusters = set(g.s['CLUSTER'])
for c in myclusters:
    inner_cluster = g.membflag & (g.s['DR_R200'] < .5) 
    outer_cluster = g.membflag & (g.s['DR_R200'] >= .5)
    flags = [inner_cluster & g.galfitflag, outer_cluster & g.galfitflag, ~g.membflag & g.galfitflag]
    flags = [inner_cluster , outer_cluster, ~g.membflag ]
    for i in range(len(flags)):
        flags[i] = flags[i] & (g.s['CLUSTER'] == c)
    sfr_mstar(flags,g.sizeratio,plotbinned=False)
    plt.title(c)


Comparing 24um sizes with and without convolution.


In [190]:
# Disk scale length vs Re24 w/out PRF
inner_cluster = g.membflag & (g.s['DR_R200'] < .5) 
outer_cluster = g.membflag & (g.s['DR_R200'] >= .5)
flags = [inner_cluster & g.galfitflag, outer_cluster & g.galfitflag, ~g.membflag & g.galfitflag]
flags = [inner_cluster , outer_cluster, ~g.membflag]
size_vs_size(flags,g.sizeratio,plotbinned=False)



In [192]:
myclusters = set(g.s['CLUSTER'])
for c in myclusters:
    inner_cluster = g.membflag & (g.s['DR_R200'] < .5) 
    outer_cluster = g.membflag & (g.s['DR_R200'] >= .5)
    flags = [inner_cluster & g.galfitflag, outer_cluster & g.galfitflag, ~g.membflag & g.galfitflag]
    #flags = [inner_cluster , outer_cluster, ~g.membflag ]
    for i in range(len(flags)):
        flags[i] = flags[i] & (g.s['CLUSTER'] == c)
    size_vs_size(flags,g.sizeratio,plotbinned=False,v1=.1,v2=1)
    plt.title(c)


Matching GSWLC-2 and Group Catalogs

  • matched GSWLC-X2 and Tempel+2012 GALAXY group catalog using topcat
    • matching by SDSS objid yielded only a few thousand matches, so I concluded that GSWLC is using DR7 ids whereas tempel is using DR8. Should look into this more closely b/c (1) why would salim use DR7 in a 2018 paper? (2) salim does not specifically mention which DR the ids correspond to.
    • matched by RA, DEC, 1 arcsec offset
      • best match, symmetric
      • join 1 and 2
      • 514,186 matches
      • saved as fits-basic: ~/research/GSWLC/GSWLC-X2-Tempel2012-groups.fits

In [105]:
# read in matched catalog that has GSWLC and Tempel group galaxies
gg = Table(fits.getdata('/home/rfinn/research/GSWLC/GSWLC-X2-Tempel2012-groups.fits'))
gg = gg[gg['redshift'] < 0.04]

In [106]:
# catalog with group info
tgroups = Table(fits.getdata('/home/rfinn/research/sdss-tempel/dr8_ggc.fits',2))

In [109]:
plt.figure()
mybins = np.linspace(0,200,100)
t = plt.hist(tgroups['nrich'],bins=mybins)



In [110]:
gg


Out[110]:
Table length=514186
ididclnrichredshiftdistdistclra_1dec_1lonlatetalammag_umag_gmag_rmag_imag_zabsmag_uabsmag_gabsmag_rabsmag_iabsmag_zkcor_ukcor_gkcor_rkcor_ikcor_zlumrwrankden1den2den4den8den16edgedistmorfhcearlydr8objiddr8specobjididdr7zobsdistcorflagfcObjIDGLXIDplateMJDfiber_idRA_2DEC_2ZchisqlogMstarlogMstar_errlogSFRlogSFR_errAFUVAFUV_errABAB_errAVAV_errflag_sedUV_surveyflag_uvflag_midirflag_mgsSeparation
int32int32int16float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32float32int16float32float32float32float32float32float32int16float32int64int64int32float32float32int16int64int64int16int32int16float64float64float32float32float32float32float32float32float32float32float32float32float32float32int16int16int16int16int16float64
16120.104439306.3157308.8412251.1607428.22249648.5633838.8796820.51776553.7014619.2995417.562916.7360416.3734116.00028-18.22351-20.15187-20.87932-21.17534-21.626630.3013860.2635090.1198650.0521960.0408411.613351.812161.98037710.3588913.64147935.48209523.290123510.794410.08454123766230245002470418982747228906721285712910.104394308.576201237662302450024731377802984268077476916865347227251.1607428.2224840.10440.6611.0110.024-0.9540.5961.2480.5940.2460.040.180.036022610.04506360017438818
17120.106202311.3657308.8412251.1773728.13795748.46217338.84575320.43824453.77322419.8001818.2274617.4094416.9397216.64743-17.78977-19.47799-20.26045-20.60851-21.025040.3682870.2541860.174390.0516710.0863980.91238731.812238.717788.5538193.40109855.10169653.21922511.050310.0208123766230245002496018982755475243929605713200.106156309.107111237662302450024875637147876234992406116865347230251.1773628.1379530.10620.1510.7590.0620.2060.2563.0020.9380.8250.1710.6180.183012710.02900791424883003
18230.132497386.2322387.9647251.3480528.4655548.9158138.775421.00071153.63523520.6164918.6641517.6812617.2685816.89503-17.54496-19.69511-20.49315-20.82019-21.284280.5078430.4154840.1747330.087760.0651521.1304772.559261.0939616.4778256.35576874.24706842.270448411.372510.48339123765915261049267218982758224022999045716840.132455387.9086601237659152610492765-9916865347231251.3480428.4655420.13250.8810.7880.029-1.3460.8681.6350.7150.2660.1050.180.072020010.049092403110811415
19230.133721389.6974387.9647251.3502228.48285348.93797338.7775221.02281653.62377521.1488118.6336817.5644217.1463216.81766-17.03879-19.77514-20.60835-20.96562-21.359240.5339960.4650460.1730890.1109270.0627431.257022.559163.63989616.6678186.48113254.2736812.27346811.298500.37689123765915261049267218982766470360207365716880.13368388.0207501237659152610492746-9916865347234251.3502128.4828440.13370.710.8560.026-1.3870.8292.2680.8040.3950.1090.270.077020010.0445205440503209
22230.133109387.9639387.9647251.3375728.49566848.95070338.7912821.02362853.6068219.9600218.6426617.660217.2971917.07429-18.12773-19.69588-20.48092-20.76989-21.068780.434150.3947610.1414410.0660610.0289051.1178142.559363.6123916.575156.4190164.26653962.273171711.329800.59931123765915261049267218982774716697415685716600.133067387.9646601237659152610492720-9916865347237251.3375628.4956510.13311.2210.8110.047-0.7750.691.6880.8770.2820.1070.1970.075020610.07048647425396412
21320.139811406.8983405.6975251.5639828.5398149.06429338.6077921.32178353.70834718.8658218.0853517.3515416.9990116.8454-19.0461-20.22903-20.86916-21.10735-21.395040.1757650.2743610.122130.0064020.0220051.5983142.81160.0642315.9797065.1295753.48100042.61858910.491510.21858123766230298689561618982771967918346245720560.139774405.9749801237662302986895706287804878902054392816865347236251.5639928.5397920.13980.9611.0520.0230.3620.0831.1970.350.2290.0810.1610.065022610.07255010812356293
97487320.13896404.4965405.6975251.5324928.57082749.094838.64184621.32238453.66678218.8395617.9274617.4054217.0921216.94814-19.06352-20.28695-20.7935-20.95586-21.279280.1669220.1743940.100355-0.0519760.0089921.4907312.81265.7757416.477484.96496253.44225742.637304310.581310.13945123766230298683033615110146215683297285720000.138922405.42047012376623029868303082878048789020544316134252793207251.5324928.570840.13890.2110.6870.0490.9190.0681.860.3030.2710.0640.1680.05022210.04683095094840111
23420.063235187.1078186.8625251.635728.50939649.04538.53947421.3661953.77319317.5410316.0703215.349714.9724614.7903-18.91487-20.42364-21.12309-21.41729-21.677360.2318080.13220.0845050.0008420.0250652.0194651.269138.2149478.2099642.4738891.49127461.2568445.366200.12294123766230298689587218982777465476485125721840.063199187.0998501237662302986895795287804878902054361316865347238251.635728.5093780.06321.0111.0150.0270.2980.1212.9520.5380.4340.1160.2820.096022710.06436688629151503
25420.063067186.6173186.8625251.5739728.42580448.9249638.5729421.20309653.79862218.0159116.7365716.2770915.9661115.83089-18.40732-19.69057-20.20828-20.35374-20.623680.1991450.0653790.09708-0.0690610.0119830.86958221.269232.6617937.8072442.47587161.50083371.27661145.528410.05443123766230298689587218982782963034624005720760.063029186.6252401237662302986895852287804878902054287816865347240251.5739728.4258040.0631.0910.2990.0540.4090.0742.4790.3960.6460.0990.4570.087022210.01460158902986252
27540.107642315.4893318.0026250.5860627.50923347.51688839.20560519.06168453.8649520.3786418.499417.4247117.0762316.77213-17.30153-19.3648-20.25968-20.56937-20.922290.4022550.3497020.1243270.0844490.0410280.91174451.877497.0372519.3199653.8482742.27239251.878613515.497620.93898123766230137634841618982788460592762885701890.107583317.812921237662301376348538-9916865347242250.5860927.5092470.10761.0910.6950.034-1.130.7651.7040.7260.2740.1230.1870.085010010.10867884228156727
...............................................................................................................................................................................................................
57646838875710.147332428.0726428.0726210.643947.5847293.4359165.26494618.0242916.97219318.9496418.3019517.7620717.4538317.31482-18.97049-20.03344-20.54798-20.72349-21.041530.0858290.1799070.092704-0.0415040.0122921.1890333.188136.8619547.14753152.09990052.14149741.6807028128.198610.01237661212042395904144800078440591564800.146842428.0726012376611519197349593748615707614515274128652725340210.643947.5847020.14680.3610.9140.0360.4910.0720.9140.2590.2690.1070.2030.092022110.06838679035531006
57647238876110.113021330.8691330.8691215.7197646.96570286.8490463.24697518.74864620.40263719.4110718.3016417.7493717.4566717.29531-18.1468-19.45763-19.98209-20.15215-20.438060.2040220.1590430.083752-0.040009-0.0115380.70604861.977127.9323649.5669072.68071251.15631620.808404393.401610.14681123766249838673945614491764372642467844241890.112576330.8691012376619572253820656374610214417597148128752728521215.7197846.965690.11260.8810.1660.0520.4340.0662.4340.4050.4250.0830.2730.063013210.07109624609791332
57647638876310.108786318.7622318.7622216.7095546.59771385.27705462.9487718.6814621.17130720.019117.8947917.2947517.2181917.24389-17.63993-19.774-20.39735-20.17727-20.396210.3765340.1491370.126768-0.170966-0.0187981.0350041.882126.8125659.9559914.02415942.300391.003646589.745800.56819123766246832006758414491992521305231364287090.108347318.7622012376619572257096026374610213343857780128752728604216.7094546.5976810.10830.810.2820.0480.3820.0821.2430.240.6460.1410.5350.123013210.2712455127771415
57647738876410.116256340.0983340.0983219.4781845.70164581.3178461.88905718.68696623.28817720.160118.7568517.764117.328617.00948-17.6281-19.26099-20.10165-20.48043-20.867310.3819640.3581610.1572470.0993570.0683080.78824522.055121.3759216.90405752.85449650.75132290.577478694.413910.17097123765820613230617614503273511109529604422980.115839340.098301237661957226627224-99128852731612219.4781845.7016390.11581.4910.7480.032-2.0070.621.3320.7610.2320.0690.1610.043010610.02123155503986127
57648038876610.146856426.734426.734222.325242.30472672.9456961.640616.35381326.64318719.8386418.519517.7292817.402117.13284-18.32095-19.95687-20.60626-20.82974-21.215540.3309940.3276250.1251140.0199470.0116551.2545943.162133.7952737.23418471.3724150.41840830.3127752129.828910.11407123765820344945868814524881663877713924551910.146437426.734012376614359306731606374786045009988701129052734281222.3252442.3047210.14641.8410.7680.050.2650.1351.6520.510.5470.1310.4270.121013710.12014956999153588
57648338876710.137989401.7574401.7574215.1530844.9516683.8194564.8132816.60263420.82334320.4619618.6335217.7061417.2946317.04238-17.76626-19.78139-20.5367-20.83814-21.203110.5100290.3958950.165870.0544230.0498491.1767362.746135.2877546.35924531.87093842.64140922.1769989126.378200.76725123766121043348710414491030448630927364217150.137514401.757401237658203446902802-99128752728254215.1530844.9516740.13750.1110.7960.05-1.3850.8192.3550.9180.3540.1110.2340.07010610.05078285187298792
57648438876810.113693332.7875332.7875225.2336743.39000373.3637659.25699618.57660927.99384718.9132218.1794517.7428617.3746517.26306-18.54485-19.54366-20.04427-20.21775-20.541410.093190.1103790.12665-0.0692150.0462150.74766651.992111.4546266.7107982.92773151.46605150.886632989.327110.06399123766121258411622414525802504865976324684720.113324332.7875012376624983900161256374610207975147026129052734616225.2336743.3899960.11330.5710.4560.0470.3940.0931.3640.2150.2690.1070.1820.084013110.027170684989730475
57648638876910.154885449.2627449.2627226.6865242.7509471.50223558.47686418.56694629.23266819.4656718.3918717.744517.4491117.25587-18.72579-20.1322-20.70318-20.83447-21.217590.2698780.2648420.123399-0.0422570.0159771.3717463.61147.23747614.6072146.56592373.58548761.6193584115.761410.385123766121258464076814536803119372963844752000.154528449.2627012376624983906059736374786041788761828129152738522226.6864942.7509390.15450.1410.8440.050.8160.0971.8640.2570.8820.1410.720.131013710.08841777291812682
57648738877010.143519417.3458417.3458219.5575943.2418576.6490363.07419616.29085224.40678420.2938918.6189417.7630717.3678717.13032-18.00334-19.85428-20.56199-20.81425-21.198070.5091740.3723030.1638710.0194860.0437711.2044733.001126.7369426.59767772.75318671.09257670.616932129.76100.43573123766120989818880014513633659925565444426670.143075417.3458012376614359296903146374786039641281693128952734285219.5576243.2418560.14310.0210.8260.0370.0860.1831.7140.6120.3110.0930.2180.079012610.08870170569276291
57648938877110.148589431.6054431.6054235.1474837.7660160.55952553.10445817.90432437.36411719.4735318.4810717.74617.3953816.99607-18.56297-19.9735-20.62507-20.90979-21.418890.1872910.2814360.1355280.0681430.0516321.2765193.259141.66709518.69134510.4469974.3057112.3753824108.04910.11719123765820506472473614569244212467077125148950.148315431.605401237662504291860686637492679753072685512945275336235.147537.7659960.14830.1110.7430.0530.7150.1022.3060.3460.7860.1420.5950.13013710.08504954109834578

In [ ]: