diff --git a/CHANGELOG.md b/CHANGELOG.md index a56d4b6..bfbcad9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ ### Added +- skipper-clipper-compare 1.0.0 (`images/skipper-clipper-compare/1.0.0`): the + pinned Python/bedtools environment for skipper-clipper-snakemake's + Skipper-vs-CLIPper comparison, published as + `ghcr.io/yeolab/skipper-clipper-compare:1.0.0`. - Singularity-first DRUID deployment and tutorial instructions for Dockerless clusters, including the tested `sha-7941ba6aebf0fd4beb48643ec373374b50b02bbc` image pull command. diff --git a/images/skipper-clipper-compare/1.0.0/Dockerfile b/images/skipper-clipper-compare/1.0.0/Dockerfile new file mode 100644 index 0000000..e4e7fc2 --- /dev/null +++ b/images/skipper-clipper-compare/1.0.0/Dockerfile @@ -0,0 +1,27 @@ +# Environment for skipper-clipper-snakemake's compare_skipper_clipper.py: +# Skipper enriched windows vs CLIPper peaks (pandas, pybedtools/bedtools, +# scipy, matplotlib, seaborn, matplotlib-venn). The script itself lives in the +# workflow repository and is run inside this image by the workflow. + +FROM mambaorg/micromamba:2.9.0-debian12-slim@sha256:edce84d758b6c3029cebdf2777d9cdfdd6e44f9eee0a31c6a09a7df14be17fd2 + +LABEL software="skipper-clipper-compare" +LABEL software.version="1.0.0" +LABEL about.summary="Python environment comparing Skipper enriched windows with CLIPper peaks" +LABEL about.url="https://github.com/byee4/skipper-clipper-snakemake" +LABEL about.tags="Genomics,eCLIP" + +COPY --chown=$MAMBA_USER:$MAMBA_USER environment.yml /tmp/environment.yml +RUN micromamba install -y -n base -f /tmp/environment.yml \ + && micromamba clean --all --yes + +# Tools resolve on PATH without micromamba's activating entrypoint, as they +# must when Snakemake runs this image through Singularity/Apptainer. +ENV PATH=/opt/conda/bin:$PATH \ + MPLBACKEND=Agg + +# Fail the build, not a pipeline job, if the environment is incomplete. +RUN python -c "import pandas, numpy, scipy, matplotlib, seaborn, matplotlib_venn, pybedtools; \ +from pybedtools import BedTool; \ +assert len(BedTool('chr1 1 9 a 0 +', from_string=True).sort()) == 1" \ + && bedtools --version diff --git a/images/skipper-clipper-compare/1.0.0/README.md b/images/skipper-clipper-compare/1.0.0/README.md new file mode 100644 index 0000000..d16d8d9 --- /dev/null +++ b/images/skipper-clipper-compare/1.0.0/README.md @@ -0,0 +1,16 @@ +# skipper-clipper-compare 1.0.0 + +Python environment for `workflow/scripts/compare_skipper_clipper.py` in +[skipper-clipper-snakemake](https://github.com/byee4/skipper-clipper-snakemake), +which compares Skipper enriched windows with CLIPper peaks. The image holds the +environment only; the workflow supplies the script. + +Pinned in `environment.yml`: Python 3.12, bedtools 2.31.1, pybedtools 0.12.0, +pandas 2.2.3, numpy 2.2.6, scipy 1.15.2, matplotlib 3.10.3, seaborn 0.13.2, and +matplotlib-venn 1.1.2. Everything is on `PATH` without activation, so the image +works under Singularity/Apptainer: + +```bash +apptainer exec docker://ghcr.io/yeolab/skipper-clipper-compare:1.0.0 \ + python compare_skipper_clipper.py --help +``` diff --git a/images/skipper-clipper-compare/1.0.0/environment.yml b/images/skipper-clipper-compare/1.0.0/environment.yml new file mode 100644 index 0000000..8dc3715 --- /dev/null +++ b/images/skipper-clipper-compare/1.0.0/environment.yml @@ -0,0 +1,14 @@ +name: skipper-clipper-compare +channels: + - conda-forge + - bioconda +dependencies: + - python=3.12 + - bedtools=2.31.1 + - pybedtools=0.12.0 + - pandas=2.2.3 + - numpy=2.2.6 + - scipy=1.15.2 + - matplotlib-base=3.10.3 + - seaborn-base=0.13.2 + - matplotlib-venn=1.1.2