-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #6 from LSSTDESC/develop
Migrating the Legacy Blinding Code from the other repo into this one
- Loading branch information
Showing
39 changed files
with
1,699 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# Author - Stuart McAlpine - [email protected] - Jan 2023 | ||
name: DESC Legacy Blinding for Cosmosis | ||
|
||
# How does the workflow get triggered? | ||
on: | ||
# Triggers when push/pull-request made to the main branch. | ||
pull_request: | ||
branches: | ||
- main | ||
push: | ||
branches: | ||
- main | ||
- develop | ||
|
||
# List of jobs for this workflow. | ||
|
||
jobs: | ||
# Our pytest job. | ||
legacy_blinding-pytest: | ||
# Our strategy lists the OS and Python versions we want to test on. | ||
strategy: | ||
# Don't quit all jobs if only one job fails. | ||
fail-fast: false | ||
matrix: | ||
python-version: ["3.9"] | ||
os: [ubuntu-20.04, macos-latest] | ||
include: | ||
- os: ubuntu-20.04 | ||
INSTALL_DEPS: sudo apt-get update && sudo apt-get -y install gfortran-7 swig libopenmpi-dev openmpi-bin libopenblas-dev && sudo ln -s `which gfortran-7` /usr/local/bin/gfortran | ||
- os: macos-latest | ||
INSTALL_DEPS: brew update-reset && HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install gcc swig libomp open-mpi openblas && if [ ! -f /usr/local/bin/gfortran ]; then ln -s /usr/local/bin/gfortran-$(brew list --versions gcc | awk '{print $2}' | cut -d. -f1) /usr/local/bin/gfortran; fi | ||
|
||
# What operating system is this job running on? | ||
runs-on: ${{ matrix.os }} | ||
|
||
# Our CI steps for this job. | ||
steps: | ||
# Check out this repository code. | ||
- name: Check out repository code | ||
uses: actions/checkout@v3 | ||
|
||
# Install Python. | ||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Install dependencies | ||
run: ${{ matrix.INSTALL_DEPS }} | ||
|
||
# Install our package. | ||
- name: Install legacy_blinding | ||
run: | | ||
python -m pip install --upgrade pip | ||
python -m pip install . | ||
pytest ./tests |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,7 @@ | |
__pycache__/ | ||
*.py[cod] | ||
*$py.class | ||
*.DS_Store | ||
|
||
# C extensions | ||
*.so | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,40 @@ | ||
# legacy_blinding | ||
Repository with Legacy Cosmology Blinding for 3x2pt data-vector blinding using Cosmosis v2 | ||
# Legacy Cosmosis Blinding for 2pt Data-Vectors using Cosmosis | ||
|
||
This repository contains an implementation of [Muir et al. 2020](https://arxiv.org/abs/1911.05929) data-vector blinding strategy using Cosmosis V2. | ||
The package in this repository is a direct adaptation of Jessie Muir's DES Y3 blinding scripts to the DESC context. | ||
|
||
For the DESC Blinding Library, see [here](https://github.com/LSSTDESC/Blinding). | ||
|
||
## Installation | ||
- Install cosmosis via `conda install -c conda-forge cosmosis` | ||
- Activate the cosmosis configuration via `source cosmosis-configure` | ||
- Install the cosmosis standard library via `conda install -c conda-forge cosmosis-build-standard-library` | ||
- Install the standard library in the correct cosmosis folder `cosmosis-build-standard-library -i` | ||
|
||
### Legacy Blinding installation | ||
Simply install with | ||
```bash | ||
python -m pip install -e . | ||
``` | ||
|
||
### Test the installation | ||
To run the unit tests: | ||
```bash | ||
cd tests | ||
pytest . | ||
``` | ||
|
||
## Usage | ||
> Don't forget to `source cosmosis-configure` | ||
To get the docstring on the command-line interface: | ||
``` | ||
python -m blind_2pt_cosmosis --help | ||
``` | ||
|
||
To run an example: | ||
```bash | ||
python -m blind_2pt_cosmosis -u src/blind_2pt_cosmosis/cosmosis_files/sim_fiducial.fits [--log-level DEBUG] | ||
``` | ||
|
||
[!] Note: You can also include all the command line arguments in a `.config` file and call `python -m blind_2pt_cosmosis @example.config` instead. This will be adapted to use `yaml` files in the near future. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
[build-system] | ||
requires = ["setuptools", "wheel"] | ||
build-backend = "setuptools.build_meta" | ||
|
||
[project] | ||
name = "legacy_blinding" | ||
description = "Legacy Cosmosis Blinding for DESC. This is a Cosmosis V2 port of Jessie Muir's legacy_blinding scripts for DES-Y3." | ||
readme = "README.md" | ||
requires-python = ">=3.8" | ||
license = {file = "LICENSE"} | ||
maintainers = [ | ||
{name = "Arthur Loureiro", email = "[email protected]"}, | ||
{name = "Jessie Muir", email = "[email protected]"}, | ||
] | ||
classifiers = [ | ||
"Programming Language :: Python :: 3", | ||
"License :: OSI Approved :: MIT License", | ||
"Operating System :: OS Independent", | ||
] | ||
dependencies = [ | ||
"numpy>=1.24.0", | ||
"scipy>=1.9.0", | ||
"cosmosis>=2.5", | ||
"astropy>=5.1", | ||
"pytest>=7.2.5", | ||
"argparse>=1.0", | ||
"sacc>=0.12", | ||
] | ||
keywords = ["desc", "python", "blinding", "cosmosis"] | ||
dynamic = ["version"] | ||
|
||
[tool.setuptools.packages.find] | ||
where = ["src"] | ||
|
||
[tool.setuptools.package-data] | ||
"blind_2pt_cosmosis" = ["cosmosis_files/*.txt", "cosmosis_files/*.ini"] | ||
|
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# Author: Arthur Loureiro <[email protected]> & Jessie Muir <[email protected]> | ||
from ._version import __version__ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
import logging | ||
from .param_shifts import draw_flat_param_shift, get_factordict | ||
from .io import get_parser, get_stored_seed_and_tag | ||
from .run_cosmosis_2pt import run_cosmosis_togen_2ptdict | ||
from .twopt_utils import apply_2pt_blinding_and_save_fits | ||
|
||
|
||
def main(): | ||
""" | ||
main function to be called from command line | ||
""" | ||
# gets the parser from the io module | ||
parser = get_parser() | ||
args = parser.parse_args() | ||
|
||
# Configure the logger level based on the input argument | ||
log_level = getattr(logging, args.log_level) | ||
logging.basicConfig(level=log_level, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') | ||
|
||
# Create a logger for the __main__ module | ||
logger = logging.getLogger("2pt_blinding") | ||
logger.debug(args) | ||
|
||
params_shifts = draw_flat_param_shift(args.seed, args.paramshifts) | ||
logger.debug(f"Parameters shifts are: {params_shifts}") | ||
|
||
#get blinding factors | ||
reff_dict = run_cosmosis_togen_2ptdict(inifile=args.ini) #args.ini is a template | ||
logger.debug(f"Calculated Reference Dict") | ||
# FIXME: Add nz_file and angles_file to args | ||
shift_dict = run_cosmosis_togen_2ptdict(inifile=args.ini, pdict=params_shifts, | ||
nz_file=None, angles_file=None) | ||
logger.debug(f"Calculated Shifted Dict") | ||
#gets the blinding factors data vectors | ||
factor_dict = get_factordict(reff_dict, shift_dict, bftype = args.bftype) | ||
logger.debug(f"Calculated Blinded Data Vectors") | ||
|
||
# Gets some I/O information | ||
storeseed, tagstr = get_stored_seed_and_tag(args) | ||
|
||
# applies the shift to the 2pt data-vector: | ||
#FIXME: This function is also saving the file, we want to split it! | ||
apply_2pt_blinding_and_save_fits(factor_dict, origfitsfile=args.origfits, | ||
outfname=args.outfname, outftag=tagstr, | ||
bftype=args.bftype, storeseed = storeseed) | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
__version__ = "2023.10.11" |
69 changes: 69 additions & 0 deletions
69
src/blind_2pt_cosmosis/cosmosis_files/blinding_values_template.ini
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
[cosmological_parameters] | ||
omega_m = 0.1 0.3 0.9 | ||
h0 = 0.55 0.69 0.91 | ||
omega_b = 0.03 0.048 0.12 | ||
n_s = 0.87 0.97 1.07 | ||
sigma_8_input = 0.2 0.843 1.6 | ||
A_s = 0.5e-09 2.19e-9 5.0e-09 | ||
; omnuh2 = 0.0006 0.00083 0.01 | ||
omnuh2 = 0.0 | ||
massive_nu = 0 | ||
massless_nu = 3.046 | ||
omega_k = 0.0 | ||
tau = 0.0697186 | ||
w = -1.0 | ||
;Helium mass fraction. Needed for Planck | ||
yhe = 0.245341 | ||
|
||
; %include ${METHODSDIR}/cosmosis/de_models/${DEMODEL}.ini | ||
|
||
[shear_calibration_parameters] | ||
m1 = -0.1 0.0 0.1 | ||
m2 = -0.1 0.0 0.1 | ||
m3 = -0.1 0.0 0.1 | ||
m4 = -0.1 0.0 0.1 | ||
|
||
[wl_photoz_errors] | ||
bias_1 = -0.1 0.0 0.1 | ||
bias_2 = -0.1 0.0 0.1 | ||
bias_3 = -0.1 0.0 0.1 | ||
bias_4 = -0.1 0.0 0.1 | ||
|
||
[lens_photoz_errors] | ||
bias_1 = -0.05 0.0 0.05 | ||
bias_2 = -0.05 0.0 0.05 | ||
bias_3 = -0.05 0.0 0.05 | ||
bias_4 = -0.05 0.0 0.05 | ||
bias_5 = -0.05 0.0 0.05 | ||
|
||
[bias_lens] | ||
b1 = 0.8 1.7 3.0 | ||
b2 = 0.8 1.7 3.0 | ||
b3 = 0.8 1.7 3.0 | ||
b4 = 0.8 2.0 3.0 | ||
b5 = 0.8 2.0 3.0 | ||
|
||
[mag_alpha_lens] | ||
; alpha_1 = -4. 0.903125 4. | ||
; alpha_2 = -4. 0.68572965 4. | ||
; alpha_3 = -4. 0.65340057 4. | ||
; alpha_4 = -4. 1.58867862 4. | ||
; alpha_5 = -4. 1.93754879 4. | ||
alpha_1 = 0.903125 | ||
alpha_2 = 0.68572965 | ||
alpha_3 = 0.65340057 | ||
alpha_4 = 1.58867862 | ||
alpha_5 = 1.93754879 | ||
|
||
[intrinsic_alignment_parameters] | ||
z_piv = 0.62 | ||
A1 = -5.0 0.7 5.0 | ||
A2 = -5.0 -1.36 5.0 | ||
alpha1=-5.0 -1.7 5.0 | ||
alpha2=-5.0 -2.5 5.0 | ||
bias_ta = 0.0 1.0 2.0 | ||
#bias_tt = 1.0 | ||
|
||
|
||
|
||
|
51 changes: 51 additions & 0 deletions
51
src/blind_2pt_cosmosis/cosmosis_files/default_blinding_template.ini
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
; ############################################################ | ||
; This is a template file that is referenced by blind_2pt_usingcosmosis.py | ||
; It is used as a template for running cosmosis to generate | ||
; blinding factors to be applied to 2pt data vectors. To adapt | ||
; for a specific pipeline: | ||
; 1. Edit the %include params.ini line to point towards your baseline pipeline file. | ||
; 2. The values file should be edited to match your fiducial run. Since we want | ||
; to blind sigma8, sigma8_input needs to be in the cosmological parameters, | ||
; so it may need to be a values file written specifically for blinding. You could | ||
; always set it up to %include your standard values file though. | ||
; >> the start values for each parameter is what will be used as reference vals | ||
; when generating the blinding factors. | ||
; 3. Make sure the file in 2PT_FILE points to a file with the format expected by | ||
; your pipeline (with the same binning, etc.) | ||
; 4. The modules list in [pipeline] should match your standard pipeline with a one | ||
; addition: you need sigma8_rescale to be able to include sigma8_input as a parameter | ||
; ############################################################ | ||
|
||
|
||
; import baseline parameter file; change this to point towards the params.ini file for | ||
; whatever main pipeline you want to mimic | ||
%include ./src/blind_2pt_cosmosis/cosmosis_files/params.ini | ||
|
||
[DEFAULT] | ||
; this 2PT file is where we'll pull the n(z) info for computing blinding factors | ||
2PT_FILE = ./src/blind_2pt_cosmosis/cosmosis_files/sim_fiducial.fits | ||
;2PT_FILE = pipeline/2pt_sim_1110_baseline_Y3cov.fits | ||
;should this be my 2pt measurement DV? | ||
|
||
[pipeline] | ||
; THIS MODULE LIST SHOULD MATCH YOUR SETTINGS FOR YOUR STANDARD ANALYSIS PIPELINE | ||
quiet=T | ||
timing=F | ||
debug=F | ||
priors = ./src/blind_2pt_cosmosis/cosmosis_files/priors.ini | ||
; sigma8_rescale included so we can set sigma8 as input | ||
modules = consistency camb extrapolate fits_nz lens_photoz_bias fast_pt source_photoz_bias unbiased_galaxies IA pk_to_cl_gg pk_to_cl add_magnification add_intrinsic 2pt_shear 2pt_gal 2pt_gal_shear shear_m_bias 2pt_like | ||
; if you want to blind sigma_8, set up values file to have sigma8_input as a parameter rather than A_s | ||
values = ./src/blind_2pt_cosmosis/cosmosis_files/blinding_values_template.ini | ||
|
||
|
||
[sigma8_rescale] | ||
file = cosmosis-standard-library/utility/sample_sigma8/sigma8_rescale.py | ||
|
||
[test] | ||
; if the sampler happens to be set to test, make sure it doesn't | ||
; save any output when we do blinding. We don't want to see the cosmology | ||
; and 2pt functions that go into making the blinding factor! | ||
save_dir= | ||
|
||
|
Oops, something went wrong.