Ejemplo n.º 1
0
for ct, p in enumerate(psr):
    efac = np.dot(p.G.T, np.dot(np.diag(p.err**2), p.G))
    equad = np.dot(p.G.T, p.G)
    L = np.linalg.cholesky(equad)
    Linv = np.linalg.inv(L)
    sand = np.dot(Linv, np.dot(efac, Linv.T))
    u, s, v = np.linalg.svd(sand)
    Diag.append(s)
    proj = np.dot(u.T, np.dot(Linv, p.G.T))

    # project residuals onto new basis
    p.res = np.dot(proj, p.res)
    F[ct] = np.dot(proj, F[ct])

# get ORF matrix
ORF = PALutils.computeORFMatrix(psr) / 2

# fill in kappa with [] TODO: this is a hack for now to not include additional red noise
if args.nored:
    kappa = [[] for jj in range(npsr)]
    Ared = np.zeros(npsr)
    gred = np.zeros(npsr)

# parameterize by power law
if args.powerlaw:
    print 'Parameterizing Power spectrum coefficients by a power law'

    if args.efac == False and args.equad == False and args.nored:
        print 'Automatically setting EFAC = 1 and EQUAD = 0 for all pulsars'

        def myprior(cube, ndim, nparams):
    equad = np.dot(p.G.T, p.G)
    L = np.linalg.cholesky(equad)
    Linv = np.linalg.inv(L)
    sand = np.dot(Linv, np.dot(efac, Linv.T))
    u,s,v = np.linalg.svd(sand)
    Diag.append(s)
    proj = np.dot(u.T, np.dot(Linv, p.G.T))
    projList.append(proj)

    # project residuals onto new basis
    p.res = np.dot(proj, p.res)
    F[ct] = np.dot(proj, F[ct])


# get ORF matrix
ORF = PALutils.computeORFMatrix(psr)/2

# fill in kappa with [] TODO: this is a hack for now to not include additional red noise
if args.nored:
    kappa = [ [] for jj in range(npsr)]
    Ared = np.zeros(npsr)
    gred = np.zeros(npsr)
    
# prior ranges
emin = 0.1
emax = 5
qmin = -8
qmax = -5
lAmin = -17
lAmax = -11
Amin = 0