Francois Lanusse, @EiffL
On behalf of the DESC tomo challenge team (Joe Zuntz, Anze Slosar, Alex Malz)
Three different ways to probe the matter distribution by computing correlation functions of the observables.
The response of these probes depends on the redshift of the galaxies we are looking at
Binning: The art of splitting galaxies into sub-samples to capture as much information as possible about the redshift-dependence of the matter distribution
2 bins
4 bins
We do not have access to the real redshift of galaxies, so we try to estimate it based on multi-band photometry, i.e. photometric redshifts (photo-z)
Credit: Graham et al. arxiv:2004.07885
Let's imagine a strategy where we first try to estimate photoz, and bin on these photoz
total 3x2pt SNR | perfect bins | photoz bins |
---|---|---|
2 bins | 916 | 896 |
Find the best possible way to split the galaxy sample in bins based on photometry, so that you maximize the cosmological information from a 3x2pt analysis
We propose a simple example as a baseline, feel free to take inspiration from it, but feel free to explore completely different ideas!
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier()
classifier.fit(training_photometry_data, training_bin)
Results for 2 bins | SNR 3x2 | FOM 3x2 |
---|---|---|
With true redshifts | 915 | 24216 |
With photometric classifier | 896 | 2548 |
=> It's working but we see a degradation in score, because bins are now overlaping
$ conda install -c conda-forge pyccl cosmosis-standalone camb firecrown
$ pip install sacc click progressbar scikit-learn
$ python -m tomo_challenge.data
$ python bin/challenge.py example/example.yaml
$ more example/example_output.txt
RandomForest run_1 {'bins': 1} {'SNR_ww': 134.80948870306673, 'SNR_gg': 555.4535070472674, 'SNR_3x2': 562.3045275125236, 'FOM_3x2': 11406.381379130828}
RandomForest run_2 {'bins': 2} {'SNR_ww': 153.37996427859213, 'SNR_gg': 749.4259413373646, 'SNR_3x2': 752.8800006487635, 'FOM_3x2': 11420.79691061082}
RandomForest run_3 {'bins': 3} {'SNR_ww': 159.18538698343457, 'SNR_gg': 922.7346985760454, 'SNR_3x2': 925.4853956272517, 'FOM_3x2': 43768.68018337518}
from .base import Tomographer
class MyTomographer(Tomographer):
""" My awesome Tomographic method """
def __init__ (self, bands, options):
# ....
def train (self, training_data, training_z):
# Some magic happens here to train/fit the model
def apply (self, data):
# Attribute a bin to each galaxy
return tomo_bin(data)
$ python bin/challenge.py example/my_tomographer.yaml