def SExtractorSNR(catalog, bins=16, timeStamp=False): """ A simple plot showing the SNR SExtractor finds. """ txt = '%s' % datetime.datetime.isoformat(datetime.datetime.now()) snr = 1./catalog.magerr_aper kde1 = KDE(snr) kde1.fit() fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(snr, bins=bins, label='r=0.65 Aperture', normed=True, color='r', alpha=0.5) ax1.axvline(x=np.mean(snr), c='g' ,ls='--', label='Mean', lw=1.6) ax1.plot(kde1.support, kde1.density, 'b-', label='Gaussian KDE', lw=1.6) print 'Sextractor:', np.mean(1./catalog.magerr_aper), np.mean(1./catalog.magerr_auto) ax1.set_xlabel('SExtractor Signal-to-Noise Ratio') ax1.set_ylabel('PDF') if timeStamp: ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0) plt.savefig('SExtractorSNR.pdf') plt.close()
def setupClass(cls): cls.decimal_density = 2 # low accuracy because binning is different res1 = KDE(Xi) res1.fit(kernel="gau", fft=True, bw="silverman") cls.res1 = res1 rfname2 = os.path.join(curdir,'results','results_kde_fft.csv') cls.res_density = np.genfromtxt(open(rfname2, 'rb'))
def MagnitudeDistribution(catalog, mag=18., bins=16, timeStamp=False): """ A simple plot to compare input and extracted magnitudes for a fixed magnitude stars. """ txt = '%s' % datetime.datetime.isoformat(datetime.datetime.now()) kde1 = KDE(catalog.mag_aper - mag) kde1.fit() kde2 = KDE(catalog.mag_auto - mag) kde2.fit() fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(catalog.mag_aper - mag, bins=bins, label='r=0.65 Aperture', alpha=0.2, normed=True, color='b') ax1.axvline(x=np.mean(catalog.mag_aper - mag), c='b', ls='--', label='Mean') ax1.hist(catalog.mag_auto - mag, bins=bins, label='Auto', alpha=0.3, normed=True, color='r') ax1.axvline(x=np.mean(catalog.mag_auto - mag), c='r', ls='--', label='Mean') ax1.plot(kde1.support, kde1.density, 'b-', label='Gaussian KDE') ax1.plot(kde2.support, kde2.density, 'r-', label='Gaussian KDE') #print np.std(catalog.mag_aper), np.std(catalog.mag_auto) ax1.set_xlabel('SExtractor Magnitude - Input Catalog') ax1.set_ylabel('PDF') if timeStamp: ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0) plt.savefig('MagDistributionSExtractor.pdf') plt.close()
def MagnitudeDistribution(catalog, mag=18., bins=16, timeStamp=False): """ A simple plot to compare input and extracted magnitudes for a fixed magnitude stars. """ txt = '%s' % datetime.datetime.isoformat(datetime.datetime.now()) kde1 = KDE(catalog.mag_aper-mag) kde1.fit() kde2 = KDE(catalog.mag_auto-mag) kde2.fit() fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(catalog.mag_aper-mag, bins=bins, label='r=0.65 Aperture', alpha=0.2, normed=True, color='b') ax1.axvline(x=np.mean(catalog.mag_aper-mag), c='b' ,ls='--', label='Mean') ax1.hist(catalog.mag_auto-mag, bins=bins, label='Auto', alpha=0.3, normed=True, color='r') ax1.axvline(x=np.mean(catalog.mag_auto-mag), c='r', ls='--', label='Mean') ax1.plot(kde1.support, kde1.density, 'b-', label='Gaussian KDE') ax1.plot(kde2.support, kde2.density, 'r-', label='Gaussian KDE') #print np.std(catalog.mag_aper), np.std(catalog.mag_auto) ax1.set_xlabel('SExtractor Magnitude - Input Catalog') ax1.set_ylabel('PDF') if timeStamp: ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0) plt.savefig('MagDistributionSExtractor.pdf') plt.close()
def setupClass(cls): cls.decimal_density = 2 # low accuracy because binning is different res1 = KDE(Xi) res1.fit(kernel="gau", fft=True, bw="silverman") cls.res1 = res1 rfname2 = os.path.join(curdir, 'results', 'results_kde_fft.csv') cls.res_density = np.genfromtxt(open(rfname2, 'rb'))
def setupClass(cls): res1 = KDE(Xi) weights = np.linspace(1,100,200) res1.fit(kernel="gau", gridsize=50, weights=weights, fft=False, bw="silverman") cls.res1 = res1 rfname = os.path.join(curdir,'results','results_kde_weights.csv') cls.res_density = np.genfromtxt(open(rfname, 'rb'), skip_header=1)
def setupClass(cls): res1 = KDE(Xi) weights = np.linspace(1, 100, 200) res1.fit(kernel="gau", gridsize=50, weights=weights, fft=False, bw="silverman") cls.res1 = res1 rfname = os.path.join(curdir, 'results', 'results_kde_weights.csv') cls.res_density = np.genfromtxt(open(rfname, 'rb'), skip_header=1)
def SExtractorSNR(catalog, bins=16, timeStamp=False): """ A simple plot showing the SNR SExtractor finds. """ txt = '%s' % datetime.datetime.isoformat(datetime.datetime.now()) snr = 1. / catalog.magerr_aper kde1 = KDE(snr) kde1.fit() fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(snr, bins=bins, label='r=0.65 Aperture', normed=True, color='r', alpha=0.5) ax1.axvline(x=np.mean(snr), c='g', ls='--', label='Mean', lw=1.6) ax1.plot(kde1.support, kde1.density, 'b-', label='Gaussian KDE', lw=1.6) print 'Sextractor:', np.mean(1. / catalog.magerr_aper), np.mean( 1. / catalog.magerr_auto) ax1.set_xlabel('SExtractor Signal-to-Noise Ratio') ax1.set_ylabel('PDF') if timeStamp: ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0) plt.savefig('SExtractorSNR.pdf') plt.close()
def setupClass(cls): res1 = KDE(Xi) res1.fit(kernel="biw", fft=False, bw="silverman") cls.res1 = res1 cls.res_density = KDEResults["biw_d"]
# 5-inch bins bins5 = np.arange(heights.min(), heights.max(), 5.) heights.hist(bins=bins5, fc='steelblue') plt.savefig('height_hist_bins5.png') # 0.001-inch bins bins001 = np.arange(heights.min(), heights.max(), .001) heights.hist(bins=bins001, fc='steelblue') plt.savefig('height_hist_bins001.png') # Kernel density estimators, from scipy.stats. # Create a KDE ojbect heights_kde = KDE(heights) # Use fit() to estimate the densities. Default is gaussian kernel # using fft. This will provide a "density" attribute. heights_kde.fit() # Plot the density of the heights # Sort inside the plotting so the lines connect nicely. fig = plt.figure() plt.plot(heights_kde.support, heights_kde.density) plt.savefig('heights_density.png') # Pull out male and female heights as arrays over which to compute densities heights_m = heights[heights_weights['Gender'] == 'Male'].values heights_f = heights[heights_weights['Gender'] == 'Female'].values heights_m_kde = KDE(heights_m) heights_f_kde = KDE(heights_f) heights_m_kde.fit() heights_f_kde.fit()
def plotSourceFinderResults(file='objects.phot', mag=18., bins=14, apcorr=0.923, timeStamp=False): """ """ data = sextutils.sextractor(file) offs = data.magnitude-mag xpos = np.mean(offs) kde = KDE(offs) kde.fit() txt = '%s' % datetime.datetime.isoformat(datetime.datetime.now()) fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(offs, bins=bins, label='r=0.65 Aperture', alpha=0.2, normed=True, color='b') ax1.plot(kde.support, kde.density, 'r-', label='Gaussian KDE') ax1.axvline(x=xpos, c='b' ,ls='-', label='Mean') ax1.set_xlabel('Aperture Corrected Magnitude - Input Catalogue') ax1.set_ylabel('PDF') ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0, loc='upper left') plt.savefig('MagDistributionSourceFinder.pdf') plt.close() if np.abs(mag - 18.) < 0.1: counts = data.counts / apcorr - 608137.825681 #for 18mag else: counts = data.counts / apcorr - 1359.57331621 #for 24.5mag xpos = np.mean(counts) std = np.std(data.counts/apcorr) snr = np.mean(data.counts/apcorr)/std print 'SourceFinder:', snr, np.mean(data.counts)/std, 1359.57331621/std, np.mean(data.counts/apcorr), std kde = KDE(counts) kde.fit() txt = '%s' % datetime.datetime.isoformat(datetime.datetime.now()) fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(counts, bins=bins, label='r=0.65 Aperture', alpha=0.2, normed=True, color='b') ax1.plot(kde.support, kde.density, 'r-', label='Gaussian KDE', lw=2) ax1.axvline(x=xpos, c='g' ,ls='-', label='Mean', lw=2) ax1.set_xlabel('Aperture Corrected Counts - Input Catalogue') ax1.set_ylabel('PDF') ax1.text(ax1.get_xlim()[0]*0.95, ax1.get_ylim()[1]*0.75, r'$SNR = \frac{\left < counts \right >}{\sigma} \sim %.2f$' % snr) if timeStamp: ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0, loc='upper left') plt.savefig('CountDistributionSourceFinder.pdf') plt.close() kde = KDE(data.snr) kde.fit() fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(data.snr, bins=bins, label='r=0.65 Aperture', alpha=0.2, normed=True, color='b') ax1.axvline(x=np.mean(data.snr), c='g' ,ls='-', label='Mean', lw=2) ax1.plot(kde.support, kde.density, 'r-', label='Gaussian KDE', lw=2) ax1.set_xlabel('Derived Signal-to-Noise Ratio') ax1.set_ylabel('PDF') #ax1.text(ax1.get_xlim()[0]*1.02, ax1.get_ylim()[1]*0.9, r'$\left < SNR \right > = %.2f$' % np.mean(data.snr)) ax1.text(4.5, 0.33, r'$\left < SNR \right > = %.2f$' % np.mean(data.snr)) if timeStamp: ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0, loc='upper left') plt.savefig('SNRsSourceFinder.pdf') plt.close() #pick the ones with well recovered flux msk = data.counts > 1223.6 #90% of 1369.57 kde = KDE(data.snr[msk]) kde.fit() fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(data.snr[msk], bins=bins, label='r=0.65 Aperture', alpha=0.2, normed=True, color='b') ax1.axvline(x=np.mean(data.snr[msk]), c='g' ,ls='-', label='Mean', lw=2) ax1.plot(kde.support, kde.density, 'r-', label='Gaussian KDE', lw=2) ax1.set_xlabel('Derived Signal-to-Noise Ratio') ax1.set_ylabel('PDF') #ax1.text(ax1.get_xlim()[0]*1.02, ax1.get_ylim()[1]*0.9, r'$\left < SNR \right > = %.2f$' % np.mean(data.snr)) ax1.text(11., 0.5, r'$\left < SNR \right > = %.2f$' % np.mean(data.snr[msk])) if timeStamp: ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0) plt.savefig('SNRsSourceFinder2.pdf') plt.close() avg = np.mean(data.ellipticity) std = np.std(data.ellipticity) fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(data.ellipticity, bins=bins, alpha=0.2, normed=True, color='b') ax1.axvline(x=avg, c='b' ,ls='-') ax1.text(ax1.get_xlim()[0]*1.02, ax1.get_ylim()[1]*0.95, r'$\bar{e} = %f$' % avg) ax1.text(ax1.get_xlim()[0]*1.02, ax1.get_ylim()[1]*0.9, r'$\sigma = %f$' % std) ax1.set_xlabel('Derived Ellipticity') ax1.set_ylabel('PDF') ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) plt.savefig('EllipticityDistributionSourceFinder.pdf') plt.close()
def plotSNR(deg=60, kdes=True, log=False): CCDs = 1000 fudge = 47.0 #cumulative distribution of stars for different galactic latitudes if deg == 30: tmp = 1 sfudge = 0.79 elif deg == 60: tmp = 2 sfudge = 0.79 else: tmp = 3 sfudge = 0.78 #stars d = np.loadtxt('data/stars.dat', usecols=(0, tmp)) stmags = d[:, 0] stcounts = d[:, 1] #fit a function and generate finer sample z = np.polyfit(stmags, np.log10(stcounts), 4) p = np.poly1d(z) starmags = np.arange(1, 30.2, 0.2) starcounts = 10**p(starmags) cpdf = (starcounts - np.min(starcounts)) / (np.max(starcounts) - np.min(starcounts)) starcounts /= 3600. #convert to square arcseconds nstars = int(np.max(starcounts) * fudge * sfudge) * CCDs magStars = cr.drawFromCumulativeDistributionFunction( cpdf, starmags, nstars) SNRsStars = ETC.SNR(ETC.VISinformation(), magnitude=magStars, exposures=1, galaxy=False) print 'Assuming Galactic Lattitude = %i deg' % deg print 'Number of stars within a pointing (36CCDs) with 70 < SNR < 700 (single 565s exposure):', \ int((SNRsStars[(SNRsStars > 70) & (SNRsStars < 700)]).size * 36. / CCDs) print 'Number of stars within a pointing (36CCDs) with 60 < SNR < 80 (single 565s exposure):', \ int((SNRsStars[(SNRsStars > 60) & (SNRsStars < 80)]).size * 36. / CCDs) print 'Number of stars within a pointing (36CCDs) with 690 < SNR < 710 (single 565s exposure):', \ int((SNRsStars[(SNRsStars > 690) & (SNRsStars < 710)]).size * 36. / CCDs) print 'Number of stars within a pointing (36CCDs) with 18 < mag < 22 (single 565s exposure):', \ int((SNRsStars[(magStars > 18) & (magStars < 22)]).size * 36. / CCDs) print 'Number of stars within a pointing (36CCDs) with 18 < mag < 23 (single 565s exposure):', \ int((SNRsStars[(magStars > 18) & (magStars < 23)]).size * 36. / CCDs) print 'Number of stars within a pointing (36CCDs) with 17.9 < mag < 18.1 (single 565s exposure):', \ int((SNRsStars[(magStars > 17.9) & (magStars < 18.1)]).size * 36. / CCDs) print 'Number of stars within a pointing (36CCDs) with 21 < mag < 23 (single 565s exposure):', \ int((SNRsStars[(magStars > 21) & (magStars < 23)]).size * 36. / CCDs) #calculate Gaussian KDE with statsmodels package (for speed) if kdes: kn = SNRsStars[SNRsStars < 1000] kdeStars = KDE(kn) kdeStars.fit(adjust=2) nst = kn.size / 10. / 1.38 #galaxies #cumulative distribution of galaxies d = np.loadtxt('data/cdf_galaxies.dat', usecols=(0, 1)) gmags = d[:, 0] gcounts = d[:, 1] nums = int(np.max(gcounts) / 3600. * fudge * CCDs) z = np.polyfit(gmags, np.log10(gcounts), 4) p = np.poly1d(z) galaxymags = np.arange(10.0, 30.2, 0.2) galaxycounts = 10**p(galaxymags) cumulative = (galaxycounts - np.min(galaxycounts)) / ( np.max(galaxycounts) - np.min(galaxycounts)) magGalaxies = cr.drawFromCumulativeDistributionFunction( cumulative, galaxymags, nums) SNRsGalaxies = ETC.SNR(VISinformation(), magnitude=magGalaxies, exposures=1) #calculate Gaussian KDE, this time with scipy to save memory, and evaluate it if kdes: kn = SNRsGalaxies[SNRsGalaxies < 1000] #pos = np.linspace(1, 810, num=70) #kdegal = gaussian_kde(kn) #gals = kdegal(pos) #ngl = kn.size #/ df kdeGalaxy = KDE(kn) kdeGalaxy.fit(adjust=10) ngl = kn.size / 10. / 1.38 #histogram binning and weighting bins = np.linspace(0., 1000., 101) df = bins[1] - bins[0] weight = 1. / (2048 * 2 * 2066 * 2 * 0.1 * 0.1 * 7.71604938e-8 * CCDs) / df weightsS = np.ones(magStars.size) * weight weightsG = np.ones(magGalaxies.size) * weight #simple magnitude distribution plot for stars stars = np.loadtxt('data/stars.dat') fig = plt.figure() ax = fig.add_subplot(111) ax.hist(magStars, bins=30, cumulative=True, log=True, alpha=0.3, weights=weightsS * df, label='Random Draws') ax.semilogy(stars[:, 0], stars[:, 1], label='Stars (30deg)') ax.semilogy(stars[:, 0], stars[:, 2], label='Stars (60deg)') ax.semilogy(stars[:, 0], stars[:, 3], label='Stars (90deg)') ax.set_xlabel(r'$M_{AB}$') ax.set_ylabel(r'Cumulative Number of Objects [deg$^{-2}$]') plt.legend(shadow=True, fancybox=True, loc='upper left') plt.savefig('stars%ideg.pdf' % deg) plt.close() #make a plot txt = '%s' % datetime.datetime.isoformat(datetime.datetime.now()) ax = host_subplot(111, axes_class=AA.Axes) hist1 = ax.hist(SNRsStars, bins=bins, alpha=0.2, log=True, weights=weightsS, label='Stars [%i deg]' % deg, color='r') hist2 = ax.hist(SNRsGalaxies, bins=bins, alpha=0.2, log=True, weights=weightsG, label='Galaxies', color='blue') if kdes: ax.plot(kdeStars.support, kdeStars.density * nst, 'r-', label='Gaussian KDE (stars)') #ax.plot(pos, gals*ngl, 'b-', label='Gaussian KDE (galaxies)') ax.plot(kdeGalaxy.support, kdeGalaxy.density * ngl, 'b-', label='Gaussian KDE (galaxies)') #calculate magnitude scale, top-axis if log: mags = np.asarray([17, 18, 19, 20, 21, 22, 23, 24]) SNRs = ETC.SNR(VISinformation(), magnitude=mags, exposures=1, galaxy=False) else: mags = np.asarray([17, 17.5, 18, 18.5, 19, 20, 21, 22.5]) SNRs = ETC.SNR(VISinformation(), magnitude=mags, exposures=1, galaxy=False) ax2 = ax.twin() # ax2 is responsible for "top" axis and "right" axis ax2.set_xticks(SNRs) ax2.set_xticklabels([str(tmp) for tmp in mags]) ax2.set_xlabel('$M(R+I)_{AB}$ [mag]') ax2.axis['right'].major_ticklabels.set_visible(False) ax.set_ylim(1e-1, 1e5) ax.set_ylabel('Number of Objects [deg$^{-2}$ dex$^{-1}$]') ax.set_xlabel('Signal-to-Noise Ratio [assuming a single 565s exposure]') plt.text(0.8, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax.transAxes, alpha=0.2) plt.legend(shadow=True, fancybox=True) if log: ax.set_xscale('log') plt.savefig('SNRtheoretical%ideglog.pdf' % deg) else: ax.set_xlim(1, 1e3) plt.savefig('SNRtheoretical%ideglin.pdf' % deg) plt.close() #write output if not log: mid = df / 2. #output to file fh = open('SNRsSTARS%ideg.txt' % deg, 'w') fh.write('#These values are for stars at %ideg (%s)\n' % (deg, txt)) fh.write('#SNR number_of_stars N\n') fh.write('#bin_centre per_square_degree per_pointing\n') for a, b in zip(hist1[0], hist1[1]): fh.write('%i %f %f\n' % (b + mid, a * df, a * df * 0.496)) fh.close() fh = open('SNRsGALAXIES.txt', 'w') fh.write('#These values are for galaxies (%s)\n' % txt) fh.write('#SNR number_of_galaxies N\n') fh.write('#bin_centre per_square_degree per_pointing\n') for a, b in zip(hist2[0], hist2[1]): fh.write('%i %f %f\n' % (b + mid, a * df, a * df * 0.496)) fh.close()
def plotSourceFinderResults(file='objects.phot', mag=18., bins=14, apcorr=0.923, timeStamp=False): """ """ data = sextutils.sextractor(file) offs = data.magnitude - mag xpos = np.mean(offs) kde = KDE(offs) kde.fit() txt = '%s' % datetime.datetime.isoformat(datetime.datetime.now()) fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(offs, bins=bins, label='r=0.65 Aperture', alpha=0.2, normed=True, color='b') ax1.plot(kde.support, kde.density, 'r-', label='Gaussian KDE') ax1.axvline(x=xpos, c='b', ls='-', label='Mean') ax1.set_xlabel('Aperture Corrected Magnitude - Input Catalogue') ax1.set_ylabel('PDF') ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0, loc='upper left') plt.savefig('MagDistributionSourceFinder.pdf') plt.close() if np.abs(mag - 18.) < 0.1: counts = data.counts / apcorr - 608137.825681 #for 18mag else: counts = data.counts / apcorr - 1359.57331621 #for 24.5mag xpos = np.mean(counts) std = np.std(data.counts / apcorr) snr = np.mean(data.counts / apcorr) / std print 'SourceFinder:', snr, np.mean( data.counts) / std, 1359.57331621 / std, np.mean(data.counts / apcorr), std kde = KDE(counts) kde.fit() txt = '%s' % datetime.datetime.isoformat(datetime.datetime.now()) fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(counts, bins=bins, label='r=0.65 Aperture', alpha=0.2, normed=True, color='b') ax1.plot(kde.support, kde.density, 'r-', label='Gaussian KDE', lw=2) ax1.axvline(x=xpos, c='g', ls='-', label='Mean', lw=2) ax1.set_xlabel('Aperture Corrected Counts - Input Catalogue') ax1.set_ylabel('PDF') ax1.text(ax1.get_xlim()[0] * 0.95, ax1.get_ylim()[1] * 0.75, r'$SNR = \frac{\left < counts \right >}{\sigma} \sim %.2f$' % snr) if timeStamp: ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0, loc='upper left') plt.savefig('CountDistributionSourceFinder.pdf') plt.close() kde = KDE(data.snr) kde.fit() fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(data.snr, bins=bins, label='r=0.65 Aperture', alpha=0.2, normed=True, color='b') ax1.axvline(x=np.mean(data.snr), c='g', ls='-', label='Mean', lw=2) ax1.plot(kde.support, kde.density, 'r-', label='Gaussian KDE', lw=2) ax1.set_xlabel('Derived Signal-to-Noise Ratio') ax1.set_ylabel('PDF') #ax1.text(ax1.get_xlim()[0]*1.02, ax1.get_ylim()[1]*0.9, r'$\left < SNR \right > = %.2f$' % np.mean(data.snr)) ax1.text(4.5, 0.33, r'$\left < SNR \right > = %.2f$' % np.mean(data.snr)) if timeStamp: ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0, loc='upper left') plt.savefig('SNRsSourceFinder.pdf') plt.close() #pick the ones with well recovered flux msk = data.counts > 1223.6 #90% of 1369.57 kde = KDE(data.snr[msk]) kde.fit() fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(data.snr[msk], bins=bins, label='r=0.65 Aperture', alpha=0.2, normed=True, color='b') ax1.axvline(x=np.mean(data.snr[msk]), c='g', ls='-', label='Mean', lw=2) ax1.plot(kde.support, kde.density, 'r-', label='Gaussian KDE', lw=2) ax1.set_xlabel('Derived Signal-to-Noise Ratio') ax1.set_ylabel('PDF') #ax1.text(ax1.get_xlim()[0]*1.02, ax1.get_ylim()[1]*0.9, r'$\left < SNR \right > = %.2f$' % np.mean(data.snr)) ax1.text(11., 0.5, r'$\left < SNR \right > = %.2f$' % np.mean(data.snr[msk])) if timeStamp: ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) ax1.legend(shadow=True, fancybox=True, numpoints=1, scatterpoints=1, markerscale=1.0) plt.savefig('SNRsSourceFinder2.pdf') plt.close() avg = np.mean(data.ellipticity) std = np.std(data.ellipticity) fig = plt.figure() ax1 = fig.add_subplot(111) ax1.hist(data.ellipticity, bins=bins, alpha=0.2, normed=True, color='b') ax1.axvline(x=avg, c='b', ls='-') ax1.text(ax1.get_xlim()[0] * 1.02, ax1.get_ylim()[1] * 0.95, r'$\bar{e} = %f$' % avg) ax1.text(ax1.get_xlim()[0] * 1.02, ax1.get_ylim()[1] * 0.9, r'$\sigma = %f$' % std) ax1.set_xlabel('Derived Ellipticity') ax1.set_ylabel('PDF') ax1.text(0.83, 1.12, txt, ha='left', va='top', fontsize=9, transform=ax1.transAxes, alpha=0.2) plt.savefig('EllipticityDistributionSourceFinder.pdf') plt.close()
# 5-inch bins bins5 = np.arange(heights.min(), heights.max(), 5.) heights.hist(bins = bins5, fc = 'steelblue') plt.savefig('height_hist_bins5.png') # 0.001-inch bins bins001 = np.arange(heights.min(), heights.max(), .001) heights.hist(bins = bins001, fc = 'steelblue') plt.savefig('height_hist_bins001.png') # Kernel density estimators, from scipy.stats. # Create a KDE ojbect heights_kde = KDE(heights) # Use fit() to estimate the densities. Default is gaussian kernel # using fft. This will provide a "density" attribute. heights_kde.fit() # Plot the density of the heights # Sort inside the plotting so the lines connect nicely. fig = plt.figure() plt.plot(heights_kde.support, heights_kde.density) plt.savefig('heights_density.png') # Pull out male and female heights as arrays over which to compute densities heights_m = heights[heights_weights['Gender'] == 'Male'].values heights_f = heights[heights_weights['Gender'] == 'Female'].values heights_m_kde = KDE(heights_m) heights_f_kde = KDE(heights_f) heights_m_kde.fit() heights_f_kde.fit()