scATAC-seq Cicero Branch

Co-accessibility and CCAN analysis with Cicero

What it does

This workflow uses Cicero to infer co-accessible chromatin relationships from scATAC-seq data. The committed tutorial covers conversion into a Cicero-compatible CDS object, dimensional reduction, cell aggregation, co-accessibility scoring, CCAN discovery, and gene-activity summarization.

When to use it

Use this workflow when the main question is regulatory linkage between accessible regions rather than only clustering or annotation. It is most helpful after scATAC-seq preprocessing is complete and you want to build cis-coaccessibility networks or derive gene-activity summaries from those connections.

Prerequisites

Steps

Load the accessibility matrix and create a Cicero-compatible CDS

The notebook starts by loading tutorial data and converting peak accessibility counts plus peak coordinates into a Cicero-compatible cell data set.

input_cds <- make_atac_cds(
  cicero_counts,
  binarize = TRUE
)

Reduce dimensions and build the embedding used for aggregation

Before Cicero is run, the workflow detects features, estimates size factors, and computes a low-dimensional representation that will define neighborhood structure for cell aggregation.

input_cds <- detectGenes(input_cds)
input_cds <- estimateSizeFactors(input_cds)
input_cds <- reduceDimension(
  input_cds,
  max_components = 2,
  num_dim = 6,
  reduction_method = "tSNE"
)

This is the transition from sparse raw accessibility data into the neighborhood structure Cicero needs for co-accessibility inference.

Aggregate nearby cells and calculate co-accessibility connections

The core Cicero branch groups nearby cells and then computes co-accessibility relationships for genomic windows, using chromosome coordinates as the scaffold.

cicero_cds <- make_cicero_cds(
  input_cds,
  reduced_coordinates = reduced_coordinates
)

conns <- run_cicero(
  cicero_cds,
  genomic_coords = chromosome_subset
)

The committed tutorial uses a chromosome subset in one branch for demonstration and runtime control, which is worth treating as a tutorial device rather than a default full-genome analysis mode.

Filter stronger connections, define CCANs, and derive gene activity

After co-accessibility scores are computed, the notebook filters for stronger positive relationships, identifies CCANs, and computes gene activity scores from those networks.

positive_conns <- conns[conns$coaccess > 0, ]
ccan_list <- generate_ccans(positive_conns)
gene_activity <- build_gene_activity_matrix(cicero_cds, conns)

The practical handoff from this page is a set of co-accessibility connections, CCAN assignments, and gene-activity summaries that can be interpreted alongside the main scATAC analysis rather than replacing it.

Gotchas / notes

  • The tutorial is oriented around Cicero’s CDS and aggregation model, so it assumes preprocessing has already produced a usable accessibility matrix.
  • The notebook uses a subset of chromosome 18 for demonstration in one branch, which is useful for runtime control but not a full-genome default.
  • The README is broader than the current page in places, but the committed notebook remains the main source for concrete execution order.
  • This folder does not include a committed figure asset set beyond the rendered HTML output.

📄 View source on GitHub