SCENIC
논문 정보
Aibar, Sara, et al. “SCENIC: single-cell regulatory network inference and clustering.” Nature methods 14.11 (2017): 1083-1086.
Installation
투 스텝으로 나눠지는데
- Running SCENIC (VSN: includes Steps 1-4)
- Exploring SCENIC’s output (R & SCope)
VSN-pipeline
SCENIC 돌릴 때 필요하다.
- Dependencies
Nextflow
와Docker
또는Singularity
를 필요로 한다.
Nextflow 설치
👉 Nextflow Github release page
👉 Nextflow Github release v21.04.3 page
일반설치
1
2
3
4
5
6
7
8
9
# java version check
java -version # 11 이상이어야함.
# install
## 현위치에 nextflow 라고 다운 받기 때문에 시작하기전에 위치 잘 잡고 시작하자.
curl -s https://get.nextflow.io | bash
# test
./nextflow run hello
버전 선택해서 source code로 설치
- Dependencies
- Compiler Java 8 or later & Runtime Java 8 or later (나아는 java 11)
1
2
3
4
5
6
7
8
wget https://github.com/nextflow-io/nextflow/archive/refs/tags/v21.04.3.tar.gz
tar -xvzf v21.04.3.tar.gz
cd nextflow-21.04.3
make compile ./ # memory부족하면 에러나니까 알아서 처신잘하자
make pack && make install
echo -e "PATH=/source/nextflow-21.04.3:$PATH" >> ~/.bash_profile
Singularity 설치
Docker로 설치해도 됨. Docker는 해봐서 이번에 Singularity. Singularity도 이미지 배포할때 사용하는것 같은데 HPC에 더 용이하다고 함.
Singularity는 무료버전인 Comunity Edition(SingularityCE)과 상업버전인 SingularityPRO로 나뉘어있다. SingularityCE랑 Singularity는 똑같은거니까 쫄지말고 설치하자. 내가 쫄아서 찾아본건 아님
01.Installing Go
SingularityCE가 Go로 작성돼 있어서. 가장 최신버전 Go 설치하는 것을 권장. 👉 Go download page
2023 Aug 기준 최신버전 = go1.21.0
보통 GCC설치할때 --enable-languages
에 설정해주면 따로 설치 안해도 되긴한다. 한번 할때 잘해야하는 이유
which go
해서 있는지 확인. 없으면 깔아준다.
1
2
3
4
5
6
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
tar -xvzf go1.21.0.linux-amd64.tar.gz
echo -e "PATH=/path-of-go/go/bin:$PATH" >> ~/.bash_profile
# 설정했는데도 그 다음 singularity 설치때 go compiler가 없다고 나오면 bashrc 맨 윗줄에 추가해보자
02.Download & Configure SingularityCE
Singularity github 가서 최신버전 확인하기. 2023 Aug 기준 sigularity ver.4 출시 앞두고 있었는데 베타테스트 기간리아 3.11.4설치함.
1
2
3
4
5
6
7
8
wget https://github.com/sylabs/singularity/releases/download/v3.11.4/singularity-ce-3.11.4.tar.gz
tar -xvzf singularity-ce-3.11.4.tar.gz
cd singularity-ce-3.11.4
./mconfig --prefix=/source/singularity-ce-3.11.4 --without-seccomp --without-conmon # 위치는 알아서 잡기, 아니면 prefix 옵션빼던지
make -C builddir
make -C builddir install
Error 모음집
- 🚨
checking: libseccomp+headers... no
(mconfig 단계) seccomp headers are required to build Singularity with seccomp support.
To disable seccomp support run mconfig using '--without-seccomp'.
이런 에러가 난다?
- 🚨
– 💡해결법 1 = 에러메세지에 나와있듯이 mconfig 단계에서 --without-seccomp
옵션 넣어준다.
– 💡해결법 2 = seccomp 깔아주기
1
2
3
4
5
6
7
8
9
10
wget https://github.com/seccomp/libseccomp/releases/download/v2.5.4/libseccomp-2.5.4.tar.gz
tar -xvzf libseccomp-2.5.4.tar.gz
cd libseccomp-2.5.4 && mkdir builddir
./configure --prefix=/source/libseccomp-2.5.4/builddir #의심하지말지어다 똥인지 된장인지 찍어먹어봐야하는자여
make && make install
echo -e "PATH=/source/libseccomp-2.5.4/builddir/bin:$PATH" >> ~/.bash_profile
echo 'export LD_LIBRARY_PATH=/source/libseccomp-2.5.4/builddir/lib:$LD_LIBRARY_PATH' >> ~/.bash_profile
echo 'export LD_RUN_PATH=/source/libseccomp-2.5.4/builddir/lib' >> ~/.bash_profile
🚨 configure: error: please install gperf
에러 해결하려고 프로그램 설치하는데 또 에러가 생기는ㅋㅋㅋㅋ😂 설치해주자.
1
2
3
4
5
6
wget http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz
tar -xvzf gperf-3.1.tar.gz
cd gperf-3.1
./configure --prefix=/source/gperf-3.1
make && make install
echo -e "PATH=/source/gperf-3.1/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile
Step 01 : Run SCENIC
- Upate to latest VSN-pipeline
1
nextflow pull vib-singlecell-nf/vsn-pipelines
- generate a config file
1
2
3
4
5
6
7
# sample 1개인 경우
nextflow config vib-singlecell-nf/vsn-pipelines -profile tenx,singularity,single_sample > single_sample.config
# sample 2개 이상, batch correction하고 aggregate해서 분석해야하는 경우
nextflow config vib-singlecell-nf/vsn-pipelines -profile \
sra,cellranger,pcacv,bbknn,dm6,scenic,scenic_use_cistarget_motifs,scenic_use_cistarget_tracks,singularity \
> nextflow.config
기본 command는 위와 같지만 여러가지 다른 input을 넣을 수도 있다.
- CellRanger output
-profile tenx
,-profile tenx_h5
- Seurat object rds
-profile seurat_rds
하고.config
file가서file_paths
parameter잘 설정됐는지 확인.
주의사항!!!
Seurat obj version 3만 지원
version 2, 5 는 지원안함
1
2
3
4
5
6
7
8
[...]
data {
seurat_rds {
file_paths = "data/1k_pbmc_v*_chemistry_SUFFIX.SC__FILE_CONVERTER.Rds"
suffix = "_SUFFIX.SC__FILE_CONVERTER.Rds"
}
}
[...]
- 그 외에 H5AD(Scanpy), Loom, TSV, CSV 지원 👉 VSN-pipeline input 관련 더보기
보통 샘플이 1개인 경우는 거의 없기 때문에.. 대부분 SAMPLE AGGREGATION WORKFLOWS 사용할거라 생각함.
1
2
nextflow config vib-singlecell-nf/vsn-pipelines -profile sra,cellranger,pcacv,bbknn,dm6,scenic,scenic_use_cistarget_motifs,scenic_use_cistarget_tracks,singularity \
> nextflow.config
내 코드 & Trial
난 같은 데이터를 2가지 방법으로 분석해보고 똑같은 결과 주는지 확인해보려고함..
- Trial 1. 이미 만든 Ver.5 Seurat obj -> Ver.3 obj로 Downgrade시키고 input으로 사용 + single sample workflow 사용
- Trial 2. CellRanger결과 사용 + Sample aggregation workflow 사용
Trial 1.
Preparing input
1
2
3
4
5
6
7
8
9
library(Seurat)
options(Seurat.object.assay.version = "v5")
GEX.seurOBJ <- readRDS("GEX.seurOBJ.v5.rds")
GEX.seurOBJ[["RNA"]] <- as(object = GEX.seurOBJ[["RNA"]], Class = "Assay")
saveRDS(GEX.seurOBJ,"GEX.seurOBJ.v3.rds")
# 저장 위치 확인 후 config file에 넣어주자
Run SCENIC
1
nextflow pull vib-singlecell-nf/vsn-pipelines
- config file 만들기
seurat obj 를 input으로 & single sample workflow 사용. 이렇게 쓰려면 당연하겠지만 R이랑 Seurat
package설치되어 있어야함.
1
nextflow config vib-singlecell-nf/vsn-pipelines -profile seurat_rds,singularity,single_sample_scenic,hg38 > trial1.config
config file열어서 seurat_rds { file_paths =
확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 174번째 줄: singularity.runOptions 확인
singularity {
enabled = true
autoMounts = true
runOptions = '--cleanenv -H $PWD -B ${HOME}'
}
# 13번째 줄 : project 이름 설정
params {
global {
outdir = 'SysFluR01' # project name
... }}
# 148 번째 줄 : seurat obj 위치 설정
data {
seurat_rds {
file_paths = '' #채워준다
suffix = '.Rds' #채워준다
} ... }
# 83번째 줄: scanpy filtering option 확인
filter {
report_ipynb = '/src/scanpy/bin/reports/sc_filter_qc_report.ipynb'
cellFilterStrategy = 'fixedthresholds'
cellFilterMinNGenes = 200
cellFilterMaxNGenes = 4000
cellFilterMaxPercentMito = 0.15
geneFilterMinNCells = 3
off = 'h5ad'
outdir = 'out'}
# 37번째 줄 : highly variable genes selection 기준 확인
feature_selection {
report_ipynb = '/src/scanpy/bin/reports/sc_select_variable_genes_report.ipynb'
flavor = 'seurat'
minMean = 0.0125
maxMean = 3
minDisp = 0.5
off = 'h5ad'}
- Run the VSN-pipelines project
- 인터넷 연결
- 메모리 필요
- core 갯수 조절
nextflow -C trial1.config
run vib-singlecell-nf/vsn-pipelines
-entry single_sample
- 🚨
Nextflow version 23.04.3 does not match workflow required version: 21.04.3
1 - 기껏 최신버전 설치해줬더니 오류남 히히. 위로 다시 올라가서 버전 맞춰다시 깔고 돌아오면 해결..
1
2
3
4
5
6
7
8
9
Command error:
Loading required package: SeuratObject
Error in .requirePackage(package) :
unable to find required package ‘SeuratObject’
Calls: @<- ... .extendsForS3 -> extends -> getClassDef -> .requirePackage
In addition: Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
there is no package called ‘SeuratObject’
Execution halted
References
- http://htmlpreview.github.io/?https://github.com/aertslab/SCENIC/blob/master/Tutorials_JupyterNotebooks/SCENIC_tutorial_1-RunningVSN.html
- https://github.com/vib-singlecell-nf/vsn-pipelines
- https://vsn-pipelines-examples.readthedocs.io/en/latest/Hung.html
https://github.com/nf-core/cutandrun/issues/1 ↩