mirror of
https://github.com/MillironX/nf-core_modules.git
synced 2024-12-23 03:28:17 +00:00
9d0cad583b
* Add comment line for consistency * Remove all functions.nf * Remove include functions.nf and publishDir options * Replace options.args3 with task.ext.args3 - 3 modules * Replace options.args3 with task.ext.args3 - 17 modules * Replace {task.cpus} with task.cpus * Replace off on off off off off off off off on off on off on off off off on off off off on on off off off on on off off off off off off off on off off off off on off on on off off off on on on on off off off on off on on off on on off off on on on off on on off on off off off off on off off off on off off on off on off off off on on off on off on off off on off off off on off off off on off off off off on off off off on on on off on on off off on off on on on off on on off on on on off off off off off on on off off on off off off off off on off off on on off on on off on off off off on off off off off on on off on off off on off off on off on off off off off off off off off on on off on off off off.args with * Add def args = task.ext.args line to all modules in script section * Replace options.args with args and args_list * Initialise args2 and args3 properly * Replace container syntax * Revert container changes for cellranger/mkref * Replace getProcessName in all modules * Replace getSoftwareName in all modules * Unify modules using VERSION variable * Replae options.suffix with task.ext.suffix * Remove NF version restriction for CI * Bump NF version in README * Replace task.process.tokenize logic with task.process * Minor tweaks to unify syntax in tests main.nf * Add a separate nextflow.config for each module * Transfer remaining module options to nextflow.config * Remove addParams from tests main.nf * Remove TODO statements * Use -c to import module specific config * Bump NF version to 21.10.3 * Fix tests for artic/minion * Fix broken publishDir syntax * Standardise and fix obvious failing module tests * Remove kronatools to krona * Comment out tags in subworkflow test.yml * Fix failing module tests * Add consistent indentation to nextflow.config * Comment out subworklow definitions * Fix kallistobustools/ref * Fix rmarkdownnotebook * Fix jupyternotebook * Quote task.process * Add plink2/vcf to pytest_modules.yml * Remove NF_CORE_MODULES_TEST from pytest CI * Fix more tests * Move bacteroides_fragilis to prokaryotes folder * Fix cooler merge tests * Fix kallistobustools/count tests * Fix kallistobustools/ref tests * Update test_10x_1_fastq_gz file for kallistobustools/count tests * Fix bcftools/query tests * Fix delly/call tests * Fix cooler/zoomify tests * Fix csvtk/split tests * Fix gatk4/intervallisttools tests * Fix gatk4/variantfiltration * Fix pydamage/filter tests * Fix test data for unicycler * Fix gstama/collapse module * Fix leehom tests * Fix metaphlan3 tests * Fix pairtools/select tests * Update nextflow.config * Update nextflow.config * feat: update syntax * Fix arriba tests * Fix more failing tests * Update test syntax * Remove comments from tests nextflow.config * Apply suggestions from code review * Fix kallistobustools/count module * Update dumpsoftwareversions module * Update custom/dumpsoftwareversions * Add args2 to untar module * Update leftover modules * Remove last remaining addParams * Change syntax from task.ext.suffix to tast.ext.prefix * Change nextflow.config in all tests to use ext.prefix instead of ext.suffix Co-authored-by: JoseEspinosa <kadomu@gmail.com> Co-authored-by: Gregor Sturm <mail@gregor-sturm.de> Co-authored-by: MaxUlysse <max.u.garcia@gmail.com>
83 lines
3.2 KiB
Text
83 lines
3.2 KiB
Text
include { dump_params_yml; indent_code_block } from "./parametrize"
|
|
|
|
process JUPYTERNOTEBOOK {
|
|
tag "$meta.id"
|
|
label 'process_low'
|
|
|
|
//NB: You likely want to override this with a container containing all required
|
|
//dependencies for your analysis. The container at least needs to contain the
|
|
//ipykernel, jupytext, papermill and nbconvert Python packages.
|
|
conda (params.enable_conda ? "ipykernel=6.0.3 jupytext=1.11.4 nbconvert=6.1.0 papermill=2.3.3 matplotlib=3.4.2" : null)
|
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
|
'https://depot.galaxyproject.org/singularity/mulled-v2-514b1a5d280c7043110b2a8d0a87b57ba392a963%3A879972fc8bdc81ee92f2bce3b4805d89a772bf84-0' :
|
|
'quay.io/biocontainers/mulled-v2-514b1a5d280c7043110b2a8d0a87b57ba392a963:879972fc8bdc81ee92f2bce3b4805d89a772bf84-0' }"
|
|
|
|
input:
|
|
tuple val(meta), path(notebook)
|
|
val parameters
|
|
path input_files
|
|
|
|
output:
|
|
tuple val(meta), path("*.html"), emit: report
|
|
tuple val(meta), path("artifacts/"), emit: artifacts, optional: true
|
|
path "versions.yml" , emit: versions
|
|
|
|
script:
|
|
def args = task.ext.args ?: ''
|
|
def prefix = task.ext.prefix ?: "${meta.id}"
|
|
def parametrize = (task.ext.parametrize == null) ? true : task.ext.parametrize
|
|
def implicit_params = (task.ext.implicit_params == null) ? true : task.ext.implicit_params
|
|
def meta_params = (task.ext.meta_params == null) ? true : task.ext.meta_params
|
|
|
|
// Dump parameters to yaml file.
|
|
// Using a yaml file over using the CLI params because
|
|
// * no issue with escaping
|
|
// * allows to pass nested maps instead of just single values
|
|
def params_cmd = ""
|
|
def render_cmd = ""
|
|
if (parametrize) {
|
|
nb_params = [:]
|
|
if (implicit_params) {
|
|
nb_params["cpus"] = task.cpus
|
|
nb_params["artifact_dir"] = "artifacts"
|
|
nb_params["input_dir"] = "./"
|
|
}
|
|
if (meta_params) {
|
|
nb_params["meta"] = meta
|
|
}
|
|
nb_params += parameters
|
|
params_cmd = dump_params_yml(nb_params)
|
|
render_cmd = "papermill -f .params.yml"
|
|
} else {
|
|
render_cmd = "papermill"
|
|
}
|
|
|
|
"""
|
|
set -o pipefail
|
|
|
|
# Dump .params.yml heredoc (section will be empty if parametrization is disabled)
|
|
${indent_code_block(params_cmd, 4)}
|
|
|
|
# Create output directory
|
|
mkdir artifacts
|
|
|
|
# Set parallelism for BLAS/MKL etc. to avoid over-booking of resources
|
|
export MKL_NUM_THREADS="$task.cpus"
|
|
export OPENBLAS_NUM_THREADS="$task.cpus"
|
|
export OMP_NUM_THREADS="$task.cpus"
|
|
export NUMBA_NUM_THREADS="$task.cpus"
|
|
|
|
# Convert notebook to ipynb using jupytext, execute using papermill, convert using nbconvert
|
|
jupytext --to notebook --output - --set-kernel - ${notebook} \\
|
|
| ${render_cmd} \\
|
|
| jupyter nbconvert --stdin --to html --output ${prefix}.html
|
|
|
|
cat <<-END_VERSIONS > versions.yml
|
|
"${task.process}":
|
|
jupytext: \$(jupytext --version)
|
|
ipykernel: \$(python -c "import ipykernel; print(ipykernel.__version__)")
|
|
nbconvert: \$(jupyter nbconvert --version)
|
|
papermill: \$(papermill --version | cut -f1 -d' ')
|
|
END_VERSIONS
|
|
"""
|
|
}
|