Recipes for slide_snake
Recipes are the core configuration system in slide_snake that define how your spatial RNA-seq data should be processed. They specify everything from barcode extraction strategies to alignment parameters, making the pipeline modular and allowing for easy comparison of different preprocessing approaches.
Overview
Recipes solve a key challenge in spatial RNA-seq analysis: different platforms and experimental setups require different processing strategies. Rather than creating separate pipelines, slide_snake uses recipes to standardize and modularize these differences.
Key Benefits
Modular Processing: Mix and match different barcode extraction, alignment, and filtering strategies
Benchmarking: Run multiple recipes on the same sample to compare approaches
Reproducibility: Standardized parameter sets ensure consistent results
Extensibility: Easy to add new platforms or custom processing strategies
Recipe Configuration
Key Parameters:
Cell barcode: 16bp at start of R1
UMI: 12bp following barcode
Standard 10x whitelist
Compatible with Space Ranger outputs
Curio Seeker/SlideSeq
Seeker Recipe Strategies
Seeker data presents unique challenges due to barcode synthesis artifacts (indels, low quality). Multiple strategies are available:
Recipe |
Strategy |
Best For |
|---|---|---|
|
Fixed position extraction |
High-quality barcode synthesis |
|
Hard trim + STARsolo correction |
Moderate quality issues |
|
Adapter-based extraction |
Recommended - handles indels |
|
Adapter-based + total RNA |
Degraded samples |
Adapter-Based Processing (seeker_MatchLinker):
Searches for adapter sequence with 2 mismatches allowed
Extracts barcodes/UMIs relative to adapter position
Handles synthesis indels effectively
Best performance with Curio Seeker data
StereoSeq/STOmics (BGI)
STOmics Recipes
Recipe |
Description |
Notes |
|---|---|---|
|
Standard STOmics processing |
For DNB arrays |
|
Total RNA alignment |
Enhanced multi-mapper handling |
|
Standard + rRNA filtering |
BWA-based filtering |
|
Standard + rRNA filtering |
ML-based filtering |
Requirements:
Need DNB barcode whitelist (use ST_BarcodeMap)
High-density array format
Standard Illumina-style processing
DBIT-seq
DBIT Recipes
Recipe |
Description |
Features |
|---|---|---|
|
Pre-trim adapter sequences |
Handles DBIT adapter structure |
|
Pre-trim + total RNA |
For total RNA libraries |
Characteristics:
Spatial barcodes in deterministic grid pattern
Custom adapter trimming required
Works with 10x100 or 50x50 grids
DecoderSeq
DecoderSeq Recipes
Recipe |
Description |
Reference |
|---|---|---|
|
Standard DecoderSeq processing |
|
|
Total RNA alignment |
Enhanced gene detection |
Features:
Single-cell resolution spatial transcriptomics
Compatible with standard Illumina processing
High spatial resolution
Technology Specifications
d Configuration
rRNA Filtering Options
BWA-based filtering:
Fast, reference-based
Requires rRNA BWA index
Good for known rRNA sequences
RiboDetector:
Machine learning-based
No reference required
Better for novel rRNA detection
Total RNA vs Standard
Standard: Optimized for mRNA (unique alignments)
Total RNA: Allows multi-mappers, better for repetitive regions
Quality Control Integration
All recipes automatically include:
FastQC on raw and processed reads
Alignment statistics
Barcode correction metrics
UMI deduplication stats
This comprehensive recipe system allows slide_snake to handle the diverse landscape of spatial RNA-seq technologies while maintaining consistency and reproducibility.
Field |
Description |
Required |
Example for |
|---|---|---|---|
|
Minimum final length of Read1 after trimming. |
both |
32 |
|
Forward primer sequence - next to the barcode; used for stranding reads. |
ont |
|
|
Reverse primer sequence - away from the barcode; used for stranding reads (TSO/2nd strand primer for most methods). |
ont |
|
|
Adapter sequence for barcode extraction; include adapter for each BC if there are multiple |
ont |
|
|
Start position of the barcode in the read. |
ont |
0 26 |
|
Length of the barcode. |
ont |
8 6 |
|
Offset for barcode extraction. |
ont |
0 0 |
|
Position of the barcode relative to BC_adapter (“left” for 5’, or “right” for 3’) |
ont |
left right |
|
Maximum edit distance (levenshtein) allowed for barcode matching. |
ont |
2 |
|
Minimum difference in edit distance (levenshtein) between 1st and 2nd closest matches |
ont |
1 |
|
Should barcodes be combined for correction? (eg, True for SlideSeq, False for combinatorial indexing) |
ont |
True |
|
Adapter sequence for finding the UMI. |
ont |
|
|
Start position of the UMI in the read (if there is no adapter) |
ont |
0 |
|
Length of the UMI. |
both |
7 |
|
Offset for UMI extraction, relative to the adapter. |
ont |
14 |
|
Position of the UMI relative to UMI_adapter (“left” for 5’, or “right” for 3’) |
ont |
right |
|
Internal adapter sequence for trimming. |
ilmn |
|
|
Type of |
ilmn |
CB_UMI_Simple |
|
Type of whitelist matching for |
ilmn |
1MM_multi |
|
Cell barcode configuration for |
ilmn |
–soloCBstart 1 –soloCBlen 14 |
|
UMI configuration for |
ilmn |
–soloUMIstart 15 –soloUMIlen 7 |
|
Adapter sequence for |
ilmn |
[empty] |
|
Additional parameters for |
ilmn |
–outFilterMultimapNmax 50 |
|
Custom technology string for |
ilmn |
0,0,14:0,14,21:1,0,0 |
|
Additional parameters for |
ilmn |
[empty] |
|
Additional parameters for |
ilmn |
[empty] |
|
Additional parameters for |
ont |
–secondary=no |
|
Additional parameters for |
ont |
–disable_infer |
STARsolo barcode and UMI specifications
See the STARsolo documentation here for details.
soloCBposition -
strings(s) position of Cell Barcode(s) on the barcode read.
Presently only works with --soloType CB_UMI_Complex, and barcodes are assumed to be on Read2.
Format for each barcode: startAnchor_startPosition_endAnchor_endPosition
start(end)Anchor defines the Anchor Base for the CB: 0: read start; 1: read end; 2: adapter start; 3: adapter end
start(end)Position is the 0-based position with of the CB start(end) with respect to the Anchor Base
String for different barcodes are separated by space.
Example: inDrop (Zilionis et al, Nat. Protocols, 2017):
--soloCBposition 0_0_2_-1 3_1_3_8
soloUMIposition -
string position of the UMI on the barcode read, same as soloCBposition
Example: inDrop (Zilionis et al, Nat. Protocols, 2017):
--soloCBposition 3_9_3_14
soloAdapterSequence -
string: adapter sequence to anchor barcodes.
soloAdapterMismatchesNmax 1
int>0: maximum number of mismatches allowed in adapter sequence.
kallisto technology speifications
kb_python uses ngs-tools for tech specifications - link
name description on-list barcode umi cDNA
------------ ----------------------------------- ------- ----------------------- ------- -----------------------
10XV1 10x version 1 yes 0,0,14 1,0,10 2,None,None
10XV2 10x version 2 yes 0,0,16 0,16,26 1,None,None
10XV3 10x version 3 yes 0,0,16 0,16,28 1,None,None
10XV3_ULTIMA 10x version 3 sequenced with Ultima yes 0,22,38 0,38,50 0,62,None
BDWTA BD Rhapsody yes 0,0,9 0,21,30 0,43,52 0,52,60 1,None,None
BULK Bulk (single or paired) 0,None,None 1,None,None
CELSEQ CEL-Seq 0,0,8 0,8,12 1,None,None
CELSEQ2 CEL-SEQ version 2 0,6,12 0,0,6 1,None,None
DROPSEQ DropSeq 0,0,12 0,12,20 1,None,None
INDROPSV1 inDrops version 1 0,0,11 0,30,38 0,42,48 1,None,None
INDROPSV2 inDrops version 2 1,0,11 1,30,38 1,42,48 0,None,None
INDROPSV3 inDrops version 3 yes 0,0,8 1,0,8 1,8,14 2,None,None
SCRUBSEQ SCRB-Seq 0,0,6 0,6,16 1,None,None
SMARTSEQ2 Smart-seq2 (single or paired) 0,None,None 1,None,None
SMARTSEQ3 Smart-seq3 0,11,19 0,11,None 1,None,None
SPLIT-SEQ SPLiT-seq 1,10,18 1,48,56 1,78,86 1,0,10 0,None,None
STORMSEQ STORM-seq 1,0,8 0,None,None 1,14,None
SURECELL SureCell for ddSEQ 0,0,6 0,21,27 0,42,48 0,51,59 1,None,None
Visium 10x Visium yes 0,0,16 0,16,28 1,None,None
Info on custom technology string from kb-python preprint:
The custom technology string (supplied to -x) contains the format barcode:UMI:DNA,
representing the locational information of the barcode, UMI, and the DNA (where DNA is the
biological read to be mapped):
-x a,b,c:d,e,f:g,h,i
- a: barcode file number, b: barcode start position, c: barcode end position
- d: UMI file number, e: UMI start position, f: UMI end position
- g: DNA file number, h: DNA start position, i: DNA end position
Important notes: File numbers and positions are zero-indexed. If no specific end position
exists (i.e. the end position is the very end of the read), the end position should be set to 0. If
cell barcodes and/or UMIs are not supported by the technology, the barcode and/or UMI field
can be set to -1,0,0.
Thus, for 10xv3:
-x 0,0,16:0,16,28:1,0,0
Sequences can be stitched together by specifying multiple locations; for example, a
SPLiT-seq45 assay, which contains three separate unlinked barcodes, each of length 8, and a
UMI of length 10 in the second file and the DNA in the first file would look as follows:
-x 1,10,18,1,48,56,1,78,86:1,0,10:0,0,0
Final note about multiple locations: If the paired-end read mapping option is enabled, exactly
two DNA locations should be specified (for the first and second read in the pair).
If a technology does not fit into this format (e.g. due to barcodes or UMIs of variable lengths
and positions), preprocessing of the FASTQ file should be performed beforehand to reformat
the reads into a structure that can be handled by this format.
Recipes:
SlideSeq/Seeker (Curio)
[manuscript link]() [Curio website](https://curiobioscience.com/)Because of read quality issues (indels, low Q scores, etc.) in the SlideSeq barcode read, I have added a few custom strategies for handling these data:
seeker- No hard trimming, and use the base positions for barcode/UMI (Note, this recipe doesn’t work well w/ Curio Seeker b/c of in/del issues w/ the barcode synthesis)seeker_hardTrim- Hard trim the adapter read positions in R1, and use the best barcode correction algorithms in STARsoloseeker_MatchLinker- Match the adapter sequence on R1 (w/ 2 mismatches allowed) and infer barcodes/UMIs from that position (Note best performer w/ Curio data)seeker_MatchLinker_total- Same asseeker_noTrimMatchLinker, but with additional STAR parameters for total RNAseq alignment (more multimappers, looser alignment)seeker_std_rRNA-bwa- Standard alignment with rRNA filtering using BWAseeker_std_ribodetector- Standard alignment with rRNA filtering using RiboDetectorseeker_std_total_rRNA-bwa- Total RNA alignment with rRNA filtering using BWAseeker_std_total_ribodetector- Total RNA alignment with rRNA filtering using RiboDetector
StereoSeq/STOmics (BGI)
stomics- Standard alignment for StereoSeq/STOmics (BGI) datastomics_total- Total RNA alignment for StereoSeq/STOmics (BGI) datastomics_std_rRNA-bwa- Standard alignment with rRNA filtering using BWAstomics_std_ribodetector- Standard alignment with rRNA filtering using RiboDetectorstomics_std_total_rRNA-bwa- Total RNA alignment with rRNA filtering using BWAstomics_std_total_ribodetector- Total RNA alignment with rRNA filtering using RiboDetector
Visium (10x Genomics)
visium- Standard alignment for Visium (10x Genomics) datavisium_total- Total RNA alignment for Visium (10x Genomics) datavisium_std_rRNA-bwa- Standard alignment with rRNA filtering using BWAvisium_std_ribodetector- Standard alignment with rRNA filtering using RiboDetectorvisium_std_total_rRNA-bwa- Total RNA alignment with rRNA filtering using BWAvisium_std_total_ribodetector- Total RNA alignment with rRNA filtering using RiboDetector
DecoderSeq (Cao et al, Nat Biotechnol, 2024)
[manuscript link](https://www.nature.com/articles/s41587-023-02086-y)decoder- Standard alignment for DecoderSeq datadecoder_total- Total RNA alignment for DecoderSeq data