-
Laurent Modolo authoredLaurent Modolo authored
main.nf 4.78 KiB
version = "407"
container_url = "lbmc/ucsc:${version}"
include {
index_fasta
} from './../samtools/main'
params.bedgraph_to_bigwig = ""
params.bedgraph_to_bigwig_out = ""
process bedgraph_to_bigwig {
container = "${container_url}"
label "big_mem_mono_cpus"
tag "${file_id}"
if (params.bedgraph_to_bigwig_out != "") {
publishDir "results/${params.bedgraph_to_bigwig_out}", mode: 'copy'
}
input:
tuple val(file_id) path(bg)
tuple val(file_id) path(bed)
output:
tuple val(file_id), path("*.bw"), emit: bw
script:
"""
LC_COLLATE=C
# transform bed file of start-stop chromosome size to stop chromosome size
awk -v OFS="\\t" '{print \$1, \$3}' ${bed} > chromsize.txt
sort -T ./ -k1,1 -k2,2n ${bg} > \
bedGraphToBigWig ${params.bedgraph_to_bigwig} - \
chromsize.txt \
${bg.simpleName}_norm.bw
"""
}
params.wig_to_bedgraph = ""
params.wig_to_bedgraph_out = ""
process wig_to_bedgraph {
container = "${container_url}"
label "big_mem_mono_cpus"
tag "${file_id}"
if (params.wig_to_bedgraph_out != "") {
publishDir "results/${params.wig_to_bedgraph_out}", mode: 'copy'
}
input:
tuple val(file_id), path(wig)
output:
tuple val(file_id), path("${wig.simpleName}.bg"), emit: bedgraph
script:
"""
awk '{print \$1"\\t"\$2-1"\\t"\$2"\\t"\$3}' ${wig} > ${wig.simpleName}.bg
"""
}
params.wig2_to_bedgraph2 = ""
params.wig2_to_bedgraph2_out = ""
process wig2_to_bedgraph2 {
container = "${container_url}"
label "big_mem_mono_cpus"
tag "${file_id}"
if (params.wig2_to_bedgraph2_out != "") {
publishDir "results/${params.wig2_to_bedgraph2_out}", mode: 'copy'
}
input:
tuple val(file_id), path(wig_a), path(wig_b)
output:
tuple val(file_id), path("${wig_a.simpleName}.bg"), path("${wig_b.simpleName}.bg"), emit: bedgraph
script:
"""
awk '{print \$1"\\t"\$2-1"\\t"\$2"\\t"\$3}' ${wig_a} > ${wig_a.simpleName}.bg
awk '{print \$1"\\t"\$2-1"\\t"\$2"\\t"\$3}' ${wig_b} > ${wig_b.simpleName}.bg
"""
}
params.bigwig_to_wig = ""
params.bigwig_to_wig_out = ""
process bigwig_to_wig {
container = "${container_url}"
label "big_mem_mono_cpus"
tag "${file_id}"
if (params.bigwig_to_wig_out != "") {
publishDir "results/${params.bigwig_to_wig_out}", mode: 'copy'
}
input:
tuple val(file_id) path(bw)
output:
tuple val(file_id), path("*.wig"), emit: wig
script:
"""
bigWigToBedGraph ${bw} ${bw.simpleName}.bg
bedgraph_to_wig.pl --bedgraph ${bw.simpleName}.bg --wig ${bw.simpleName}.wig --step 10
"""
}
params.bigwig2_to_wig2 = ""
params.bigwig2_to_wig2_out = ""
process bigwig2_to_wig2 {
container = "${container_url}"
label "big_mem_mono_cpus"
tag "${file_id}"
if (params.bigwig_to_wig_out != "") {
publishDir "results/${params.bigwig_to_wig_out}", mode: 'copy'
}
input:
tuple val(file_id), path(bw_a), path(bw_b)
output:
tuple val(file_id), path("${bw_a.simpleName}.wig"), path("${bw_b.simpleName}.wig"), emit: wig
script:
"""
bigWigToBedGraph ${bw_a} ${bw_a.simpleName}.bg
bedgraph_to_wig.pl --bedgraph ${bw_a.simpleName}.bg --wig ${bw_a.simpleName}.wig --step 10
bigWigToBedGraph ${bw_b} ${bw_b.simpleName}.bg
bedgraph_to_wig.pl --bedgraph ${bw_b.simpleName}.bg --wig ${bw_b.simpleName}.wig --step 10
"""
}
params.wig_to_bigwig = ""
params.wig_to_bigwig_out = ""
workflow wig_to_bigwig {
take:
fasta
wig
main:
index_fasta(fasta)
wig_to_bigwig_sub(
wig,
index_fasta.out.index
)
emit:
bw = wig_to_bigwig_sub.out.bw
}
process wig_to_bigwig_sub {
container = "${container_url}"
label "big_mem_mono_cpus"
tag "${file_id}"
if (params.bigwig_to_wig_out != "") {
publishDir "results/${params.bigwig_to_wig_out}", mode: 'copy'
}
input:
tuple val(file_id), path(w)
tuple val(idx_id), path(fasta_idx)
output:
tuple val(file_id), path("${w.simpleName}.bw"), emit: bw
script:
"""
cut -f 1,2 ${fasta_idx} > ${fasta_idx.simpleName}.sizes
wigToBigWig -clip ${w} ${fasta_idx.simpleName}.sizes ${w.simpleName}.bw
"""
}
params.wig2_to_bigwig2 = ""
params.wig2_to_bigwig2_out = ""
workflow wig2_to_bigwig2 {
take:
fasta
wigs
main:
index_fasta(fasta)
wig2_to_bigwig2_sub(
wigs,
index_fasta.out.index
)
emit:
bw = wig2_to_bigwig2_sub.out.bw
}
process wig2_to_bigwig2_sub {
container = "${container_url}"
label "big_mem_mono_cpus"
tag "${file_id}"
if (params.bigwig_to_wig_out != "") {
publishDir "results/${params.bigwig_to_wig_out}", mode: 'copy'
}
input:
tuple val(file_id), path(w_a), path(w_b)
tuple val(idx_id), path(fasta_idx)
output:
tuple val(file_id), path("${w_a.simpleName}.bw"), path("${w_b.simpleName}.bw"), emit: bw
script:
"""
cut -f 1,2 ${fasta_idx} > ${fasta_idx.simpleName}.sizes
wigToBigWig -clip ${w_a} ${fasta_idx.simpleName}.sizes ${w_a.simpleName}.bw
wigToBigWig -clip ${w_b} ${fasta_idx.simpleName}.sizes ${w_b.simpleName}.bw
"""
}