Guest User

Untitled

a guest
Apr 24th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. REF="/path/to/human_g1k_v37.fasta"
  2.  
  3. inputBams = Channel.from(
  4. "f1.bam",
  5. "f2.bam").
  6. map{file(it)}.
  7. flatten()
  8.  
  9.  
  10. captures=Channel.fromPath("/path/to/capture.bed")
  11.  
  12. process cleanbed {
  13. tag "clean ${bed}"
  14. echo true
  15.  
  16. input:
  17. file inputbed from captures
  18. output:
  19. file("clean.bed") into cleanbed
  20. script:
  21.  
  22. """
  23. cat "${inputbed}" | grep -v -E '^(browser|track)' |\\
  24. cut -f 1,2,3 | sed 's/^chr//' |\
  25. LC_ALL=C sort -t \$'\\t' -k1,1 -k2,2n |\\
  26. uniq |\\
  27. bedtools slop -b 500 -g "${REF}.fai" |\\
  28. bedtools merge -d 500 -i - > clean.bed
  29. echo -n "Number of lines in bed: "
  30. wc -l clean.bed
  31. """
  32. }
  33.  
  34. process bamList {
  35. tag "making list from ${bamVector.size()} "
  36. echo true
  37. input:
  38. val bamVector from inputBams.flatten().toList()
  39. output:
  40. file("bam.list") into bam_list
  41. script:
  42. """
  43. cat << __EOF__ > bam.list
  44. ${bamVector.join("\n")}
  45. __EOF__
  46.  
  47. grep -m1 '.bam\$' bam.list
  48. """
  49. }
  50.  
  51.  
  52. cleanbed.
  53. splitText().
  54. map{L->L.trim().split("\t").toList()}.
  55. set{ bed_lines}
  56.  
  57.  
  58. process mpileupBam {
  59. tag "call mpileup for ${chrom}:${start}-${end} and ${bam_list}"
  60. echo true
  61.  
  62. input:
  63. set chrom,start,end,bam_list from bed_lines.combine(bam_list)
  64. output:
  65. set chrom,start,end,file("${chrom}_${start}_${end}.vcf.gz") into called_vcfs
  66. script:
  67.  
  68. """
  69. bcftools mpileup -Ou -f "${REF}" --bam-list "${bam_list}" --region "${chrom}:${start}-${end}" |\\
  70. bcftools call --ploidy GRCh37 -vmO z -o "${chrom}_${start}_${end}.vcf.gz"
  71. """
  72. }
  73.  
  74. process vcfList {
  75. tag "making list from ${vcfVector.size()} "
  76. echo true
  77. input:
  78. val vcfVector from called_vcfs.map{L->L[0]+","+L[1]+","+L[3]}.flatten().toList()
  79. output:
  80. file("vcf.list") into vcf_list
  81. script:
  82. """
  83. cat << __EOF__ | sort -t, -k1,1 > tmp2.txt
  84. ${vcfVector.join("\n")}
  85. __EOF__
  86.  
  87. awk -F '\\t' '{printf("%s,%d\\n",\$1,NR);}' "${REF}.fai" | sort -t, -k1,1 > tmp1.txt
  88.  
  89. join -t , -1 1 -2 1 tmp1.txt tmp2.txt | sort -t, -k2,2n -k3,3n | cut -d , -f 4 > vcf.list
  90. rm -f tmp1.txt tmp2.txt
  91. grep -m1 '.vcf.gz\$' vcf.list
  92. """
  93. }
  94.  
  95. process mergeVcf {
  96. tag "making list from ${vcflist} "
  97. echo true
  98.  
  99. input:
  100. file vcflist from vcf_list
  101. output:
  102. file("merged.vcf.gz") into merged_vcf
  103. script:
  104. """
  105. java \\
  106. -jar /path/to/picard.jar GatherVcfs \\
  107. I=${vcflist} O=merged.vcf.gz
  108. """
  109. }
Add Comment
Please, Sign In to add comment