Circe
Co-accessibility network from single-cell ATAC-seq data. Python code with AnnData, based on Cicero algorithm.
Install / Use
/learn @cantinilab/CirceREADME
CIRCE: Cis-regulatory interactions between chromatin regions
Description
This repository contains a Python package for inferring co-accessibility networks from single-cell ATAC-seq data, using skggm for the graphical lasso and scanpy for data processing.
You can check our Bioinformatics paper here for more details! 😊<br> https://doi.org/10.1093/bioinformatics/btag092
While updating the pre-processing, CIRCE's algorithm is based on the pipeline and hypotheses presented in the manuscript "Cicero Predicts cis-Regulatory DNA Interactions from Single-Cell Chromatin Accessibility Data" by Pliner et al. (2018). This original R package Cicero is available here.
Installation
The package can be installed using pip:
pip install circe-py
and from GitHub
pip install "git+https://github.com/cantinilab/circe.git"
Minimal example
import anndata as ad
import circe as ci
# Load the data
atac = ad.read_h5ad('atac_data.h5ad')
atac = ci.add_region_infos(atac)
# Compute the co-accessibility network
ci.compute_atac_network(atac)
# Extract the network and find CCANs modules
circe_network = ci.extract_atac_links(atac)
ccans_module = ci.find_ccans(atac)
Visualisation
fig, ax = plt.subplots(1, figsize = (20, 6))
genes_df = ci.downloads.download_genes()
ci.draw.plot_connections_genes(
connections=atac, # Main parameters
genes=genes_df,
chromosome="chr1",
start=50_000,
end=300_000,
gene_spacing=30_000,
abs_threshold=0.0,
y_lim_top=-0.01, # Visual parameters
track_spacing=0.01,
track_width=0.01,
ax=ax
)
<img src="https://github.com/cantinilab/circe/raw/main/Figures/circe_figure_genes_access.png" align="center"/>
Usage
You can go check out our documentation for more examples! <br> https://circe.readthedocs.io/<br> The documentation is still in building, so don't hesitate to open any issues or requests you might have in this repo. 😊
Benchmark & Comparison to Cicero R package
<br> Metacalls computation might create differences, but scores will be identical when applied to the same metacalls (cf comparison plots below). It should run significantly faster than Cicero (e.g., running time of 5 sec instead of 17 min for the dataset 2). <br> On the same metacells obtained from the Cicero code.
All tests run in the paper can be found in the circe benchmark repo.
Real dataset 2 - subsample of 10x PBMC (2021)
- Pearson correlation coefficient: 0.999958
- Spearman correlation coefficient: 0.999911 <img src="https://github.com/cantinilab/circe/raw/main/Figures/correlation_real_dataset2.png" align="center" width="480"/>
Performance on real dataset 2:
- Runtime: ~100x faster
- Memory usage: ~5x less <img src="https://github.com/cantinilab/circe/raw/main/Figures/perf_real_dataset2.png" align="center" width="480"/>
Coming:
- Gene activity calculation
Citation
Rémi Trimbour, Julio Saez-Rodriguez, Laura Cantini, CIRCE: a scalable Python package to predict cis-regulatory DNA interactions from single-cell chromatin accessibility data, Bioinformatics, Volume 42, Issue 3, March 2026, btag092, https://doi.org/10.1093/bioinformatics/btag092
