Skip to content

Commit a2f2adb

Browse files
authored
Merge pull request #48 from GoekeLab/devel
v0.10.3: fastq preprocessing fixes (#47)
2 parents 1164d31 + 1097a13 commit a2f2adb

4 files changed

Lines changed: 19 additions & 8 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@ This file contains all notable changes to Bambu-Pipe.
44

55
---
66

7+
## [v0.10.3] - 2026-10-01
8+
9+
### Changed
10+
- Increased the minimum adapter overlap in the `PREPROCESS_FASTQ` adapter re-search from the cutadapt default (3 bp) to 10 bp, reducing the number of valid reads discarded due to short chance matches at read ends
11+
12+
### Fixed
13+
- Corrected the 10x3v3 and 10x3v4 end adapter (`rev_primer_f`/`rev_primer_r` in `adapter_seq_config.csv`) to `CCCATGTACTCTGCGTTGATACCACTGCTT`, matching 10x3v2 and Visium; the previous sequence does not occur in these reads, so the adapter was rarely trimmed
14+
- Resolved an edge case where `PREPROCESS_FASTQ` failed if the input FASTQ filename had the same length as the barcode (16) or UMI (10/12) pattern; the unquoted `?` wildcards in the flexiplex pattern were expanded by the shell to match the filename, which was not intended
15+
716
## [v0.10.2] - 2026-09-23
817

918
### Fixed

‎assets/10x_config/adapter_seq_config.csv‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
technology,fwd_primer_f,fwd_primer_r,rev_primer_f,rev_primer_r,TSO_f,TSO_r
22
10x3v2,CTACACGACGCTCTTCCGATCT,AGATCGGAAGAGCGTCGTGTAG,CCCATGTACTCTGCGTTGATACCACTGCTT,AAGCAGTGGTATCAACGCAGAGTACATGGG,,
3-
10x3v3,CTACACGACGCTCTTCCGATCT,AGATCGGAAGAGCGTCGTGTAG,CCCCTCTGCGTTGATACCACTGCTT,AAGCAGTGGTATCAACGCAGAGGGG,,
4-
10x3v4,CTACACGACGCTCTTCCGATCT,AGATCGGAAGAGCGTCGTGTAG,CCCCTCTGCGTTGATACCACTGCTT,AAGCAGTGGTATCAACGCAGAGGGG,,
3+
10x3v3,CTACACGACGCTCTTCCGATCT,AGATCGGAAGAGCGTCGTGTAG,CCCATGTACTCTGCGTTGATACCACTGCTT,AAGCAGTGGTATCAACGCAGAGTACATGGG,,
4+
10x3v4,CTACACGACGCTCTTCCGATCT,AGATCGGAAGAGCGTCGTGTAG,CCCATGTACTCTGCGTTGATACCACTGCTT,AAGCAGTGGTATCAACGCAGAGTACATGGG,,
55
10x5v2,CTACACGACGCTCTTCCGATCT,AGATCGGAAGAGCGTCGTGTAG,GTACTCTGCGTTGATACCACTGCTT,AAGCAGTGGTATCAACGCAGAGTAC,TTTCTTATATGGG,CCCATATAAGAAA
66
10x5v3,CTACACGACGCTCTTCCGATCT,AGATCGGAAGAGCGTCGTGTAG,GTACTCTGCGTTGATACCACTGCTT,AAGCAGTGGTATCAACGCAGAGTAC,TTTCTTATATGGG,CCCATATAAGAAA
77
visium-v1,CTACACGACGCTCTTCCGATCT,AGATCGGAAGAGCGTCGTGTAG,CCCATGTACTCTGCGTTGATACCACTGCTT,AAGCAGTGGTATCAACGCAGAGTACATGGG,,

‎modules/preprocess_fastq.nf‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,23 +64,24 @@ process PREPROCESS_FASTQ {
6464
flexiplex_f=$params.flexiplex_f_3prime
6565
fi
6666
67-
flexiplex -p $task.cpus -k \$barcode_list \$flank_seq -f \$flexiplex_f -e $params.flexiplex_e
67+
flexiplex -p $task.cpus -k \$barcode_list "\${flank_seq[@]}" -f \$flexiplex_f -e $params.flexiplex_e
6868
}
6969
7070
# Trims reverse primer with cutadapt
7171
cutadapt_trim() {
7272
cutadapt -a \$rev_primer_f --cores $task.cpus -
7373
}
7474
75-
# Re-searches all primer and TSO sequences to remove non-standard reads
75+
# Re-searches all primer and TSO sequences to remove non-standard reads
76+
# (--overlap 10: require >=10 bp of adapter overlap so we do not discard too many reads)
7677
cutadapt_re_search() {
7778
if [[ $meta.chemistry == 10x5* ]]; then
7879
args="-b \$fwd_primer_f -b \$fwd_primer_r -b \$TSO_f -b \$TSO_r -b \$rev_primer_f -b \$rev_primer_r"
7980
else
8081
args="-b \$fwd_primer_f -b \$fwd_primer_r -b \$rev_primer_f -b \$rev_primer_r"
8182
fi
8283
83-
cutadapt \$args --action none --discard --cores $task.cpus -
84+
cutadapt \$args --overlap 10 --action none --discard --cores $task.cpus -
8485
}
8586
8687
# Reverse complements FASTQ reads to orient them in the transcript direction (for 3' and visium chemistries only)
@@ -102,7 +103,8 @@ process PREPROCESS_FASTQ {
102103
# Extract chemistry specfic parameters from config files
103104
IFS=',' read -r _ left_flank barcode umi right_flank < <(awk -F',' -v chem=$meta.chemistry '\$1 == chem' $flank_seq_config)
104105
IFS=',' read -r _ fwd_primer_f fwd_primer_r rev_primer_f rev_primer_r TSO_f TSO_r < <(awk -F',' -v chem=$meta.chemistry '\$1 == chem' $adapter_seq_config)
105-
flank_seq="-x \$left_flank -b \$barcode -u \$umi -x \$right_flank"
106+
# Store flexiplex search pattern as an array so the '?' wildcards are not expanded as shell globs
107+
flank_seq=(-x "\$left_flank" -b "\$barcode" -u "\$umi" -x "\$right_flank")
106108
107109
# Flexiplex filter (barcode filtering)
108110
# For visium chemistries, search the whole rank curve instead
@@ -112,7 +114,7 @@ process PREPROCESS_FASTQ {
112114
else
113115
max_rank_arg=""
114116
fi
115-
flexiplex -p $task.cpus \$flank_seq -f 0 ${sample}_chopper_out.fastq
117+
flexiplex -p $task.cpus "\${flank_seq[@]}" -f 0 ${sample}_chopper_out.fastq
116118
flexiplex-filter \$max_rank_arg -w $whitelist --outfile my_filtered_barcode_list.txt flexiplex_barcodes_counts.txt
117119
118120
# Chain commands: Flexiplex demultiplexing -> (Optional) Save intermediate file after flexiplex -> Cutadapt trimming of reverse primer -> \

‎nextflow.config‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ manifest {
22
name = 'Bambu-Pipe'
33
description = 'Context-aware transcript quantification from long-read single-cell and spatial transcriptomics data'
44
author = 'Andre Sim, Chin Hao Lee, Min Hao Ling'
5-
version = 'v0.10.2'
5+
version = 'v0.10.3'
66
mainScript = 'main.nf'
77
nextflowVersion = '!>=26.04.0'
88
}

0 commit comments

Comments
 (0)