Deconvolution of single-cell multi-omics layers reveals regulatory heterogeneity
Code for inferring regulatory relationship
Analysis includes following steps:
- Preprocessing
- Non-Negative Matrix Factorization
- Computation of active TFs using SCENIC
- Computation of correlation between promoter peaks and distal peaks signal
- Computation of correlation between gene expression and distal peaks signal
- Cpmputation of cell specific Regulatory Relationships
-
Install SNAKEMAKE, highly recommended to follow this TUTORIAL using Miniconda3
-
Adjust configs/config.yaml file.
2.1. Insert your space delimated assay identifiers
2.2. Change Path to your data and Results folder.
REQUIRED DATA STRUCTURE:
INPUT: data/ ├── CellLines/ │ ├── annotation/ │ │ └── CellLines_metadata.Rds │ ├── atac/ │ │ ├── CellLines_ATACseqCounts.Rds.Rds │ │ └── CellLines_ATACseqGRanges.Rds │ └── rna/ │ └── CellLines_RNAseqCounts.Rds ├── HumanEmbryo/ OUTPUT: resutls/ ├── CellLines/ │ ├── atac/ │ │ └── │ ├── rna/ │ │ ├── │ │ └── │ └── rna_atac/ │ └── ├── HumanE
2.3. OPTIONAL: Select which rules of the graph you want to run, by changing Trua and False flags in the "Pipeline Steps to Run" section
2.4. OPTIONAL: Change parameters used to run NMF and to infer regulatory interactions
-
Make a Snakemake try run:
# If your are using Miniconda3
source activate <YOUR SNAKEMAKE ENV NAME>
# Perform snakemake dry run
snakemake -np -
The pipeline could be run in a cluster, make sure to modify the cluster/qsub.yaml file or create a new one for your system specification
-
The pipeline uses conda environments to install almost all dependencies. In the case of the rules using GPUs, your system should have installed the required cuda drivers.
-
Check if all the rules you want, are included in the snakemake graph:
# If your are using Miniconda3
source activate <YOUR SNAKEMAKE ENV NAME>
# Print rule graph
snakemake -F --rulegraph|dot -Tpdf > rulegraph.pdf- If the dry run is working and everything you need will be created, run the pipeline on the cluster:
# If your are using Miniconda3
source activate <YOUR SNAKEMAKE ENV NAME>
# Perform snakemake run (using qsub)
snakemake -k -w 50 --jobs 50 --use-conda --cluster-config cluster/qsub.yaml --cluster "qsub -l 'walltime={cluster.walltime}, nodes=1:ppn={cluster.cores}, mem={cluster.memory}'"