Esempio n. 1
0
    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()
Esempio n. 2
0
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
Esempio n. 3
0
    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)]
Esempio n. 4
0
    # 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')
Esempio n. 5
0
    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,
Esempio n. 6
0
    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,
Esempio n. 7
0
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,