From fa9b1712bba102a1de1064c8cd5fffebfc81977f Mon Sep 17 00:00:00 2001 From: mazzalab Date: Thu, 16 May 2024 08:17:49 +0200 Subject: [PATCH 1/4] setup the environment --- .devcontainer/devcontainer.json | 36 +++++++++------------------------ .vscode/settings.json | 0 Dockerfile | 6 +++--- run_wiping.sh | 11 +++++----- 4 files changed, 19 insertions(+), 34 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index aac970a..1d7bec6 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -8,31 +8,15 @@ // Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename. "dockerfile": "../Dockerfile" }, - // "mounts": [ - // "source=${localWorkspaceFolder},target=/fastqwiper,type=bind,consistency=cached" - // ], - "customizations": { - "vscode": { - "extensions": [ - "ms-python.vscode-pylance", - "ms-python.black-formatter", - "snakemake.snakemake-lang" - ] - } - } - // Features to add to the dev container. More info: https://containers.dev/features. - // "features": {}, - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - - // Uncomment the next line to run commands after the container is created. - // "postCreateCommand": "cat /etc/os-release", - - // Configure tool-specific properties. - // "customizations": {}, - - // Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root. - // "remoteUser": "devcontainer" + "features": { + "ghcr.io/devcontainers/features/git:1": {} + }, + "customizations" : { + "jetbrains" : { + "backend" : "PyCharm" + } + }, + workspaceFolder: "/fastqwiper", +// workspaceMount: "source=${localWorkspaceFolder},target=/fastqwiper,type=bind" } diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index e69de29..0000000 diff --git a/Dockerfile b/Dockerfile index 9ff626f..e045163 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ LABEL maintainer="mazza.tommaso@gmail.com" ENV bbmap_version 39.01 ENV PATH "$PATH:/tmp/jre1.8.0_161/bin/" -RUN mamba config --set channel_priority strict +# RUN mamba config --set channel_priority strict RUN mamba install python=3.10 RUN mamba install -c conda-forge -c bioconda snakemake=7.32.3 -y RUN mamba install -c conda-forge colorama click -y @@ -32,8 +32,8 @@ RUN chmod +x run_wiping.sh ENTRYPOINT ["/fastqwiper/run_wiping.sh"] -# paired mode, 4 cores, sample name, #rows-per-chunk -CMD ["paired", "4", "sample", "50000000"] +# paired mode, 4 cores, sample name, #rows-per-chunk, ASCII offset (33=Sanger, 64=old Solexa) +CMD ["paired", "4", "sample", "50000000", "33"] # docker build -t test . # docker run --rm -ti --name test -v "D:\desktop_links\CSS-Bioinformatics\FastqWiper\FastqWiper\data:/fastqwiper/data" test paired 8 sample 50000000 diff --git a/run_wiping.sh b/run_wiping.sh index 2139edf..13d7ba1 100644 --- a/run_wiping.sh +++ b/run_wiping.sh @@ -4,13 +4,14 @@ mode=$1 cores=$(($2)) sample_name=$3 chunk_size=$(($4)) +qin=$(($5)) # Enter the FastqWiper folder -cd /fastqwiper +cd /fastqwiper || return -if [ $mode == "paired" ] +if [ "$mode" == "paired" ] then - if [ $cores -gt 1 ] + if [ "$cores" -gt 1 ] then echo "Processing paired-end files in parallel" snakemake --config sample_name=$sample_name chunk_size=$chunk_size -s ./pipeline/fix_wipe_pairs_reads_parallel.smk --use-conda --cores $cores @@ -18,9 +19,9 @@ then echo "Processing paired-end files sequentially" snakemake --config sample_name=$sample_name -s ./pipeline/fix_wipe_pairs_reads_sequential.smk --use-conda --cores $cores fi -elif [ $mode == "single" ] +elif [ "$mode" == "single" ] then - if [ $cores -gt 1 ] + if [ "$cores" -gt 1 ] then echo "Processing single-end file in parallel" snakemake --config sample_name=$sample_name chunk_size=$chunk_size -s ./pipeline/fix_wipe_single_reads_parallel.smk --use-conda --cores $cores From 55085a9a39d5626f8eb0b6275bec4672933eaa8f Mon Sep 17 00:00:00 2001 From: mazzalab Date: Fri, 17 May 2024 21:28:49 +0200 Subject: [PATCH 2/4] adding qin (ASCII offset) optional variable --- .devcontainer/devcontainer.json | 2 +- .gitignore | 2 +- Dockerfile | 3 +- data/excerpt_S1_R1_001.fastq.gz | Bin 46217 -> 0 bytes data/excerpt_S1_R2_001.fastq.gz | Bin 46217 -> 0 bytes data/osteo-FS_S1_R1_001_chunk_WRONG.fastq | 6165 ------------------ pipeline/fix_wipe_pairs_reads_parallel.smk | 5 +- pipeline/fix_wipe_pairs_reads_sequential.smk | 4 +- run_wiping.sh | 19 +- 9 files changed, 23 insertions(+), 6177 deletions(-) delete mode 100644 data/excerpt_S1_R1_001.fastq.gz delete mode 100644 data/excerpt_S1_R2_001.fastq.gz delete mode 100644 data/osteo-FS_S1_R1_001_chunk_WRONG.fastq diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1d7bec6..2d6ded6 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -17,6 +17,6 @@ "backend" : "PyCharm" } }, - workspaceFolder: "/fastqwiper", +// workspaceFolder: "/fastqwiper", // workspaceMount: "source=${localWorkspaceFolder},target=/fastqwiper,type=bind" } diff --git a/.gitignore b/.gitignore index ce11cad..d61c4b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ #my custom -.vscode bbmap/ logs/ +bbmap # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/Dockerfile b/Dockerfile index e045163..48c1f7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,6 +28,7 @@ WORKDIR /fastqwiper COPY pipeline pipeline COPY run_wiping.sh run_wiping.sh +COPY data data RUN chmod +x run_wiping.sh @@ -36,5 +37,5 @@ ENTRYPOINT ["/fastqwiper/run_wiping.sh"] CMD ["paired", "4", "sample", "50000000", "33"] # docker build -t test . -# docker run --rm -ti --name test -v "D:\desktop_links\CSS-Bioinformatics\FastqWiper\FastqWiper\data:/fastqwiper/data" test paired 8 sample 50000000 +# docker run --rm -ti --name test -v "D:\desktop_links\CSS-Bioinformatics\FastqWiper\FastqWiper\data:/fastqwiper/data" test paired 4 sample 50000000 33 # docker exec -ti test /bin/bash \ No newline at end of file diff --git a/data/excerpt_S1_R1_001.fastq.gz b/data/excerpt_S1_R1_001.fastq.gz deleted file mode 100644 index a887a5bd6fa13fd3a2d078cc71fd36782ee7cd8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46217 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 J*Fs5B0|23Fq#XbN diff --git a/data/excerpt_S1_R2_001.fastq.gz b/data/excerpt_S1_R2_001.fastq.gz deleted file mode 100644 index 9e530b66526d8dc5caa5efb3e9bd2082e330612f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46217 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 J*Fs5B0{~U*q#ghO diff --git a/data/osteo-FS_S1_R1_001_chunk_WRONG.fastq b/data/osteo-FS_S1_R1_001_chunk_WRONG.fastq deleted file mode 100644 index da75157..0000000 --- a/data/osteo-FS_S1_R1_001_chunk_WRONG.fastq +++ /dev/null @@ -1,6165 +0,0 @@ -@NS500299:185:HK57NBGXG:1:11101:16144:1046 2:N:0:CGAGGCTG -NGACCAAGGAGGAGAAGAGACCTTTGCTGNCCCANCANGGGNGCTNNNGNTGTCACCTGGACAGGGGGCAGCCGTG -+ -#A {log}" + "bbmap/repair.sh qin={QIN} in={input.in1} in2={input.in2} out={output.out1} out2={output.out2} outsingle={output.out3} 2> {log}" onsuccess: print("Workflow finished, no error. Clean-up and shutdown") diff --git a/pipeline/fix_wipe_pairs_reads_sequential.smk b/pipeline/fix_wipe_pairs_reads_sequential.smk index 3ef4f01..9614241 100644 --- a/pipeline/fix_wipe_pairs_reads_sequential.smk +++ b/pipeline/fix_wipe_pairs_reads_sequential.smk @@ -62,9 +62,9 @@ rule fix_interleaving: log: "logs/interleaving/interleaving.{sample}.log" message: - "Repair reads interleaving from {input}." + "Repair reads interleaving from {input} (qin={QIN})." threads: 1 cache: False shell: - "bbmap/repair.sh in={input.in1} in2={input.in2} out={output.out1} out2={output.out2} outsingle={output.out3} 2> {log}" + "bbmap/repair.sh qin={QIN} in={input.in1} in2={input.in2} out={output.out1} out2={output.out2} outsingle={output.out3} 2> {log}" diff --git a/run_wiping.sh b/run_wiping.sh index 13d7ba1..ee15f50 100644 --- a/run_wiping.sh +++ b/run_wiping.sh @@ -3,31 +3,40 @@ mode=$1 cores=$(($2)) sample_name=$3 + +# Optional chunk_size=$(($4)) +if [ "$chunk_size" -eq "0" ]; then + chunk_size=50000000 +fi + qin=$(($5)) +if [ "$qin" -eq "0" ]; then + qin=33 +fi # Enter the FastqWiper folder -cd /fastqwiper || return +#cd /fastqwiper || return if [ "$mode" == "paired" ] then if [ "$cores" -gt 1 ] then echo "Processing paired-end files in parallel" - snakemake --config sample_name=$sample_name chunk_size=$chunk_size -s ./pipeline/fix_wipe_pairs_reads_parallel.smk --use-conda --cores $cores + snakemake --config sample_name=$sample_name chunk_size=$chunk_size qin=$qin -s ./pipeline/fix_wipe_pairs_reads_parallel.smk --use-conda --cores $cores else echo "Processing paired-end files sequentially" - snakemake --config sample_name=$sample_name -s ./pipeline/fix_wipe_pairs_reads_sequential.smk --use-conda --cores $cores + snakemake --config sample_name=$sample_name qin=$qin -s ./pipeline/fix_wipe_pairs_reads_sequential.smk --use-conda --cores $cores fi elif [ "$mode" == "single" ] then if [ "$cores" -gt 1 ] then echo "Processing single-end file in parallel" - snakemake --config sample_name=$sample_name chunk_size=$chunk_size -s ./pipeline/fix_wipe_single_reads_parallel.smk --use-conda --cores $cores + snakemake --config sample_name=$sample_name chunk_size=$chunk_size qin=$qin -s ./pipeline/fix_wipe_single_reads_parallel.smk --use-conda --cores $cores else echo "Processing single-end file sequentially" - snakemake --config sample_name=$sample_name -s ./pipeline/fix_wipe_single_reads_sequential.smk --use-conda --cores $cores + snakemake --config sample_name=$sample_name qin=$qin -s ./pipeline/fix_wipe_single_reads_sequential.smk --use-conda --cores $cores fi else echo "Snakemake help" From b0ddb5c310cffc9bc223edd6812b94a4d9585e5e Mon Sep 17 00:00:00 2001 From: mazzalab Date: Fri, 17 May 2024 21:47:00 +0200 Subject: [PATCH 3/4] adding qin (ASCII offset) optional variable --- .devcontainer/devcontainer.json | 4 ++-- README.md | 16 ++++++++-------- pipeline/fix_wipe_pairs_reads_sequential.smk | 1 + run_wiping.sh | 5 +++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 2d6ded6..492d2e8 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -17,6 +17,6 @@ "backend" : "PyCharm" } }, -// workspaceFolder: "/fastqwiper", -// workspaceMount: "source=${localWorkspaceFolder},target=/fastqwiper,type=bind" + workspaceFolder: "/fastqwiper", + workspaceMount: "source=${localWorkspaceFolder},target=/fastqwiper,type=bind" } diff --git a/README.md b/README.md index 0e729e5..c33cc33 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ There are QUICK and a SLOW methods to configure `FastqWiper`'s wor 2. Once downloaded the image, type: -CMD: `docker run --rm -ti --name fastqwiper -v "YOUR_LOCAL_PATH_TO_DATA_FOLDER:/fastqwiper/data" mazzalab/fastqwiper paired 8 sample 50000000` +CMD: `docker run --rm -ti --name fastqwiper -v "YOUR_LOCAL_PATH_TO_DATA_FOLDER:/fastqwiper/data" mazzalab/fastqwiper paired 8 sample 50000000 33` #### Another quick way (Singularity) 1. Pull the Singularity image from the Cloud Library: @@ -79,11 +79,11 @@ CMD: `docker run --rm -ti --name fastqwiper -v "YOUR_LOCAL_PATH_TO_DATA_FOLDER:/ 2. Once downloaded the image (e.g., fastqwiper.sif_2023.2.70.sif), type: -CMD `singularity run --bind /scratch/tom/fastqwiper_singularity/data:/fastqwiper/data --writable-tmpfs fastqwiper.sif_2023.2.70.sif paired 8 sample 50000000` +CMD `singularity run --bind /scratch/tom/fastqwiper_singularity/data:/fastqwiper/data --writable-tmpfs fastqwiper.sif_2023.2.70.sif paired 8 sample 50000000 33` If you want to bind the `.singularity` cache folder and the `logs` folder, you can omit `--writable-tmpfs`, create the folders `.singularity` and `logs` (`mkdir .singularity logs`) on the host system, and use this command instead: -CMD: `singularity run --bind YOUR_LOCAL_PATH_TO_DATA_FOLDER/:/fastqwiper/data --bind YOUR_LOCAL_PATH_TO_.singularity_FOLDER/:/fastqwiper/.snakemake --bind YOUR_LOCAL_PATH_TO_LOGS_FOLDER/:/fastqwiper/logs fastqwiper.sif_2023.2.70.sif paired 8 sample 50000000` +CMD: `singularity run --bind YOUR_LOCAL_PATH_TO_DATA_FOLDER/:/fastqwiper/data --bind YOUR_LOCAL_PATH_TO_.singularity_FOLDER/:/fastqwiper/.snakemake --bind YOUR_LOCAL_PATH_TO_LOGS_FOLDER/:/fastqwiper/logs fastqwiper.sif_2023.2.70.sif paired 8 sample 50000000 33` For both **Docker** and **Singularity**: @@ -91,8 +91,8 @@ For both **Docker** and **Singularity**: - `paired` triggers the cleaning of R1 and R2. Alternatively, `single` will trigger the wipe of individual FASTQ files; - `8` is the number of your choice of computing cores to be spawned; - `sample` is part of the names of the FASTQ files to be wiped. Be aware that: for paired-end files (e.g., "sample_R1.fastq.gz" and "sample_R2.fastq.gz"), your files must finish with `_R1.fastq.gz` and `_R2.fastq.gz`. Therefore, the argument to pass is everything before these texts: `sample` in this case. For single end/individual files (e.g., "excerpt_R1_001.fastq.gz"), your file must end with the string `.fastq.gz`; the preceding text, i.e., "excerpt_R1_001" in this case, will be the text to be passed to the command as an argument. -- `50000000` is the number of rows-per-chunk (used when cores>1. It must be a number multiple of 4). Increasing this number too much would reduce the parallelism advantage. Decreasing this number too much would increase the number of chunks more than the number of available cpus, making parallelism unefficient. Choose this number wisely depending on the total number of reads in your starting file. - +- `50000000` (optional) is the number of rows-per-chunk (used when cores>1. It must be a number multiple of 4). Increasing this number too much would reduce the parallelism advantage. Decreasing this number too much would increase the number of chunks more than the number of available cpus, making parallelism unefficient. Choose this number wisely depending on the total number of reads in your starting file. +- `33` (optional) is the ASCII offset (33=Sanger, 64=old Solexa) #### The slow way (Linux & Mac OS) To enable the use of preconfigured [pipelines](https://github.com/mazzalab/fastqwiper/tree/main/pipeline), you need to install **Snakemake**. The recommended way to install Snakemake is via Conda, because it enables **Snakemake** to [handle software dependencies of your workflow](https://snakemake.readthedocs.io/en/stable/snakefiles/deployment.html#integrated-package-management). @@ -146,14 +146,14 @@ Copy the fastq files you want to fix in the `data` folder. #### Paired-end files - **Get a dry run** of a pipeline (e.g., `fix_wipe_pairs_reads_sequential.smk`):
-`snakemake --config sample_name=my_sample -s pipeline/fix_wipe_pairs_reads_sequential.smk --use-conda --cores 4` +`snakemake --config sample_name=my_sample qin=33 -s pipeline/fix_wipe_pairs_reads_sequential.smk --use-conda --cores 4` - **Generate the planned DAG**:
-`snakemake --config sample_name=my_sample -s pipeline/fix_wipe_pairs_reads_sequential.smk --dag | dot -Tpdf > dag.pdf`

+`snakemake --config sample_name=my_sample qin=33 -s pipeline/fix_wipe_pairs_reads_sequential.smk --dag | dot -Tpdf > dag.pdf`

- **Run the pipeline** (n.b., during the first execution, Snakemake will download and install some required remote packages and may take longer). The number of computing cores can be tuned accordingly:
-`snakemake --config sample_name=my_sample -s pipeline/fix_wipe_single_reads_sequential.smk --use-conda --cores 2` +`snakemake --config sample_name=my_sample qin=33 -s pipeline/fix_wipe_single_reads_sequential.smk --use-conda --cores 2` Fixed files will be copied in the `data` folder and will be suffixed with the string `_fixed_wiped_paired_interleaving`. We remind that the `fix_wipe_pairs_reads_sequential.smk` and `fix_wipe_pairs_reads_parallel.smk` pipelines perform the following actions: diff --git a/pipeline/fix_wipe_pairs_reads_sequential.smk b/pipeline/fix_wipe_pairs_reads_sequential.smk index 9614241..f740194 100644 --- a/pipeline/fix_wipe_pairs_reads_sequential.smk +++ b/pipeline/fix_wipe_pairs_reads_sequential.smk @@ -3,6 +3,7 @@ from snakemake.io import expand, temp SAMPLES=config["sample_name"] +QIN=config["qin"] rule all: input: diff --git a/run_wiping.sh b/run_wiping.sh index ee15f50..a5dedaf 100644 --- a/run_wiping.sh +++ b/run_wiping.sh @@ -10,6 +10,7 @@ if [ "$chunk_size" -eq "0" ]; then chunk_size=50000000 fi +# Optional qin=$(($5)) if [ "$qin" -eq "0" ]; then qin=33 @@ -33,10 +34,10 @@ then if [ "$cores" -gt 1 ] then echo "Processing single-end file in parallel" - snakemake --config sample_name=$sample_name chunk_size=$chunk_size qin=$qin -s ./pipeline/fix_wipe_single_reads_parallel.smk --use-conda --cores $cores + snakemake --config sample_name=$sample_name chunk_size=$chunk_size -s ./pipeline/fix_wipe_single_reads_parallel.smk --use-conda --cores $cores else echo "Processing single-end file sequentially" - snakemake --config sample_name=$sample_name qin=$qin -s ./pipeline/fix_wipe_single_reads_sequential.smk --use-conda --cores $cores + snakemake --config sample_name=$sample_name -s ./pipeline/fix_wipe_single_reads_sequential.smk --use-conda --cores $cores fi else echo "Snakemake help" From 3c918cfecbb218af48932c3cbb007927a87dc785 Mon Sep 17 00:00:00 2001 From: mazzalab Date: Sat, 18 May 2024 18:11:22 +0200 Subject: [PATCH 4/4] Enhance start scripts --- Dockerfile | 2 +- Singularity.def | 4 +-- run_wiping.sh | 73 ++++++++++++++++++++++++++----------------------- 3 files changed, 42 insertions(+), 37 deletions(-) diff --git a/Dockerfile b/Dockerfile index 48c1f7f..1c929b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,5 +37,5 @@ ENTRYPOINT ["/fastqwiper/run_wiping.sh"] CMD ["paired", "4", "sample", "50000000", "33"] # docker build -t test . -# docker run --rm -ti --name test -v "D:\desktop_links\CSS-Bioinformatics\FastqWiper\FastqWiper\data:/fastqwiper/data" test paired 4 sample 50000000 33 +# docker run --rm -ti --name test -v "D:\Projects\fastqwiper\data:/fastqwiper/data" test paired 4 sample 50000000 33 # docker exec -ti test /bin/bash \ No newline at end of file diff --git a/Singularity.def b/Singularity.def index 296ae52..39e3f6b 100644 --- a/Singularity.def +++ b/Singularity.def @@ -39,9 +39,9 @@ From: condaforge/mambaforge chmod 777 /fastqwiper/run_wiping.sh %runscript - if [ $# -eq 4 ] || [ $# -eq 1 ]; then + if [ $# -eq 5 ] || [ $# -eq 3 ] || [ $# -eq 1 ]; then exec /fastqwiper/run_wiping.sh $@ else - echo "You must provide four arguments [mode (paired, single), # of cores (int), sample name (string), chunk size (int))" + echo "You must provide three + 2 optional arguments [computing mode ('paired' or 'single'), # of cores (int), sample name (string), chunk size (optional, int), ASCII offset (optional, 33 or 64)]" exit 1 fi \ No newline at end of file diff --git a/run_wiping.sh b/run_wiping.sh index a5dedaf..2ac24a3 100644 --- a/run_wiping.sh +++ b/run_wiping.sh @@ -1,45 +1,50 @@ #!/bin/bash -mode=$1 -cores=$(($2)) -sample_name=$3 - -# Optional -chunk_size=$(($4)) -if [ "$chunk_size" -eq "0" ]; then +if [ $# -eq 0 ]; then + mode="paired" + cores=4 + sample_name="sample" chunk_size=50000000 -fi - -# Optional -qin=$(($5)) -if [ "$qin" -eq "0" ]; then qin=33 -fi -# Enter the FastqWiper folder -#cd /fastqwiper || return + echo "Running with custom arguments: " "$@" +elif [ $# -ge 3 ] && [ $# -le 5 ]; then + mode=$1 + cores=$(($2)) + sample_name=$3 -if [ "$mode" == "paired" ] -then - if [ "$cores" -gt 1 ] - then - echo "Processing paired-end files in parallel" - snakemake --config sample_name=$sample_name chunk_size=$chunk_size qin=$qin -s ./pipeline/fix_wipe_pairs_reads_parallel.smk --use-conda --cores $cores - else - echo "Processing paired-end files sequentially" - snakemake --config sample_name=$sample_name qin=$qin -s ./pipeline/fix_wipe_pairs_reads_sequential.smk --use-conda --cores $cores + # Optional + chunk_size=$(($4)) + if [ "$chunk_size" -eq "0" ]; then + chunk_size=50000000 + fi + + # Optional + qin=$(($5)) + if [ "$qin" -eq "0" ]; then + qin=33 fi -elif [ "$mode" == "single" ] -then - if [ "$cores" -gt 1 ] - then - echo "Processing single-end file in parallel" - snakemake --config sample_name=$sample_name chunk_size=$chunk_size -s ./pipeline/fix_wipe_single_reads_parallel.smk --use-conda --cores $cores + + if [ "$mode" == "paired" ]; then + if [ "$cores" -gt 1 ]; then + echo "Processing paired-end files in parallel" + snakemake --config sample_name=$sample_name chunk_size=$chunk_size qin=$qin -s ./pipeline/fix_wipe_pairs_reads_parallel.smk --use-conda --cores $cores + else + echo "Processing paired-end files sequentially" + snakemake --config sample_name=$sample_name qin=$qin -s ./pipeline/fix_wipe_pairs_reads_sequential.smk --use-conda --cores $cores + fi + elif [ "$mode" == "single" ]; then + if [ "$cores" -gt 1 ]; then + echo "Processing single-end file in parallel" + snakemake --config sample_name=$sample_name chunk_size=$chunk_size -s ./pipeline/fix_wipe_single_reads_parallel.smk --use-conda --cores $cores + else + echo "Processing single-end file sequentially" + snakemake --config sample_name=$sample_name -s ./pipeline/fix_wipe_single_reads_sequential.smk --use-conda --cores $cores + fi else - echo "Processing single-end file sequentially" - snakemake --config sample_name=$sample_name -s ./pipeline/fix_wipe_single_reads_sequential.smk --use-conda --cores $cores + echo "Allowed computing modes are: 'paired' or 'single'" fi else - echo "Snakemake help" - snakemake --help + echo "You must provide three + 2 optional arguments [computing mode ('paired' or 'single'), # of cores (int), sample name (string), chunk size (optional, int), ASCII offset (optional, 33 or 64)]" + exit 1 fi