1- include { GATK4_MERGEVCFS as MERGE_MANTA_DIPLOID } from ' ../../../modules/nf-core/gatk4/mergevcfs/main'
2- include { GATK4_MERGEVCFS as MERGE_MANTA_SMALL_INDELS } from ' ../../../modules/nf-core/gatk4/mergevcfs/main'
3- include { GATK4_MERGEVCFS as MERGE_MANTA_SOMATIC } from ' ../../../modules/nf-core/gatk4/mergevcfs/main'
4- include { GATK4_MERGEVCFS as MERGE_MANTA_SV } from ' ../../../modules/nf-core/gatk4/mergevcfs/main'
51include { MANTA_SOMATIC } from ' ../../../modules/nf-core/manta/somatic/main'
62
73workflow BAM_VARIANT_CALLING_SOMATIC_MANTA {
@@ -10,86 +6,31 @@ workflow BAM_VARIANT_CALLING_SOMATIC_MANTA {
106 dict // channel: [optional] [ meta, dict ]
117 fasta // channel: [mandatory] [ fasta ]
128 fasta_fai // channel: [mandatory] [ fasta_fai ]
13- intervals // channel: [mandatory] [ interval.bed.gz, interval.bed.gz.tbi, num_intervals ] or [ [], [], 0 ] if no intervals
9+ intervals // channel: [mandatory] [ interval.bed.gz, interval.bed.gz.tbi ] or [ [], [] ] if no intervals
1410
1511 main :
1612 versions = Channel . empty()
1713
18- // Combine cram and intervals for spread and gather strategy
19- cram_intervals = cram. combine(intervals)
20- // Move num_intervals to meta map
21- .map{ meta, cram1, crai1, cram2, crai2, intervals, intervals_index, num_intervals -> [ meta + [ num_intervals :num_intervals ], cram1, crai1, cram2, crai2, intervals, intervals_index ] }
14+ // Combine cram and intervals, account for 0 intervals
15+ cram_intervals = cram. combine(intervals). map{ it ->
16+ bed_gz = it . size() > 5 ? it[ 5 ] : []
17+ bed_tbi = it . size() > 5 ? it[ 6 ] : []
2218
23- MANTA_SOMATIC (cram_intervals, fasta, fasta_fai)
24-
25- // Figuring out if there is one or more vcf(s) from the same sample
26- candidate_small_indels_vcf = MANTA_SOMATIC . out. candidate_small_indels_vcf. branch{
27- // Use meta.num_intervals to asses number of intervals
28- intervals : it[0 ]. num_intervals > 1
29- no_intervals : it[0 ]. num_intervals <= 1
30- }
31-
32- // Figuring out if there is one or more vcf(s) from the same sample
33- candidate_small_indels_vcf_tbi = MANTA_SOMATIC . out. candidate_small_indels_vcf_tbi. branch{
34- // Use meta.num_intervals to asses number of intervals
35- intervals : it[0 ]. num_intervals > 1
36- no_intervals : it[0 ]. num_intervals <= 1
19+ [it[0 ], it[1 ], it[2 ], it[3 ], it[4 ], bed_gz, bed_tbi]
3720 }
3821
39- // Figuring out if there is one or more vcf(s) from the same sample
40- candidate_sv_vcf = MANTA_SOMATIC . out. candidate_sv_vcf. branch{
41- // Use meta.num_intervals to asses number of intervals
42- intervals : it[0 ]. num_intervals > 1
43- no_intervals : it[0 ]. num_intervals <= 1
44- }
45-
46- // Figuring out if there is one or more vcf(s) from the same sample
47- diploid_sv_vcf = MANTA_SOMATIC . out. diploid_sv_vcf. branch{
48- // Use meta.num_intervals to asses number of intervals
49- intervals : it[0 ]. num_intervals > 1
50- no_intervals : it[0 ]. num_intervals <= 1
51- }
52-
53- // Figuring out if there is one or more vcf(s) from the same sample
54- somatic_sv_vcf = MANTA_SOMATIC . out. somatic_sv_vcf. branch{
55- // Use meta.num_intervals to asses number of intervals
56- intervals : it[0 ]. num_intervals > 1
57- no_intervals : it[0 ]. num_intervals <= 1
58- }
59-
60- // Only when using intervals
61- candidate_small_indels_vcf_to_merge = candidate_small_indels_vcf. intervals. map{ meta, vcf -> [ groupKey(meta, meta. num_intervals), vcf ]}. groupTuple()
62- candidate_sv_vcf_to_merge = candidate_sv_vcf. intervals. map{ meta, vcf -> [ groupKey(meta, meta. num_intervals), vcf ]}. groupTuple()
63- diploid_sv_vcf_to_merge = diploid_sv_vcf. intervals. map{ meta, vcf -> [ groupKey(meta, meta. num_intervals), vcf ]}. groupTuple()
64- somatic_sv_vcf_to_merge = somatic_sv_vcf. intervals. map{ meta, vcf -> [ groupKey(meta, meta. num_intervals), vcf ]}. groupTuple()
22+ MANTA_SOMATIC (cram_intervals, fasta, fasta_fai)
6523
66- MERGE_MANTA_SMALL_INDELS (candidate_small_indels_vcf_to_merge, dict)
67- MERGE_MANTA_SV (candidate_sv_vcf_to_merge, dict)
68- MERGE_MANTA_DIPLOID (diploid_sv_vcf_to_merge, dict)
69- MERGE_MANTA_SOMATIC (somatic_sv_vcf_to_merge, dict)
24+ candidate_small_indels_vcf = MANTA_SOMATIC . out. candidate_small_indels_vcf
25+ candidate_small_indels_vcf_tbi = MANTA_SOMATIC . out. candidate_small_indels_vcf_tbi
26+ candidate_sv_vcf = MANTA_SOMATIC . out. candidate_sv_vcf
27+ diploid_sv_vcf = MANTA_SOMATIC . out. diploid_sv_vcf
28+ somatic_sv_vcf = MANTA_SOMATIC . out. somatic_sv_vcf
7029
71- // Mix intervals and no_intervals channels together
7230 // Only diploid and somatic SV should get annotated
73- vcf = Channel . empty(). mix(MERGE_MANTA_DIPLOID . out. vcf, MERGE_MANTA_SOMATIC . out. vcf, diploid_sv_vcf. no_intervals, somatic_sv_vcf. no_intervals)
74- // add variantcaller to meta map and remove no longer necessary field: num_intervals
75- .map{ meta, vcf -> [ meta - meta. subMap(' num_intervals' ) + [ variantcaller :' manta' ], vcf ] }
76-
77- // Mix intervals and no_intervals channels together
78- // Only joining reads for StrelkaBP
79- candidate_small_indels_vcf = Channel . empty(). mix(MERGE_MANTA_SMALL_INDELS . out. vcf, candidate_small_indels_vcf. no_intervals)
80- // remove no longer necessary field: num_intervals
81- .map{ meta, vcf -> [ meta - meta. subMap(' num_intervals' ), vcf ] }
82-
83- // Mix intervals and no_intervals channels together
84- // Only joining reads for StrelkaBP
85- candidate_small_indels_vcf_tbi = Channel . empty(). mix(MERGE_MANTA_SMALL_INDELS . out. tbi, candidate_small_indels_vcf_tbi. no_intervals)
86- // remove no longer necessary field: num_intervals
87- .map{ meta, tbi -> [ meta - meta. subMap(' num_intervals' ), tbi ] }
31+ // add variantcaller to meta map
32+ vcf = Channel . empty(). mix(diploid_sv_vcf, somatic_sv_vcf). map{ meta, vcf -> [ meta + [ variantcaller :' manta' ], vcf ] }
8833
89- versions = versions. mix(MERGE_MANTA_SV . out. versions)
90- versions = versions. mix(MERGE_MANTA_SMALL_INDELS . out. versions)
91- versions = versions. mix(MERGE_MANTA_DIPLOID . out. versions)
92- versions = versions. mix(MERGE_MANTA_SOMATIC . out. versions)
9334 versions = versions. mix(MANTA_SOMATIC . out. versions)
9435
9536 emit :
0 commit comments