Skip to content
forked from LSSTDESC/N5K

Non-local No-Nonsense Non-Limber Numerical Knockout

License

Notifications You must be signed in to change notification settings

schoeneberg/N5K

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

N5K: Non-local No-Nonsense Non-Limber Numerical Knockout

In this challenge, you are asked to compute a set of power spectra for a 3x2pt (cosmic shear, galaxy-galaxy lensing, and galaxy clustering) analysis without the use of the Limber approximation.

The challenge entries will be evaluated on the basis of accuracy, speed, and integrability with the Core Cosmology Library (CCL). CCL is python (with some heavy-lifting done in C under the hood); a code which is in python or has a python wrapper will satisfy the integrability criteria. Given this, the code which can accomplish the challenge task fastest and within the accuracy requirements of an LSST Y10 cosmological analysis will win the challenge. The winning code will be incorporated for use as the non-Limber integration tool for CCL.

All entrants will have the opportunity to be an author on the resulting paper, which will describe the challenge, compare the different methods, detail the results, and discuss lessons learned.

How to enter

The challenge asks you to compute the angular spectra required for a 3x2pt analysis setup similar to the LSST Y10 scenario in the LSST DESC Science Requirements Document v1. The 'input' folder of this repo contains some required inputs for this calculation:

  • kernels for the 10 number counts tracers and 5 weak lensing tracers as a function of comoving radial distance chi N5K/input/kernels.npz.
  • Linear and non-linear matter power spectrum as a function of k and z N5K/input/Pk.npz.
  • Background radial comoving distance and normalized expansion rate (H(z)/H(0)), in case you need them: N5K/input/background.npz.
  • dN/dz's for the 10 number counts tracers and 5 weak lensing tracers as a function of z N5K/input/dNdzs.npz.

For the purposes of the challenge, we ignore intrinsic alignments, redshift-space distortions, and magnification. The kernels are thus number counts and cosmic shear only.

calculator_base.py contains a base class N5KCalculatorBase. Write a subclass of N5KCalculatorBase which contains methods setup() (to set up your nonlimber calculation), run run() (to run it) and teardown() (to clean up any dirt you've created). Only the run() method will be timed (but don't be cheeky!). calculator_ccl.py contains an example of what this would look like doing the calculation using CCL's current (Limber) calculation tools. If you need to modify the challenge machinery (e.g. the base class itself or other provided files), you must make a separate pull request to do this (i.e. don't do it in your challenge entry pull request).

Specifically, the non-Limber integral to be computed for each element of the angular power spectrum is:

where K are the kernels and is the non-linear matter power spectrum. You should assume that .

Make a pull request to this repository which includes your new subclass as well as a script which creates the conda or virtualenv environment in which your entry can run. Remember, if you need to modify the provided common code, like the base class, make a separate PR!

If you choose to use given dN/dz's instead of the precomputed full kernels, it is your responsibility to ensure other required cosmological factors are correctly computed using the parameters defined in the base class.

Deadline

To enter, you must have made a draft entry pull request on this repository by January 15, 2021 (17:00 PST).

You will then have one week to finalise your entry. Final updates to entry pull requests must be made by January 22, 2021 (17:00 PST).

FAQ

Can I participate if I am not a member of DESC?

Yes, you can, and you can be an author on the paper (we have a special exemption from the Publication Policy for this challenge).

We request that all non-DESC entrants agree to abide by the DESC Code of Conduct throughout their participation in the challenge (as DESC entrants are also expected to do).

What is the accuracy level I should be aiming for?

The required accuracy level will be calculated as that which introduces a spurious which is less than 1 for an LSST Y10 3x2pt analysis as defined in the SRD, computed using a Gaussian covariance matrix. The precise tolerable error for a representative set of will be posted before the challenge deadline for comparison but is not yet available.

Can I precompute some stuff and put that calculation in my setup() method?

The thing we care about is how long it takes at each step in a sampling process. So you should put in your run() method anything that would need to be rerun at each step in e.g. an MCMC chain. Precomputations which are independent of the parameters that would get varied in that process can go in setup().

How many cores will the calculation be run on for timing?

The thing we care about is being able to do this calculation at each step in a parameter inference sampling process. This usually means a single core for a single theory calculation, of which the Non-Limber integration forms one step. So assume a single core.

Can I assume the availability of GPUs?

If you can convince us that your GPU method can be easily integrated with the rest of the DESC parameter inference pipeline and can be run on GPU resources that DESC will definitely have access to, go for it. Otherwise, no.

About

Non-local No-Nonsense Non-Limber Numerical Knockout

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%