Skip to content

Consider adding math only functions for P1D and Px #42

@andreufont

Description

@andreufont

It might be good to have math-only functions to compute P1D and Px, somehting that could leave outside of this repo

# define a function that returns the P3D model you want to integrate

# example 1: Arinyo model
def get_func_arinyo_p3d_kt_kp(z, args):
    # if you want Arinyo, sth like this (I made this up)
    p3d_model = forestflow.arinyo.p3d_model(z, args)
    def func(kt, kp):
        return p3d_model.predict_p3d(z, kt, kp, args)
    return func

# example 2: model from McQuinn & White
def get_func_mcw_p3d_kt_kp(args):
    p3d_kaiser = get_kaiser(args)
    def func(kt, kp):
        kp = args['kp_Mpc']
        k2 = kpar**2 + kperp**2
        p3d_suppresion = np.exp(- k2/kp**2)
        return p3d_kaiser.get_p3d(kt, kp) * p3d_suppresion
    return func

# this is the actual code that would be inside the p1d (or px) module
def compute_p1d(p3d_func, kpar, lnkperp=None)
    if lnkperp is None:
        lnkperp = default setup
    kperp = np.exp(lnkperp)
    # integrate p3d_func over kperp
    p3d = p3d_func(kperp, kpar)
    p1d = intengrate_p3d
    return p1d

# and this is how you would use it for Arinyo
ari_p3d_func = get_func_arinyo_p3d_kt_kp(z, args)
ari_p1d = compute_p1d(ari_p3d_func, kpar)

# and for other models
mcw_p3d_func = get_func_mcw_p3d_kt_kp(args)
mcw_p1d = compute_p1d(mcw_p3d_func, kpar)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions