BD Rhapsody and Seven Bridges

· 4 min read · Analysis Notes

BD Rhapsody and Seven Bridges

TL;DR: BD Rhapsody uses microwell-based single-cell capture, offering higher efficiency for fragile cells than droplet methods. Analyze data via the cloud-based Seven Bridges platform (easy, paid) or the local Rhapsody Sequence Analysis Pipeline (flexible, free).


What is BD Rhapsody?

While 10x Genomics uses microfluidic droplets, BD Rhapsody uses a microwell plate + magnetic bead strategy.

How it Works

  1. Capture: Cells settle into ~200,000 microwells by gravity.
  2. Beads: Barcoded magnetic beads capture mRNA.
  3. Lysis: Cells are lysed, and mRNA hybridizes to beads.
  4. Retrieval: Beads are magnetically retrieved for sequencing.

BD Rhapsody vs. 10x Genomics

Feature BD Rhapsody (Microwell) 10x Genomics (Droplet)
Capture Efficiency High (>80%) Moderate (~50-65%)
Cell Stress Low (gravity settling) Medium (microfluidic pressure)
Input Cells 100 - 40,000+ 500 - 20,000
Fragile Cells ✅ Excellent (neutrophils) ⚠️ Challenging
Multi-omics AbSeq (Antibodies) CITE-seq (Antibodies)
Cost Higher per sample Moderate

Droplet vs Microwell Capture


Option 1: Seven Bridges (Cloud Platform)

Seven Bridges is BD's official cloud partner. Recommended for beginners or those without high-performance computing (HPC) access.

Workflow

  1. Create Account: Sign up at Seven Bridges Genomics.
  2. Upload Data: Upload your FASTQ files (R1, R2).
  3. Select Pipeline: Choose "BD Rhapsody™ Sequence Analysis Pipeline".
  4. Configure:
    • Reference: Select Human/Mouse.
    • AbSeq: Toggle on if you used antibody tags.
    • Putative Cell Count: Enter expected cell number.
  5. Run: Submit the job.

Pros:

  • No hardware required
  • GUI interface
  • Guaranteed reproducible environment

Cons:

  • Paid service (compute credits)
  • Upload/download time for large files

Option 2: Local Pipeline (Command Line)

For advanced users, run the pipeline locally using Docker or Singularity. This is free (minus hardware costs).

Prerequisites

  • RAM: 32GB (min) to 128GB (recommended)
  • CPU: 8+ cores
  • Docker or Singularity installed

1. Get the Pipeline Image

BD distributes the pipeline as a Docker image.

docker pull bdbiosciences/rhapsody

2. Download Reference Genome

You need the specific BD-formatted references.

# Example: Download Human Reference
wget https://bd-rhapsody-public.s3.amazonaws.com/reference_genomes/human_reference.tar.gz
tar -xvf human_reference.tar.gz

3. Run the Pipeline

The pipeline requires a configuration YAML file (or extensive CLI flags).

# Create a config.yml
Reads:
  - Read1: sample_R1.fastq.gz
    Read2: sample_R2.fastq.gz
Reference:
  - /path/to/human_reference
AbSeq: false
PutativeCellCount: 5000

Run with Docker:

docker run -v $PWD:$PWD \
  bdbiosciences/rhapsody \
  rhapsody pipeline \
  --config config.yml \
  --out-dir ./output

Key Parameters

Parameter Description
--exact-cell-count Force a specific number of cells (e.g., 5000)
--putative-cell-call Algorithms: mRNA (default) or Basic
--subsample Downsample reads for testing (0.0-1.0)
--generate-bam Output BAM file (useful for RNA velocity)

Output Files

After the run finishes, look for:

File Description
_RSEC_MolsPerCell.csv Main Count Matrix (Corrected counts)
_DBEC_MolsPerCell.csv Raw counts (Distribution-based error correction)
_Metrics_Summary.csv QC metrics (reads mapped, cells detected)
_Pipeline_Report.html Visual QC report

Note on RSEC vs DBEC:

  • RSEC (Recursive Substitution Error Correction): More aggressive, collapses similar UMIs. Use this for differential expression.
  • DBEC (Distribution-Based Error Correction): Less aggressive.

Loading Data into Seurat/Scanpy

BD outputs are CSVs (unlike 10x's mtx/tsv).

Seurat (R):

library(Seurat)

# Read CSV
counts <- read.csv("Sample_RSEC_MolsPerCell.csv", row.names = 1, comment.char = "#")

# Transpose (Seurat expects Genes x Cells)
counts <- t(counts)

# Create Object
obj <- CreateSeuratObject(counts, project = "BD_Rhapsody")

Scanpy (Python):

import scanpy as sc
import pandas as pd

# Read CSV
adata = sc.read_csv("Sample_RSEC_MolsPerCell.csv")

# BD files usually have genes as columns, Scanpy expects genes as columns (so no transpose needed if CSV is Cells x Genes)
# Check shape!
print(adata.shape) 

Troubleshooting

"Too few cells detected"

Cause: PutativeCellCount too high or cell damage.
Fix:

  • Check the "Knee Plot" in the HTML report.
  • Lower the --putative-cell-call threshold.

"Low Mapping Rate"

Cause: Wrong reference or poor library quality.
Fix:

  • Ensure reference matches the organism (and AbSeq tags if used).
  • Check FASTQ quality with FastQC.

"AbSeq signal missing"

Cause: Incorrect AbSeq reference CSV.
Fix:

  • AbSeq requires a separate FASTA/CSV file defining the antibody barcodes. Ensure this matches your panel exactly.

See also:


Originally posted on WeChat Official Account: bioinfo_studyroom