Automated integrated analysis software for genomics data of the cancer patients.
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

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. }