Skip to content

Commit c6b3da5

Browse files
author
martinkilbinger
committed
Merge remote-tracking branch 'upstream/develop' into v1.4.6
2 parents a301b93 + ec84e06 commit c6b3da5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+5908
-2818
lines changed

.github/workflows/deploy-image.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Create and publish a Docker image
2+
3+
on:
4+
push:
5+
6+
env:
7+
REGISTRY: ghcr.io
8+
IMAGE_NAME: ${{ github.repository }}
9+
BRANCH: ${{ github.ref }}
10+
11+
jobs:
12+
build-and-push-image:
13+
runs-on:
14+
- ubuntu-latest
15+
# - macos-latest
16+
permissions:
17+
contents: read
18+
packages: write
19+
20+
steps:
21+
- name: Log in to the Container registry
22+
uses: docker/login-action@v3
23+
with:
24+
registry: ${{ env.REGISTRY }}
25+
username: ${{ github.actor }}
26+
password: ${{ secrets.GITHUB_TOKEN }}
27+
28+
- name: Set up Docker Buildx
29+
uses: docker/setup-buildx-action@v3
30+
31+
- name: Extract metadata (tags, labels) for Docker
32+
id: meta
33+
uses: docker/metadata-action@v5
34+
with:
35+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
36+
37+
- name: Build and export to Docker
38+
uses: docker/build-push-action@v6
39+
with:
40+
load: true
41+
tags: ${{ steps.meta.outputs.tags }}
42+
labels: ${{ steps.meta.outputs.labels }}
43+
44+
- name: Test
45+
run: docker run --rm ${{ steps.meta.outputs.tags }} python -c "import sp_validation"
46+
47+
- name: Push
48+
uses: docker/build-push-action@v6
49+
with:
50+
push: true
51+
tags: ${{ steps.meta.outputs.tags }}
52+
labels: ${{ steps.meta.outputs.labels }}

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ notebooks/validation*.py
145145
notebooks/main_set_up.py
146146
notebooks/analyse_shear_cat/tutorial_UNIONS_SP_v1.0.py
147147

148-
notebooks/cosmo_val/output
148+
notebooks/cosmo_val/output*
149149
notebooks/cosmo_val/cosmo_val.ipynb
150150
notebooks/cosmo_val/match_LF_SP.ipynb
151151

Dockerfile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Development image with more bells and whistles
2+
FROM ghcr.io/cosmostat/shapepipe:develop
3+
4+
RUN apt-get update -y --quiet --fix-missing && \
5+
apt-get dist-upgrade -y --quiet --fix-missing && \
6+
apt-get install -y --quiet \
7+
libgsl-dev \
8+
htop \
9+
tmux
10+
11+
RUN pip install --no-cache-dir \
12+
snakemake
13+
14+
WORKDIR /sp_validation
15+
COPY . /sp_validation
16+
17+
# Install sp_validation
18+
RUN pip install --no-cache-dir -e .

README.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,32 @@ tasks that can be performed by `sp_validation` are:
3333
a shear validation run and performes cosmology inference using the two-point
3434
correlation function.
3535

36+
## Container Installation (Recommended)
37+
38+
The easiest way to install sp_validation is via a container. Docker images are automatically built and pushed to the [Github Container Registry (GHCR)](ghcr.io/cosmostat/sp_validation) for each release. This image can be installed and run on most systems (including clusters) with just a few lines of code.
39+
40+
We recommend running the image with **Apptainer** (formerly Singularity) which is installed on most HPC clusters. To simply run the image, use the following command:
41+
42+
```bash
43+
# build writeable "sandbox" container in the current directory
44+
# ./sp_validation will be a directory that functions like a vm
45+
apptainer build --sandbox sp_validation docker://ghcr.io/cosmostat/sp_validation:develop
46+
47+
# open a shell in the container
48+
apptainer shell --writable sp_validation
49+
# and confirm that the installation was successful
50+
python -c "import sp_validation"
51+
```
52+
53+
You can also run the image with **Docker**:
54+
55+
```bash
56+
docker run --rm -it ghcr.io/cosmostat/sp_validation:pyproject_docker python -c "import sp_validation"
57+
```
58+
59+
We do not currently build images for Apple Silicon/amr64; however the amd64 images should work on these systems, albeit with reduced performance.
60+
61+
3662

3763
## Flow chart
3864

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
results/*
2+
plots/*
3+
.snakemake/*
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
version: SP_v1.4.5
2+
plot_style: config/paper.mplstyle
3+
4+
ini_dirs:
5+
- /n23data1/n06data/lgoh/scratch/UNIONS/cosmo_inference/cosmosis_config/pipeline/
6+
- /home/guerrini/sp_validation/cosmo_inference/cosmosis_config/
7+
8+
9+
# chain: SP_v1.4.5_C_sc_10_150_new_ia
10+
chain: SP_v1.4.5_A_sc_10_60
11+
12+
npatch: 256
13+
min_sep: 0.1
14+
max_sep: 250
15+
nbins: 20
16+
17+
min_sep_int: 0.08
18+
max_sep_int: 300
19+
nbins_int: 100
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
figure.titlesize : 14
2+
figure.titleweight : bold
3+
figure.autolayout : True
4+
axes.titlesize : 12
5+
legend.fontsize : 8
6+
lines.linewidth : 1.5
7+
lines.markersize : 4
8+
axes.labelsize : 10
9+
xtick.labelsize : 10
10+
ytick.labelsize : 10
11+
text.usetex : True
12+
font.family : serif
13+
font.size : 12
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
configfile: "config/config.yaml"
2+
3+
4+
def find_cosmosis_inputs():
5+
chain = config["chain"]
6+
for ini_dir in config["ini_dirs"]:
7+
ini_file = Path(ini_dir) / f"cosmosis_pipeline_{chain}.ini"
8+
if os.path.exists(ini_file):
9+
return ini_file
10+
raise FileNotFoundError(
11+
f"Cosmosis input file not found for chain {chain} in specified directories."
12+
)
13+
14+
15+
rule get_bestfit_model:
16+
input:
17+
inference_ini=find_cosmosis_inputs(),
18+
output:
19+
bestfit_values_ini=f"results/{config['chain']}/bestfit_values.ini",
20+
cosmosis_ini=f"results/{config['chain']}/cosmosis.ini",
21+
xi_shear=f"results/{config['chain']}/bestfit_xi_shear.txt",
22+
xi_sys=f"results/{config['chain']}/bestfit_xi_sys.txt",
23+
params:
24+
bestfit_dir=f"results/{config['chain']}",
25+
script:
26+
"scripts/get_bestfit_model.py"
27+
28+
29+
rule paper_plots:
30+
input:
31+
bestfit_xi_shear=f"results/{config['chain']}/bestfit_xi_shear.txt",
32+
bestfit_xi_sys=f"results/{config['chain']}/bestfit_xi_sys.txt",
33+
xi_reporting="/n17data/cdaley/unions/sp_validation/notebooks/cosmo_val/output/{version}_xi_minsep={min_sep}_maxsep={max_sep}_nbins={nbins}_npatch={npatch}.txt".format(
34+
**config
35+
),
36+
xi_integration="/n17data/cdaley/unions/sp_validation/notebooks/cosmo_val/output/{version}_xi_minsep={min_sep_int}_maxsep={max_sep_int}_nbins={nbins_int}_npatch={npatch}.txt".format(
37+
**config
38+
),
39+
output:
40+
xis="/n17data/cdaley/unions/pure_eb/results/paper_plots/{version}_eb_with_bestfit_minsep={min_sep}_maxsep={max_sep}_nbins={nbins}_minsepint={min_sep_int}_maxsepint={max_sep_int}_nbinsint={nbins_int}_npatch={npatch}_xis.pdf".format(
41+
**config
42+
),
43+
ptes="/n17data/cdaley/unions/pure_eb/results/paper_plots/{version}_eb_minsep={min_sep}_maxsep={max_sep}_nbins={nbins}_minsepint={min_sep_int}_maxsepint={max_sep_int}_nbinsint={nbins_int}_npatch={npatch}_ptes.pdf".format(
44+
**config
45+
),
46+
cov="/n17data/cdaley/unions/pure_eb/results/paper_plots/{version}_eb_minsep={min_sep}_maxsep={max_sep}_nbins={nbins}_minsepint={min_sep_int}_maxsepint={max_sep_int}_nbinsint={nbins_int}_npatch={npatch}_cov.pdf".format(
47+
**config
48+
),
49+
params:
50+
version=config["version"],
51+
min_sep=lambda params: float(config["min_sep"]),
52+
max_sep=lambda params: int(config["max_sep"]),
53+
nbins=lambda params: int(config["nbins"]),
54+
min_sep_int=lambda params: float(config["min_sep_int"]),
55+
max_sep_int=lambda params: int(config["max_sep_int"]),
56+
nbins_int=lambda params: int(config["nbins_int"]),
57+
npatch=lambda params: int(config["npatch"]),
58+
threads: 1
59+
script:
60+
"paper_plots.py"

0 commit comments

Comments
 (0)