task cnv_single { String name String output_dir String rmdup_bam String project command <<< if [ ! -d ${output_dir}/cnv ];then mkdir ${output_dir}/cnv fi cnvkit.py batch ${rmdup_bam} \ -r $PUBLIC/cnvkit/160gene_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 = "${output_dir}/cnv/${name}.rmdup.cns.txt" } } 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 = "${output_dir}/cnv/${name}.rmdup.cns.txt" } } 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 target_therapy_cnv.pl ${output_dir}/cnv/${name}.rmdup.cns.filter.txt \ ${output_dir}/cnv/${name}.rmdup.cns.filter ${project} ${cancer} >>> output { String cnv = "${output_dir}/cnv/${name}.rmdup.cns.filter.txt" } } workflow call_cnv { String tumor String tumor_rmdup_bam String? normal String? normal_rmdup_bam String ref String bed String output_dir String project String cancer # 单样本 if (!defined(normal)) { call cnv_single { input: name=tumor, output_dir=output_dir, rmdup_bam=tumor_rmdup_bam, project=project } call cnv_sum as cnv_single_sum { input: cns=cnv_single.cnv, 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_single.cnv, name=tumor, output_dir=output_dir, cancer=cancer, project=project } } output { String cnv = "${output_dir}/cnv/${tumor}.rmdup.cns.filter.txt" } }