q[self.pmap[str(param)]] = np.random.uniform(param.prior._defaults['pmin'], param.prior._defaults['pmax']) # forward-backward jump probability lqxy = (param.get_logpdf(x[self.pmap[str(param)]]) - param.get_logpdf(q[self.pmap[str(param)]])) return q, float(lqxy) sampler.JumpProposal.draw_from_gw_gamma_prior = draw_from_gw_gamma_prior Sampler.addProposalToCycle(Sampler.jp.draw_from_gw_gamma_prior, 25) try: achrom_freqs = get_freqs(pta_crn, signal_id='gw_crn') np.savetxt(args.outdir + 'achrom_freqs.txt', achrom_freqs, fmt='%.18e') except: pass x0 = np.hstack(p.sample() for p in pta_crn.params) Sampler.sample(x0, args.niter, SCAMweight=200, AMweight=100, DEweight=200, burn=50000, writeHotChains=args.writeHotChains, hotChain=args.hot_chain, Tskip=100, Tmax=args.tempmax)
ptas = {0:pta_std, 1:pta_low} pta_std.set_default_params(noise) pta_low.set_default_params(noise) with open(args.pta_pkl,'wb') as fout: cloudpickle.dump(ptas,fout) hm = hypermodel.HyperModel(models=ptas) sampler = hm.setup_sampler(outdir=args.outdir, resume=True, empirical_distr = args.emp_distr) try: gw_std_freqs = get_freqs(pta_std, signal_id='gw') gw_low_freqs = get_freqs(pta_low, signal_id='gw') np.savetxt(args.outdir + 'low_gw_freqs.txt', gw_low_freqs, fmt='%.18e') np.savetxt(args.outdir + 'std_gw_freqs.txt', gw_std_freqs, fmt='%.18e') except: pass model_params = {} for ii,mod in enumerate(ptas): model_params.update({ii : ptas[ii].param_names}) with open(args.outdir+'/model_params.json' , 'w') as fout: json.dump(model_params, fout, sort_keys=True, indent=4, separators=(',', ': ')) x0 = hm.initial_sample()
# initial jump covariance matrix cov = np.diag(np.ones(ndim) * 0.01**2) # set up jump groups by red noise groups groups = model_utils.get_parameter_groups(pta) sampler = ptmcmc(ndim, pta.get_lnlikelihood, pta.get_lnprior, cov, groups=groups, outDir=args.outdir, resume=True) achrom_freqs = get_freqs(pta) np.save(args.outdir + 'pars.npy', pta.param_names) np.save(args.outdir + 'par_model.npy', np.array(pta.params).astype(str)) np.save(args.outdir + 'signals.npy', list(pta.signals.keys())) np.savetxt(args.outdir + 'achrom_rn_freqs.txt', achrom_freqs, fmt='%.18e') jp = model_utils.JumpProposal(pta) sampler.addProposalToCycle(jp.draw_from_prior, 15) sampler.addProposalToCycle(jp.draw_from_red_prior, 15) sampler.addProposalToCycle(jp.draw_from_gwb_log_uniform_distribution, 15) if args.bayes_ephem: sampler.addProposalToCycle(jp.draw_from_ephem_prior, 15) N = int(args.niter) sampler.sample(x0,
model_1 = base_model + rn_plaw model_2a = model_1 + gw pta_noise = signal_base.PTA([model_1(p) for p in psrs]) pta_noise.set_default_params(noise) pta_gw = signal_base.PTA([model_2a(p) for p in psrs]) pta_gw.set_default_params(noise) ptas = {0: pta_noise, 1: pta_gw} hm = model_utils.HyperModel(models=ptas) sampler = hm.setup_sampler(outdir=args.outdir, resume=True) achrom_freqs = get_freqs(ptas[0]) # np.save(args.outdir + 'pars.npy', pta.param_names) # np.save(args.outdir + 'par_model.npy', np.array(pta.params).astype(str)) # np.save(args.outdir + 'signals.npy', list(pta.signals.keys())) np.savetxt(args.outdir + 'achrom_rn_freqs.txt', achrom_freqs, fmt='%.18e') x0 = hm.initial_sample() sampler.sample( x0, args.niter, SCAMweight=30, AMweight=15, DEweight=50, ) save_core(args.corepath, args.outdir)
cov = np.diag(np.ones(ndim) * 0.01**2) # set up jump groups by red noise groups groups = sampler.get_parameter_groups(pta) Sampler = ptmcmc(ndim, pta.get_lnlikelihood, pta.get_lnprior, cov, groups=groups, outDir=args.outdir, resume=True) np.save(args.outdir + 'pars.npy', pta.param_names) np.save(args.outdir + 'par_model.npy', np.array(pta.params).astype(str)) np.save(args.outdir + 'signals.npy', list(pta.signals.keys())) try: achrom_freqs = get_freqs(pta, signal_id='gw') np.savetxt(args.outdir + 'achrom_rn_freqs.txt', achrom_freqs, fmt='%.18e') except: pass jp = sampler.JumpProposal(pta) Sampler.addProposalToCycle(jp.draw_from_prior, 15) if args.rednoise: Sampler.addProposalToCycle(jp.draw_from_red_prior, 15) Sampler.addProposalToCycle(jp.draw_from_gwb_log_uniform_distribution, 15) if args.bayes_ephem: Sampler.addProposalToCycle(jp.draw_from_ephem_prior, 15) N = int(args.niter) Sampler.sample(x0, Niter=N, SCAMweight=30, AMweight=15,
groups.append([pta.param_names.index(p) for p in gp_pars]) # initial jump covariance matrix cov = np.diag(np.ones(ndim) * 0.01**2) # helps to tune MCMC proposal distribution # sampler object sampler = ptmcmc(ndim, pta.get_lnlikelihood, pta.get_lnprior, cov, groups=groups, outDir=args.outdir, resume=True) achrom_freqs = get_freqs(pta, 'red_noise') np.save(args.outdir + 'pars.npy', pta.param_names) np.save(args.outdir + 'par_model.npy', np.array(pta.params).astype(str)) np.save(args.outdir + 'signals.npy', list(pta.signals.keys())) np.savetxt(args.outdir + 'achrom_rn_freqs.txt', achrom_freqs, fmt='%.18e') jp = model_utils.JumpProposal(pta) sampler.addProposalToCycle(jp.draw_from_dm_gp_prior, 20) sampler.addProposalToCycle(jp.draw_from_prior, 20) # sampler.addProposalToCycle(jp.draw_from_red_prior, 20) sampler.sample(x0, args.niter, SCAMweight=30, AMweight=15, DEweight=50,
vary_rn = True pta = models.model_singlepsr_noise(psr, red_var=vary_rn, psd=args.psd, Tspan=args.tspan, components=args.nfreqs, factorized_like=args.gfl, gw_components=args.n_gwbfreqs, fact_like_logmin=-14.2, fact_like_logmax=-1.2, is_wideband=args.wideband) emp_dist_path = args.emp_distr.replace('PSR_NAME',psr.name) Sampler = sampler.setup_sampler(pta=pta, outdir=Outdir, empirical_distr = emp_dist_path, resume=True) if args.gfl: freqs = bys.get_freqs(pta, signal_id='gw') else: freqs = bys.get_freqs(pta, signal_id='red_noise') np.savetxt(Outdir+'achrom_freqs.txt', freqs) x0 = np.hstack(p.sample() for p in pta.params) Sampler.sample(x0, Niter=args.niter, burn=100000, writeHotChains=args.writeHotChains) c0 = Core(chaindir=Outdir) c0.set_rn_freqs(freq_path=Outdir+'/achrom_freqs.txt') c0.save(args.corepath+f'{psr.name}.core')
dm_var=True, dm_type='gp', dm_psd='powerlaw', dm_annual=False, white_vary=False, gequad=False, dm_chrom=False, dmchrom_psd='powerlaw', dmchrom_idx=4, red_select=None, red_breakflat=False, red_breakflat_fq=None, coefficients=False, ) else: raise NotImplementedError('Please add this model to the script.') Sampler = sampler.setup_sampler(pta=pta, outdir=Outdir, empirical_distr=args.emp_distr, resume=True) try: freqs = bys.get_freqs(pta, signal_id='gw') np.savetxt(Outdir + 'achrom_freqs.txt', freqs) except: pass x0 = np.hstack(p.sample() for p in pta.params) Sampler.sample(x0, Niter=args.niter)