|
|
@@ -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" |
|
|
|
} |
|
|
|
|
|
|
|
} |