Automated integrated analysis software for genomics data of the cancer patients.
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

98 lines
3.7KB

  1. task CNVkit {
  2. String sample
  3. File ref_dir
  4. String fasta
  5. File ref_flat
  6. File regions
  7. File hrd
  8. File tumor_bam
  9. File tumor_bam_index
  10. File? normal_bam
  11. File? normal_bam_index
  12. String docker
  13. String cluster_config
  14. String disk_size
  15. command <<<
  16. set -o pipefail
  17. set -e
  18. nt=$(nproc)
  19. CNV_ANALYSIS_PATH=/cromwell_root/tmp/cnvkit
  20. mkdir -p $CNV_ANALYSIS_PATH
  21. cd $CNV_ANALYSIS_PATH
  22. cnvkit.py access ${ref_dir}/${fasta} -o access.bed
  23. # Prepare the target bed
  24. cnvkit.py target ${regions} --annotate ${ref_flat} --split --short-names -o my_baits.bed
  25. if [ ${normal_bam} ]; then
  26. cnvkit.py autobin ${tumor_bam} ${normal_bam} -t my_baits.bed -g access.bed
  27. else
  28. cnvkit.py autobin ${tumor_bam} -t my_baits.bed -g access.bed
  29. fi
  30. # For each sample...
  31. cnvkit.py coverage ${tumor_bam} my_baits.target.bed -o ${sample}.T.targetcoverage.cnn
  32. cnvkit.py coverage ${tumor_bam} my_baits.antitarget.bed -o ${sample}.T.antitargetcoverage.cnn
  33. if [ ${normal_bam} ]; then
  34. cnvkit.py coverage ${normal_bam} my_baits.target.bed -o ${sample}.N.targetcoverage.cnn
  35. cnvkit.py coverage ${normal_bam} my_baits.antitarget.bed -o ${sample}.N.antitargetcoverage.cnn
  36. # With paired or pooled normals
  37. cnvkit.py reference *.N.{,anti}targetcoverage.cnn --fasta ${ref_dir}/${fasta} -o reference.cnn
  38. else
  39. # With no control sample
  40. cnvkit.py reference -o reference.cnn -f ${ref_dir}/${fasta} -t my_baits.target.bed -a my_baits.antitarget.bed
  41. fi
  42. # For each tumor sample...
  43. cnvkit.py fix ${sample}.T.targetcoverage.cnn ${sample}.T.antitargetcoverage.cnn reference.cnn -o ${sample}.cnr
  44. cnvkit.py segment ${sample}.cnr -o ${sample}.cns
  45. # Check noise
  46. cnvkit.py metrics ${sample}.cnr -s ${sample}.cns > ${sample}.stats
  47. # Derive each segment's absolute integer copy number, ploidy must be int value
  48. purity=`awk -F'\t' '{print $6}' ${hrd} | sed -n '2p'`
  49. cnvkit.py call ${sample}.cns -y -m clonal --purity ${purity} -o ${sample}.call.cns
  50. # Plot the results
  51. cnvkit.py scatter ${sample}.cnr -s ${sample}.call.cns -o ${sample}.scatter.pdf
  52. cnvkit.py diagram ${sample}.cnr -s ${sample}.call.cns -o ${sample}.diagram.pdf
  53. cnvkit.py heatmap ${sample}.cnr ${sample}.call.cns -o ${sample}.heatmap.pdf
  54. # Genemetrics
  55. mkdir gainloss
  56. cnvkit.py genemetrics ${sample}.cnr -s ${sample}.call.cns -t 0 -m 0 -o ${sample}.cnv.txt
  57. # Filter genes
  58. cnvkit.py genemetrics ${sample}.cnr -t 0.2 -m 3 -o ${sample}.ratio-genes.txt
  59. cnvkit.py genemetrics ${sample}.cnr -s ${sample}.call.cns -t 0.2 -m 3 -o ${sample}.segment-genes.txt
  60. cat ${sample}.ratio-genes.txt | tail -n+2 | cut -f1 | sort | uniq > ratio-genes.txt
  61. cat ${sample}.segment-genes.txt | tail -n+2 | cut -f1 | sort | uniq > segment-genes.txt
  62. comm -12 ratio-genes.txt segment-genes.txt > trusted_cnv_genes.txt
  63. for gene in `cat trusted_cnv_genes.txt`
  64. do
  65. cnvkit.py scatter ${sample}.cnr -s ${sample}.call.cns -g $gene -o ./gainloss/${sample}.$gene.scatter.pdf
  66. done
  67. >>>
  68. runtime {
  69. docker: docker
  70. cluster: cluster_config
  71. systemDisk: "cloud_ssd 40"
  72. dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/"
  73. }
  74. output {
  75. File scatter_pdf = "${sample}.scatter.pdf"
  76. File diagram_pdf = "${sample}.diagram.pdf"
  77. File heatmap_pdf = "${sample}.heatmap.pdf"
  78. File cnr = "${sample}.cnr"
  79. File cns = "${sample}.cns"
  80. File stats = "${sample}.stats"
  81. File call_cns = "${sample}.call.cns"
  82. File genemetrics = "${sample}.cnv.txt"
  83. File gainloss_genes = "/cromwell_root/tmp/cnvkit/trusted_cnv_genes.txt"
  84. Array[File] gainloss = glob("/cromwell_root/tmp/cnvkit/gainloss/*")
  85. }
  86. }