Scripts for "Current best-practices in single-cell RNA-seq: a tutorial"
該教程來(lái)自已發(fā)表文獻(xiàn):
M.D. Luecken, F.J. Theis, "Current best practices in single-cell RNA-seq analysis: a tutorial", Molecular Systems Biology 15(6) (2019): e8746
https://pubmed.ncbi.nlm.nih.gov/31217225/
這篇論文被推薦到F1000上渐白,因?yàn)樗谠擃I(lǐng)域具有特殊的意義毛仪。發(fā)表1年引用量91吏颖,還是很驚人的送朱。
其GitHub存儲(chǔ)庫(kù)包含以下內(nèi)容:
- 生成論文中圖形的腳本
- 補(bǔ)充論文手稿的案例研究
- 補(bǔ)充材料中標(biāo)記基因檢測(cè)研究的代碼
該存儲(chǔ)庫(kù)的主要部分是案例研究唉擂,其中將手稿中建立的最佳實(shí)踐應(yīng)用于來(lái)自Haber et al., Nature 551 (2018) 等人的小鼠小腸上皮區(qū)數(shù)據(jù)集,可從GEO獲得GSE92332解虱。此案例分析可以在latest_notebook/
和old_releases/
目錄下找到不同的版本粥帚。
plotting_scripts/ folder
中的腳本復(fù)制手稿和補(bǔ)充材料中顯示的數(shù)字灰蛙。這些腳本包含解釋每個(gè)步驟的注釋。plotting_scripts/ folder
中沒有相應(yīng)腳本的每個(gè)圖形都取自案例研究或標(biāo)記基因研究隔躲。
如果有疑問或問題摩梧,請(qǐng)通過在此存儲(chǔ)庫(kù)中發(fā)布問題來(lái)聯(lián)系作者。
如果本教程中的材料對(duì)您有用宣旱,請(qǐng)考慮引用上述出版物仅父。
環(huán)境設(shè)置
感謝 Leander Dony,可以在 here 獲取一個(gè)運(yùn)行這個(gè)sc-tutorial的 docker container 工作環(huán)境. 如果您想要通過conda或在docker container外手動(dòng)設(shè)置環(huán)境响鹃,請(qǐng)按照以下說明操作驾霜。
要運(yùn)行教程案例研究,必須安裝幾個(gè)軟件包买置。因?yàn)橥瑫r(shí)需要R
和python
包粪糙,所以我們更喜歡使用conda環(huán)境。為了方便設(shè)置conda環(huán)境忿项,我們提供了sc_tutorial_environment.yml
文件蓉冈,該文件包含所有conda和pip可安裝的依賴項(xiàng)。R依賴項(xiàng)(尚未作為conda包提供)必須安裝到環(huán)境中轩触。
要設(shè)置conda小環(huán)境寞酿,必須遵循以下說明。
-
使用
sc_tutorial_environment.yml
設(shè)置小環(huán)境.conda env create -f sc_tutorial_environment.yml
-
確保環(huán)境可以從R找到
gsl
庫(kù)脱柱。這可以通過設(shè)置CFLAGS
和LDFLAGS
環(huán)境變量來(lái)完成(請(qǐng)參見https://bit.ly/2CjJsgn)伐弹。在這里,我們對(duì)它們進(jìn)行設(shè)置榨为,以便每次激活環(huán)境時(shí)都能正確設(shè)置它們惨好。cd YOUR_CONDA_ENV_DIRECTORY mkdir -p ./etc/conda/activate.d mkdir -p ./etc/conda/deactivate.d touch ./etc/conda/activate.d/env_vars.sh touch ./etc/conda/deactivate.d/env_vars.sh
其中YOUR_CONDA_ENV_DIRECTORY可以通過運(yùn)行
conda info--envs
,使用您的CONDA環(huán)境名對(duì)應(yīng)的目錄(默認(rèn)為sc-tutorail)找到随闺。WHILE NOT IN THE ENVIRONMENT(!!!!) 打開
./etc/conda/activate.d/env_vars.sh
下的env_vars.sh
文件日川,輸入如下內(nèi)容:#!/bin/sh CFLAGS_OLD=$CFLAGS export CFLAGS_OLD export CFLAGS="`gsl-config --cflags` ${CFLAGS_OLD}" LDFLAGS_OLD=$LDFLAGS export LDFLAGS_OLD export LDFLAGS="`gsl-config --libs` ${LDFLAGS_OLD}"
然后修改
./etc/conda/deactivate.d/env_vars.sh
文件:#!/bin/sh CFLAGS=$CFLAGS_OLD export CFLAGS unset CFLAGS_OLD LDFLAGS=$LDFLAGS_OLD export LDFLAGS unset LDFLAGS_OLD
再次注意,這些文件應(yīng)該在不在環(huán)境中時(shí)寫入矩乐。否則龄句,您可能會(huì)覆蓋base環(huán)境中的CFLAGS和LDFLAGS環(huán)境變量!
如果您在
sc_tutorial_environment.yml
文件中更改了環(huán)境名稱散罕,請(qǐng)通過conda activate sc-tutorial
或conda activate ENV_NAME
進(jìn)入環(huán)境分歇。-
打開R并通過以下命令安裝依賴R包:
install.packages(c('devtools', 'gam', 'RColorBrewer', 'BiocManager')) update.packages(ask=F)#這一指令會(huì)更新所有的R包,耗時(shí)較長(zhǎng)慎重使用 BiocManager::install(c("scran","MAST","monocle","ComplexHeatmap","slingshot","clusterExperiment"))
這些步驟應(yīng)該設(shè)置一個(gè)環(huán)境欧漱,以便在Linux系統(tǒng)上使用教程工作流程執(zhí)行單細(xì)胞分析职抡。請(qǐng)注意,我們?cè)贛ac OS上遇到了Conda環(huán)境的問題硫椰。當(dāng)使用Mac OS時(shí)繁调,我們建議不帶conda安裝軟件包,使用單獨(dú)安裝的python
和R
版本靶草√阋龋或者,您也可以嘗試使用基本conda環(huán)境并安裝所有軟件包奕翔,如conda_env_instructions_for_mac.txt
文件中所述裕寨。在基礎(chǔ)環(huán)境中,R應(yīng)該可以找到相關(guān)的gsl庫(kù)派继,所以應(yīng)該不需要設(shè)置LDFLAGS
和CFLAGS
宾袜。
還要注意的是,conda和pip并不總是和睦相處驾窟。Conda開發(fā)人員建議首先安裝所有conda包庆猫,然后在conda包不可用的地方安裝pip包。因此绅络,在環(huán)境中安裝更多的conda包可能會(huì)導(dǎo)致問題月培。因此,請(qǐng)啟動(dòng)一個(gè)新環(huán)境恩急,并首先重新安裝所有conda包杉畜。
如果您更喜歡手動(dòng)設(shè)置環(huán)境,本文檔末尾提供了所有軟件包要求的列表衷恭。
下載數(shù)據(jù)
如上所述此叠,案例研究的數(shù)據(jù)來(lái)自GSE92332。要運(yùn)行所示的案例研究随珠,您必須下載此數(shù)據(jù)并將其放入正確的文件夾中灭袁。解壓數(shù)據(jù)需要tar
和gunzip
,這兩個(gè)命令應(yīng)該在大多數(shù)系統(tǒng)上都已可用牙丽。如果您要克隆GitHub存儲(chǔ)庫(kù)并將案例研究腳本放在latest_notebook/
文件夾中简卧,則可以從存儲(chǔ)案例研究ipynb
文件的位置通過以下命令完成此操作:
cd ../ #To get to the main github repo folder
mkdir -p data/Haber-et-al_mouse-intestinal-epithelium/
cd data/Haber-et-al_mouse-intestinal-epithelium/
wget ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE92nnn/GSE92332/suppl/GSE92332_RAW.tar
mkdir GSE92332_RAW
tar -C GSE92332_RAW -xvf GSE92332_RAW.tar
gunzip GSE92332_RAW/*_Regional_*
我們?cè)趎otebook末尾簡(jiǎn)要比較結(jié)果的帶注釋的數(shù)據(jù)集可以從相同的GEO訪問ID(GSE92332)獲得】韭可以使用以下命令獲染倜洹:
cd data/Haber-et-al_mouse-intestinal-epithelium/
wget ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE92nnn/GSE92332/suppl/GSE92332_Regional_UMIcounts.txt.gz
gunzip GSE92332_Regional_UMIcounts.txt.gz
Case study notes
我們已經(jīng)注意到,可視化构罗、降維和聚類(因此也包括所有下游結(jié)果)等結(jié)果在不同的系統(tǒng)上可能會(huì)給出略有不同的結(jié)果铜涉。這與后端使用的數(shù)字庫(kù)有關(guān)。因此遂唧,我們不能保證筆記本的重新運(yùn)行將生成完全相同的clusters結(jié)果芙代。
雖然所有的結(jié)果在質(zhì)量上都是相似的,但是在不同的系統(tǒng)之間盖彭,特別是對(duì)于干細(xì)胞纹烹、TA細(xì)胞和腸系祖細(xì)胞页滚,將細(xì)胞分配到簇中的情況可能會(huì)有所不同。為了顯示預(yù)期的多樣性铺呵,我們將縮小的案例研究筆記本上傳到alternative_clustering_results/
文件夾裹驰。
請(qǐng)注意,使用參數(shù)svd_solver='arpack'
運(yùn)行sc.pp.pca()
會(huì)大大降低系統(tǒng)之間的可變性片挂,但是輸出并不完全相同幻林。
為其他數(shù)據(jù)集調(diào)整pipeline:
pipeline被設(shè)計(jì)成可以很容易地適應(yīng)新的數(shù)據(jù)集。但是音念,當(dāng)前工作流程的一般適用性有幾個(gè)限制沪饺。在為您自己的數(shù)據(jù)集調(diào)整pipeline時(shí),請(qǐng)考慮以下事項(xiàng):
1.rpy2
不支持稀疏數(shù)據(jù)格式(Sparse data)闷愤,因此不支持任何集成的R命令整葡。可以使用以下代碼將數(shù)據(jù)集轉(zhuǎn)換為密集格式:adata.X = adata.X.toarray()
讥脐。
2.案例研究假設(shè)輸入數(shù)據(jù)為UMIS單細(xì)胞protocol獲取的計(jì)數(shù)數(shù)據(jù)掘宪。如果輸入數(shù)據(jù)是全長(zhǎng)讀取數(shù)據(jù),則可以考慮用包括基因長(zhǎng)度歸一化(例如攘烛,TPM)的另一種方法來(lái)替換歸一化方法魏滚。
手動(dòng)安裝軟件包要求
運(yùn)行案例研究notebook的第一個(gè)版本需要以下軟件包。有關(guān)更多版本坟漱,請(qǐng)參閱latest_notebook/
和old_releases/
文件夾中的README.md
鼠次。
General:
- Jupyter notebook
- IRKernel
- rpy2
- R >= 3.4.3
- Python >= 3.5
Python:
- scanpy
- numpy
- scipy
- pandas
- seaborn
- louvain>=0.6
- python-igraph
- gprofiler-official (from Case study notebook 1906 version)
- python-gprofiler from Valentine Svensson's github (vals/python-gprofiler)
- only needed for notebooks before version 1906
- ComBat python implementation from Maren Buettner's github (mbuttner/maren_codes/combat.py)
- only needed for scanpy versions before 1.3.8 which don't include
sc.pp.combat()
- only needed for scanpy versions before 1.3.8 which don't include
R:
- scater
- scran
- MAST
- gam
- slingshot (change DESCRIPTION file for R version 3.4.3)
- monocle 2
- limma
- ComplexHeatmap
- RColorBrewer
- clusterExperiment
- ggplot2
- IRkernel
手動(dòng)安裝中可能的錯(cuò)誤來(lái)源:
For R 3.4.3:
When using Slingshot in R 3.4.3, you must pull a local copy of slingshot via the github repository and change the DESCRIPTION
file to say R>=3.4.3
instead of R>=3.5.0
.
For R >= 3.5 and bioconductor >= 3.7:
The clusterExperiment version that comes for bioconductor 3.7 has slightly changed naming convention. clusterExperiment()
is now called ClusterExperiment()
. The latest version of the notebook includes this change, but when using the original notebook, please note that this may throw an error.
For rpy2 < 3.0.0:
Pandas 0.24.0 is not compatible with rpy2 < 3.0.0. When using old versions of rpy2, please downgrade pandas to 0.23.X. Please also note that Pandas 0.24.0 requires anndata version 0.6.18 and scanpy version > 1.37.0.
For enrichment analysis with g:profiler:
Ensure that the correct g:profiler package is used for the notebook. Notebooks until 1904 use python-gprofiler
from valentine svensson's github, and Notebooks from 1906 use the gprofiler-official
package from the g:profiler team.
If not R packages can be found:
Ensure that IRkernel has linked the correct version of R with your jupyter notebook. Check instructions at https://github.com/IRkernel/IRkernel
.