pipeline/wdl/alignment.wdl

124 lines
3.2 KiB
Plaintext
Raw Normal View History

2023-08-25 10:06:31 +08:00
#alignment
task bwa {
String name
String read1
String read2
String outputDir
String ref
command <<<
if [ ! -d ${outputDir}/alignment ];then
mkdir ${outputDir}/alignment
fi
bwa mem -R '@RG\tID:group_n\tLB:library_n\tPL:BGI\tPU:unit1\tSM:${name}' -M -t 10 ${ref} ${read1} ${read2} | \
samtools view -@ 10 -bh -o - | samtools sort -@ 10 -o ${outputDir}/alignment/${name}.sorted.bam
samtools index ${outputDir}/alignment/${name}.sorted.bam
>>>
output {
String sortedBam = "${outputDir}/alignment/${name}.sorted.bam"
}
}
#remove PCR duplicates
task markduplicates {
String name
String ref
String sortedBam
String outputDir
command <<<
if [ ! -d ${outputDir}/alignment ];then
mkdir ${outputDir}/alignment
fi
java -XX:+UseParallelGC -XX:ParallelGCThreads=2 -Xmx12G -jar $PICARD MarkDuplicates \
I=${sortedBam} \
O=${outputDir}/alignment/${name}.rmdup.bam \
CREATE_INDEX=true \
M=${outputDir}/alignment/${name}.rmdup.metrics.txt \
R=${ref}
>>>
output {
String rmdupBam = "${outputDir}/alignment/${name}.rmdup.bam"
}
}
# generater mpileup file
task generater_mpileup {
String name
String rmdupBam
String ref
String bed
String outputDir
command <<<
samtools mpileup -Bq 20 -Q 20 -f ${ref} -l ${bed} ${rmdupBam} -o ${outputDir}/alignment/${name}.pileup
>>>
output {
String pileup = "${outputDir}/alignment/${name}.pileup"
}
}
workflow alignment {
String tumor
String tumor_r1
String tumor_r2
String? normal
String? normal_r1
String? normal_r2
String ref
String bed
String outputDir
scatter(name in [tumor, normal]) {
if (defined(name)) {
call bwa {
input:
name=name,
ref=ref,
outputDir=outputDir,
read1=if name==tumor then tumor_r1 else normal_r1,
read2=if name==tumor then tumor_r2 else normal_r2
}
call markduplicates {
input:
name=name,
ref=ref,
outputDir=outputDir,
sortedBam=bwa.sortedBam
}
call generater_mpileup {
input:
name=name,
ref=ref,
outputDir=outputDir,
bed=bed,
rmdupBam=markduplicates.rmdupBam
}
}
}
output {
String tumor_sortedBam = "${outputDir}/alignment/${tumor}.sorted.bam"
String tumor_rmdupBam = "${outputDir}/alignment/${tumor}.rmdup.bam"
String tumor_pileup = "${outputDir}/alignment/${tumor}.pileup"
String normal_sortedBam = "${outputDir}/alignment/${normal}.sorted.bam"
String normal_rmdupBam = "${outputDir}/alignment/${normal}.rmdup.bam"
String normal_pileup = "${outputDir}/alignment/${normal}.pileup"
}
}