124 lines
3.2 KiB
Plaintext
124 lines
3.2 KiB
Plaintext
#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"
|
|
}
|
|
} |