예제 #1
0
def discrepancy_and_redchisqrd(A, eta):

    numerator__delta_pseudo_z = numerator__delta_pseudo_GRB__first_term + eta * numerator__delta_pseudo_GRB__second_term  #	defined for each GRB
    denominator__delta_pseudo_z = denominator__delta_pseudo_zsim__first_term + (
        (eta + 2) / (1 + z_sim))  #	defined for each simulated redshift

    denominator__F = (1 + z_sim)**eta
    F_Fermi_sim = numerator__F / denominator__F
    F_Fermi_sim = F_Fermi_sim * (cm_per_Mpc**2) / L_norm
    RHSs = (A / common_Fermi_flux) * (common_Epeak_in_MeV**eta)

    pseudo_redshifts = np.zeros(RHSs.size)
    pseudo_redshifts_error = np.zeros(RHSs.size)
    for j, RHS in enumerate(RHSs):

        array = np.abs(F_Fermi_sim - RHS)
        ind = np.where(array == array.min())[0][0]
        pseudo_redshift = z_sim[ind]
        pseudo_redshift_error = numerator__delta_pseudo_z[
            j] / denominator__delta_pseudo_z[ind]

        pseudo_redshifts[j] = pseudo_redshift
        pseudo_redshifts_error[j] = pseudo_redshift_error

    discrepancy = np.sum((common_redshift - pseudo_redshifts)**2)
    chisquared, dof, redchisqrd = mf.reduced_chisquared(
        common_redshift, pseudo_redshifts, pseudo_redshifts_error, 2)

    return pseudo_redshifts, pseudo_redshifts_error, discrepancy, chisquared, dof, redchisqrd
def discrepancy_and_redchisqrd(A, eta):

    numerator__delta_pseudo_z = numerator__delta_pseudo_GRB__first_term + eta * numerator__delta_pseudo_GRB__second_term  #	defined for each GRB
    denominator__delta_pseudo_z = denominator__delta_pseudo_zsim__first_term + (
        (eta + 2) / (1 + z_sim))  #	defined for each simulated redshift

    denominator__F = (1 + z_sim)**eta
    F_Fermi_sim = numerator__F / denominator__F
    F_Fermi_sim = F_Fermi_sim * (cm_per_Mpc**2) / L_norm
    RHSs = (A / common_Fermi_flux) * (common_Epeak_in_MeV**eta)

    pseudo_redshifts = np.zeros(RHSs.size)
    pseudo_redshifts_error = np.zeros(RHSs.size)
    for j, RHS in enumerate(RHSs):

        array = np.abs(F_Fermi_sim - RHS)
        ind = np.where(array == array.min())[0][0]
        pseudo_redshift = z_sim[ind]
        pseudo_redshift_error = numerator__delta_pseudo_z[
            j] / denominator__delta_pseudo_z[ind]

        pseudo_redshifts[j] = pseudo_redshift
        pseudo_redshifts_error[j] = pseudo_redshift_error

    z_min = 1e-5
    z_max = 1e1
    x1, y_pseudo = mf.my_histogram_according_to_given_boundaries(
        pseudo_redshifts, z_bin, z_min, z_max)
    x2, y_common = mf.my_histogram_according_to_given_boundaries(
        common_redshift, z_bin, z_min, z_max)
    #	print ( x1 - x2 == 0 ).all()
    discrepancy = np.sum((y_pseudo - y_common)**2)

    chisquared, dof, redchisqrd = mf.reduced_chisquared(
        common_redshift, pseudo_redshifts, pseudo_redshifts_error, 2)

    return pseudo_redshifts, pseudo_redshifts_error, discrepancy, chisquared, dof, redchisqrd
def plot_redshift_vs_redshift(pseudo_redshifts, pseudo_redshifts_error,
                              coefficient, coefficient_error, exponent,
                              exponent_error):

    reconciled = coefficient * (pseudo_redshifts**exponent)
    reconciled_error = exponent * (
        pseudo_redshifts_error /
        pseudo_redshifts) + coefficient_error / coefficient + np.log(
            pseudo_redshifts) * exponent_error
    reconciled_error = reconciled_error * reconciled
    ratio = reconciled / common_redshift
    ratio_error = (reconciled_error / reconciled) * ratio

    print 'Ratio min and max	:	', round(ratio.min(), 3), round(ratio.max(), 3)
    print 'Reduced chi-squared	:	', mf.reduced_chisquared(
        common_redshift, reconciled, reconciled_error, 4)[2]

    z_min = 1e-1
    z_max = 2e1

    ax = plt.subplot(111)
    ax.set_xscale('log')
    ax.set_yscale('log')
    ax.set_xlim(z_min, z_max)
    ax.set_ylim(z_min, z_max)
    ax.set_ylabel(r'$ \rm{ reconciled / measured } $', fontsize=size_font)
    ax.set_xlabel(r'$ \rm{ pseudo \; \, redshift } $', fontsize=size_font)
    ax.errorbar(pseudo_redshifts,
                ratio,
                yerr=ratio_error,
                fmt='.',
                ms=marker_size,
                color='silver',
                markerfacecolor='k',
                markeredgecolor='k')
    ax.axhline(y=1, linestyle='dashed', color='k')
예제 #4
0
	model_bin__Fermi	=	model_bin__Fermi * Fermi_norm
	Fermi_long_total_model	=	Fermi_long_total_model + model_bin__Fermi
	
	ax[j] = fig.add_subplot(z_binned__Fermi.size-1,1,j+1)
	ax[j].text( -3.5, 350, r'$ z : $ ' + r'$ {0:.1f} $'.format(z) + r' $ \rm{to} $ ' + r'$ {0:.1f} $'.format(z_binned__Fermi[j+1]), fontsize = size_font, ha = 'center', va = 'center' )
	ax[j].set_ylabel( r'$ \rm{ N } $', fontsize = size_font, rotation = 0, labelpad = padding+6 )
	ax[j].set_ylim( 0, 400 )
	ax[j].errorbar( Luminosity_mids, obsFermi_long[j], yerr = [ obsFermi_long_poserr[j], obsFermi_long_negerr[j] ], fmt = '-', color = 'k', label = r' $ \rm{ observed } $' )
	ax[j].plot( Luminosity_mids, model_bin__Fermi, linestyle = '--', color = 'k', label = r' $ \rm{ model } $' )
	ax[j].legend()
	ltext = plt.gca().get_legend().get_texts()
	plt.setp( ltext[0], fontsize = 11 )
	
	modeled__Fermi_long[j]			=	model_bin__Fermi
	discrepancy_over_z__Fermi[j]	=	find_discrepancy( model_bin__Fermi, obsFermi_long[j] )
	rdcdchisqrd_over_z__Fermi[j]	=	mf.reduced_chisquared( model_bin__Fermi, obsFermi_long[j], obsFermi_long_error[j], 4 )[2]
	
	#	print mf.reduced_chisquared( model_bin__Fermi, obsFermi_long[j], obsFermi_long_error[j], 4 )
print 'Done in {:.3f} mins.'.format( ( time.time()-t0 )/60 )
xticklabels	=	ax[0].get_xticklabels() + ax[1].get_xticklabels()
plt.setp( xticklabels, visible = False )
plt.xlabel( r'$ \rm{ log } $' + r'$ ( L_{iso} / L_{0} ) $', fontsize = size_font, labelpad = padding+5 )
plt.savefig( './../plots/estimated_lumfunc_models/binned_with_z/Fermi--binned.png' )
plt.clf()
plt.close()

Fermi_long_total_data_e	=	np.maximum(Fermi_long_total_data_ep, Fermi_long_total_data_en)+1
print 'reduced chisquared	:	', mf.reduced_chisquared( Fermi_long_total_model, Fermi_long_total_data, Fermi_long_total_data_e, 4 ), '\n\n'
ax	=	plt.subplot(111)
ax.set_xlabel( r'$ \rm{ log } $' + r'$ ( L_{p} / L_{0} ) $', fontsize = size_font, labelpad = padding-4 )
ax.set_ylabel( r'$ \rm{ N } $', fontsize = size_font, rotation = 0, labelpad = padding+6 )
예제 #5
0
                        #	ax[j] = fig.add_subplot(z_binned__Fermi.size-1,1,j+1)
                        #	ax[j].text( -3.5, 350, r'$ z : $ ' + r'$ {0:.1f} $'.format(z) + r' $ \rm{to} $ ' + r'$ {0:.1f} $'.format(z_binned__Fermi[j+1]), fontsize = size_font, ha = 'center', va = 'center' )
                        #	ax[j].set_ylabel( r'$ \rm{ N } $', fontsize = size_font, rotation = 0, labelpad = padding+6 )
                        #	ax[j].set_ylim( 0, 400 )
                        #	ax[j].errorbar( Luminosity_mids, obsFermi_long[j], yerr = [ obsFermi_long_poserr[j], obsFermi_long_negerr[j] ], fmt = '-', color = 'k', label = r' $ \rm{ observed } $' )
                        #	ax[j].plot( Luminosity_mids, model_bin__Fermi, linestyle = '--', color = 'k', label = r' $ \rm{ model } $' )
                        #	ax[j].legend()
                        #	ltext = plt.gca().get_legend().get_texts()
                        #	plt.setp( ltext[0], fontsize = 11 )

                        modeled__Fermi_long[j] = model_bin__Fermi
                        discrepancy_over_z__Fermi[j] = find_discrepancy(
                            model_bin__Fermi, obsFermi_long[j])
                        rdcdchisqrd_over_z__Fermi[j] = mf.reduced_chisquared(
                            model_bin__Fermi, obsFermi_long[j],
                            obsFermi_long_error[j], 5)[2]

                        #	print mf.reduced_chisquared( model_bin__Fermi, obsFermi_long[j], obsFermi_long_error[j], 5 )[1]

                    #	xticklabels	=	ax[0].get_xticklabels() + ax[1].get_xticklabels()
                    #	plt.setp( xticklabels, visible = False )
                    #	plt.xlabel( r'$ \rm{ log } $' + r'$ ( L_{iso} / L_{0} ) $', fontsize = size_font, labelpad = padding+5 )
                    #	plt.show()

                    grid_of_discrepancy__Fermi[c1, c2, cLb, cdel, cX] = np.sum(
                        discrepancy_over_z__Fermi)
                    grid_of_rdcdchisqrd__Fermi[c1, c2, cLb, cdel,
                                               cX] = np.mean(
                                                   rdcdchisqrd_over_z__Fermi)
print 'Fermi done in {:.3f} hrs.'.format((time.time() - t0) / 3600), '\n'
	ax[j].set_ylabel( r'$ \rm{ N } $', fontsize = size_font, rotation = 0, labelpad = padding+6 )
	ax[j].set_ylim( 0, 400 )
	ax[j].errorbar( Luminosity_mids, obsFermi_long_bin, yerr = [ obsFermi_long_poserr_bin, obsFermi_long_negerr_bin ], fmt = '-', color = 'k', label = r' $ \rm{ observed } $' )
	ax[j].plot( Luminosity_mids, model_bin__Fermi, linestyle = '--', color = 'k', label = r' $ \rm{ model } $' )
	ax[j].legend()
	ltext = plt.gca().get_legend().get_texts()
	plt.setp( ltext[0], fontsize = 11 )
xticklabels	=	ax[0].get_xticklabels() + ax[1].get_xticklabels()
plt.setp( xticklabels, visible = False )
plt.xlabel( r'$ \rm{ log } $' + r'$ ( L_{p} / L_{0} ) $', fontsize = size_font, labelpad = padding+5 )
plt.savefig( './../plots/estimated_lumfunc_models/binned_with_z/Fermi--binned.png' )
plt.clf()
plt.close()

Fermi_long_total_data_e	=	np.maximum(Fermi_long_total_data_ep, Fermi_long_total_data_en)+1
print 'reduced chisquared	:	', mf.reduced_chisquared( Fermi_long_total_model, Fermi_long_total_data, Fermi_long_total_data_e, 5 ), '\n'
ax	=	plt.subplot(111)
ax.set_xlabel( r'$ \rm{ log } $' + r'$ ( L_{p} / L_{0} ) $', fontsize = size_font, labelpad = padding-4 )
ax.set_ylabel( r'$ \rm{ N } $', fontsize = size_font, rotation = 0, labelpad = padding+6 )
ax.set_ylim( 0, 700 )
ax.errorbar( Luminosity_mids, Fermi_long_total_data, yerr = [ Fermi_long_total_data_ep, Fermi_long_total_data_en ], fmt = '-', color = 'k', label = r' $ \rm{ observed } $' )
ax.plot( Luminosity_mids, Fermi_long_total_model, linestyle = '--', color = 'k', label = r' $ \rm{ model } $' )
ax.legend()
plt.savefig( './../plots/estimated_lumfunc_models/binned_with_z/Fermi--total.png' )
plt.clf()
plt.close()



print 'Swift...'
Swift_long_L	=	known_long_Luminosity.copy()	;	Swift_long_L_error	=	Swift_long_Luminosity_error.copy()
    return pseudo_redshifts, pseudo_redshifts_error, discrepancy, chisquared, dof, redchisqrd


print '\n\n\n\n'
against = []
for i in range(5):
    if i == 0:
        returned = discrepancy_and_redchisqrd(A___Yonetoku, eta_Yonetoku)
        pseudo_redshifts = returned[0]
        pseudo_redshifts_error = returned[1]
        against.append(pseudo_redshifts)
        pseudo_redshifts___Yonetoku = pseudo_redshifts
        pseudo_redshifts___Yonetoku_error = pseudo_redshifts_error
        print i, returned[2], mf.reduced_chisquared(common_redshift,
                                                    pseudo_redshifts,
                                                    pseudo_redshifts_error, 2)

    if i == 1:
        returned = discrepancy_and_redchisqrd(A___Tanbestfit, eta_Tanbestfit)
        pseudo_redshifts = returned[0]
        pseudo_redshifts_error = returned[1]
        against.append(pseudo_redshifts)
        pseudo_redshifts___Tanbestfit = pseudo_redshifts
        pseudo_redshifts___Tanbestfit_error = pseudo_redshifts_error
        print i, returned[2], mf.reduced_chisquared(common_redshift,
                                                    pseudo_redshifts,
                                                    pseudo_redshifts_error, 2)

    if i == 2:
        returned = discrepancy_and_redchisqrd(A___Tanredshift, eta_Tanredshift)