Exemple #1
0
def pdf_for_model_mean_of_many_pdfs(sink, str_beta,mdot_low,mdot_hi, tend=20.,dt=0.1):
	'''returns mdot pdf of 64*(tend-tbeg)/dt points following Peter's idea
	Returns: array of mdots for pdf, list of non nan indices of that arraydict of models, each model is a dict of the models it was ttest compared to
	'''
	#corr mdots	
	end_t,end_mach= t_rms_mach_near_end(str_beta)
	sink.rm_mdot_systematics(end_t,end_mach)
	#time steady state begins from KS 2 samp stat
	tbeg= steady_state_begins(str_beta,units_tBH=True)
	#median accretion rate in 0.1 bins between t=2tBH and t=end
	n_intervals= get_num_intervals(sink,tbeg,dt, tend=tend)
	pdfs= np.empty((n_intervals,64))*np.nan
	for ibin in range(n_intervals):
		#get 64 steady mdots for this time range
		pdfs[ibin,:]= steady_rates(sink.mdot_vcorr,sink.tnorm(),dt,tbeg+(ibin+1)*dt,units_tBH=True,fill_nan=True)
	#mask the array where have nans
	pdfs= ma.array(pdfs)
	pdfs.mask= np.isfinite(pdfs) == False
	#can safely take log10 of rates now
	pdfs= np.log10(pdfs)
	#equal log spaced bins covering entire range of mdots
	bins= np.linspace(np.log10(mdot_low/2),np.log10(mdot_hi*2),num=41) # N bins = num-1
	#bins= bins[::-1] #start with smallest number first (most negative)
	print 'bins= ',bins
	#bin up data
	hist_vals= np.empty((n_intervals,len(bins)-1))*np.nan
	for i in range(n_intervals):	
		if np.any(pdfs.mask[i,:]): continue 
		hist_vals[i,:],b,c=plt.hist(pdfs[i,:],bins=bins)
	plt.close()
	hist_vals= ma.array(hist_vals)
	hist_vals.mask= np.isfinite(hist_vals) == False
	#compute averaged histogram
	final_hist= np.round(np.mean(hist_vals,axis=0)).astype(int) #average each bin count over n_intervals, round to nearest count, save as integer
	#convert histogram into array of values
	bin_c= (bins[1:]+bins[:-1])/2
	final_arr=[]
	for cnt,c in enumerate(bin_c): final_arr+= [c]*final_hist[cnt]
	assert(len(final_arr) == final_hist.sum())
	pdf,junk1,junk2= plt.hist(final_arr,bins=bins,normed=True)
	cdf,j1,j2=plt.hist(final_arr,bins=bins,cumulative=True,normed=True)
	plt.close()
	try: assert( ((bins[1:]-bins[:-1])*pdf).sum() == 1. )
	except AssertionError: 
		print '---- WARNING  sum not 1, what is it? ------------ '
		print '((bins[1:]-bins[:-1])*pdf).sum()= ',((bins[1:]-bins[:-1])*pdf).sum()
		#raise AssertionError
	#return array of values, bins, pdf and cdf
	return np.array(final_arr),bins,pdf,cdf
Exemple #2
0
#raw_t= master_sink.old_t[-master_sink.tnorm().size:].copy()
print "%s" % args.str_beta
print "mdotTime, tnorm()"
for raw_t,norm in zip(master_sink.mdotTime,master_sink.tnorm()):
	print raw_t,norm
print 'exiting early'
sys.exit()

#tend
print 'model: %s, last t/tBH= %.5f' % (args.str_beta,master_sink.tnorm()[-1])
if False: # print machrms at end
	t_end= min(20.,master_sink.tnorm()[-1])
	i_end= index_before_tBH(master_sink,t_end,units_tBH=True)
	mach_end= master_sink.f_rms_mach(master_sink.mdotTime[i_end])
	print 'model= %s, tsteady/tBH= %.2f, tend/tBH= %.2f, rms Mach end= %.2f' % \
			(args.str_beta, steady_state_begins(args.str_beta,True),t_end,mach_end) 
#corr mdots	
end_t,end_mach= t_rms_mach_near_end(args.str_beta)
master_sink.rm_mdot_systematics(end_t,end_mach)
#final PDF
final_pdf= dict(arr={},bins={},pdf={},cdf={})  #PDF USING, 64 pdf, over last 2tBH
low,hi= low_hi_mdot_all_models()
final_pdf['arr'][args.str_beta],final_pdf['bins'][args.str_beta],final_pdf['pdf'][args.str_beta],final_pdf['cdf'][args.str_beta]= pdf_for_model_64_x_N(master_sink,args.str_beta, low,hi,nsinks=64,corr=True,last_2tBH=True,dt=2.)
#make plots
just_median(master_sink,args)
median_and_when_equil_begins(master_sink,args)
steady_pdf_cdf(master_sink,args)
all_rates(master_sink,args,corr=True)  
bootstrap_sigma_vs_nsink(final_pdf,args.str_beta)
print 'finished'