ZIBRA is a high-performance computing framework for analyzing gene-gene associations in large-scale single-cell RNA sequencing (scRNA-seq) data using the Bivariate Zero-Inflated Negative Binomial (BZINB) model.
conda create -n bzinb python=3.9
conda activate bzinb
pip install numpy pandas scanpy scipy tqdm statsmodels- OpenMPI or MPICH
- NLopt
- Eigen 3
Ensure paths to eigen3 and nlopt match your system configuration in the Makefile, then compile:
makePack your .h5ad single-cell data into binary chunks:
python scripts/prepare_data.pyLaunch the MPI engine using all available cores (e.g., 124 cores):
mkdir -p output_chunks
mpirun -n 124 ./zibra_mpi_engineMerge the distributed output chunks and map the numerical IDs back to actual Gene Names:
python scripts/merge_results.pyOutput: ZIBRA_Final_Results.csv
-
Gene Filtering: Modify
step1_univariate_filteror thenp.meanthreshold inscripts/prepare_data.py. -
Significance Threshold: The decision tree threshold (
alpha = 1e-8) can be modified directly insrc/zibra_mpi.cpp.