Skip to content

Commit b082d12

Browse files
committed
refactor: Replace local bedtools genomecov module with nf-core version
- Replace local bedtools_genomecov module with nf-core bedtools/genomecov - Add inline scale factor calculation from flagstat in subworkflow - Configure nf-core module with -bga and -pc flags for proper output - Remove scale_factor output emit as it's no longer needed - Maintain same functionality while using official nf-core modules
1 parent 002cea6 commit b082d12

9 files changed

+116
-164
lines changed

conf/modules.config

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,10 @@ process {
459459
if (meta.single_end && params.fragment_size > 0) {
460460
args << "-fs ${params.fragment_size}"
461461
}
462+
// Add paired-end correction for paired-end data
463+
if (!meta.single_end) {
464+
args << "-pc"
465+
}
462466
// Use -bga instead of -bg to include zero-coverage bins
463467
// This results in lower background levels and better IGV visualization
464468
args << "-bga"
@@ -469,13 +473,8 @@ process {
469473
[
470474
path: { "${params.outdir}/${params.aligner}/merged_library/bigwig" },
471475
mode: params.publish_dir_mode,
472-
pattern: "*.bigWig"
476+
pattern: "*.bedGraph"
473477
],
474-
[
475-
path: { "${params.outdir}/${params.aligner}/merged_library/bigwig/scale" },
476-
mode: params.publish_dir_mode,
477-
pattern: "*.txt"
478-
]
479478
]
480479
}
481480

modules/local/bedtools_genomecov.nf

Lines changed: 0 additions & 54 deletions
This file was deleted.

subworkflows/local/bam_bedgraph_bigwig_bedtools_ucsc.nf

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Convert BAM to normalised bigWig via bedGraph using BEDTools and UCSC
33
//
44

5-
include { BEDTOOLS_GENOMECOV } from '../../modules/local/bedtools_genomecov'
5+
include { BEDTOOLS_GENOMECOV } from '../../modules/nf-core/bedtools/genomecov/main'
66
include { UCSC_BEDGRAPHTOBIGWIG } from '../../modules/nf-core/ucsc/bedgraphtobigwig/main'
77

88
workflow BAM_BEDGRAPH_BIGWIG_BEDTOOLS_UCSC {
@@ -14,27 +14,40 @@ workflow BAM_BEDGRAPH_BIGWIG_BEDTOOLS_UCSC {
1414

1515
ch_versions = Channel.empty()
1616

17+
//
18+
// Extract scale factor from flagstat and prepare input for bedtools genomecov
19+
//
20+
ch_bam_scale = ch_bam_flagstat
21+
.map { meta, bam, flagstat ->
22+
// Parse flagstat to get mapped reads count
23+
def flagstat_content = flagstat.text
24+
def mapped_reads = (flagstat_content =~ /(\d+) \+ \d+ mapped/)[0][1] as Integer
25+
def scale_factor = 1000000 / mapped_reads
26+
[meta, bam, scale_factor]
27+
}
28+
1729
//
1830
// Create bedGraph coverage track
1931
//
2032
BEDTOOLS_GENOMECOV (
21-
ch_bam_flagstat
33+
ch_bam_scale,
34+
[],
35+
'bedGraph',
36+
true
2237
)
2338
ch_versions = ch_versions.mix(BEDTOOLS_GENOMECOV.out.versions.first())
2439

2540
//
2641
// Create bigWig coverage tracks
2742
//
2843
UCSC_BEDGRAPHTOBIGWIG (
29-
BEDTOOLS_GENOMECOV.out.bedgraph,
44+
BEDTOOLS_GENOMECOV.out.genomecov,
3045
ch_chrom_sizes
3146
)
3247
ch_versions = ch_versions.mix(UCSC_BEDGRAPHTOBIGWIG.out.versions.first())
3348

3449
emit:
35-
bedgraph = BEDTOOLS_GENOMECOV.out.bedgraph // channel: [ val(meta), [ bedgraph ] ]
36-
scale_factor = BEDTOOLS_GENOMECOV.out.scale_factor // channel: [ val(meta), [ txt ] ]
37-
50+
bedgraph = BEDTOOLS_GENOMECOV.out.genomecov // channel: [ val(meta), [ bedgraph ] ]
3851
bigwig = UCSC_BEDGRAPHTOBIGWIG.out.bigwig // channel: [ val(meta), [ bigwig ] ]
3952

4053
versions = ch_versions // channel: [ versions.yml ]

tests/bowtie2.nf.test.snap

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"samtools": "1.15.1"
1515
},
1616
"BEDTOOLS_GENOMECOV": {
17-
"bedtools": "2.30.0"
17+
"bedtools": "2.31.1"
1818
},
1919
"BOWTIE2_ALIGN": {
2020
"bowtie2": "2.5.2",
@@ -138,19 +138,18 @@
138138
"bowtie2/merged_library/SPT5_T15_REP2.mLb.clN.sorted.bam",
139139
"bowtie2/merged_library/SPT5_T15_REP2.mLb.clN.sorted.bam.bai",
140140
"bowtie2/merged_library/bigwig",
141+
"bowtie2/merged_library/bigwig/SPT5_INPUT_REP1.mLB.clN.bedGraph",
141142
"bowtie2/merged_library/bigwig/SPT5_INPUT_REP1.mLb.clN.bigWig",
143+
"bowtie2/merged_library/bigwig/SPT5_INPUT_REP2.mLB.clN.bedGraph",
142144
"bowtie2/merged_library/bigwig/SPT5_INPUT_REP2.mLb.clN.bigWig",
145+
"bowtie2/merged_library/bigwig/SPT5_T0_REP1.mLB.clN.bedGraph",
143146
"bowtie2/merged_library/bigwig/SPT5_T0_REP1.mLb.clN.bigWig",
147+
"bowtie2/merged_library/bigwig/SPT5_T0_REP2.mLB.clN.bedGraph",
144148
"bowtie2/merged_library/bigwig/SPT5_T0_REP2.mLb.clN.bigWig",
149+
"bowtie2/merged_library/bigwig/SPT5_T15_REP1.mLB.clN.bedGraph",
145150
"bowtie2/merged_library/bigwig/SPT5_T15_REP1.mLb.clN.bigWig",
151+
"bowtie2/merged_library/bigwig/SPT5_T15_REP2.mLB.clN.bedGraph",
146152
"bowtie2/merged_library/bigwig/SPT5_T15_REP2.mLb.clN.bigWig",
147-
"bowtie2/merged_library/bigwig/scale",
148-
"bowtie2/merged_library/bigwig/scale/SPT5_INPUT_REP1.mLB.clN.scale_factor.txt",
149-
"bowtie2/merged_library/bigwig/scale/SPT5_INPUT_REP2.mLB.clN.scale_factor.txt",
150-
"bowtie2/merged_library/bigwig/scale/SPT5_T0_REP1.mLB.clN.scale_factor.txt",
151-
"bowtie2/merged_library/bigwig/scale/SPT5_T0_REP2.mLB.clN.scale_factor.txt",
152-
"bowtie2/merged_library/bigwig/scale/SPT5_T15_REP1.mLB.clN.scale_factor.txt",
153-
"bowtie2/merged_library/bigwig/scale/SPT5_T15_REP2.mLB.clN.scale_factor.txt",
154153
"bowtie2/merged_library/deepTools",
155154
"bowtie2/merged_library/deepTools/plotFingerprint",
156155
"bowtie2/merged_library/deepTools/plotFingerprint/SPT5_T0_REP1.mLb.clN.plotFingerprint.pdf",
@@ -821,12 +820,12 @@
821820
"trimgalore/logs/SPT5_T15_REP2_T1_2.fastq.gz_trimming_report.txt"
822821
],
823822
[
824-
"SPT5_INPUT_REP1.mLB.clN.scale_factor.txt:md5,c13c2058440720e5bf7e0aa36a5bc52e",
825-
"SPT5_INPUT_REP2.mLB.clN.scale_factor.txt:md5,1073f68a937ee8fc94ba4c01fa1d3e52",
826-
"SPT5_T0_REP1.mLB.clN.scale_factor.txt:md5,32e77d7bb4cbdf4c5e3a975b2ced1436",
827-
"SPT5_T0_REP2.mLB.clN.scale_factor.txt:md5,b51fd58fad0860b880e3092172320a45",
828-
"SPT5_T15_REP1.mLB.clN.scale_factor.txt:md5,af29e9ddc1129a747d363932dd89a11f",
829-
"SPT5_T15_REP2.mLB.clN.scale_factor.txt:md5,4ec56e29c2040bba38afce216aa2ad14",
823+
"SPT5_INPUT_REP1.mLB.clN.bedGraph:md5,3185527dd339a8dbcca453f97ecc0860",
824+
"SPT5_INPUT_REP2.mLB.clN.bedGraph:md5,bdc6ce913840caa034fe12f11dc3f821",
825+
"SPT5_T0_REP1.mLB.clN.bedGraph:md5,d50a212ac1477362e6266ebb3aa6c857",
826+
"SPT5_T0_REP2.mLB.clN.bedGraph:md5,ac8049a66f664f4f52e55738bb1b8482",
827+
"SPT5_T15_REP1.mLB.clN.bedGraph:md5,4dd8e393d018debbb6da34bf8a9b9c65",
828+
"SPT5_T15_REP2.mLB.clN.bedGraph:md5,2b646aa9a12ee41987726118058a7e21",
830829
"SPT5_T0_REP1_peaks.broadPeak:md5,2cb428b8040f21be839fd18a9a500c4f",
831830
"SPT5_T0_REP1_peaks.gappedPeak:md5,4f54b0be097b5c164d401a5a8b7224cc",
832831
"SPT5_T0_REP1_peaks.xls:md5,2ae150a4de266fbf8d5c6b678ec2cb0d",
@@ -930,7 +929,7 @@
930929
"multiqc_samtools_stats.yaml:md5,c1f753728b7d0d969f1de706989508ea",
931930
"multiqc_samtools_stats_1.yaml:md5,ac39dbae7578b4fc13bf2753d9f2d2eb",
932931
"multiqc_samtools_stats_2.yaml:md5,1bb38f88e3cf993ffd1c1eca67965f48",
933-
"multiqc_software_versions.yaml:md5,d7bbeb0e2c28361dbc27a45f060d4dcd",
932+
"multiqc_software_versions.yaml:md5,a5ecffe0b008ff305869c19dfc011d9b",
934933
"multiqc_strand_shift_correlation.yaml:md5,87ce7906a3297afe5f5d73fe6e6d86ca",
935934
"picard-1_alignment_readlength_plot.yaml:md5,ef8322029669a340b33c3efe78c5df94",
936935
"picard-1_alignment_summary_Aligned_Bases.yaml:md5,0f3082cdd9d84f49658e02ab83ecd123",
@@ -975,7 +974,7 @@
975974
"nf-test": "0.9.2",
976975
"nextflow": "25.04.6"
977976
},
978-
"timestamp": "2025-09-04T20:18:53.73805"
977+
"timestamp": "2025-09-05T09:10:46.508532"
979978
},
980979
"bowtie2 with stub": {
981980
"content": [

tests/chromap.nf.test.snap

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"samtools": "1.15.1"
1515
},
1616
"BEDTOOLS_GENOMECOV": {
17-
"bedtools": "2.30.0"
17+
"bedtools": "2.31.1"
1818
},
1919
"CHROMAP_CHROMAP": {
2020
"chromap": "0.2.6-r490",
@@ -137,19 +137,18 @@
137137
"chromap/merged_library/SPT5_T15_REP2.mLb.clN.sorted.bam",
138138
"chromap/merged_library/SPT5_T15_REP2.mLb.clN.sorted.bam.bai",
139139
"chromap/merged_library/bigwig",
140+
"chromap/merged_library/bigwig/SPT5_INPUT_REP1.mLB.clN.bedGraph",
140141
"chromap/merged_library/bigwig/SPT5_INPUT_REP1.mLb.clN.bigWig",
142+
"chromap/merged_library/bigwig/SPT5_INPUT_REP2.mLB.clN.bedGraph",
141143
"chromap/merged_library/bigwig/SPT5_INPUT_REP2.mLb.clN.bigWig",
144+
"chromap/merged_library/bigwig/SPT5_T0_REP1.mLB.clN.bedGraph",
142145
"chromap/merged_library/bigwig/SPT5_T0_REP1.mLb.clN.bigWig",
146+
"chromap/merged_library/bigwig/SPT5_T0_REP2.mLB.clN.bedGraph",
143147
"chromap/merged_library/bigwig/SPT5_T0_REP2.mLb.clN.bigWig",
148+
"chromap/merged_library/bigwig/SPT5_T15_REP1.mLB.clN.bedGraph",
144149
"chromap/merged_library/bigwig/SPT5_T15_REP1.mLb.clN.bigWig",
150+
"chromap/merged_library/bigwig/SPT5_T15_REP2.mLB.clN.bedGraph",
145151
"chromap/merged_library/bigwig/SPT5_T15_REP2.mLb.clN.bigWig",
146-
"chromap/merged_library/bigwig/scale",
147-
"chromap/merged_library/bigwig/scale/SPT5_INPUT_REP1.mLB.clN.scale_factor.txt",
148-
"chromap/merged_library/bigwig/scale/SPT5_INPUT_REP2.mLB.clN.scale_factor.txt",
149-
"chromap/merged_library/bigwig/scale/SPT5_T0_REP1.mLB.clN.scale_factor.txt",
150-
"chromap/merged_library/bigwig/scale/SPT5_T0_REP2.mLB.clN.scale_factor.txt",
151-
"chromap/merged_library/bigwig/scale/SPT5_T15_REP1.mLB.clN.scale_factor.txt",
152-
"chromap/merged_library/bigwig/scale/SPT5_T15_REP2.mLB.clN.scale_factor.txt",
153152
"chromap/merged_library/deepTools",
154153
"chromap/merged_library/deepTools/plotFingerprint",
155154
"chromap/merged_library/deepTools/plotFingerprint/SPT5_T0_REP1.mLb.clN.plotFingerprint.pdf",
@@ -823,12 +822,12 @@
823822
"trimgalore/logs/SPT5_T15_REP2_T1_2.fastq.gz_trimming_report.txt"
824823
],
825824
[
826-
"SPT5_INPUT_REP1.mLB.clN.scale_factor.txt:md5,d90158cfda036c46894de528819160c6",
827-
"SPT5_INPUT_REP2.mLB.clN.scale_factor.txt:md5,75f0ad2d43d1e260ebaa5f8c95c5f5d2",
828-
"SPT5_T0_REP1.mLB.clN.scale_factor.txt:md5,c19971de49bf6a5bfc42aaac3e25af9e",
829-
"SPT5_T0_REP2.mLB.clN.scale_factor.txt:md5,8a591dfbf664f608fe30958ebf5a6af0",
830-
"SPT5_T15_REP1.mLB.clN.scale_factor.txt:md5,ed4560b5e4920a7ba50e2a7fdc296de5",
831-
"SPT5_T15_REP2.mLB.clN.scale_factor.txt:md5,4fd74f09b1c744240d2d18a61e04f33d",
825+
"SPT5_INPUT_REP1.mLB.clN.bedGraph:md5,e18a171dc9e71782335f2ca933da0773",
826+
"SPT5_INPUT_REP2.mLB.clN.bedGraph:md5,3155c2b26db574cfccbb0388dea6617a",
827+
"SPT5_T0_REP1.mLB.clN.bedGraph:md5,ede095f77136b5b49310b028dc1f3174",
828+
"SPT5_T0_REP2.mLB.clN.bedGraph:md5,15b423419d7d837db69c11f911e11b27",
829+
"SPT5_T15_REP1.mLB.clN.bedGraph:md5,df839f1a73260decf2510fbbe038fc04",
830+
"SPT5_T15_REP2.mLB.clN.bedGraph:md5,286e56304db30e41a14e0f806b03e9b4",
832831
"SPT5_T0_REP1_peaks.broadPeak:md5,cdb63f77da49a06fa941a616a1d55bc8",
833832
"SPT5_T0_REP1_peaks.gappedPeak:md5,9f8bb554a7265da0b2fad9437e4d142e",
834833
"SPT5_T0_REP1_peaks.xls:md5,98ddc7de15179f2089c4ca7edfd04f54",
@@ -933,7 +932,7 @@
933932
"multiqc_samtools_stats.yaml:md5,9d9b24aceea1c649a84fa5bcb35fa6c6",
934933
"multiqc_samtools_stats_1.yaml:md5,0e4875a9c9c2bfd78588a3ce04ef5caf",
935934
"multiqc_samtools_stats_2.yaml:md5,383b58724b6e90ca35f568ebf6ee8919",
936-
"multiqc_software_versions.yaml:md5,e584942418ca3a57c203992e8a930c7d",
935+
"multiqc_software_versions.yaml:md5,27f049009a47fb61615d339fca548943",
937936
"multiqc_strand_shift_correlation.yaml:md5,14fa8c729c885eea869abeb465ddc31c",
938937
"picard-1_alignment_readlength_plot.yaml:md5,1f645e3a75839bf834fa250fb0e46d91",
939938
"picard-1_alignment_summary_Aligned_Bases.yaml:md5,392fec9f38be3feea5b930209544b972",
@@ -978,7 +977,7 @@
978977
"nf-test": "0.9.2",
979978
"nextflow": "25.04.6"
980979
},
981-
"timestamp": "2025-09-04T20:45:11.657006"
980+
"timestamp": "2025-09-05T09:23:12.357839"
982981
},
983982
"chromap with stub": {
984983
"content": [

tests/default.nf.test.snap

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"samtools": "1.15.1"
1515
},
1616
"BEDTOOLS_GENOMECOV": {
17-
"bedtools": "2.30.0"
17+
"bedtools": "2.31.1"
1818
},
1919
"BWA_INDEX": {
2020
"bwa": "0.7.18-r1243-dirty"
@@ -137,19 +137,18 @@
137137
"bwa/merged_library/SPT5_T15_REP2.mLb.clN.sorted.bam",
138138
"bwa/merged_library/SPT5_T15_REP2.mLb.clN.sorted.bam.bai",
139139
"bwa/merged_library/bigwig",
140+
"bwa/merged_library/bigwig/SPT5_INPUT_REP1.mLB.clN.bedGraph",
140141
"bwa/merged_library/bigwig/SPT5_INPUT_REP1.mLb.clN.bigWig",
142+
"bwa/merged_library/bigwig/SPT5_INPUT_REP2.mLB.clN.bedGraph",
141143
"bwa/merged_library/bigwig/SPT5_INPUT_REP2.mLb.clN.bigWig",
144+
"bwa/merged_library/bigwig/SPT5_T0_REP1.mLB.clN.bedGraph",
142145
"bwa/merged_library/bigwig/SPT5_T0_REP1.mLb.clN.bigWig",
146+
"bwa/merged_library/bigwig/SPT5_T0_REP2.mLB.clN.bedGraph",
143147
"bwa/merged_library/bigwig/SPT5_T0_REP2.mLb.clN.bigWig",
148+
"bwa/merged_library/bigwig/SPT5_T15_REP1.mLB.clN.bedGraph",
144149
"bwa/merged_library/bigwig/SPT5_T15_REP1.mLb.clN.bigWig",
150+
"bwa/merged_library/bigwig/SPT5_T15_REP2.mLB.clN.bedGraph",
145151
"bwa/merged_library/bigwig/SPT5_T15_REP2.mLb.clN.bigWig",
146-
"bwa/merged_library/bigwig/scale",
147-
"bwa/merged_library/bigwig/scale/SPT5_INPUT_REP1.mLB.clN.scale_factor.txt",
148-
"bwa/merged_library/bigwig/scale/SPT5_INPUT_REP2.mLB.clN.scale_factor.txt",
149-
"bwa/merged_library/bigwig/scale/SPT5_T0_REP1.mLB.clN.scale_factor.txt",
150-
"bwa/merged_library/bigwig/scale/SPT5_T0_REP2.mLB.clN.scale_factor.txt",
151-
"bwa/merged_library/bigwig/scale/SPT5_T15_REP1.mLB.clN.scale_factor.txt",
152-
"bwa/merged_library/bigwig/scale/SPT5_T15_REP2.mLB.clN.scale_factor.txt",
153152
"bwa/merged_library/deepTools",
154153
"bwa/merged_library/deepTools/plotFingerprint",
155154
"bwa/merged_library/deepTools/plotFingerprint/SPT5_T0_REP1.mLb.clN.plotFingerprint.pdf",
@@ -820,12 +819,12 @@
820819
"trimgalore/logs/SPT5_T15_REP2_T1_2.fastq.gz_trimming_report.txt"
821820
],
822821
[
823-
"SPT5_INPUT_REP1.mLB.clN.scale_factor.txt:md5,f7980ab61fb34b0db97506c82a41a9a3",
824-
"SPT5_INPUT_REP2.mLB.clN.scale_factor.txt:md5,100f43d477b73fb415f3df3074b6426c",
825-
"SPT5_T0_REP1.mLB.clN.scale_factor.txt:md5,732314d7bf803d9d802e869558375897",
826-
"SPT5_T0_REP2.mLB.clN.scale_factor.txt:md5,35e93082dd1a1abe9af8c29e2a072695",
827-
"SPT5_T15_REP1.mLB.clN.scale_factor.txt:md5,a9fbf5cb0740b352a167dcaeb50c8306",
828-
"SPT5_T15_REP2.mLB.clN.scale_factor.txt:md5,45ec3f2793055eba8e20d481098a89a6",
822+
"SPT5_INPUT_REP1.mLB.clN.bedGraph:md5,0a93a9e9e1c5c89f62050e0a2c12ca31",
823+
"SPT5_INPUT_REP2.mLB.clN.bedGraph:md5,729d6cd9bd4e7a1e8ffc2f1cadc6483e",
824+
"SPT5_T0_REP1.mLB.clN.bedGraph:md5,490d0e8ae9d5b64ec5ff8988bc17fc61",
825+
"SPT5_T0_REP2.mLB.clN.bedGraph:md5,b6d1bb76e3dcb321d010762ca8046fa6",
826+
"SPT5_T15_REP1.mLB.clN.bedGraph:md5,79aa337a5bdf210529e9e97189bc5799",
827+
"SPT5_T15_REP2.mLB.clN.bedGraph:md5,e82594c663a3e25539b0c039821df8b7",
829828
"SPT5_T0_REP1_peaks.broadPeak:md5,2ce0ad3163d0b2b6f0ee2d310dc3e45a",
830829
"SPT5_T0_REP1_peaks.gappedPeak:md5,bdf9295567830a37a1ac36dd5b9ae634",
831830
"SPT5_T0_REP1_peaks.xls:md5,f9ee78e3871b340a559f3f2397ef0768",
@@ -929,7 +928,7 @@
929928
"multiqc_samtools_stats.yaml:md5,c75c982cdca8a83186d345bf66b365e0",
930929
"multiqc_samtools_stats_1.yaml:md5,33531055d31307925f94f5e6460463fc",
931930
"multiqc_samtools_stats_2.yaml:md5,e538f9993283ee9f2a056f279d3a8dca",
932-
"multiqc_software_versions.yaml:md5,f1c1f63a7fd92a16ae9ae5659a6ff6c0",
931+
"multiqc_software_versions.yaml:md5,f4178beeddc67db73541ce37df180a3f",
933932
"multiqc_strand_shift_correlation.yaml:md5,9a9a859ce75534a8074811ee1ca80f71",
934933
"picard-1_alignment_readlength_plot.yaml:md5,fc25da4e9daefd74134d960adde48951",
935934
"picard-1_alignment_summary_Aligned_Bases.yaml:md5,c174cd7cabe80cedf2c6e11b0091b7cb",
@@ -974,6 +973,6 @@
974973
"nf-test": "0.9.2",
975974
"nextflow": "25.04.6"
976975
},
977-
"timestamp": "2025-09-04T21:19:39.042131"
976+
"timestamp": "2025-09-05T09:37:31.298677"
978977
}
979978
}

0 commit comments

Comments
 (0)