def __init__(self, psrs, params=None, psrTerm=True, bayesephem=True, pta=None): if pta is None: # initialize standard model with fixed white noise # and powerlaw red noise # uses the implementation of ECORR in gp_signals print('Initializing the model...') tmin = np.min([p.toas.min() for p in psrs]) tmax = np.max([p.toas.max() for p in psrs]) Tspan = tmax - tmin s = deterministic.cw_block_circ(amp_prior='log-uniform', psrTerm=psrTerm, tref=tmin, name='cw') s += gp_signals.TimingModel() s += blocks.red_noise_block(prior='log-uniform', psd='powerlaw', Tspan=Tspan, components=30) if bayesephem: s += deterministic_signals.PhysicalEphemerisSignal(use_epoch_toas=True) # adding white-noise, and acting on psr objects models = [] for p in psrs: if 'NANOGrav' in p.flags['pta']: s2 = s + blocks.white_noise_block(vary=False, inc_ecorr=True, gp_ecorr=True) models.append(s2(p)) else: s3 = s + blocks.white_noise_block(vary=False, inc_ecorr=False) models.append(s3(p)) pta = signal_base.PTA(models) # set white noise parameters if params is None: print('No noise dictionary provided!') else: pta.set_default_params(params) self.pta = pta else: # user can specify their own pta object # if ECORR is included, use the implementation in gp_signals self.pta = pta self.psrs = psrs self.params = params self.Nmats = self.get_Nmats()
def pta_pshift(dmx_psrs, caplog): Tspan = model_utils.get_tspan(dmx_psrs) tm = gp_signals.TimingModel() wn = blocks.white_noise_block(inc_ecorr=True, tnequad=True) rn = blocks.red_noise_block(Tspan=Tspan) pseed = parameter.Uniform(0, 10000)('gw_pseed') gw_log10_A = parameter.Uniform(-18, -14)('gw_log10_A') gw_gamma = parameter.Constant(13. / 3)('gw_gamma') gw_pl = utils.powerlaw(log10_A=gw_log10_A, gamma=gw_gamma) gw_pshift = gp_signals.FourierBasisGP(spectrum=gw_pl, components=5, Tspan=Tspan, name='gw', pshift=True, pseed=pseed) model = tm + wn + rn + gw_pshift pta_pshift = signal_base.PTA([model(p) for p in dmx_psrs]) pta_pshift.set_default_params(noise_dict) return pta_pshift
Tspan_PTA = model_utils.get_tspan(pkl_psrs) # common red noise block fmin = 10.0 modes, wgts = model_utils.linBinning(Tspan_PTA, 1, 1.0 / fmin / Tspan_PTA, 14, 5) # wgts = wgts**2.0 # timing model s = gp_signals.MarginalizingTimingModel() s += blocks.white_noise_block(vary=False, inc_ecorr=True, select='backend') s += blocks.red_noise_block( psd='powerlaw', prior='log-uniform', Tspan=Tspan_PTA, modes=modes, wgts=wgts, ) gamma_gw = parameter.Uniform(0, 7)('gw_gamma') log10_Agw = parameter.Uniform(-18, -11)('gw_log10_A') cpl = gpp.powerlaw_genmodes(log10_A=log10_Agw, gamma=gamma_gw, wgts=wgts) s += gp_signals.FourierBasisGP(cpl, modes=modes, name='gw_crn') # gw = blocks.common_red_noise_block(psd='powerlaw', prior='log-uniform', Tspan=Tspan_PTA, # components=5, gamma_val=4.33, name='gw', orf='hd') crn_models = [s(psr) for psr in pkl_psrs] # gw_models = [(m + gw)(psr) for psr,m in zip(final_psrs,psr_models)]
# Set Tspan for RN Tspan_PTA = model_utils.get_tspan(pkl_psrs) # common red noise block fmin = 10.0 modes, wgts = model_utils.linBinning(Tspan_PTA, 0, 1.0 / fmin / Tspan_PTA, 14, 5) # wgts = wgts**2.0 # timing model s = gp_signals.MarginalizingTimingModel() s += blocks.white_noise_block(vary=False, inc_ecorr=True, select='backend') rn_low = blocks.red_noise_block(psd='powerlaw', prior='log-uniform', Tspan=Tspan_PTA, modes=modes, wgts=wgts,) rn_std = blocks.red_noise_block(psd='powerlaw', prior='log-uniform', Tspan=Tspan_PTA, components=30) gamma_gw = parameter.Constant(4.3333)('gw_gamma') log10_Agw = parameter.Uniform(-18, -14)('gw_log10_A') plaw_low = gpp.powerlaw_genmodes(log10_A=log10_Agw, gamma=gamma_gw, wgts=wgts) plaw_std = gpp.powerlaw(log10_A=log10_Agw, gamma=gamma_gw) gw_std = gp_signals.FourierBasisCommonGP(plaw_std, model_orfs.hd_orf(), components=14, Tspan=Tspan_PTA, name='gw')
else: sign_param = -1.0 wf = chrom_exp_decay(log10_Amp=log10_Amp_dmexp, t0=t0_dmexp, log10_tau=log10_tau_dmexp, sign_param=sign_param, idx=idx) dmexp = deterministic_signals.Deterministic(wf, name=name) return dmexp Tspan = 407576851.48121357 rn = red_noise_block(psd='powerlaw', prior='log-uniform', Tspan=Tspan, components=30, gamma_val=None) gw = common_red_noise_block(psd='powerlaw', prior='log-uniform', Tspan=Tspan, components=5, gamma_val=4.3333) sig = rn + gw index = parameter.Uniform(0, 2) ppta_dip = dm_exponential_dip(57450, 57560, idx=index,
Tspan_PTA = model_utils.get_tspan(pkl_psrs) # common red noise block cs = blocks.common_red_noise_block(psd='powerlaw', prior='log-uniform', Tspan=Tspan_PTA, components=args.n_gwbfreqs, gamma_val=args.gamma_gw, name='gw') # gw = blocks.common_red_noise_block(psd='powerlaw', prior='log-uniform', Tspan=Tspan_PTA, # components=5, gamma_val=4.33, name='gw', orf='hd') # timing model s = gp_signals.MarginalizingTimingModel() # intrinsic red noise s += blocks.red_noise_block(prior='log-uniform', Tspan=Tspan_PTA, components=30) # adding white-noise, separating out Adv Noise Psrs, and acting on psr objects final_psrs = [] psr_models = [] ### Add a stand alone SW deter model bins = np.linspace(53215, 57934, 26) bins *= 24 * 3600 #Convert to secs n_earth = chrom.solar_wind.ACE_SWEPAM_Parameter(size=bins.size - 1)('n_earth') deter_sw = chrom.solar_wind.solar_wind(n_earth=n_earth, n_earth_bins=bins) mean_sw = deterministic_signals.Deterministic(deter_sw, name='sw_r2') np_earth = parameter.Uniform(-4, -2)('np_4p39') sw_power = parameter.Constant(4.39)('sw_power_4p39') deter_sw_p = chrom.solar_wind.solar_wind_r_to_p(n_earth=np_earth,
else: Tspan = args.tspan if args.wideband: inc_ecorr = False else: inc_ecorr = True ### Timing Model ### tm = gp_signals.TimingModel() ### White Noise ### wn = blocks.white_noise_block(vary=False, inc_ecorr=inc_ecorr) ### Red Noise ### rn_plaw = blocks.red_noise_block(psd='powerlaw', prior='log-uniform', Tspan=Tspan, components=30, gamma_val=None) rn_fs = blocks.red_noise_block(psd='spectrum', prior='log-uniform', Tspan=Tspan, components=30, gamma_val=None) ### GWB ### gw = blocks.common_red_noise_block(psd='powerlaw', prior='log-uniform', Tspan=Tspan, components=args.n_gwbfreqs, gamma_val=args.gamma_gw,