Browse Source

更新 'tasks/CNVkit.wdl'

master
meng 2 years ago
parent
commit
36503f3e98
2 changed files with 64 additions and 77 deletions
  1. +64
    -0
      tasks/CNVkit.wdl
  2. +0
    -77
      tasks/CNVkit_test.wdl

+ 64
- 0
tasks/CNVkit.wdl View File

@@ -0,0 +1,64 @@

task cnvkit{
String sample_id
File ref_dir
String? fasta
File ref_flat
# File hrd
File tumor_bam
File tumor_bam_index
File? normal_bam
File? normal_bam_index
String docker
String cluster_config
String disk_size
String sample=basename(tumor_bam,".bam")

command <<<

set -o pipefail
set -e
nt=$(nproc)
echo ${sample}

/root/miniconda2/bin/cnvkit.py batch ${tumor_bam} \
--normal ${normal_bam} \
--method wgs \
--fasta ${ref_dir} \
--annotate ${ref_flat} -p $nt \
--drop-low-coverage \
--output-dir ${sample}.reference.cnn
/root/miniconda2/bin/cnvkit.py batch ${tumor_bam} \
-r ${sample}.reference.cnn \
--output-dir ${sample}.sampleid.cns \
-p $nt
/root/miniconda2/bin/cnvkit.py call ${sample}.sampleid.cns \
-o ${sample}.sampleid.call.cns

ls ./

tar cvf ${sample}.tar ${sample}*

>>>

runtime{
docker:docker
cluster:cluster_config
systemDisk:"cloud_ssd 40"
dataDisk:"cloud_ssd " + disk_size + " /cromwell_root/"
timeout:259200
}

output{
File out_file = "${sample}.tar"
#File cnv_bed = "${sample}.ratio_cnv.call.filter.bed"
}

}

+ 0
- 77
tasks/CNVkit_test.wdl View File

@@ -1,77 +0,0 @@

task cnvkit{
String sample_id
File ref_dir
String? fasta
File ref_flat
# File hrd
File tumor_bam
File tumor_bam_index
File? normal_bam
File? normal_bam_index
String docker
String cluster_config
String disk_size
String sample=basename(tumor_bam,".bam")

command <<<

set -o pipefail
set -e
nt=$(nproc)
echo ${sample}

/root/miniconda2/bin/cnvkit.py batch ${tumor_bam} -n ${normal_bam} -m wgs -f ${ref_dir} --annotate ${ref_flat} -p $nt

# Check noise
/root/miniconda2/bin/cnvkit.py metrics ${sample}.cnr -s ${sample}.cns > ${sample}.stats
# Derive each segment's absolute integer copy number, ploidy must be int value
PURITY=0.3
/root/miniconda2/bin/cnvkit.py segmetrics ${sample}.cnr -s ${sample}.cns --ci -o ${sample}.segmetrics.cns
/root/miniconda2/bin/cnvkit.py call ${sample}.segmetrics.cns --drop-low-coverage --filter ci -m threshold --purity $PURITY -o ${sample}.call.cns

/root/miniconda2/bin/cnvkit.py genemetrics ${sample}.cnr -t 0.2 -m 3 -o ${sample}.ratio_cnv.txt

/root/miniconda2/bin/cnvkit.py genemetrics ${sample}.cnr -s ${sample}.call.cns -t 0.2 -m 3 -o ${sample}.segment_cnv.txt


/root/miniconda2/bin/cnvkit.py scatter ${sample}.cnr -s ${sample}.call.cns -o ${sample}_scatter.pdf

/root/miniconda2/bin/cnvkit.py diagram ${sample}.cnr -s ${sample}.call.cns -o ${sample}.diagram.pdf

/root/miniconda2/bin/cnvkit.py heatmap ${sample}.cnr ${sample}.call.cns -o ${sample}.heatmap.pdf

cat ${sample}.ratio_cnv.txt | tail -n+2 | cut -f1 | sort | uniq > ratio_cnv.txt
cat ${sample}.segment_cnv.txt | tail -n+2 | cut -f1 | sort | uniq > segment_cnv.txt
comm -12 ratio_cnv.txt segment_cnv.txt > ${sample}.trusted_genes.txt

awk 'NR==FNR {a[$1]=$2;next} NR!=FNR {if(FNR == 1 || (FNR != 1 && $1 in a)) print $0}' ${sample}.trusted_genes.txt ${sample}.ratio_cnv.txt > ${sample}.ratio_cnv.trusted.txt
/root/miniconda2/bin/cnvkit.py call ${sample}.ratio_cnv.trusted.txt -m threshold -o ${sample}.ratio_cnv.call.txt
awk '{if ($6 != 2) print $0}' ${sample}.ratio_cnv.call.txt > ${sample}.ratio_cnv.call.filter.txt
cp ${sample}.ratio_cnv.call.filter.txt ${sample}.ratio_cnv.call.filter.bed

ls ./

tar cvf ${sample}.tar ${sample}*

>>>

runtime{
docker:docker
cluster:cluster_config
systemDisk:"cloud_ssd 40"
dataDisk:"cloud_ssd " + disk_size + " /cromwell_root/"
timeout:259200
}

output{
File out_file = "${sample}.tar"
File cnv_bed = "${sample}.ratio_cnv.call.filter.bed"
}

}

Loading…
Cancel
Save