From a17201c9c7cfa34fb8fe44121a6c69a567f1dc9c Mon Sep 17 00:00:00 2001 From: samarth8392 Date: Tue, 10 Feb 2026 12:32:39 -0500 Subject: [PATCH 01/11] fix: remove gs10 data partition; add LOGAN resources --- conf/biowulf.config | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/biowulf.config b/conf/biowulf.config index 2d501f8..8d423fc 100644 --- a/conf/biowulf.config +++ b/conf/biowulf.config @@ -22,6 +22,7 @@ singularity { autoMounts = true cacheDir = "/data/CCBR_Pipeliner/SIFS" envWhitelist = 'https_proxy,http_proxy,ftp_proxy,DISPLAY,SLURM_JOBID,SINGULARITY_BINDPATH' + runOptions = '-B /data/CCBR_Pipeliner/Pipelines/LOGAN/resources/hg38/AnnotSV:/annotsv_db' } env.SINGULARITY_CACHEDIR = "/data/CCBR_Pipeliner/SIFS" From 1a6fc54b57f4fc2ba9ff9edfe6adb4e0dd62f7e5 Mon Sep 17 00:00:00 2001 From: samarth8392 Date: Tue, 10 Feb 2026 12:33:05 -0500 Subject: [PATCH 02/11] gix: remove gs10 data partition from ci-stub --- conf/ci_stub.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/ci_stub.config b/conf/ci_stub.config index 90f9d7c..6d16a2f 100644 --- a/conf/ci_stub.config +++ b/conf/ci_stub.config @@ -17,7 +17,7 @@ singularity { autoMounts = true cacheDir = "/data/CCBR_Pipeliner/SIFS" envWhitelist = 'https_proxy,http_proxy,ftp_proxy,DISPLAY,SLURM_JOBID,SINGULARITY_BINDPATH' - runOptions = '-B /gs10,/gs11,/gs12,/spin1,/data/CCBR_Pipeliner/,/vf/users,/gpfs,/fdb' + runOptions = '-B /data/CCBR_Pipeliner/,/vf/users,/gpfs,/fdb' } env.SINGULARITY_CACHEDIR = "/data/CCBR_Pipeliner/SIFS" From 6079c051f4a63c03553989b3d9139629141f359e Mon Sep 17 00:00:00 2001 From: samarth8392 Date: Tue, 10 Feb 2026 12:33:38 -0500 Subject: [PATCH 03/11] fix: add AnnotSV db to genome config --- conf/genomes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/conf/genomes.config b/conf/genomes.config index 94e2ef6..07660c1 100644 --- a/conf/genomes.config +++ b/conf/genomes.config @@ -26,6 +26,7 @@ params { vepspecies = "homo_sapiens" vepbuild = "GRCh38" annotsvgenome = "GRCh38" + annotsvdb = "/data/CCBR_Pipeliner/Pipelines/LOGAN/resources/hg38/AnnotSV" octopus_sforest= "--somatic-forest /data/CCBR_Pipeliner/Pipelines/LOGAN/resources/hg38/octopus/somatic.v0.7.4.forest" octopus_gforest= "--forest /data/CCBR_Pipeliner/Pipelines/LOGAN/resources/hg38/octopus/germline.v0.7.4.forest" SEQUENZAGC = "/data/CCBR_Pipeliner/Pipelines/XAVIER/resources/hg38/SEQUENZA/hg38.gc200Base.wig.gz" @@ -185,6 +186,7 @@ params { vepspecies = "homo_sapiens" vepbuild = "GRCh38" annotsvgenome = "GRCh38" + annotsvdb = "/data/CCBR_Pipeliner/Pipelines/LOGAN/resources/hg38/AnnotSV" octopus_sforest= "--somatic-forest /data/CCBR_Pipeliner/Pipelines/LOGAN/resources/hg38/octopus/somatic.v0.7.4.forest" octopus_gforest= "--forest /data/CCBR_Pipeliner/Pipelines/LOGAN/resources/hg38/octopus/germline.v0.7.4.forest" SEQUENZAGC = "/data/CCBR_Pipeliner/Pipelines/XAVIER/resources/hg38/SEQUENZA/hg38.gc200Base.wig.gz" @@ -240,6 +242,7 @@ params { vepspecies = "homo_sapiens" vepbuild = "GRCh38" annotsvgenome = "GRCh38" + annotsvdb = "/data/CCBR_Pipeliner/Pipelines/LOGAN/resources/hg38/AnnotSV" octopus_sforest= "--somatic-forest /data/CCBR_Pipeliner/Pipelines/LOGAN/resources/hg38/octopus/somatic.v0.7.4.forest" octopus_gforest= "--forest /data/CCBR_Pipeliner/Pipelines/LOGAN/resources/hg38/octopus/germline.v0.7.4.forest" SEQUENZAGC = "/data/CCBR_Pipeliner/Pipelines/XAVIER/resources/hg38/SEQUENZA/hg38.gc200Base.wig.gz" From 3112b229abea046be78439a07ab2a6df942f1031 Mon Sep 17 00:00:00 2001 From: samarth8392 Date: Tue, 10 Feb 2026 12:36:47 -0500 Subject: [PATCH 04/11] fix: added annotdb path to AnnotSV; fix gunzip process --- modules/local/annotsv.nf | 62 +++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/modules/local/annotsv.nf b/modules/local/annotsv.nf index e83aeb4..4cbb352 100644 --- a/modules/local/annotsv.nf +++ b/modules/local/annotsv.nf @@ -1,12 +1,10 @@ GENOMEREF=file(params.genomes[params.genome].genome) -ANNOTSVGENOME=params.genomes[params.genome].annotsvgenome - process annotsv_tn { - //AnnotSV for Manta/Svaba/GRIDSS works with either vcf.gz or .vcf files - //Requires bedtools,bcftools + //AnnotSV for Manta/Svaba/GRIDSS works with either vcf.gz or .vcf files + //Requires bedtools,bcftools errorStrategy = 'ignore' - container = "${params.containers.annotcnvsv}" + container "${params.containers.annotcnvsv}" input: tuple val(tumorname), path(somaticvcf), val(sv) @@ -16,36 +14,35 @@ process annotsv_tn { path("${sv}/${tumorname}.tsv"), path("${sv}/${tumorname}.unannotated.tsv") - script: + def annotsvGenome = params.genomes[params.genome].annotsvgenome """ mkdir ${sv} AnnotSV -SVinputFile ${somaticvcf} \ - -genomeBuild $ANNOTSVGENOME \ + -genomeBuild ${annotsvGenome} \ + -annotationsDir /annotsv_db \ -SVinputInfo 1 -outputFile ${tumorname} \ -outputDir ${sv} + # Create empty files if AnnotSV didn't produce output (empty VCF) + touch ${sv}/${tumorname}.tsv + touch ${sv}/${tumorname}.unannotated.tsv """ stub: """ mkdir ${sv} - touch "${sv}/${tumorname}.tsv" touch "${sv}/${tumorname}.unannotated.tsv" """ } - - - process gunzip { label 'process_single' input: - tuple val(tumorname), - path(vcf), val(sv) + tuple val(tumorname), path(vcf), val(sv) output: tuple val(tumorname), @@ -53,54 +50,46 @@ process gunzip { script: """ - gunzip -f ${vcf} > ${tumorname}.tumorSV_${sv}.vcf + gunzip -c ${vcf} > ${tumorname}.tumorSV_${sv}.vcf """ stub: - """ touch ${tumorname}.tumorSV_${sv}.vcf """ - } - process survivor_sv { - container = "${params.containers.annotcnvsv}" + container "${params.containers.annotcnvsv}" input: - tuple val(tumorname), - path(vcfs), val(svs) + tuple val(tumorname), path(vcfs), val(svs) output: tuple val(tumorname), path("${tumorname}_merged.vcf"), val("survivor") - script: - strin = vcfs.join("\\n") - + def strin = vcfs.join("\\n") """ - echo -e '$strin' > filelistin + echo -e '${strin}' > filelistin SURVIVOR merge filelistin 1000 2 1 1 1 30 ${tumorname}_merged.vcf """ stub: - strin = vcfs.join("\\n") + def strin = vcfs.join("\\n") """ - echo -e '$strin' > filelistin + echo -e '${strin}' > filelistin touch "${tumorname}_merged.vcf" """ } - process annotsv_tonly { - //AnnotSV for Manta/Svaba works with either vcf.gz or .vcf files - //Requires bedtools,bcftools + //AnnotSV for Manta/Svaba works with either vcf.gz or .vcf files + //Requires bedtools,bcftools errorStrategy = 'ignore' - - container = "${params.containers.annotcnvsv}" + container "${params.containers.annotcnvsv}" input: tuple val(tumorname), path(somaticvcf), val(sv) @@ -110,23 +99,26 @@ process annotsv_tonly { path("${sv}/${tumorname}.tsv"), path("${sv}/${tumorname}.unannotated.tsv") - script: + def annotsvGenome = params.genomes[params.genome].annotsvgenome """ mkdir ${sv} AnnotSV -SVinputFile ${somaticvcf} \ - -genomeBuild $ANNOTSVGENOME \ + -genomeBuild ${annotsvGenome} \ + -annotationsDir /annotsv_db \ -SVinputInfo 1 -outputFile ${tumorname} \ -outputDir ${sv} + # Create empty files if AnnotSV didn't produce output (empty VCF) + touch ${sv}/${tumorname}.tsv + touch ${sv}/${tumorname}.unannotated.tsv """ stub: """ mkdir ${sv} - touch "${sv}/${tumorname}.tsv" touch "${sv}/${tumorname}.unannotated.tsv" """ -} +} \ No newline at end of file From efe36ba454d7d67f2fbda547def2a886e1814491 Mon Sep 17 00:00:00 2001 From: samarth8392 Date: Tue, 10 Feb 2026 12:37:21 -0500 Subject: [PATCH 05/11] fix: container syntax in modules --- modules/local/ascat.nf | 4 ++-- modules/local/bcftools_stats.nf | 2 +- modules/local/bwamem/bwamem2.nf | 8 ++++---- modules/local/cnvkit.nf | 8 ++++---- modules/local/deepsomatic.nf | 12 +++++------ modules/local/deepvariant.nf | 10 ++++----- modules/local/fastp/fastp.nf | 6 +++--- modules/local/fastq_screen.nf | 2 +- modules/local/fastqc.nf | 2 +- modules/local/fc_lane.nf | 2 +- modules/local/ffpe.nf | 8 ++++---- modules/local/freec.nf | 6 +++--- modules/local/gatk_varianteval.nf | 4 ++-- modules/local/gridss.nf | 8 ++++---- modules/local/kraken.nf | 2 +- modules/local/manta.nf | 4 ++-- modules/local/mosdepth.nf | 4 ++-- modules/local/multiqc.nf | 2 +- modules/local/purple.nf | 16 +++++++-------- modules/local/qc.nf | 32 ++++++++++++++--------------- modules/local/qualimap.nf | 2 +- modules/local/samtools_flagstats.nf | 2 +- modules/local/sequenza.nf | 10 ++++----- modules/local/snpeff.nf | 2 +- modules/local/somalier.nf | 6 +++--- modules/local/svaba.nf | 4 ++-- modules/local/trim_align.nf | 14 ++++++------- modules/local/vcftools.nf | 2 +- 28 files changed, 92 insertions(+), 92 deletions(-) diff --git a/modules/local/ascat.nf b/modules/local/ascat.nf index c37aae5..9ecba85 100644 --- a/modules/local/ascat.nf +++ b/modules/local/ascat.nf @@ -7,7 +7,7 @@ if (params.genome.matches("hg38(.*)")){ process ascat_tn { - container = "${params.containers.cnv}" + container "${params.containers.cnv}" label 'process_medium' input: @@ -57,7 +57,7 @@ process ascat_tn { process ascat_tn_exome { - container = "${params.containers.cnv}" + container "${params.containers.cnv}" label 'process_medium' input: diff --git a/modules/local/bcftools_stats.nf b/modules/local/bcftools_stats.nf index cadd490..f235b0d 100644 --- a/modules/local/bcftools_stats.nf +++ b/modules/local/bcftools_stats.nf @@ -12,7 +12,7 @@ process bcftools_stats { @Output: Text file containing a collection of summary statistics */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: diff --git a/modules/local/bwamem/bwamem2.nf b/modules/local/bwamem/bwamem2.nf index e9e94c8..d30ddae 100644 --- a/modules/local/bwamem/bwamem2.nf +++ b/modules/local/bwamem/bwamem2.nf @@ -1,8 +1,8 @@ GENOMEREF = file(params.genomes[params.genome].genome) process bwamem2 { - container = "${params.containers.logan}" - tag { name } + container "${params.containers.logan}" + tag { samplename } errorStrategy { task.exitStatus in [137,140,143] ? 'retry' : 'terminate' } maxRetries 2 @@ -53,7 +53,7 @@ process bwamem2 { process BWAMEM2_SPLIT { - container = "${params.containers.logan}" + container "${params.containers.logan}" tag { name } errorStrategy { task.exitStatus in [137,140,143] ? 'retry' : 'terminate' } maxRetries 2 @@ -105,7 +105,7 @@ process BWAMEM2_SPLIT { process COMBINE_ALIGNMENTS { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: diff --git a/modules/local/cnvkit.nf b/modules/local/cnvkit.nf index 28856b9..7d969ec 100644 --- a/modules/local/cnvkit.nf +++ b/modules/local/cnvkit.nf @@ -7,7 +7,7 @@ REFFLAT = file(params.genomes[params.genome].REFFLAT) ACCESS = file(params.genomes[params.genome].ACCESS) process cnvkit { - container = "${params.containers.cnv}" + container "${params.containers.cnv}" label 'process_medium' input: @@ -40,7 +40,7 @@ process cnvkit { } process cnvkit_exome { - container = "${params.containers.cnv}" + container "${params.containers.cnv}" label 'process_medium' input: @@ -74,7 +74,7 @@ process cnvkit_exome { process cnvkit_tonly { - container = "${params.containers.cnv}" + container "${params.containers.cnv}" label 'process_medium' input: @@ -104,7 +104,7 @@ process cnvkit_tonly { } process cnvkit_exome_tonly { - container = "${params.containers.cnv}" + container "${params.containers.cnv}" label 'process_medium' input: diff --git a/modules/local/deepsomatic.nf b/modules/local/deepsomatic.nf index 2f42190..2fd0d3f 100644 --- a/modules/local/deepsomatic.nf +++ b/modules/local/deepsomatic.nf @@ -11,7 +11,7 @@ if(params.exome && params.ffpe) { } process deepsomatic_tn_step1 { - container = "${params.containers.deepsomatic}" + container "${params.containers.deepsomatic}" label 'process_somaticcaller' errorStrategy { task.exitStatus == 1 ? 'ignore' : 'terminate' } @@ -52,7 +52,7 @@ process deepsomatic_tn_step1 { process deepsomatic_tonly_step1 { - container = "${params.containers.deepsomatic}" + container "${params.containers.deepsomatic}" label 'process_somaticcaller' errorStrategy { task.exitStatus == 1 ? 'ignore' : 'terminate' } @@ -91,7 +91,7 @@ process deepsomatic_tonly_step1 { //Step 2 can run in CPU or GPU mode for now use only CPUs process deepsomatic_step2 { - container = "${params.containers.deepsomatic}" + container "${params.containers.deepsomatic}" label 'process_somaticcaller' errorStrategy { task.exitStatus == 1 ? 'ignore' : 'terminate' } @@ -123,7 +123,7 @@ process deepsomatic_step2 { } process deepsomatic_tonly_step2 { - container = "${params.containers.deepsomatic}" + container "${params.containers.deepsomatic}" label 'process_somaticcaller' errorStrategy { task.exitStatus == 1 ? 'ignore' : 'terminate' } @@ -157,7 +157,7 @@ process deepsomatic_tonly_step2 { //Step 3 DV process deepsomatic_step3 { - container = "${params.containers.deepsomatic}" + container "${params.containers.deepsomatic}" label 'process_somaticcaller' errorStrategy { task.exitStatus == 1 ? 'ignore' : 'terminate' } @@ -188,7 +188,7 @@ process deepsomatic_step3 { process bcfconcat { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_low' input: diff --git a/modules/local/deepvariant.nf b/modules/local/deepvariant.nf index f4d7a5e..6171cef 100644 --- a/modules/local/deepvariant.nf +++ b/modules/local/deepvariant.nf @@ -12,7 +12,7 @@ any form of indel realignment, //Deep Variant process deepvariant_step1 { - container = "${params.containers.deepvariant}" + container "${params.containers.deepvariant}" label 'process_somaticcaller' input: @@ -46,7 +46,7 @@ process deepvariant_step1 { //Step 2 requires GPU process deepvariant_step2 { - container = "${params.containers.deepvariant}" + container "${params.containers.deepvariant}" //clusterOptions '--gres=lscratch:100,gpu:p100:1 --partition=gpu' label 'process_somaticcaller' @@ -79,7 +79,7 @@ process deepvariant_step2 { //Step 3 DV process deepvariant_step3 { - container = "${params.containers.deepvariant}" + container "${params.containers.deepvariant}" label 'process_somaticcaller' input: @@ -113,7 +113,7 @@ process deepvariant_step3 { process bcfconcat { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_low' input: @@ -138,7 +138,7 @@ process bcfconcat { process glnexus { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: diff --git a/modules/local/fastp/fastp.nf b/modules/local/fastp/fastp.nf index 7c90d00..05625ba 100644 --- a/modules/local/fastp/fastp.nf +++ b/modules/local/fastp/fastp.nf @@ -1,7 +1,7 @@ process fastp { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' - tag { name } + tag { samplename } input: tuple val(samplename), path(fqs) @@ -36,7 +36,7 @@ process fastp { } process fastp_split { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' tag { name } diff --git a/modules/local/fastq_screen.nf b/modules/local/fastq_screen.nf index 4f0da18..faf429e 100644 --- a/modules/local/fastq_screen.nf +++ b/modules/local/fastq_screen.nf @@ -2,7 +2,7 @@ FASTQ_SCREEN_CONF=file(params.fastq_screen_conf) process fastq_screen { //Uses Trimmed Files - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_medium' input: diff --git a/modules/local/fastqc.nf b/modules/local/fastqc.nf index 8b88026..9427ab1 100644 --- a/modules/local/fastqc.nf +++ b/modules/local/fastqc.nf @@ -9,7 +9,7 @@ process fastqc { @Output: FastQC report and zip file containing sequencing quality information """ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_medium' input: diff --git a/modules/local/fc_lane.nf b/modules/local/fc_lane.nf index d5adff5..cb58ab2 100644 --- a/modules/local/fc_lane.nf +++ b/modules/local/fc_lane.nf @@ -1,5 +1,5 @@ process fc_lane { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_low' input: diff --git a/modules/local/ffpe.nf b/modules/local/ffpe.nf index ff6ac78..7293f4d 100644 --- a/modules/local/ffpe.nf +++ b/modules/local/ffpe.nf @@ -1,6 +1,6 @@ process sobdetect_pass1 { - container = "${params.containers.ffpe}" + container "${params.containers.ffpe}" label 'process_medium' input: @@ -44,7 +44,7 @@ process sobdetect_pass1 { // Cohort parameter calculation process sobdetect_cohort_params { - container = "${params.containers.ffpe}" + container "${params.containers.ffpe}" label 'process_medium' input: @@ -72,7 +72,7 @@ process sobdetect_cohort_params { } process sobdetect_pass2 { - container = "${params.containers.ffpe}" + container "${params.containers.ffpe}" label 'process_medium' input: @@ -128,7 +128,7 @@ process sobdetect_pass2 { // Metrics calculation process sobdetect_metrics { - container = "${params.containers.ffpe}" + container "${params.containers.ffpe}" label 'process_medium' input: diff --git a/modules/local/freec.nf b/modules/local/freec.nf index 93b56c3..b36c9d0 100644 --- a/modules/local/freec.nf +++ b/modules/local/freec.nf @@ -26,7 +26,7 @@ FREECPLOT = params.freec_plot process freec_paired { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_long' errorStrategy 'ignore' @@ -95,7 +95,7 @@ process freec_paired { process freec_paired_exome { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_long' errorStrategy 'ignore' @@ -163,7 +163,7 @@ process freec_paired_exome { process freec { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' errorStrategy 'ignore' diff --git a/modules/local/gatk_varianteval.nf b/modules/local/gatk_varianteval.nf index be84526..8243be0 100644 --- a/modules/local/gatk_varianteval.nf +++ b/modules/local/gatk_varianteval.nf @@ -15,7 +15,7 @@ process gatk_varianteval { @Output: Evaluation table containing a collection of summary statistics */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: @@ -50,7 +50,7 @@ process collectvariantcallmetrics { @Output: Text file containing a collection of metrics relating to snps and indels */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: diff --git a/modules/local/gridss.nf b/modules/local/gridss.nf index 44a24b0..3a94d74 100644 --- a/modules/local/gridss.nf +++ b/modules/local/gridss.nf @@ -13,7 +13,7 @@ if (params.genome.matches("hg38(.*)")| params.genome.matches("hg19(.*)")){ process gridss_somatic { - container = "${params.containers.sv}" + container "${params.containers.sv}" input: tuple val(tumorname), path(tumor), path(tumorbai), @@ -32,7 +32,7 @@ process gridss_somatic { script: """ gridss --jar /opt2/gridss/gridss-2.13.2-gridss-jar-with-dependencies.jar \ - -r $BWAGENOME \ + -r $GENOMEREF \ -l ${normalname},${tumorname} \ -o ${tumorname}_vs_${normalname}.vcf.gz -b $BLACKLIST \ --picardoptions VALIDATION_STRINGENCY=LENIENT \ @@ -75,7 +75,7 @@ process gridss_somatic { process gridss_tonly { - container = "${params.containers.sv}" + container "${params.containers.sv}" input: tuple val(tumorname), path(tumor), path(tumorbai) @@ -90,7 +90,7 @@ process gridss_tonly { script: """ gridss --jar /opt2/gridss/gridss-2.13.2-gridss-jar-with-dependencies.jar \ - -r $BWAGENOME \ + -r $GENOMEREF \ -l ${tumorname} \ -o ${tumorname}.vcf.gz -b $BLACKLIST \ --picardoptions VALIDATION_STRINGENCY=LENIENT \ diff --git a/modules/local/kraken.nf b/modules/local/kraken.nf index 752475f..e42fe34 100644 --- a/modules/local/kraken.nf +++ b/modules/local/kraken.nf @@ -11,7 +11,7 @@ process kraken { @Output: Kraken logfile and interactive krona report */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_high' input: diff --git a/modules/local/manta.nf b/modules/local/manta.nf index 3de341a..ead15a3 100644 --- a/modules/local/manta.nf +++ b/modules/local/manta.nf @@ -1,7 +1,7 @@ GENOMEREF=file(params.genomes[params.genome].genome) process manta_somatic { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_high' input: @@ -53,7 +53,7 @@ process manta_somatic { process manta_tonly { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_high' input: diff --git a/modules/local/mosdepth.nf b/modules/local/mosdepth.nf index 8c08335..759952f 100644 --- a/modules/local/mosdepth.nf +++ b/modules/local/mosdepth.nf @@ -13,7 +13,7 @@ process mosdepth { `{prefix}.quantized.bed.gz` (if --quantize is specified) `{prefix}.thresholds.bed.gz` (if --thresholds is specified) */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_medium' input: @@ -42,7 +42,7 @@ process mosdepth { process mosdepth_exome { - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_medium' input: diff --git a/modules/local/multiqc.nf b/modules/local/multiqc.nf index b6404ef..98e1a09 100644 --- a/modules/local/multiqc.nf +++ b/modules/local/multiqc.nf @@ -11,7 +11,7 @@ process multiqc { @Output: Interactive MulitQC report and a QC metadata table """ - container = "${params.containers.multiqc}" + container "${params.containers.multiqc}" label 'process_low' input: diff --git a/modules/local/purple.nf b/modules/local/purple.nf index c89dc39..c51b308 100644 --- a/modules/local/purple.nf +++ b/modules/local/purple.nf @@ -15,7 +15,7 @@ GERMLINEHOTSPOTS = file(params.genomes[params.genome].GERMLINEHOTSPOTS) process amber_tonly { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' errorStrategy 'ignore' @@ -49,7 +49,7 @@ process amber_tonly { } process amber_tn { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' errorStrategy 'ignore' @@ -84,7 +84,7 @@ process amber_tn { } process cobalt_tonly { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' errorStrategy 'ignore' @@ -116,7 +116,7 @@ process cobalt_tonly { } process cobalt_tn { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' errorStrategy 'ignore' @@ -150,7 +150,7 @@ process cobalt_tn { process purple { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' errorStrategy 'ignore' @@ -192,7 +192,7 @@ process purple { process purple_novc { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' errorStrategy 'ignore' @@ -232,7 +232,7 @@ process purple_novc { process purple_tonly { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' errorStrategy 'ignore' @@ -273,7 +273,7 @@ process purple_tonly { process purple_tonly_novc { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' errorStrategy 'ignore' diff --git a/modules/local/qc.nf b/modules/local/qc.nf index 4b6f5fb..9f68850 100644 --- a/modules/local/qc.nf +++ b/modules/local/qc.nf @@ -18,7 +18,7 @@ SCRIPT_PATH_PCA = file(params.script_ancestry) //OUTPUT DIRECTORY process fc_lane { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_low' input: @@ -46,7 +46,7 @@ process fc_lane { process fastq_screen { //Uses Trimmed Files - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_medium' input: @@ -94,7 +94,7 @@ process kraken { @Output: Kraken logfile and interactive krona report */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_high' input: @@ -146,7 +146,7 @@ process fastqc { @Output: FastQC report and zip file containing sequencing quality information """ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_medium' input: @@ -183,7 +183,7 @@ process qualimap_bamqc { @Output: Report containing post-aligment quality-control metrics */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_medium' input: @@ -226,7 +226,7 @@ process samtools_flagstats { @Output: Text file containing alignment statistics */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: @@ -261,7 +261,7 @@ process mosdepth { `{prefix}.quantized.bed.gz` (if --quantize is specified) `{prefix}.thresholds.bed.gz` (if --thresholds is specified) */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_medium' input: @@ -300,7 +300,7 @@ process vcftools { @Output: Text file containing a measure of heterozygosity */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: @@ -332,7 +332,7 @@ process collectvariantcallmetrics { @Output: Text file containing a collection of metrics relating to snps and indels */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: @@ -373,7 +373,7 @@ process bcftools_stats { @Output: Text file containing a collection of summary statistics */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: @@ -406,7 +406,7 @@ process gatk_varianteval { @Output: Evaluation table containing a collection of summary statistics */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: @@ -441,7 +441,7 @@ process snpeff { @Output: Evaluation table containing a collection of summary statistics */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: @@ -484,7 +484,7 @@ process somalier_extract { rname = 'somalier_extract' container: config['images']['wes_base'] */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_low' input: @@ -521,7 +521,7 @@ process somalier_analysis_human { Separate tab-separated value (TSV) files with relatedness and ancestry outputs */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_low' errorStrategy='ignore' @@ -586,7 +586,7 @@ process somalier_analysis_mouse { Separate tab-separated value (TSV) files with relatedness and ancestry outputs */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_low' errorStrategy='ignore' @@ -640,7 +640,7 @@ process multiqc { @Output: Interactive MulitQC report and a QC metadata table """ - container = "${params.containers.multiqc}" + container "${params.containers.multiqc}" label 'process_low' input: diff --git a/modules/local/qualimap.nf b/modules/local/qualimap.nf index d0fa8be..dfe7620 100644 --- a/modules/local/qualimap.nf +++ b/modules/local/qualimap.nf @@ -14,7 +14,7 @@ process qualimap_bamqc { @Output: Report containing post-aligment quality-control metrics */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" input: tuple val(samplename), path(bam), path(bai) diff --git a/modules/local/samtools_flagstats.nf b/modules/local/samtools_flagstats.nf index daf388f..6d096d3 100644 --- a/modules/local/samtools_flagstats.nf +++ b/modules/local/samtools_flagstats.nf @@ -10,7 +10,7 @@ process samtools_flagstats { @Output: Text file containing alignment statistics */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: diff --git a/modules/local/sequenza.nf b/modules/local/sequenza.nf index e6e9530..93b74ff 100644 --- a/modules/local/sequenza.nf +++ b/modules/local/sequenza.nf @@ -9,7 +9,7 @@ SEQUENZA_SCRIPT = params.script_sequenza process seqz_sequenza_bychr { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_long' errorStrategy 'ignore' @@ -40,7 +40,7 @@ process seqz_sequenza_bychr { process sequenza { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' errorStrategy 'ignore' @@ -105,7 +105,7 @@ process sequenza { //**NOTE**: This process is not used in the pipeline, but is kept for reference process pileup_sequenza { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_low' errorStrategy 'ignore' @@ -131,7 +131,7 @@ process pileup_sequenza { } process seqz_sequenza_reg { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_low' errorStrategy 'ignore' @@ -161,7 +161,7 @@ process seqz_sequenza_reg { process seqz_sequenza { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_low' input: diff --git a/modules/local/snpeff.nf b/modules/local/snpeff.nf index e475377..1134696 100644 --- a/modules/local/snpeff.nf +++ b/modules/local/snpeff.nf @@ -13,7 +13,7 @@ process snpeff { @Output: Evaluation table containing a collection of summary statistics */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: diff --git a/modules/local/somalier.nf b/modules/local/somalier.nf index fdf9aa9..bf91279 100644 --- a/modules/local/somalier.nf +++ b/modules/local/somalier.nf @@ -16,7 +16,7 @@ process somalier_extract { @Output: Exracted sites in (binary) somalier format */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_low' input: @@ -53,7 +53,7 @@ process somalier_analysis_human { Separate tab-separated value (TSV) files with relatedness and ancestry outputs */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_low' errorStrategy='ignore' @@ -118,7 +118,7 @@ process somalier_analysis_mouse { Separate tab-separated value (TSV) files with relatedness and ancestry outputs */ - container = "${params.containers.loganqc}" + container "${params.containers.loganqc}" label 'process_low' errorStrategy='ignore' diff --git a/modules/local/svaba.nf b/modules/local/svaba.nf index 33d6fa3..23289ea 100644 --- a/modules/local/svaba.nf +++ b/modules/local/svaba.nf @@ -3,7 +3,7 @@ INDELREF=file(params.genomes[params.genome].INDELREF) process svaba_somatic { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_high' input: @@ -54,7 +54,7 @@ process svaba_somatic { process svaba_tonly { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_high' input: diff --git a/modules/local/trim_align.nf b/modules/local/trim_align.nf index 3c2cb5b..614f1a4 100644 --- a/modules/local/trim_align.nf +++ b/modules/local/trim_align.nf @@ -45,7 +45,7 @@ process bqsr_ir { Base quality recalibration for all samples */ errorStrategy 'ignore' - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_low' input: tuple val(samplename), path("${samplename}.ir.bam"), path("${samplename}.ir.bam.bai"), path(bed) @@ -74,7 +74,7 @@ process bqsr { Base quality recalibration for all samples */ errorStrategy 'ignore' - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_low' input: tuple val(samplename), path(bam), path(bai), path(bed) @@ -99,7 +99,7 @@ process bqsr { } process gatherbqsr { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_low' input: @@ -128,7 +128,7 @@ process applybqsr { /* Base quality recalibration for all samples to */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_highmem' input: @@ -160,7 +160,7 @@ process applybqsr { process samtoolsindex { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: @@ -184,7 +184,7 @@ process samtoolsindex { //Save to CRAM for output process bamtocram_tonly { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: @@ -208,7 +208,7 @@ process bamtocram_tonly { process samtools2fq { - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: diff --git a/modules/local/vcftools.nf b/modules/local/vcftools.nf index 0b3ae87..12c6107 100644 --- a/modules/local/vcftools.nf +++ b/modules/local/vcftools.nf @@ -11,7 +11,7 @@ process vcftools { @Output: Text file containing a measure of heterozygosity */ - container = "${params.containers.logan}" + container "${params.containers.logan}" label 'process_medium' input: From 21ef3cc2c0c23125d2baaf798c3042b13a638ada Mon Sep 17 00:00:00 2001 From: samarth8392 Date: Tue, 10 Feb 2026 12:38:09 -0500 Subject: [PATCH 06/11] fix: no gs10 data partition in nextflow.config --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 2ee89a1..b224df6 100644 --- a/nextflow.config +++ b/nextflow.config @@ -94,7 +94,7 @@ profiles { autoMounts = true cacheDir = "$PWD/singularity" envWhitelist='https_proxy,http_proxy,ftp_proxy,DISPLAY,SLURM_JOBID' - runOptions = '-B /gs10,/gs11,/gs12,/spin1,/data/CCBR_Pipeliner/,/data/CCBR_Pipeliner/Pipelines/XAVIER/resources/,/vf/users,/gpfs,/fdb' + runOptions = '-B /data/CCBR_Pipeliner/,/data/CCBR_Pipeliner/Pipelines/XAVIER/resources/,/vf/users,/gpfs,/fdb' } biowulf { includeConfig 'conf/biowulf.config' From 4f9c25cb7b08fe53bb44780b129c706e31f63666 Mon Sep 17 00:00:00 2001 From: samarth8392 Date: Tue, 10 Feb 2026 12:38:59 -0500 Subject: [PATCH 07/11] fix: added more mem to submit slurm job to avoid OOM kills --- src/__main__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/__main__.py b/src/__main__.py index fa49be3..5f86dd6 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -143,6 +143,7 @@ def run(main_path, output, _mode, force_all, **kwargs): pipeline_name="LOGAN", hpc_modules="nextflow/25", hpc_walltime="4-00:00:00", + hpc_memory="10G", **kwargs, ) finally: From 011a23d52d0a3755d549a2d766a034ee8150e81e Mon Sep 17 00:00:00 2001 From: samarth8392 Date: Tue, 10 Feb 2026 12:39:35 -0500 Subject: [PATCH 08/11] fix: tumor only workflow name collision issue --- subworkflows/local/workflows_tonly.nf | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/subworkflows/local/workflows_tonly.nf b/subworkflows/local/workflows_tonly.nf index 1e8069a..c17ddd9 100644 --- a/subworkflows/local/workflows_tonly.nf +++ b/subworkflows/local/workflows_tonly.nf @@ -308,15 +308,19 @@ workflow VC_TONLY { //Octopus_tonly if ("octopus" in call_list){ - octopus_in_tonly=bambyinterval | octopus_tonly | bcftools_index_octopus - | groupTuple() - | map{tumor,vcf,vcfindex -> tuple(tumor,vcf.toSorted{it -> it.name},vcfindex, "octopus_tonly","")} - | combineVariants_alternative | join(sample_sheet) - | map{tumor,marked,markedindex,normvcf,normindex ->tuple(tumor,"octopus_tonly",normvcf,normindex)} - annotvep_tonly_octopus(octopus_in_tonly) - octopus_in_tonly_sc=octopus_in_tonly | octopus_convertvcf_tonly - | map{tumor,normvcf,normindex ->tuple(tumor,"octopus_tonly",normvcf,normindex)} - vc_tonly=vc_tonly|concat(octopus_in_tonly_sc) + octopus_in_tonly=bambyinterval | octopus_tonly | bcftools_index_octopus + | groupTuple() + | map{tumor,vcf,vcfindex -> + def sortedVcf = vcf.toSorted{it -> it.name}.unique() + def sortedIdx = vcfindex.toSorted{it -> it.name}.unique() + tuple(tumor, sortedVcf, sortedIdx, "octopus_tonly", "") + } + | combineVariants_alternative | join(sample_sheet) + | map{tumor,marked,markedindex,normvcf,normindex ->tuple(tumor,"octopus_tonly",normvcf,normindex)} + annotvep_tonly_octopus(octopus_in_tonly) + octopus_in_tonly_sc=octopus_in_tonly | octopus_convertvcf_tonly + | map{tumor,normvcf,normindex ->tuple(tumor,"octopus_tonly",normvcf,normindex)} + vc_tonly=vc_tonly|concat(octopus_in_tonly_sc) } //DeepSomatic Tonly From 86addf292983fc12722e59fd8ea52361ec05a1f5 Mon Sep 17 00:00:00 2001 From: samarth8392 Date: Wed, 11 Feb 2026 16:38:18 -0500 Subject: [PATCH 09/11] fix: unique names to octopus to avoid name collision error --- subworkflows/local/workflows.nf | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/workflows.nf b/subworkflows/local/workflows.nf index 2290afb..3ea434d 100644 --- a/subworkflows/local/workflows.nf +++ b/subworkflows/local/workflows.nf @@ -580,7 +580,11 @@ workflow VC { if ("octopus" in call_list){ octopus_in=octopus_tn(bambyinterval) | bcftools_index_octopus | groupTuple() - | map{samplename,vcf,vcfindex-> tuple(samplename,vcf.toSorted{it->(it.name =~ /${samplename}_(.*).octopus.vcf.gz/)[0][1].toInteger()},vcfindex,"octopus","")} + | map{samplename,vcf,vcfindex-> + def sortedVcf = vcf.toSorted{it->(it.name =~ /${samplename}_(.*).octopus.vcf.gz/)[0][1].toInteger()}.unique() + def sortedIdx = vcfindex.toSorted{it->(it.name =~ /${samplename}_(.*).octopus.vcf.gz.tbi/)[0][1].toInteger()}.unique() + tuple(samplename, sortedVcf, sortedIdx, "octopus", "") + } | combineVariants_octopus | map{samplename,marked,markedindex,normvcf,normindex -> tuple(samplename.split('_vs_')[0],samplename.split('_vs_')[1],"octopus",normvcf,normindex)} @@ -594,7 +598,11 @@ workflow VC { octopus_in_tonly=octopus_tonly(bambyinterval_t) | bcftools_index_octopus_tonly | groupTuple() - | map{samplename,vcf,vcfindex->tuple(samplename,vcf.toSorted{it->(it.name =~ /${samplename}_(.*).tonly.octopus.vcf.gz/)[0][1].toInteger()},vcfindex,"octopus_tonly","")} + | map{samplename,vcf,vcfindex-> + def sortedVcf = vcf.toSorted{it->(it.name =~ /${samplename}_(.*).tonly.octopus.vcf.gz/)[0][1].toInteger()}.unique() + def sortedIdx = vcfindex.toSorted{it->(it.name =~ /${samplename}_(.*).tonly.octopus.vcf.gz.tbi/)[0][1].toInteger()}.unique() + tuple(samplename, sortedVcf, sortedIdx, "octopus_tonly", "") + } | combineVariants_octopus_tonly | join(sample_sheet) | map{tumor,marked,markedindex,normvcf,normindex,normal ->tuple(tumor,"octopus_tonly",normvcf,normindex)} From 898492162d671ec1394866a52c98eac2d43aca94 Mon Sep 17 00:00:00 2001 From: samarth8392 Date: Wed, 11 Feb 2026 16:38:39 -0500 Subject: [PATCH 10/11] fix: correct ref genomes for gridss --- modules/local/gridss.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/local/gridss.nf b/modules/local/gridss.nf index 3a94d74..d38f5a8 100644 --- a/modules/local/gridss.nf +++ b/modules/local/gridss.nf @@ -32,7 +32,7 @@ process gridss_somatic { script: """ gridss --jar /opt2/gridss/gridss-2.13.2-gridss-jar-with-dependencies.jar \ - -r $GENOMEREF \ + -r $BWAGENOME \ -l ${normalname},${tumorname} \ -o ${tumorname}_vs_${normalname}.vcf.gz -b $BLACKLIST \ --picardoptions VALIDATION_STRINGENCY=LENIENT \ @@ -90,7 +90,7 @@ process gridss_tonly { script: """ gridss --jar /opt2/gridss/gridss-2.13.2-gridss-jar-with-dependencies.jar \ - -r $GENOMEREF \ + -r $BWAGENOME \ -l ${tumorname} \ -o ${tumorname}.vcf.gz -b $BLACKLIST \ --picardoptions VALIDATION_STRINGENCY=LENIENT \ From 3d9c965658c36ff628b2f09ab28fadf7b1758359 Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Thu, 12 Feb 2026 09:41:59 -0500 Subject: [PATCH 11/11] chore: update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 003e700..467ada3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## LOGAN development version +- Fixed container mount error - removed broken paths. (#111, @samarth8392) +- Fixed input file name collision in Octopus variant calling. (#111, @samarth8392) +- Fixed AnnotSV database path resolution in tumor-only SV workflows. (#111, @samarth8392) + ## LOGAN 0.3.2 - Uses Nextflow v25 for logan run; fixes the bug in stub run in nf v24.10 (see: https://github.com/nextflow-io/nextflow/issues/5456) (#99, @samarth8392)