task msi_single { String name String bed String output_dir String rmdup_bam command <<< if [ ! -d ${output_dir}/msi ];then mkdir ${output_dir}/msi fi msisensor2 msi \ -M /dataseq/jmdna/software/msisensor2/models_hg19_GRCh37 \ -t ${output_dir}/alignment/${name}.rmdup.bam \ -e ${bed} \ -b 10 \ -o ${output_dir}/msi/${name}.msi.txt >>> output { String cnv = "${output_dir}/msi/${name}.msi.txt" } } task msi_paired { String bed String name String output_dir String tumor_rmdup_bam String normal_rmdup_bam command <<< if [ ! -d ${output_dir}/msi ];then mkdir ${output_dir}/msi fi msisensor2 msi \ -d /dataseq/jmdna/software/msisensor2/hg19.microsatellites.list \ -n ${normal_rmdup_bam} \ -t ${tumor_rmdup_bam} \ -e ${bed} \ -b 10 \ -o ${output_dir}/msi/${name}.msi.txt >>> output { String cnv = "${output_dir}/msi/${name}.msi.txt" } } workflow call_msi { String tumor String tumor_rmdup_bam String? normal String? normal_rmdup_bam String bed String output_dir # 单样本 if (!defined(normal)) { call msi_single { input: name=tumor, output_dir=output_dir, rmdup_bam=tumor_rmdup_bam, bed=bed } } # 双样本 if (defined(normal)) { call msi_paired { input: name=tumor, bed=bed, output_dir=output_dir, tumor_rmdup_bam=tumor_rmdup_bam, normal_rmdup_bam=normal_rmdup_bam } } output { String cnv = "${output_dir}/msi/${tumor}.msi.txt" } }