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 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 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_txt = "${output_dir}/fusion/${name}.fusion.hg19_multianno.filter.txt" String longvcf = "${output_dir}/fusion/${name}.longindel.hg19_multianno.vcf" } } task fusion_sum { String name String output_dir String vcf_txt String longvcf String project String cancer command <<< target_therapy_fusion.pl \ ${vcf_txt} \ ${longvcf} \ ${output_dir}/fusion/${name}.fusion.hg19_multianno.filter \ ${output_dir}/fusion/${name}.longindel.hg19_multianno.longindel.pos.txt ${project} ${cancer} >>> output { String fusion = "${output_dir}/fusion/${name}.fusion.hg19_multianno.filter.txt" } } workflow call_fusion { String name String sorted_bam String rmdup_bam String output_dir String ref Boolean umi String tumor_bamdst_depth String project String cancer 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 } call fusion_sum as fusion_sum { input: vcf_txt=fusion_calling.vcf_txt, longvcf=fusion_calling.longvcf, name=name, output_dir=output_dir, cancer=cancer, project=project } } output { String fusion_vcf = "${output_dir}/fusion/${name}.fusion.vcf" } }