pipeline/wdl/fusion.wdl

178 lines
5.5 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
String project
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
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
filter_fusion.pl ${tumor_bamdst_depth} \
${output_dir}/fusion/${name}.fusion.hg19_multianno.vcf \
${output_dir}/fusion/${name}.fusion.hg19_multianno.filter.txt \
${project}
filter_longindel.pl ${output_dir}/fusion/${name}.fusion.hg19_multianno.vcf \
${output_dir}/fusion/${name}.longindel.hg19_multianno.filter.txt ${project}
>>>
output {
String fusion_filter_txt = "${output_dir}/fusion/${name}.fusion.hg19_multianno.filter.txt"
String longindel_filter_txt = "${output_dir}/fusion/${name}.longindel.hg19_multianno.filter.txt"
}
}
task fusion_sum {
String name
String output_dir
String fusion_filter_txt
String longindel_filter_txt
String cancer
command <<<
target_therapy_fusion.pl ${fusion_filter_txt} ${output_dir}/fusion/${name}.fusion.hg19_multianno.filter ${cancer}
target_therapy_longindel.pl ${longindel_filter_txt} ${output_dir}/fusion/${name}.longindel.hg19_multianno.filter ${cancer}
>>>
output {
String fusion_pos = "${output_dir}/fusion/${name}.fusion.hg19_multianno.filter.pos.txt"
String longindel_pos = "${output_dir}/fusion/${name}.longindel.hg19_multianno.filter.pos.txt"
}
}
workflow call_fusion {
Boolean run=true
String name
String sorted_bam
String rmdup_bam
String output_dir
String ref
Boolean umi
String tumor_bamdst_depth
String project
String cancer
if (run) {
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,
project=project
}
call fusion_sum as fusion_sum_umi {
input:
fusion_filter_txt=fusion_calling_umi.fusion_filter_txt,
longindel_filter_txt=fusion_calling_umi.longindel_filter_txt,
name=name,
output_dir=output_dir,
cancer=cancer
}
}
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,
project=project
}
call fusion_sum as fusion_sum {
input:
fusion_filter_txt=fusion_calling.fusion_filter_txt,
longindel_filter_txt=fusion_calling.longindel_filter_txt,
name=name,
output_dir=output_dir,
cancer=cancer
}
}
}
output {
String fusion_vcf = "${output_dir}/fusion/${name}.fusion.vcf"
String fusion_pos = "${output_dir}/fusion/${name}.fusion.hg19_multianno.filter.pos.txt"
String longindel_pos = "${output_dir}/fusion/${name}.longindel.hg19_multianno.filter.pos.txt"
}
}