This is the PyTorch implementation of the paper:
Peizhuo Wang, Xiao Wen, Peng Lang, Hantao Shu, Lin Gao, Dan Zhao and Jianyang Zeng, Deciphering Driver Regulators of Cell Fate Decisions by Constructing and Controlling Cell-Lineage-Specific Gene Regulatory Networks
CEFCON is a computational tool to characterize gene regulatory dynamics from a perspective of network control theory and identifies putative regulators that drive cell fate decisions. CEFCON takes a prior gene interaction network and expression profiles from scRNA-seq data as inputs and consists of three main components, including cell-lineage-specific GRN construction, driver regulator identification and regulon-like gene module identification.
- python>=3.7
- numpy, scipy, pandas, scikit-learn, tqdm
- pytorch>=1.8.0
- torch-geometric>=2.1.0
- anndata>=0.7.0
- networkx>=2.8.0
- cvxpy>=1.2.0
- gurobipy>=9.5.0
- pyscenic>=0.12.0
- Recommended: An NVIDIA GPU with CUDA support for GPU acceleration
- matplotlib-venn
- rpy2
pip install git+https://github.com/WPZgithub/CEFCON
We recommend using GRUOBI to solve the integer linear programming (ILP) problem for identifying driver genes.
GUROBI is a commercial solver that requires licenses to run. Thankfully, it provides free licenses in academia, as well as trial
licenses outside academia. If there is no problem about the licenses, you need to install the
gurobipy
package.
If you have difficulty using GUROBI, a non-commercial solver, SCIP, will be used by default.
We recommend using GPU. If so, you will need to install the GPU version of PyTorch.
- Add support for visualization
- Add notebook file for analyses
The pre-processed data in the paper can be downloaded from here.
scRNA-seq data
: a 'csv' file in which rows represent cells and columns represent genesPrior gene interaction network
: a edgelist formatted network file
From To Directed
Gene1 Gene1 True
Gene1 Gene2 True
...
GeneX GeneY False
We provide prior gene interaction networks for human and mouse respectively, located in /prior_data
.
Differential expression level
:
GeneName absLogFC
Gene1 3.25
Gene2 1.06
...
GeneX 0.71
python CEFCON.py [-h] --input_expData PATH --input_priorNet PATH [--input_genesDE PATH] [--TFs PATH] [--additional_edges_pct ADDITIONAL_EDGES_PCT] [--cuda CUDA] [--seed SEED] [--hidden_dim HIDDEN_DIM]
[--output_dim OUTPUT_DIM] [--heads HEADS] [--attention {COS,AD,SD}] [--miu MIU] [--epochs EPOCHS] [--repeats REPEATS] [--edge_threshold_param EDGE_THRESHOLD_PARAM] [--remove_self_loops]
[--topK_drivers TOPK_DRIVERS] --out_dir OUT_DIR
You can run the run_CEFCON.sh
bash file for an usage example.
- Output (in the output folder
${OUT_DIR}/
):- A cell-lineage-specific GRN with default name "cl_GRN.csv"
- Gene embeddings with default name "gene_embs.csv"
- A list of driver regulators with default name "driver_regulators.csv"
- A list of RGMs with default name "RGMs.csv"
Please cite the following paper, if you find the repository or the paper useful.
Peizhuo Wang, Xiao Wen, Peng Lang, Hantao Shu, Lin Gao, Dan Zhao and Jianyang Zeng, Deciphering Driver Regulators of Cell Fate Decisions by Constructing and Controlling Cell-Lineage-Specific Gene Regulatory Networks, Preprint, 2023
@article{wang2022cefcon,
title={Deciphering Driver Regulators of Cell Fate Decisions by Constructing and Controlling Cell-Lineage-Specific Gene Regulatory Networks},
author={Wang, peizhuo and Wen, Xiao and Lang, Peng and Shu, Hantao and Gao, Lin and Zhao, Dan and Zeng, Jianyang},
journal={Preprint},
year={2023}
}
Please contact [email protected]
or raise an issue in the github repo with any questions.