Metadata-Version: 2.1
Name: prism_grn
Version: 1.2.0
Summary: A Probabilistic Model for Recovering GRNs based on Multi-Omics Data
Home-page: https://github.com/Ying-Lab/PRISM/
Author: Wenhao Zhang
Author-email: zscotty@stu.xmu.edu.cn
License: MIT
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.8.10
Description-Content-Type: text/markdown
Requires-Dist: torch==1.11.0
Requires-Dist: pyro-ppl==1.7.0
Requires-Dist: networkx==3.1
Requires-Dist: numpy==1.24.4
Requires-Dist: scipy==1.10.1
Requires-Dist: pandas==2.0.3
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: flake8; extra == "dev"


# PRISM
A Probabilistic Bayesian Model to Recover Gene Regulatory Networks by Incorporating a Biologically Interpretable Structure based on single-cell Multi-Omics Data
![The framework of PRISM](https://github.com/Ying-Lab/PRISM/blob/main/Figure1.jpg)

Prerequisites
-----

- Python 3.8.10

Installation
-----

```bash
git clone https://github.com/Ying-Lab/PRISM
cd PRISM
pip install -r requirements.txt 
python setup.py install
```
or
```bash
pip install prism-grn
```

Parameters
-----
flag: different tasks, True is causality prediction; False is undirected GRN reconstruction. Default is True.

cuda: Whether using GPU. Default is True.

Paring: Whether the scRNA-seq and scATAC-seq data are paired. Default is True.

epoch: Training epoches. Default is 2000.

lr: Initial learning rate. Default is 0.0003


Example
-----
for GRN Reconstruction
```bash
from prism import model
from prism import utils
from utils import load_sc_data

args['flag'] = False
adj_train, feature, feature_ATAC, train_ids, val_ids, test_ids, train_labels, val_labels, test_labels = load_sc_data(Expression_data_path, Genescore_data_path, label_path)
adj_train = F.normalize(adj_train, p=1, dim=1)

scc = model.PRISM( nfeat=feature.shape[1],     ## the size of feature -> cell num
                    nhid=args['hidden'],         ## hidden layer size
                    dropout=args['dropout'],     
                    ns=args['ns'],               ## the size of VAE node embedding 
                    alpha=args['alpha'],         
                    flag=args['flag'],           ## causal or not
                    use_cuda= args['cuda']).to(device)

```

for Causality prediction
```bash
from prism import model
from prism import utils
from utils import load_sc_causal_data

args['flag'] = True
adj_train, feature, feature_ATAC, train_ids, val_ids, test_ids, train_labels, val_labels, test_labels = load_sc_causal_data(Expression_data_path, Genescore_data_path, label_path)
adj_train = F.normalize(adj_train, p=1, dim=1)

scc = model.PRISM( nfeat=feature.shape[1],     ## the size of feature -> cell num
                    nhid=args['hidden'],         ## hidden layer size
                    dropout=args['dropout'],     
                    ns=args['ns'],               ## the size of VAE node embedding 
                    alpha=args['alpha'],         
                    flag=args['flag'],           ## causal or not
                    use_cuda= args['cuda']).to(device)

```
The more detailed usage is exemplified in demo.


Citation
-----
