Skip to content

Commit 218a078

Browse files
uniquegfgypas
andauthored
build: add Dockerfile (#188)
Co-authored-by: Foivos Gypas <fgypas@gmail.com>
1 parent 89969ff commit 218a078

File tree

5 files changed

+134
-2
lines changed

5 files changed

+134
-2
lines changed

.github/workflows/ci.yml

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,38 @@ jobs:
209209
- name: Run test script
210210
run: bash tests/test_integration_workflow_with_conda/test.local.sh
211211

212-
- name: Run htsinfer test script
212+
- name: Run HTSinfer workflow test script
213213
run: bash tests/test_htsinfer_with_conda/test.local.sh
214214

215-
- name: Run SRA downloads workflow
215+
- name: Run SRA downloads workflow test script
216216
run: bash tests/test_sra_download_with_conda/test.local.sh
217+
218+
integration-docker:
219+
220+
needs:
221+
- snakemake-graphs-format
222+
runs-on: ubuntu-latest
223+
defaults:
224+
run:
225+
shell: bash -l {0}
226+
steps:
227+
228+
- name: Checkout ZARP repository
229+
uses: actions/checkout@v4
230+
231+
- name: Setup Miniforge with ZARP environment
232+
uses: conda-incubator/setup-miniconda@v3
233+
with:
234+
environment-file: install/environment.dev.yml
235+
miniforge-version: latest
236+
conda-remove-defaults: true
237+
channel-priority: strict
238+
auto-update-conda: true
239+
auto-activate-base: false
240+
activate-environment: zarp
241+
242+
- name: Run test script
243+
run: bash tests/test_integration_workflow_with_docker/test.local.sh
244+
245+
- name: Clean up
246+
run: rm -rf data%

Dockerfile

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
FROM continuumio/miniconda3:24.7.1-0
2+
3+
COPY install/environment.yml /environment.yml
4+
COPY workflow /workflow
5+
COPY resources /resources
6+
COPY tests/input_files/config.yaml /config.yaml
7+
COPY tests/input_files/samples.tsv /samples.tsv
8+
COPY tests/input_files/rule_config.yaml /rule_config.yaml
9+
COPY tests/input_files/project1/synthetic.mate_1.fastq.gz /project1/synthetic.mate_1.fastq.gz
10+
COPY tests/input_files/project1/synthetic.mate_2.fastq.gz /project1/synthetic.mate_2.fastq.gz
11+
COPY tests/input_files/project2/synthetic.mate_1.fastq.gz /project2/synthetic.mate_1.fastq.gz
12+
COPY tests/input_files/homo_sapiens/annotation.gtf /annotation.gtf
13+
COPY tests/input_files/homo_sapiens/genome.fa /genome.fa
14+
15+
RUN sed -i 's# - conda-forge##' workflow/envs/STAR.yaml && \
16+
sed -i 's#2.7.11#2.7.10#' workflow/envs/STAR.yaml && \
17+
sed -i 's#../input_files/project1/#/project1/#g' /samples.tsv && \
18+
sed -i 's#../input_files/project2/#/project2/#g' /samples.tsv && \
19+
sed -i 's#../input_files/homo_sapiens/##g' /samples.tsv && \
20+
sed -i 's#../input_files/##' /config.yaml
21+
22+
RUN conda install -c conda-forge mamba --yes && \
23+
mamba env create -f /environment.yml && \
24+
conda clean --all --yes
25+
26+
RUN echo "source activate zarp" > ~/.bashrc
27+
28+
ENV SNAKEMAKE_CONDA_PREFIX="/conda_envs"
29+
ENV PATH=/opt/conda/envs/zarp/bin:$PATH
30+
31+
RUN snakemake -p --snakefile /workflow/Snakefile --configfile /config.yaml --cores 4 --use-conda --conda-create-envs-only --verbose && \
32+
conda clean --all --yes
33+
34+
RUN rm /config.yaml /samples.tsv /rule_config.yaml /project1/synthetic.mate_1.fastq.gz /project1/synthetic.mate_2.fastq.gz /project2/synthetic.mate_1.fastq.gz
35+
36+
RUN mkdir -p /data

tests/input_files/config_docker.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
# Required fields
3+
samples: "data/samples_docker.tsv"
4+
output_dir: "data/results"
5+
log_dir: "data/logs"
6+
cluster_log_dir: "data/logs/cluster"
7+
kallisto_indexes: "data/results/kallisto_indexes"
8+
salmon_indexes: "data/results/salmon_indexes"
9+
star_indexes: "data/results/star_indexes"
10+
alfa_indexes: "data/results/alfa_indexes"
11+
# Optional fields
12+
rule_config: "data/rule_config.yaml"
13+
report_description: "No description provided by user"
14+
report_logo: "../../images/logo.128px.png"
15+
report_url: "https://zavolan.biozentrum.unibas.ch/"
16+
author_name: "NA"
17+
author_email: "NA"
18+
...

tests/input_files/samples_docker.tsv

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
sample seqmode fq1 index_size kmer fq1_3p fq1_5p organism gtf genome sd mean libtype fq1_polya_3p fq1_polya_5p fq2 fq2_3p fq2_5p fq2_polya_3p fq2_polya_5p
2+
synthetic_10_reads_paired_synthetic_10_reads_paired pe data/project1/synthetic.mate_1.fastq.gz 75 31 AGATCGGAAGAGCACA XXXXXXXXXXXXX homo_sapiens data/annotation.gtf data/genome.fa 100 250 ISF AAAAAAAAAAAAAAAAA XXXXXXXXXXXXXXXXX data/project1/synthetic.mate_2.fastq.gz AGATCGGAAGAGCGT XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX TTTTTTTTTTTTTTTTT
3+
synthetic_10_reads_mate_1_synthetic_10_reads_mate_1 se data/project2/synthetic.mate_1.fastq.gz 75 31 AGATCGGAAGAGCACA XXXXXXXXXXXXX homo_sapiens data/annotation.gtf data/genome.fa 100 250 SF AAAAAAAAAAAAAAAAA XXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/bash
2+
3+
# Tear down test environment
4+
cleanup () {
5+
rc=$?
6+
rm -rf .cache/
7+
rm -rf .config/
8+
rm -rf .fontconfig/
9+
rm -rf .java/
10+
rm -rf .snakemake/
11+
cd $user_dir
12+
echo "Exit status: $rc"
13+
}
14+
trap cleanup EXIT
15+
16+
# Set up test environment
17+
set -eo pipefail # ensures that script exits at first command that exits with non-zero status
18+
set -u # ensures that script exits when unset variables are used
19+
set -x # facilitates debugging by printing out executed commands
20+
user_dir=$PWD
21+
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
22+
cd $script_dir
23+
24+
mkdir -p data
25+
cp ../../tests/input_files/homo_sapiens/genome.fa data/genome.fa
26+
cp ../../tests/input_files/homo_sapiens/annotation.gtf data/annotation.gtf
27+
cp -r ../../tests/input_files/project1 data/project1
28+
cp -r ../../tests/input_files/project2 data/project2
29+
cp -r ../../tests/input_files/config_docker.yaml data/config_docker.yaml
30+
cp ../../tests/input_files/rule_config.yaml data/rule_config.yaml
31+
cp ../../tests/input_files/samples_docker.tsv data/samples_docker.tsv
32+
33+
# Pull the zarp container
34+
docker pull zavolab/zarp:1.0.0-rc.1
35+
36+
# Run tests with Docker
37+
docker run \
38+
--platform linux/x86_64 \
39+
--mount type=bind,source=$script_dir/data,target=/data \
40+
zavolab/zarp:1.0.0-rc.1 \
41+
snakemake \
42+
-p \
43+
--snakefile /workflow/Snakefile \
44+
--configfile data/config_docker.yaml \
45+
--cores 4 --use-conda --verbose

0 commit comments

Comments
 (0)