Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,17 @@ Removed features goes here

Miscellaneous goes here

## 1.14.0 - 2025-12-05

### Updated

* Using Miniforge3 installer (was Mambaforge)
* Updated Python (3.10.6 -> 3.12.12) and installed packages in `python3.sif` container.

### Fixed

* Fixed issue with %matplotlib inline magic with IPython/Jupyter in `python3.sif` container.

## 1.13.1 - 2025-11-27

###
Expand Down
99 changes: 52 additions & 47 deletions docker/dockerfiles/python3/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,74 +11,79 @@ RUN bash apt_get_essential.sh && \
rm apt_get_essential.sh

WORKDIR /tmp
COPY /scripts/install_mambaforge.sh .
RUN bash install_mambaforge.sh && \
rm install_mambaforge.sh
COPY /scripts/install_miniforge.sh .
RUN bash install_miniforge.sh && \
rm install_miniforge.sh

RUN conda install mamba -n base -c conda-forge && \
conda clean -a -y

# set up python env.
# keep the list of packages sorted alphabetically
# https://www.online-utility.org/text/sort.jsp
RUN mamba install python=3.10.6 \
configparser=7.0.0 \
dask=2023.3.0 \
RUN mamba install python=3.12.12 \
configparser=7.2.0 \
dask=2025.11.0 \
fastparquet=2024.11.0 \
graphviz=12.2.1 \
"h5py=3.7.0=nompi*" \
jupyterlab=3.4.8 \
lightgbm=4.5.0 \
lifelines=0.27.0 \
imbalanced-learn=0.12.3 \
graphviz=14.0.5 \
"h5py=3.15.1=nompi*" \
jupyterlab=4.5.0 \
lightgbm=4.6.0 \
lifelines=0.30.0 \
imbalanced-learn=0.14.0 \
intervaltree=3.1.0 \
matplotlib-venn=0.11.5 \
matplotlib=3.6.0 \
miniwdl=1.12.1 \
miniwdl-slurm=0.2.0 \
more-itertools=9.0.0 \
networkx=3.4 \
numdifftools=0.9.39 \
numba=0.60.0 \
numpy=1.23.3 \
matplotlib-venn=1.1.2 \
matplotlib=3.10.8 \
miniwdl=1.13.1 \
miniwdl-slurm=0.4.0 \
more-itertools=10.8.0 \
networkx=3.6 \
numdifftools=0.9.41 \
numba=0.62.1 \
numpy=2.3.5 \
openpyxl=3.1.5 \
pandas=2.2.3 \
pandas-plink=2.2.9 \
pandas=2.3.3 \
pandas-plink=2.3.2 \
paramiko=4.0.0 \
psutil=5.9.3 \
pyarrow=19.0.1 \
pydot=3.0.4 \
pyreadstat=1.2.7 \
pytables=3.7.0 \
python-graphviz=0.20.3 \
pyyaml=6.0 \
scikit-learn=1.5.2 \
scikit-survival=0.23.0 \
scipy=1.9.1 \
psutil=7.1.3 \
pyarrow=22.0.0 \
pydot=4.0.1 \
pyreadstat=1.3.2 \
pytables=3.10.2 \
python-graphviz=0.21 \
pyyaml=6.0.3 \
scikit-learn=1.7.2 \
scikit-survival=0.25.0 \
scipy=1.16.3 \
seaborn=0.13.2 \
semantic_version=2.10.0 \
shap=0.46.0 \
statsmodels=0.13.2 \
xgboost=2.1.4 \
xlrd=2.0.1 \
xmltodict=0.13.0 \
shap=0.48.0 \
statsmodels=0.14.5 \
xgboost=3.1.2 \
xlrd=2.0.2 \
xmltodict=1.0.2 \
--yes && \
mamba clean -a -y

# pip install stuff in env.
RUN pip install --no-cache-dir --no-deps cbgen==1.0.2 \
bgen-reader==4.0.8 \
bed-reader==0.2.24 \
dxpy==0.383.1 \
fastlmm==0.6.3 \
RUN pip install --no-cache-dir --no-deps \
bed-reader==1.0.6 \
bgen-reader==4.0.9 \
cbgen==1.0.6 \
crc32c==2.8 \
dxpy==0.400.1 \
fastlmm==0.6.12 \
hdf5storage==0.2.2 \
LDpred==1.0.11 \
Pgenlib==0.93.0 \
plinkio==0.9.8 \
plinkliftover==0.5.2 \
poetry==2.2.1 \
pooch==1.8.2 \
pycap==2.1.0 \
pycap==2.7.0 \
pyliftover==0.4.1 \
pysnptools==0.5.7 && \
pip cache purge
pysnptools==0.5.14 && \
pip cache purge

# Plink (as python_convert depends on plink)
WORKDIR /tmp/plink
Expand Down Expand Up @@ -112,4 +117,4 @@ WORKDIR /tools

# https://github.com/comorment/containers/issues/267:
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#!/bin/sh
set -euo pipefail

version=25.3.1-0
curl -sSL https://github.com/conda-forge/miniforge/releases/download/$version/Miniforge3-$version-$(uname)-$(uname -m).sh -o /tmp/mambaforge.sh \
&& mkdir /root/.conda \
&& bash /tmp/mambaforge.sh -bfp /usr/local \
&& rm -rf /tmp/mambaforge.sh
version=25.11.0-1
curl -sSL https://github.com/conda-forge/miniforge/releases/download/$version/Miniforge3-$version-$(uname)-$(uname -m).sh -o /tmp/miniforge.sh
mkdir /root/.conda
bash /tmp/miniforge.sh -bfp /usr/local
rm -rf /tmp/miniforge.sh

export PATH=$PATH:/opt/conda/bin
9 changes: 9 additions & 0 deletions tests/test_python3.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
subprocess.run('apptainer', check=False)
PREFIX = f'apptainer run {pth}'
PREFIX_MOUNT = f'apptainer run --home={cwd}:/home/ {pth}'
IPYTHON = f'{PREFIX} ipython'
PYTHON = f'{PREFIX} python'
PYTHON_MOUNT = f'{PREFIX_MOUNT} python'
PLINK = f'{PREFIX} plink'
Expand All @@ -37,6 +38,7 @@
f'--mount type=bind,source={cwd},target={cwd} ' +
'--platform linux/amd64 ' +
'ghcr.io/comorment/python3')
IPYTHON = f'{PREFIX} ipython'
PYTHON = f'{PREFIX} python'
PYTHON_MOUNT = f'{PREFIX_MOUNT} python'
PLINK = f'{PREFIX} plink'
Expand All @@ -46,6 +48,7 @@
except FileNotFoundError:
# neither apptainer nor docker found, fall back to plain python
# presumably because we are running on the client
IPYTHON = 'ipython'
PYTHON = 'python'
PYTHON_MOUNT = 'python'
PLINK = 'plink'
Expand Down Expand Up @@ -104,6 +107,7 @@ def test_python3_miniwdl():
def test_python3_packages():
packages = [
'configparser',
'crc32c',
'dask',
'fastparquet',
'dxpy',
Expand Down Expand Up @@ -151,3 +155,8 @@ def test_python3_import_pandas_scipy_stats():
call = f'{PYTHON_MOUNT} -c "import pandas as pd; from scipy import *"'
out = subprocess.run(call, shell=True, check=False)
assert out.returncode == 0

def test_python3_ipython_magic():
call = f'{IPYTHON} -c "get_ipython().run_line_magic(\'matplotlib\', \'inline\')"'
out = subprocess.run(call, shell=True, check=False)
assert out.returncode == 0
4 changes: 2 additions & 2 deletions version/version.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
_MAJOR = "1"
_MINOR = "13"
_MINOR = "14"
# On main and in a nightly release the patch should be one ahead of the last
# released build.
_PATCH = "1"
_PATCH = "0"
# This is mainly for nightly builds which have the suffix ".dev$DATE". See
# https://semver.org/#is-v123-a-semantic-version for the semantics.
_SUFFIX = ""
Expand Down
Loading