I have this output which is going to do bwa next which is from join operator
[DF122_SO11378_A03, DF122_SO11378, DF122_SO11378_A03.norm.merged.fq, DF122_SO11378_A03.final.gfa, DF122_SO11378_A03.final.fasta]
in this case, pair_id
is DF122_SO11378_A03
,
plate_id
is DF122_SO11378
, fq
is DF122_SO11378_A03.norm.merged.fq
,
DF122_SO11378_A03.final.gfa
is gfa
DF122_SO11378_A03.final.fasta
is fa
I have following code like this
process bwa {
input:
tuple val(pair_id), val(plate_id), path(fq), path(gfa), path(fa) from align_in
output:
path "*bam" into bam
tuple val(pair_id), val(plate_id), path ("*.csv") into metrics
"""
if [ -s $fa ]; then
bwa index $fa
bwa mem $fa $fq \
| samtools view -bh -F2048 - \
| samtools sort > ${pair_id}.bam
samtools depth -a ${pair_id}.bam > ${pair_id}.depth.csv
samtools view -c ${pair_id}.bam >${pair_id}.count.csv
else
touch ${pair_id}.depth.csv
touch ${pair_id}.count.csv
touch ${pair_id}.bam
fi
"""
}
However, now my upstream work flow changed a little, for some sample they have more than one gfa and fasta output like this
[DF122_SO11378_A04, DF122_SO11378, DF122_SO11378_A04.norm.merged.fq, [DF122_SO11378_A04.2.final.gfa, DF122_SO11378_A04.final.gfa], [DF122_SO11378_A04.2.final.fasta, DF122_SO11378_A04.final.fasta]]
in this case, pair_id
is DF122_SO11378_A04
,
plate_id
is DF122_SO11378
, fq
is DF122_SO11378_A04.norm.merged.fq
,
[DF122_SO11378_A04.2.final.gfa, DF122_SO11378_A04.final.gfa]
is gfa
,
[DF122_SO11378_A04.2.final.fasta, DF122_SO11378_A04.final.fasta]
is fa
But some samples still have one gfa and fasta as shown earlier.
How can I adapt my bwa process to handle such situations?
I am using DSL1.