Skip to content

Commit

Permalink
Merge pull request nf-core#25 from caravagnalab/dev
Browse files Browse the repository at this point in the history
Docker and script templates
  • Loading branch information
nicola-calonaci authored Jan 30, 2025
2 parents b74cc13 + 21c6732 commit 7a5b5df
Show file tree
Hide file tree
Showing 34 changed files with 1,103 additions and 1,202 deletions.
4 changes: 4 additions & 0 deletions .nf-core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,7 @@ template:
org: nf-core
outdir: .
version: 1.0dev
lint:
modules_config: False
files_exist:
- conf/modules.config
34 changes: 0 additions & 34 deletions conf/modules.config

This file was deleted.

6 changes: 3 additions & 3 deletions conf/test.config
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ params {

sparsesignatures_K = "2:3"
sparsesignatures_nmf_runs = "3"
sparsesignatures_iterations = "10"
sparsesignatures_iterations = "5"
sparsesignatures_max_iterations_lasso = "80"
sparsesignatures_cross_validation_repetitions = "8"
sparsesignatures_cross_validation_iterations = "5"
sparsesignatures_cross_validation_repetitions = "5"
sparsesignatures_cross_validation_iterations = "3"
sparsesignatures_lambda_values_alpha = "c(0.00, 0.01)"
sparsesignatures_lambda_values_beta = "c(0.01, 0.05)"

Expand Down
10 changes: 0 additions & 10 deletions modules.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,6 @@
"installed_by": ["modules", "vcf_annotate_ensemblvep"],
"patch": "modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff"
},
"fastqc": {
"branch": "master",
"git_sha": "08108058ea36a63f141c25c4e75f9f872a5b2296",
"installed_by": ["modules"]
},
"multiqc": {
"branch": "master",
"git_sha": "f0719ae309075ae4a291533883847c3f7c441dad",
"installed_by": ["modules"]
},
"tabix/tabix": {
"branch": "master",
"git_sha": "9502adb23c0b97ed8e616bbbdfa73b4585aec9a1",
Expand Down
5 changes: 3 additions & 2 deletions modules/local/CNAqc/main.nf
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
process CNAQC {
tag "$meta.id"
label "process_low"
container = 'docker://lvaleriani/cnaqc:version1.0'
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'docker://lvaleriani/cnaqc:version1.0' :
'docker.io/lvaleriani/cnaqc:version1.0' }"

input:
tuple val(meta), path(cna_rds), path(snv_rds)
Expand All @@ -13,7 +15,6 @@ process CNAQC {
tuple val(meta), path("*_qc.pdf"), emit: plot_pdf_qc
path "versions.yml", emit: versions


script:
def args = task.ext.args
def prefix = task.ext.prefix ?: "${meta.id}"
Expand Down
45 changes: 4 additions & 41 deletions modules/local/CNAqc2tsv/main.nf
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
//
// Mutations extraction from mCNAqc
//

process RDS_PROCESSING {
tag "$meta.id"
label "process_single"
container = 'docker://lvaleriani/cnaqc:version1.0'
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'docker://lvaleriani/cnaqc:version1.0' :
'docker.io/lvaleriani/cnaqc:version1.0' }"

input:
tuple val(meta), path(rds_join), val(tumour_samples)
Expand All @@ -14,41 +12,6 @@ process RDS_PROCESSING {
tuple val(meta), path("*_joint_table.tsv"), val(tumour_samples), emit: tsv
path "versions.yml", emit: versions


script:
def args = task.ext.args ?: ''
def prefix = task.ext.prefix ?: "${meta.id}"

"""
#!/usr/bin/env Rscript
library(dplyr)
library(CNAqc)
source("$moduleDir/utils.R")
multi_cnaqc = readRDS(file = "$rds_join")
mutations_multisample <- get_sample(m_cnaqc_obj = multi_cnaqc,sample = get_sample_name(multi_cnaqc),
which_obj = "original")
multisample_jointTable <- list()
for (s in get_sample_name(multi_cnaqc)){
purity <- mutations_multisample[[s]][["purity"]]
multisample_jointTable[[s]] <- mutations_multisample[[s]][["mutations"]] %>%
dplyr::mutate(purity=purity)
}
joint_table <- bind_rows(multisample_jointTable)
write.table(joint_table, file = paste0("$prefix","_joint_table.tsv"), append = F, quote = F, sep = "\t", row.names = FALSE)
# version export
f <- file("versions.yml","w")
dplyr_version <- sessionInfo()\$otherPkgs\$dplyr\$Version
cnaqc_version <- sessionInfo()\$otherPkgs\$CNAqc\$Version
writeLines(paste0('"', "$task.process", '"', ":"), f)
writeLines(paste(" dplyr:", dplyr_version), f)
writeLines(paste(" CNAqc:", cnaqc_version), f)
close(f)
"""
template "main_script.R"
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
## This source file is temporary, only needed in
## absence of the updated CNAqc package
#!/usr/bin/env Rscript

get_sample <- function(m_cnaqc_obj,
sample,
which_obj) {
opt = list(
prefix = ifelse('$task.ext.prefix' == 'null', '$meta.id', '$task.ext.prefix')
)

# Auxiliary functions #####

get_sample = function(m_cnaqc_obj, sample, which_obj) {
if (class(m_cnaqc_obj) != "m_cnaqc") {
wrong_class_all = class(m_cnaqc_obj)

Expand All @@ -13,72 +16,79 @@ get_sample <- function(m_cnaqc_obj,
)
}

consented_obj <- c("shared", "original")

consented_obj = c("shared", "original")
if ((which_obj %in% consented_obj) == FALSE) {

cli::cli_abort("{.var which_obj} must be one of {.val shared} or {.val original}")

}

# define the element names

if (which_obj == "original") {

type = "original_cnaqc_objc"

# check if the original cnaqc obj exist

check_or = any(names(m_cnaqc_obj) == type)

if (check_or == FALSE) {
cli::cli_abort(c("mCNAqc object was build without keeping original CNAqc objects"),
"x" = "It is not possible to retrieve the required samples")
} else {

cli::cli_h1("Retrieving original {.cls CNAqc} objects")
cnaqc_samples = m_cnaqc_obj[[type]][sample]

}

} else {

type = "cnaqc_obj_new_segmentation"

cli::cli_h1("Retrieving {.cls CNAqc} objects with the new segmentation")

cnaqc_samples = m_cnaqc_obj[[type]][sample]
}

return(cnaqc_samples)
}

get_sample_name <- function(x) {

get_sample_name = function(x) {
if (class(x) == "m_cnaqc") {

lapply(x$cnaqc_obj_new_segmentation, function(y) {

y$sample

lapply(x[["cnaqc_obj_new_segmentation"]], function(y) {
y[["sample"]]
}) %>% unlist() %>% unname()

} else if (class(x) == "cnaqc") {

x$sample

x[["sample"]]
} else {

wrong_class_all = class(x)

cli::cli_abort(
c("must provide a {.field m_cnaqc} object",
"x" = "{.var x} is a {.cls {class(x)}}")
)
}
}

get_mCNAqc_stats <- function(m_cnaqc_obj){
get_mCNAqc_stats = function(m_cnaqc_obj){
stats = m_cnaqc_obj[["m_cnaqc_stats"]]
return(stats)
}

# Script ####

library(dplyr)
library(CNAqc)

multi_cnaqc = readRDS(file = "$rds_join")
mutations_multisample = get_sample(m_cnaqc_obj = multi_cnaqc,sample = get_sample_name(multi_cnaqc),
which_obj = "original")
multisample_jointTable = list()

for (s in get_sample_name(multi_cnaqc)){
purity = mutations_multisample[[s]][["purity"]]
multisample_jointTable[[s]] = mutations_multisample[[s]][["mutations"]] %>%
dplyr::mutate(purity=purity)
}

joint_table = bind_rows(multisample_jointTable)

write.table(joint_table, file = paste0(opt[["prefix"]], "_joint_table.tsv"), append = F, quote = F, sep = "\t", row.names = FALSE)

# version export
f = file("versions.yml","w")
dplyr_version = sessionInfo()\$otherPkgs\$dplyr\$Version
cnaqc_version = sessionInfo()\$otherPkgs\$CNAqc\$Version
writeLines(paste0('"', "$task.process", '"', ":"), f)
writeLines(paste(" dplyr:", dplyr_version), f)
writeLines(paste(" CNAqc:", cnaqc_version), f)
close(f)

7 changes: 3 additions & 4 deletions modules/local/SigProfiler/SigProfiler/main.nf
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
process SIGPROFILER {
tag "$meta.id"
label "process_high"
container = 'docker://katiad/sigprofiler:version1.0'
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'docker://katiad/sigprofiler:version1.0' :
'docker.io/katiad/sigprofiler:version1.0' }"

input:
tuple val(meta), path(tsv_list, stageAs: '*.tsv')
Expand Down Expand Up @@ -61,7 +63,6 @@ process SIGPROFILER {
from SigProfilerExtractor import sigpro as sig
from SigProfilerMatrixGenerator.scripts import SigProfilerMatrixGeneratorFunc as matGen
if __name__ == '__main__':
dataset_id = "$meta.dataset"
Expand All @@ -72,9 +73,7 @@ process SIGPROFILER {
output_path = os.path.join("output", "SBS", f"{dataset_id}.SBS96.all")
# input data preprocessing
def process_tsv_join(tsv_list):
patients_tsv = tsv_list.split()
# Read each file into a pandas DataFrame and ensure all columns are of type 'string'
Expand Down
5 changes: 3 additions & 2 deletions modules/local/SigProfiler/download/main.nf
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
process DOWNLOAD_GENOME_SIGPROFILER {
label "process_single"
container = 'docker://katiad/sigprofiler:version1.0'
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'docker://katiad/sigprofiler:version1.0' :
'docker.io/katiad/sigprofiler:version1.0' }"

input:
val(reference_genome) // reference_genome : genome -> for example: GRCh37
Expand All @@ -9,7 +11,6 @@ process DOWNLOAD_GENOME_SIGPROFILER {
path("*"), emit: genome_sigprofiler
path "versions.yml", emit: versions


script:
"""
SigProfilerMatrixGenerator install $reference_genome -v .
Expand Down
Loading

0 comments on commit 7a5b5df

Please sign in to comment.