pipeline/wdl/fusion.wdl

132 lines
3.7 KiB
Plaintext

task rmdup_picard {
String name
String sorted_bam
String output_dir
String ref
command <<<
if [ ! -d ${output_dir}/fusion ];then
mkdir ${output_dir}/fusion
fi
java -XX:+UseParallelGC -XX:ParallelGCThreads=8 -Xmx12G -jar $PICARD MarkDuplicates \
I=${sorted_bam} \
O=${output_dir}/alignment/${name}.picard.rmdup.bam \
CREATE_INDEX=true \
M=${output_dir}/alignment/${name}.picard.rmdup.metrics.txt \
R=${ref}
>>>
output {
String rmdup_bam = "${output_dir}/alignment/${name}.picard.rmdup.bam"
}
}
task fusion_calling {
String name
String rmdup_bam
String output_dir
String ref
String tumor_bamdst_depth
command <<<
if [ ! -d ${output_dir}/fusion ];then
mkdir ${output_dir}/fusion
fi
# Extract the discordant paired-end alignments.
samtools view -b -F 1294 ${rmdup_bam} > ${output_dir}/fusion/${name}.discordants.bam
# Extract the split-read alignments
samtools view -h ${rmdup_bam} \
| /dataseq/jmdna/software/lumpy-sv/scripts/extractSplitReads_BwaMem -i stdin \
| samtools view -Sb - \
> ${output_dir}/fusion/${name}.splitters.bam
lumpyexpress \
-B ${rmdup_bam} \
-S ${output_dir}/fusion/${name}.splitters.bam \
-D ${output_dir}/fusion/${name}.discordants.bam \
-o ${output_dir}/fusion/${name}.fusion.raw.vcf
python ~/project/pipeline/workflow/script/tools/vcf_filter.py \
-i ${output_dir}/fusion/${name}.fusion.raw.vcf \
-e 'INFO/PE[0] >1 && INFO/SR[0] > 4 ' \
| svtyper -B ${rmdup_bam} -T ${ref} -o ${output_dir}/fusion/${name}.fusion.vcf
table_annovar.pl \
${output_dir}/fusion/${name}.fusion.vcf \
/dataseq/jmdna/software/annovar/humandb/ \
-buildver hg19 -nastring . -vcfinput -remove -otherinfo \
-protocol refGene \
-operation g \
--outfile ${output_dir}/fusion/${name}.fusion
--remove
filter_fusion.pl ${tumor_bamdst_depth} \
${output_dir}/fusion/${name}.fusion.hg19_multianno.vcf \
${output_dir}/fusion/${name}.fusion.hg19_multianno.filter.txt
python ~/project/pipeline/workflow/script/tools/vcf_filter.py \
-e 'INFO/SVTYPE == "DEL" | INFO/SVTYPE == "DUP" | INFO/SVTYPE == "INS" ' \
-i ${output_dir}/fusion/${name}.fusion.hg19_multianno.vcf \
-o ${output_dir}/fusion/${name}.longindel.hg19_multianno.vcf \
>>>
output {
String vcf = "${output_dir}/fusion/${name}.fusion.vcf"
}
}
workflow call_fusion {
String name
String sorted_bam
String rmdup_bam
String output_dir
String ref
Boolean umi
String tumor_bamdst_depth
if (umi) {
call rmdup_picard {
input:
name=name,
sorted_bam=sorted_bam,
output_dir=output_dir,
ref=ref
}
call fusion_calling as fusion_calling_umi {
input:
name=name,
rmdup_bam=rmdup_picard.rmdup_bam,
output_dir=output_dir,
ref=ref,
tumor_bamdst_depth=tumor_bamdst_depth
}
}
if (!umi) {
call fusion_calling as fusion_calling {
input:
name=name,
rmdup_bam=rmdup_bam,
output_dir=output_dir,
ref=ref,
tumor_bamdst_depth=tumor_bamdst_depth
}
}
output {
String fusion_vcf = "${output_dir}/fusion/${name}.fusion.vcf"
}
}