Skip to content

Commit a1c7725

Browse files
authored
Merge pull request #761 from nf-core/samtools-filter-flakiness-fix
Replace samtools -o with redirect for stability in CI test
2 parents 36407f7 + 2f0a73d commit a1c7725

2 files changed

Lines changed: 60 additions & 59 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
2020
- [#750](https://github.com/nf-core/eager/issues/750) - Fixed piped commands requesting the same number of CPUs at each command step
2121
- [#757](https://github.com/nf-core/eager/issues/757) - Removed confusing 'Data Type' variable from MultiQC workflow summary (not consistent with TSV input)
2222
- [#759](https://github.com/nf-core/eager/pull/759) - Fixed malformed software scraping regex that resulted in N/A in MultiQC report
23+
- [#761](https://github.com/nf-core/eager/pull/759) - Fixed issues related to instability of samtools filtering related CI tests
2324

2425
### `Dependencies`
2526

main.nf

Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,87 +1540,87 @@ process samtools_filter {
15401540
tuple samplename, libraryid, lane, seqtype, organism, strandedness, udg, file("*.unmapped.bam") optional true
15411541

15421542
// Using shell block rather than script because we are playing with awk
1543-
shell:
1543+
script:
15441544

1545-
size = !{params.large_ref} ? '-c' : ''
1545+
def size = params.large_ref ? '-c' : ''
15461546

15471547
// Unmapped/MAPQ Filtering WITHOUT min-length filtering
15481548
if ( "${params.bam_unmapped_type}" == "keep" && params.bam_filter_minreadlength == 0 ) {
1549-
'''
1550-
samtools view -h -b !{bam} -@ !{task.cpus} -q !{params.bam_mapping_quality_threshold} -o !{libraryid}.filtered.bam
1551-
samtools index !{libraryid}.filtered.bam !{size}
1552-
'''
1549+
"""
1550+
samtools view -h ${bam} -@ ${task.cpus} -q ${params.bam_mapping_quality_threshold} -b > ${libraryid}.filtered.bam
1551+
samtools index ${libraryid}.filtered.bam ${size}
1552+
"""
15531553
} else if ( "${params.bam_unmapped_type}" == "discard" && params.bam_filter_minreadlength == 0 ){
1554-
'''
1555-
samtools view -h -b !{bam} -@ !{task.cpus} -F4 -q !{params.bam_mapping_quality_threshold} -o !{libraryid}.filtered.bam
1556-
samtools index !{libraryid}.filtered.bam !{size}
1557-
'''
1554+
"""
1555+
samtools view -h ${bam} -@ ${task.cpus} -F4 -q ${params.bam_mapping_quality_threshold} -b > ${libraryid}.filtered.bam
1556+
samtools index ${libraryid}.filtered.bam ${size}
1557+
"""
15581558
} else if ( "${params.bam_unmapped_type}" == "bam" && params.bam_filter_minreadlength == 0 ){
1559-
'''
1560-
samtools view -h !{bam} -@ !{task.cpus} -f4 -o !{libraryid}.unmapped.bam
1561-
samtools view -h !{bam} -@ !{task.cpus} -F4 -q !{params.bam_mapping_quality_threshold} -o !{libraryid}.filtered.bam
1562-
samtools index !{libraryid}.filtered.bam !{size}
1563-
'''
1559+
"""
1560+
samtools view -h ${bam} -@ ${task.cpus} -f4 -b > ${libraryid}.unmapped.bam
1561+
samtools view -h ${bam} -@ ${task.cpus} -F4 -q ${params.bam_mapping_quality_threshold} -b > ${libraryid}.filtered.bam
1562+
samtools index ${libraryid}.filtered.bam ${size}
1563+
"""
15641564
} else if ( "${params.bam_unmapped_type}" == "fastq" && params.bam_filter_minreadlength == 0 ){
1565-
'''
1566-
samtools view -h !{bam} -@ !{task.cpus} -f4 -o !{libraryid}.unmapped.bam
1567-
samtools view -h !{bam} -@ !{task.cpus} -F4 -q !{params.bam_mapping_quality_threshold} -o !{libraryid}.filtered.bam
1568-
samtools index !{libraryid}.filtered.bam !{size}
1565+
"""
1566+
samtools view -h ${bam} -@ ${task.cpus} -f4 -b > ${libraryid}.unmapped.bam
1567+
samtools view -h ${bam} -@ ${task.cpus} -F4 -q ${params.bam_mapping_quality_threshold} -b > ${libraryid}.filtered.bam
1568+
samtools index ${libraryid}.filtered.bam ${size}
15691569
15701570
## FASTQ
1571-
samtools fastq -tn !{libraryid}.unmapped.bam | pigz -p !{task.cpus - 1} > !{libraryid}.unmapped.fastq.gz
1572-
rm !{libraryid}.unmapped.bam
1573-
'''
1571+
samtools fastq -tn ${libraryid}.unmapped.bam | pigz -p ${task.cpus - 1} > ${libraryid}.unmapped.fastq.gz
1572+
rm ${libraryid}.unmapped.bam
1573+
"""
15741574
} else if ( "${params.bam_unmapped_type}" == "both" && params.bam_filter_minreadlength == 0 ){
1575-
'''
1576-
samtools view -h !{bam} -@ !{task.cpus} -f4 -o !{libraryid}.unmapped.bam
1577-
samtools view -h !{bam} -@ !{task.cpus} -F4 -q !{params.bam_mapping_quality_threshold} -o !{libraryid}.filtered.bam
1578-
samtools index !{libraryid}.filtered.bam !{size}
1575+
"""
1576+
samtools view -h ${bam} -@ ${task.cpus} -f4 -b > ${libraryid}.unmapped.bam
1577+
samtools view -h ${bam} -@ ${task.cpus} -F4 -q ${params.bam_mapping_quality_threshold} -b > ${libraryid}.filtered.bam
1578+
samtools index ${libraryid}.filtered.bam ${size}
15791579
15801580
## FASTQ
1581-
samtools fastq -tn !{libraryid}.unmapped.bam | pigz -p !{task.cpus -1} > !{libraryid}.unmapped.fastq.gz
1582-
'''
1581+
samtools fastq -tn ${libraryid}.unmapped.bam | pigz -p ${task.cpus -1} > ${libraryid}.unmapped.fastq.gz
1582+
"""
15831583
// Unmapped/MAPQ Filtering WITH min-length filtering
15841584
} else if ( "${params.bam_unmapped_type}" == "keep" && params.bam_filter_minreadlength != 0 ) {
1585-
'''
1586-
samtools view -h -b !{bam} -@ !{task.cpus} -q !{params.bam_mapping_quality_threshold} -o tmp_mapped.bam
1587-
filter_bam_fragment_length.py -a -l !{params.bam_filter_minreadlength} -o !{libraryid} tmp_mapped.bam
1588-
samtools index !{libraryid}.filtered.bam !{size}
1589-
'''
1585+
"""
1586+
samtools view -h ${bam} -@ ${task.cpus} -q ${params.bam_mapping_quality_threshold} -b > tmp_mapped.bam
1587+
filter_bam_fragment_length.py -a -l ${params.bam_filter_minreadlength} -o ${libraryid} tmp_mapped.bam
1588+
samtools index ${libraryid}.filtered.bam ${size}
1589+
"""
15901590
} else if ( "${params.bam_unmapped_type}" == "discard" && params.bam_filter_minreadlength != 0 ){
1591-
'''
1592-
samtools view -h -b !{bam} -@ !{task.cpus} -F4 -q !{params.bam_mapping_quality_threshold} -o tmp_mapped.bam
1593-
filter_bam_fragment_length.py -a -l !{params.bam_filter_minreadlength} -o !{libraryid} tmp_mapped.bam
1594-
samtools index !{libraryid}.filtered.bam !{size}
1595-
'''
1591+
"""
1592+
samtools view -h ${bam} -@ ${task.cpus} -F4 -q ${params.bam_mapping_quality_threshold} -b > tmp_mapped.bam
1593+
filter_bam_fragment_length.py -a -l ${params.bam_filter_minreadlength} -o ${libraryid} tmp_mapped.bam
1594+
samtools index ${libraryid}.filtered.bam ${size}
1595+
"""
15961596
} else if ( "${params.bam_unmapped_type}" == "bam" && params.bam_filter_minreadlength != 0 ){
1597-
'''
1598-
samtools view -h !{bam} -@ !{task.cpus} -f4 -o !{libraryid}.unmapped.bam
1599-
samtools view -h !{bam} -@ !{task.cpus} -F4 -q !{params.bam_mapping_quality_threshold} -o tmp_mapped.bam
1600-
filter_bam_fragment_length.py -a -l !{params.bam_filter_minreadlength} -o !{libraryid} tmp_mapped.bam
1601-
samtools index !{libraryid}.filtered.bam !{size}
1602-
'''
1597+
"""
1598+
samtools view -h ${bam} -@ ${task.cpus} -f4 -b > ${libraryid}.unmapped.bam
1599+
samtools view -h ${bam} -@ ${task.cpus} -F4 -q ${params.bam_mapping_quality_threshold} -b > tmp_mapped.bam
1600+
filter_bam_fragment_length.py -a -l ${params.bam_filter_minreadlength} -o ${libraryid} tmp_mapped.bam
1601+
samtools index ${libraryid}.filtered.bam ${size}
1602+
"""
16031603
} else if ( "${params.bam_unmapped_type}" == "fastq" && params.bam_filter_minreadlength != 0 ){
1604-
'''
1605-
samtools view -h !{bam} -@ !{task.cpus} -f4 -o !{libraryid}.unmapped.bam
1606-
samtools view -h !{bam} -@ !{task.cpus} -F4 -q !{params.bam_mapping_quality_threshold} -o tmp_mapped.bam
1607-
filter_bam_fragment_length.py -a -l !{params.bam_filter_minreadlength} -o !{libraryid} tmp_mapped.bam
1608-
samtools index !{libraryid}.filtered.bam !{size}
1604+
"""
1605+
samtools view -h ${bam} -@ ${task.cpus} -f4 -b > ${libraryid}.unmapped.bam
1606+
samtools view -h ${bam} -@ ${task.cpus} -F4 -q ${params.bam_mapping_quality_threshold} -b > tmp_mapped.bam
1607+
filter_bam_fragment_length.py -a -l ${params.bam_filter_minreadlength} -o ${libraryid} tmp_mapped.bam
1608+
samtools index ${libraryid}.filtered.bam ${size}
16091609
16101610
## FASTQ
1611-
samtools fastq -tn !{libraryid}.unmapped.bam | pigz -p !{task.cpus - 1} > !{libraryid}.unmapped.fastq.gz
1612-
rm !{libraryid}.unmapped.bam
1613-
'''
1611+
samtools fastq -tn ${libraryid}.unmapped.bam | pigz -p ${task.cpus - 1} > ${libraryid}.unmapped.fastq.gz
1612+
rm ${libraryid}.unmapped.bam
1613+
"""
16141614
} else if ( "${params.bam_unmapped_type}" == "both" && params.bam_filter_minreadlength != 0 ){
1615-
'''
1616-
samtools view -h !{bam} -@ !{task.cpus} -f4 -o !{libraryid}.unmapped.bam
1617-
samtools view -h !{bam} -@ !{task.cpus} -F4 -q !{params.bam_mapping_quality_threshold} -o tmp_mapped.bam
1618-
filter_bam_fragment_length.py -a -l !{params.bam_filter_minreadlength} -o !{libraryid} tmp_mapped.bam
1619-
samtools index !{libraryid}.filtered.bam !{size}
1615+
"""
1616+
samtools view -h ${bam} -@ ${task.cpus} -f4 -b > ${libraryid}.unmapped.bam
1617+
samtools view -h ${bam} -@ ${task.cpus} -F4 -q ${params.bam_mapping_quality_threshold} -b > tmp_mapped.bam
1618+
filter_bam_fragment_length.py -a -l ${params.bam_filter_minreadlength} -o ${libraryid} tmp_mapped.bam
1619+
samtools index ${libraryid}.filtered.bam ${size}
16201620
16211621
## FASTQ
1622-
samtools fastq -tn !{libraryid}.unmapped.bam | pigz -p !{task.cpus} > !{libraryid}.unmapped.fastq.gz
1623-
'''
1622+
samtools fastq -tn ${libraryid}.unmapped.bam | pigz -p ${task.cpus} > ${libraryid}.unmapped.fastq.gz
1623+
"""
16241624
}
16251625
}
16261626

0 commit comments

Comments
 (0)