pipeline/wdl/cnv.wdl

159 lines
3.8 KiB
Plaintext
Raw Normal View History

2023-12-28 09:14:58 +08:00
# cnv
2023-12-25 14:06:30 +08:00
2023-12-19 13:37:52 +08:00
task cnv_single {
String name
String output_dir
String rmdup_bam
String project
String probe
command <<<
if [ ! -d ${output_dir}/cnv ];then
mkdir ${output_dir}/cnv
fi
cnvkit.py batch ${rmdup_bam} \
-r $PUBLIC/cnvkit/${probe}gene_pool_normal_reference.cnn \
--drop-low-coverage \
--scatter \
--diagram \
--output-dir ${output_dir}/cnv \
-p 5
cnvkit.py scatter \
${output_dir}/cnv/${name}.rmdup.cnr -s ${output_dir}/cnv/${name}.rmdup.cns \
--y-max 3 --y-min -3 \
--title ${name}.cns \
-o ${output_dir}/cnv/${name}.cnv.png
>>>
output {
String cnv_cns = "${output_dir}/cnv/${name}.rmdup.cns"
}
}
task cnv_paired {
String name
String ref
String bed
String output_dir
String project
String tumor_rmdup_bam
String normal_rmdup_bam
command <<<
if [ ! -d ${output_dir}/cnv ];then
mkdir ${output_dir}/cnv
fi
cnvkit.py batch \
${tumor_rmdup_bam} \
--normal ${normal_rmdup_bam} \
--targets ${bed} \
--fasta ${ref} \
--access $PUBLIC/cnvkit/access-5k-mappable.hg19.bed \
--output-reference ${output_dir}/cnv/normal_reference.cnn \
--annotate $PUBLIC/cnvkit/refFlat.txt \
--drop-low-coverage \
--scatter \
--output-dir ${output_dir}/cnv \
-p 5
cnvkit.py scatter \
${output_dir}/cnv/${name}.rmdup.cnr -s ${output_dir}/cnv/${name}.rmdup.cns \
--y-max 3 --y-min -3 \
--title ${name}.cns \
-o ${output_dir}/cnv/${name}.cnv.png
>>>
output {
String cnv_cns = "${output_dir}/cnv/${name}.rmdup.cns"
}
}
task cnv_sum {
String cns
String name
String output_dir
String project
String cancer
command <<<
filter_cnv.pl ${cns} ${output_dir}/cnv/${name}.rmdup.cns.filter.txt ${project}
target_therapy_cnv.pl ${output_dir}/cnv/${name}.rmdup.cns.filter.txt \
${output_dir}/cnv/${name}.rmdup.cns.filter ${cancer}
>>>
output {
String cnv_filter = "${output_dir}/cnv/${name}.rmdup.cns.filter.txt"
}
}
workflow call_cnv {
Boolean run=true
String tumor
String tumor_rmdup_bam
String? normal
String? normal_rmdup_bam
String ref
String bed
String output_dir
String project
String cancer
String probe
if (run) {
# 单样本
if (!defined(normal)) {
call cnv_single {
input:
name=tumor,
output_dir=output_dir,
rmdup_bam=tumor_rmdup_bam,
project=project,
probe=probe
}
call cnv_sum as cnv_single_sum {
input:
cns=cnv_single.cnv_cns,
name=tumor,
output_dir=output_dir,
cancer=cancer,
project=project
}
}
# 双样本
if (defined(normal)) {
call cnv_paired {
input:
name=tumor,
ref=ref,
bed=bed,
output_dir=output_dir,
project=project,
tumor_rmdup_bam=tumor_rmdup_bam,
normal_rmdup_bam=normal_rmdup_bam
}
call cnv_sum as cnv_paired_sum {
input:
cns=cnv_paired.cnv_cns,
name=tumor,
output_dir=output_dir,
cancer=cancer,
project=project
}
}
}
output {
String cnv_filter = "${output_dir}/cnv/${tumor}.rmdup.cns.filter.txt"
}
}