您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

178 行
4.5KB

  1. import "./tasks/fastp.wdl" as fastp
  2. import "./tasks/hisat2.wdl" as hisat2
  3. import "./tasks/samtools.wdl" as samtools
  4. import "./tasks/stringtie.wdl" as stringtie
  5. import "./tasks/fastqc.wdl" as fastqc
  6. import "./tasks/fastqscreen.wdl" as fastqscreen
  7. import "./tasks/qualimapBAMqc.wdl" as qualimapBAMqc
  8. import "./tasks/qualimapRNAseq.wdl" as qualimapRNAseq
  9. import "./tasks/multiqc.wdl" as multiqc
  10. workflow {{ project_name }} {
  11. File inputSamplesFile
  12. File idx
  13. File screen_ref_dir
  14. File fastq_screen_conf
  15. File gtf
  16. Array[Array[File]] inputSamples = read_tsv(inputSamplesFile)
  17. String fastp_docker
  18. String adapter_sequence
  19. String adapter_sequence_r2
  20. String fastp_cluster
  21. String umi_loc
  22. String idx_prefix
  23. String pen_intronlen
  24. String fastqc_cluster_config
  25. String fastqc_docker
  26. String fastqscreen_docker
  27. String fastqscreen_cluster_config
  28. String hisat2_docker
  29. String hisat2_cluster
  30. String qualimapBAMqc_docker
  31. String qualimapBAMqc_cluster_config
  32. String qualimapRNAseq_docker
  33. String qualimapRNAseq_cluster_config
  34. String samtools_docker
  35. String samtools_cluster
  36. String stringtie_docker
  37. String stringtie_cluster
  38. Int trim_front1
  39. Int trim_tail1
  40. Int max_len1
  41. Int trim_front2
  42. Int trim_tail2
  43. Int max_len2
  44. Int disable_adapter_trimming
  45. Int length_required
  46. Int umi_len
  47. Int UMI
  48. Int qualified_quality_phred
  49. Int length_required1
  50. Int disable_quality_filtering
  51. Int pen_cansplice
  52. Int pen_noncansplice
  53. Int min_intronlen
  54. Int max_intronlen
  55. Int maxins
  56. Int minins
  57. Int fastqc_disk_size
  58. Int fastqscreen_disk_size
  59. Int qualimapBAMqc_disk_size
  60. Int qualimapRNAseq_disk_size
  61. Int insert_size
  62. Int minimum_length_allowed_for_the_predicted_transcripts
  63. Int Junctions_no_spliced_reads
  64. Float minimum_isoform_abundance
  65. Float maximum_fraction_of_muliplelocationmapped_reads
  66. scatter (quartet in inputSamples){
  67. call fastp.fastp as fastp {
  68. input:
  69. sample_id= quartet[2],
  70. read1= quartet[0],
  71. read2= quartet[1],
  72. docker = fastp_docker,
  73. cluster = fastp_cluster,
  74. adapter_sequence = adapter_sequence,
  75. adapter_sequence_r2 = adapter_sequence_r2,
  76. umi_loc = umi_loc,
  77. trim_front1 = trim_front1,
  78. trim_tail1 = trim_tail1,
  79. max_len1 = max_len1,
  80. trim_front2 = trim_front2,
  81. trim_tail2 = trim_tail2,
  82. max_len2 = max_len2,
  83. disable_adapter_trimming = disable_adapter_trimming,
  84. length_required = length_required,
  85. umi_len = umi_len,
  86. UMI = UMI,
  87. qualified_quality_phred = qualified_quality_phred,
  88. length_required1 = length_required1,
  89. disable_quality_filtering = disable_quality_filtering
  90. }
  91. call fastqc.fastqc as fastqc {
  92. input:
  93. read1=fastp.Trim_R1,
  94. read2=fastp.Trim_R2
  95. }
  96. call fastqscreen.fastq_screen as fastqscreen {
  97. input:
  98. read1=fastp.Trim_R1,
  99. read2=fastp.Trim_R2,
  100. screen_ref_dir=screen_ref_dir,
  101. fastq_screen_conf=fastq_screen_conf
  102. }
  103. call hisat2.hisat2 as hisat2 {
  104. input:
  105. sample_id = quartet[2],
  106. idx = idx,
  107. idx_prefix = idx_prefix,
  108. Trim_R1 = fastp.Trim_R1,
  109. Trim_R2 = fastp.Trim_R2,
  110. docker = hisat2_docker,
  111. cluster = hisat2_cluster,
  112. pen_intronlen = pen_intronlen,
  113. pen_cansplice = pen_cansplice,
  114. pen_noncansplice = pen_noncansplice,
  115. min_intronlen = min_intronlen,
  116. max_intronlen = max_intronlen,
  117. maxins = maxins,
  118. minins = minins
  119. }
  120. call samtools.samtools as samtools {
  121. input:
  122. sample_id = quartet[2],
  123. sam = hisat2.sam,
  124. docker = samtools_docker,
  125. cluster = samtools_cluster,
  126. insert_size = insert_size
  127. }
  128. call qualimapBAMqc.qualimapBAMqc as qualimapBAMqc {
  129. input:
  130. bam = samtools.out_percent,
  131. docker = qualimapBAMqc_docker,
  132. cluster = qualimapBAMqc_cluster_config,
  133. disk_size = qualimapBAMqc_disk_size
  134. }
  135. call qualimapRNAseq.qualimapRNAseq as qualimapRNAseq {
  136. input:
  137. bam = samtools.out_percent,
  138. docker = qualimapRNAseq_docker,
  139. cluster = qualimapRNAseq_cluster_config,
  140. disk_size = qualimapRNAseq_disk_size,
  141. gtf = gtf
  142. }
  143. call stringtie.stringtie as stringtie {
  144. input:
  145. sample_id = quartet[2],
  146. gtf = gtf,
  147. bam = samtools.out_bam,
  148. docker = stringtie_docker,
  149. cluster = stringtie_cluster,
  150. minimum_length_allowed_for_the_predicted_transcripts = minimum_length_allowed_for_the_predicted_transcripts,
  151. Junctions_no_spliced_reads = Junctions_no_spliced_reads,
  152. minimum_isoform_abundance = minimum_isoform_abundance,
  153. maximum_fraction_of_muliplelocationmapped_reads = maximum_fraction_of_muliplelocationmapped_reads
  154. }
  155. }
  156. call multiqc.multiqc as multiqc {
  157. input:
  158. read1_zip = fastqc.read1_zip,
  159. read2_zip = fastqc.read2_zip,
  160. txt1 = fastqscreen.txt1,
  161. txt2 = fastqscreen.txt2,
  162. bamqc_zip = qualimapBAMqc.bamqc_zip,
  163. RNAseqqc_zip = qualimapRNAseq.rnaseq_zip
  164. }
  165. }