Skip to content

Latest commit

 

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Comparison of Parse Biosciences Evercode WT to 10x Genomics Chromium Single Cell 3'

This repository reproduces and compares published single-cell RNA-seq datasets generated with Parse Biosciences Evercode and 10x Genomics Chromium Single Cell 3', using a unified preprocessing pipeline based on kb-python (kallisto|bustools).

Repository Structure

10XvParse/
├── Configs/              # Config files
│   ├── indexes/          # Per-species index configs (reference URLs, HRT Atlas URL)
|   ├── 10x_info/         # 10X kit whitelists (for STAR alignment)
│   ├── parse_info/       # Parse kit barcode reference (kits_info.txt + barcodes/*.csv)
│   └── Analysis_N/       # Per-assay config dirs (auto-generated Parse files + static 10X files)
├── Data/             # Downloaded FASTQs, pseudoalignment outputs, and H5AD files (gitignored)
├── Index/            # kallisto indices and genome references, organized by species
├── Logs/             # Log files from preprocessing runs
├── Notebooks/        # Jupyter notebooks for downstream analysis and plotting
├── Scripts/          # Python entry-point scripts, one per analysis
└── XvP_utils/        # Shared utility package
    ├── preprocessing/ # Download, subsampling, pseudoalignment pipelines
    └── plotting/      # Plotting helpers for comparison figures

Parse barcode config files are auto-generated

For each Parse assay the pipeline automatically generates the following files in Configs/Analysis_N/<assay_name>/ at run time, derived from the kit name and optional well list in the YAML:

File Contents
r1_R.txt Round 1 randO primer barcode sequences for the selected wells (used by splitcode)
r1_T.txt Round 1 polyT primer barcode sequences for the selected wells (used by splitcode)
onlist.txt Per-round barcode whitelist for kb-python error correction, including the sublibrary barcode
replace.txt Maps randO bc1 sequences to their polyT counterparts for kb-python
bcs_to_wells.txt Mapping from all bc1 sequences to well positions (used in analysis notebooks)
lib_bc.txt Sublibrary barcode whitelist (used by STARsolo)
sublibraries.txt Which sublibrary barcode was assigned to which sublibrary name

The source of truth for all barcode sequences is Configs/parse_info/kits_info.txt lists the barcode files for each kit version, and barcodes/*.csv contains the sequences. The pipeline also writes config_RT_parse.txt, parse_keep.txt, and randOpolyT_keep.txt into the same subdirectory at run time.

Environment Setup

Dependencies are managed with conda. To create and activate the environment:

conda env create -f environment.yml
conda activate 10XvParse

Install the local XvP_utils package in editable mode so that the scripts and notebooks can import it:

pip install -e .

Running an Analysis

Each analysis has a dedicated script under Scripts/ and a config file under Configs/. The scripts download raw reads from SRA/ERA, build or reuse a kallisto index, pseudoalign, and write .h5ad files to Data/.

python Scripts/analysis2.py   # Thymocyte dataset (mouse)
python Scripts/analysis3.py   # PBMC dataset (human)
python Scripts/analysis4.py   # K562/mESC barnyard dataset
python Scripts/analysis5.py   # Frozen PBMC dataset (human)
python Scripts/analysis6.py   # Cancer Cell Perturbation dataset (human)
python Scripts/analysis7.py   # PBMC dataset (human)

Downstream exploration is done in the corresponding Jupyter notebooks under Notebooks/.

Datasets

Analysis 2

From: Comparative transcriptomic analyses of thymocytes using 10x Genomics and Parse scRNA-seq technologies - BMC Genomics

Sample: Mus musculus thymocytes from two female mice aged 6 months

Datasets (find here):

  • GSM8020231-9: Parse Evercode WT v2, sublibrary 1–9
  • GSM8020240 and GSM8020241: Parse Evercode Mini v2, sublibrary 1 and 2
  • GSM8020242: 10x Genomics Next Gem v3, Gene Expression
  • GSM8020243: 10x Genomics Next Gem v3, TotalSeq™-B hashtag antibodies (BioLegend)

Analysis 3

From: Comparative Analysis of Single-Cell RNA Sequencing Methods with and without Sample Multiplexing

Sample: Frozen Homo sapiens PBMCs from two healthy individuals

Datasets (find here):

  • GSM7873659,61,63,65,67,69,71,73: Parse Evercode WT v2 H1 replicates 1–8
  • GSM7873660,62,64,66,68,70,72,74: Parse Evercode WT v2 H2 replicates 1–8
  • GSM7873657: 10x Genomics Next Gem v3 H1
  • GSM7873658: 10x Genomics Next Gem v3 H2

Analysis 4

From: Comparison of Single Cell Transcriptome Sequencing Methods: Of Mice and Men

Sample: Mixture of K562 human multiple myeloma and mESC mouse embryonic stem cell lines (barnyard)

Datasets uploaded to EBI under PRJEB67544 (10x) and PRJEB67549 (Parse):

  • ERR12398015: 10x Next Gem v3
  • ERR12167397 and ERR12167398: Parse Evercode Mini v2 sublibrary 1 and 2

Analysis 5

From: Comparative Analysis of Commercial Single-Cell RNA Sequencing Technologies Now: [A comprehensive analysis framework for evaluating commercial single-cell RNA sequencing technologies] https://academic.oup.com/nar/article/53/2/gkae1186/7924191#501285411

Sample: Frozen Homo sapiens PBMCs

Datasets (find here):

  • SRR28867558: Parse Evercode WT v2
  • SRR28867563 and SRR28867562: 10x Next Gem v3.1, technical replicates 1 and 2

Analysis 6

From: Comparison of high-throughput single-cell RNA-seq methods for ex vivo drug screening

Sample: Homo sapiens glucocorticoid-resistant E/R+ ALL Reh cell line multiplexed according to drug treatment (6 total perturbation experiments)

Datasets (find here)

  • SRR24154339: 10X Next Gem v3
  • SRR24154340: Multi-seq barcodes
  • SRR24154341-2: Parse Evercode mini v1 replicate 1 and 2

Analysis 7

From: Comparative analysis of multiplex single-cell mRNA sequencing of resting and activated PBMCs using droplet-based and split-pool methods (Yet to be published)

Sample: Frozen Homo sapiens PBMCs

Datasets: 10x: AZ13332/AZ_cDNA_S1_L002; 10X Chromium v4 10x_hashtags: LMO/RPI7_S0_L001; 10X Multi-Seq parse: AZ12601/AZ_PS_5k_S5_L002 and AZ12601/AZ_PS_10k_S6_L002; Parse Evercode mini v3

Paper Figure Labels

The comparison figures in Notebooks/Comparisons/ use the following experiment labels, ordered by species/tissue. Labels are colored by tissue type in the figures.

Paper Label Repository Sample Species
Exp 1 Analysis_6 Cancer cell perturbation (Reh) Human
Exp 2a Analysis_3 (H1) Frozen PBMC, Donor 1 Human
Exp 2b Analysis_3 (H2) Frozen PBMC, Donor 2 Human
Exp 3 Analysis_5 Frozen PBMC Human
Exp 4 Analysis_7 Frozen PBMC Human
Exp 5a Analysis_2 (standard) Thymocytes Mouse
Exp 5b Analysis_2 (mini) Thymocytes Mouse
Exp 6 Analysis_4 K562/mESC barnyard Human/Mouse

Adding a New Dataset

Follow these steps to add a new analysis:

1. Create or update an index config

Reference URLs and the HRT Atlas URL live in Configs/indexes/{species}.yaml, separate from the per-analysis configs. If you are using an existing species (mouse, human, or human_mouse) the index config already exists and nothing needs to change. If you need a new species or a different Ensembl release, create Configs/indexes/{species}.yaml:

species: human
fasta: https://ftp.ensembl.org/pub/release-115/fasta/homo_sapiens/dna/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz
gtf: https://ftp.ensembl.org/pub/release-115/gtf/homo_sapiens/Homo_sapiens.GRCh38.115.gtf.gz
hrt_atlas_url: https://raw.githubusercontent.com/Bidossessih/HRT_Atlas/master/www/Housekeeping_GenesHuman.csv

The index directory (Index/{species}/) is shared across all analyses with the same species — updating the URL here will cause the reference to be re-downloaded on the next run (or set overwrite=True in RunSettings).

For barnyard indexes the format uses per-species keys — see Configs/indexes/human_mouse.yaml for the pattern.

2. Create a config file

Copy an existing config from Configs/ and edit it for your dataset. The config has four required sections:

name: Analysis_N

species: human  # or "mouse" / "human_mouse"; determines which Configs/indexes/ file is used

# SRA or ERA accession numbers, grouped by assay type. Parse assays must additionally
# group their accessions by sublibrary (see below).
SRA:
  10x:
    - SRR_XXXXXXX
  parse:
    sub1:
      - SRR_XXXXXXX
      - SRR_XXXXXXX   # a second run of the same sublibrary
    sub2:
      - SRR_XXXXXXX

# R1/R2 file suffixes produced by fasterq-dump. This varies across datasets depending upon
# whether or not Illumina sample indices were indexed and in what order they were saved to SRA.
read_num:
  10x:
    R1: 1
    R2: 2
  parse:
    R1: 1
    R2: 2

# kb-python technology strings for 10X assays; Parse kit name for Parse assays
tech:
  10x: 10XV3
  parse: WT_v2

# Optional: restrict Parse splitcode filtering to a subset of wells.
# If omitted, all wells in the kit are used.
wells:
  parse: [A1, A2, A3]

For Parse assays, the tech value must be a kit name of the form <kit>_v<chem> (e.g. WT_v2, WT_mini_v3). The pipeline looks this up in Configs/parse_info/kits_info.txt to obtain the kb-python technology x-string and the correct barcode files, then auto-generates all required splitcode/kb-python config files before running.

Use ERA instead of SRA for European Nucleotide Archive accessions.

Parse sublibraries

A Parse sublibrary is distinguished by its sequencing index, not by the combinatorial barcodes themselves, so the same bc1/bc2/bc3 combination in two sublibraries belongs to two different cells. Sublibraries therefore cannot simply be concatenated. Group each Parse assay's accessions under a sublibrary name, as shown above; splitcode --remultiplex --bclen=4 then prepends a distinct 4 bp sequence to read 2 of each sublibrary, and that sequence is carried downstream as a fourth cell barcode. Accessions listed under the same name are runs of one sublibrary and share a barcode.

Two consequences worth knowing:

  • Barcodes are assigned in the order sublibrary names first appear in the YAML, so reordering them invalidates already-processed data. The assignment for a given run is recorded in Configs/Analysis_N/<assay>/sublibraries.txt.
  • For assays with no accessions (pre-downloaded local files in FASTA/Dumped/), each Lib{i} file pair is treated as its own sublibrary. Files belonging to the same sublibrary must be concatenated before the pipeline runs.

Parse cell barcodes in the resulting H5ADs are consequently 4 bp longer, with the sublibrary barcode leading. bc1 remains the trailing 8 bp, so notebook logic keyed on the end of the barcode is unaffected.

3. Write a script

Create Scripts/analysisN.py based on an existing script. At minimum, call load_10x and load_parse (and subsample_* variants if you want depth-matched comparisons):

from XvP_utils.preprocessing import load_10x, load_parse, subsample_parse, subsample_10x, get_subsample_num, setup_logger
from XvP_utils.preprocessing import RunSettings
from pathlib import Path
import os

if __name__ == "__main__":
    settings = RunSettings(
        root_dir=Path(__file__).parent.parent,
        config_name="analysisN.yaml",
        overwrite=False,
        threads=16,
        max_workers=4,
    )

    config_file = settings.root_dir / "Configs" / settings.config_name
    os.makedirs(settings.root_dir / "Logs", exist_ok=True)
    logger = setup_logger(settings.root_dir / "Logs" / "analysisN.txt")

    load_10x(settings, config_file, "10x", logger)
    load_parse(settings, config_file, "parse", logger)

    subsample_num = get_subsample_num(
        settings, config_file,
        ten_x_assays=["10x"],
        parse_assays=["parse"],
        logger=logger,
    )
    subsample_10x(settings, config_file, "10x", subsample_num, logger)
    subsample_parse(settings, config_file, "parse", subsample_num, logger)

4. Run the script

python Scripts/analysisN.py

kb python outputs with .h5ad files will be written to Data/Analysis_N/{assat}/kb_python. Logs go to Logs/analysisN.txt.

5. Add a notebook

Create a directory Notebooks/Analysis_N/ and add a Jupyter notebook for downstream analysis and figures, following the pattern in Notebooks/Analysis_2/ or Notebooks/Analysis_3/.

6. Update this README

Add an entry for the new dataset under the Datasets section above, including the paper link, sample description, and accession numbers.

About

A Comparison of Parse Biosciences Evercode WT to 10X Genomics Chromium Single Cell 3'

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages