def init_os_common(dataset, h5file, psrlist, nf, noisedir=None, noVaryNoise=False, incJitterEquad=True, incEquad=True, outputfile=None): model = PALmodels.PTAmodels(h5file, pulsars=psrlist) # make model dictionary, can play with number of frequencies here # Note: Tmax=0 means it will use the largest time span in the array to set the frequency bin size fullmodel = model.makeModelDict(incRedNoise=True, incEquad=incEquad, incJitterEquad=incJitterEquad, likfunc='mark9', incGWB=True, incEphemMixture=False, nfreqs=nf, Tmax=0) # loop through pulsars and fix white noise parameters to values in file if noisedir is not None: for ct, p in enumerate(model.psr): d = np.genfromtxt(noisedir + p.name + '_noise.txt', dtype='S42') pars = d[:,0] vals = np.array([float(d[ii,2]) for ii in range(d.shape[0])]) sigs = [psig for psig in fullmodel['signals'] if psig['pulsarind'] == ct] sigs = PALutils.fixNoiseValues(sigs, vals, pars, bvary=False, verbose=False) # turn back on red-noise parameters (will use later when drawing from posteriors) for sig in fullmodel['signals']: if sig['corr'] == 'single' and sig['stype'] == 'powerlaw': sig['bvary'][1] = True sig['bvary'][0] = True if noVaryNoise: nflags = ['efac', 'equad', 'jitter', 'jitter_equad'] for sig in fullmodel['signals']: if sig['stype'] in nflags: sig['bvary'][0] = False # intialize mdoel model.initModel(fullmodel, memsave=True, write='no') # start parameters off at initial values (i.e the fixed values red in above) p0 = model.initParameters(fixpstart=True) # essentially turn off GWB component (again we will do something different when drawing from full PTA posterior) p0[-2] = -19 # call once to fix white noise xi, rho, sig, Opt, Sig = model.opt_stat_mark9(p0) if outputfile is not None: f = open(outputfile, 'w') f.write('Opt {0}\n'.format(Opt)) f.write('Sig {0}\n'.format(Sig)) f.write('SNR {0}\n'.format(Opt/Sig)) f.close() return model
sig['pstart'])) #for sig in fullmodel['signals']: # if sig['stype'] == 'jitter_equad': # if sig['flagvalue'] == 'J1741+1351-430_ASP': # sig['bvary'][0] = False if args.fixNoise: noisedir = args.noisedir for ct, p in enumerate(model.psr): d = np.genfromtxt(noisedir + p.name + '_noise.txt', dtype='S42') pars = d[:,0] vals = np.array([float(d[ii,1]) for ii in range(d.shape[0])]) sigs = [psig for psig in fullmodel['signals'] if psig['pulsarind'] == ct] sigs = PALutils.fixNoiseValues(sigs, vals, pars, bvary=False, verbose=True) # turn red noise back on if args.fixNoise and args.fixWhite: print('Turning on red noise and only fixing white noise') for sig in fullmodel['signals']: if sig['corr'] == 'single' and sig['stype'] == 'powerlaw': sig['bvary'][1] = True sig['bvary'][0] = True # write JSON file if not args.incTimingModel: model.writeModelToFile(fullmodel, args.outDir + '/model.json') # check for single efacs
separateJitter=False, separateJitterEquadByFreq=True, incEquad=incEquad, incJitter=False, incJitterEquad=incJitterEquad, incGWB=False, nfreqs=50, ndmfreqs=50, Tmax=0, incBWM=incBWM, compression='None', likfunc=likfunc) if args.noisedir is None: noisedir = outdir + '/noisefiles/' else: noisedir = args.noisedir + '/' for ct, p in enumerate(model.psr): d = np.genfromtxt(noisedir + p.name + '_noise.txt', dtype='S42') pars = d[:,0] vals = np.array([float(d[ii,1]) for ii in range(d.shape[0])]) sigs = [psig for psig in fullmodel['signals'] if psig['pulsarind'] == ct] sigs = PALutils.fixNoiseValues(sigs, vals, pars, bvary=False, verbose=False) # turn red noise back on if args.pipeline == 'BWM': print 'Turning on red noise and only fixing white noise' for sig in fullmodel['signals']: if sig['corr'] == 'single' and sig['stype'] == 'powerlaw': sig['bvary'][1] = True sig['bvary'][0] = True model.initModel(fullmodel, memsave=True, fromFile=False, verbose=False, write='no') # set initial parameters p0 = model.initParameters(fixpstart=True, startEfacAtOne=False) if args.pta in ['nanograv5', 'nanograv9']: