168 lines
4.5 KiB
Plaintext
168 lines
4.5 KiB
Plaintext
#alignment
|
|
|
|
task bwa {
|
|
String name
|
|
String read1
|
|
String read2
|
|
String output_dir
|
|
String ref
|
|
|
|
command <<<
|
|
if [ ! -d ${output_dir}/alignment ];then
|
|
mkdir ${output_dir}/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 ${output_dir}/alignment/${name}.sorted.bam
|
|
samtools index ${output_dir}/alignment/${name}.sorted.bam
|
|
|
|
>>>
|
|
|
|
output {
|
|
String sorted_bam = "${output_dir}/alignment/${name}.sorted.bam"
|
|
}
|
|
}
|
|
|
|
#remove PCR duplicates
|
|
|
|
task markduplicates_genecore {
|
|
String name
|
|
String ref
|
|
String sorted_bam
|
|
String output_dir
|
|
|
|
command <<<
|
|
if [ ! -d ${output_dir}/alignment ];then
|
|
mkdir ${output_dir}/alignment
|
|
fi
|
|
|
|
gencore -i ${sorted_bam} \
|
|
-o ${output_dir}/alignment/${name}.rmdup.bam \
|
|
-r ${ref} \
|
|
-u UMI \
|
|
-j ${output_dir}/alignment/${name}_rmdup.json \
|
|
-h ${output_dir}/alignment/${name}_rmdup.html
|
|
|
|
samtools index ${output_dir}/alignment/${name}.rmdup.bam
|
|
>>>
|
|
|
|
output {
|
|
String rmdup_bam = "${output_dir}/alignment/${name}.rmdup.bam"
|
|
}
|
|
}
|
|
|
|
task markduplicates_picard {
|
|
String name
|
|
String ref
|
|
String sorted_bam
|
|
String output_dir
|
|
|
|
command <<<
|
|
if [ ! -d ${output_dir}/alignment ];then
|
|
mkdir ${output_dir}/alignment
|
|
fi
|
|
|
|
java -XX:+UseParallelGC -XX:ParallelGCThreads=2 -Xmx12G -jar $PICARD MarkDuplicates \
|
|
I=${sorted_bam} \
|
|
O=${output_dir}/alignment/${name}.rmdup.bam \
|
|
CREATE_INDEX=true \
|
|
M=${output_dir}/alignment/${name}.rmdup.metrics.txt \
|
|
R=${ref}
|
|
|
|
>>>
|
|
|
|
output {
|
|
String rmdup_bam = "${output_dir}/alignment/${name}.rmdup.bam"
|
|
}
|
|
}
|
|
|
|
# generater mpileup file
|
|
|
|
task generater_mpileup {
|
|
String name
|
|
String rmdupBam
|
|
String ref
|
|
String bed
|
|
String output_dir
|
|
|
|
command <<<
|
|
|
|
samtools mpileup -Bq 20 -Q 20 -f ${ref} -l ${bed} ${rmdupBam} -o ${output_dir}/alignment/${name}.pileup
|
|
|
|
>>>
|
|
|
|
output {
|
|
String pileup = "${output_dir}/alignment/${name}.pileup"
|
|
}
|
|
}
|
|
|
|
workflow alignment {
|
|
|
|
String tumor
|
|
String tumor_r1
|
|
String tumor_r2
|
|
|
|
String? normal
|
|
String? normal_r1
|
|
String? normal_r2
|
|
|
|
Boolean umi
|
|
|
|
String ref
|
|
String bed
|
|
String output_dir
|
|
|
|
scatter(name in [tumor, normal]) {
|
|
if (defined(name)) {
|
|
call bwa {
|
|
input:
|
|
name=name,
|
|
ref=ref,
|
|
output_dir=output_dir,
|
|
read1=if name==tumor then tumor_r1 else normal_r1,
|
|
read2=if name==tumor then tumor_r2 else normal_r2
|
|
|
|
}
|
|
if (name==tumor) {
|
|
if (umi) {
|
|
call markduplicates_genecore as tumor_markduplicates_genecore {
|
|
input:
|
|
name=name,
|
|
ref=ref,
|
|
output_dir=output_dir,
|
|
sorted_bam=bwa.sorted_bam,
|
|
}
|
|
}
|
|
if (!umi) {
|
|
call markduplicates_picard as tumor_markduplicates_picard {
|
|
input:
|
|
name=name,
|
|
ref=ref,
|
|
output_dir=output_dir,
|
|
sorted_bam=bwa.sorted_bam,
|
|
}
|
|
}
|
|
}
|
|
|
|
if (name==select_first([normal, 'None'])) {
|
|
call markduplicates_picard as normal_markduplicates_picard {
|
|
input:
|
|
name=name,
|
|
ref=ref,
|
|
output_dir=output_dir,
|
|
sorted_bam=bwa.sorted_bam,
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
output {
|
|
String tumor_sorted_bam = "${output_dir}/alignment/${tumor}.sorted.bam"
|
|
String tumor_rmdup_bam = "${output_dir}/alignment/${tumor}.rmdup.bam"
|
|
String tumor_pileup = "${output_dir}/alignment/${tumor}.pileup"
|
|
String normal_sorted_bam = "${output_dir}/alignment/${normal}.sorted.bam"
|
|
String normal_rmdup_bam = "${output_dir}/alignment/${normal}.rmdup.bam"
|
|
String normal_pileup = "${output_dir}/alignment/${normal}.pileup"
|
|
}
|
|
} |