单细胞学习教程-Python+R学前准备
Scripts for "Current best-practices in single-cell RNA-seq: a tutorial"
该教程来自已发表文献:
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上,因为它在该领域具有特殊的意义。发表1年引用量91,还是很惊人的。
image.png其GitHub存储库包含以下内容:
- 生成论文中图形的脚本
- 补充论文手稿的案例研究
- 补充材料中标记基因检测研究的代码
该存储库的主要部分是案例研究,其中将手稿中建立的最佳实践应用于来自Haber et al., Nature 551 (2018) 等人的小鼠小肠上皮区数据集,可从GEO获得GSE92332。此案例分析可以在latest_notebook/
和old_releases/
目录下找到不同的版本。
plotting_scripts/ folder
中的脚本复制手稿和补充材料中显示的数字。这些脚本包含解释每个步骤的注释。plotting_scripts/ folder
中没有相应脚本的每个图形都取自案例研究或标记基因研究。
如果有疑问或问题,请通过在此存储库中发布问题来联系作者。
如果本教程中的材料对您有用,请考虑引用上述出版物。
环境设置
感谢 Leander Dony,可以在 here 获取一个运行这个sc-tutorial的 docker container 工作环境. 如果您想要通过conda或在docker container外手动设置环境,请按照以下说明操作。
要运行教程案例研究,必须安装几个软件包。因为同时需要R
和python
包,所以我们更喜欢使用conda环境。为了方便设置conda环境,我们提供了sc_tutorial_environment.yml
文件,该文件包含所有conda和pip可安装的依赖项。R依赖项(尚未作为conda包提供)必须安装到环境中。
要设置conda小环境,必须遵循以下说明。
-
使用
sc_tutorial_environment.yml
设置小环境.conda env create -f sc_tutorial_environment.yml
-
确保环境可以从R找到
gsl
库。这可以通过设置CFLAGS
和LDFLAGS
环境变量来完成(请参见https://bit.ly/2CjJsgn)。在这里,我们对它们进行设置,以便每次激活环境时都能正确设置它们。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可以通过运行
conda info--envs
,使用您的CONDA环境名对应的目录(默认为sc-tutorail)找到。WHILE NOT IN THE ENVIRONMENT(!!!!) 打开
./etc/conda/activate.d/env_vars.sh
下的env_vars.sh
文件,输入如下内容:#!/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
再次注意,这些文件应该在不在环境中时写入。否则,您可能会覆盖base环境中的CFLAGS和LDFLAGS环境变量!
-
如果您在
sc_tutorial_environment.yml
文件中更改了环境名称,请通过conda activate sc-tutorial
或conda activate ENV_NAME
进入环境。 -
打开R并通过以下命令安装依赖R包:
install.packages(c('devtools', 'gam', 'RColorBrewer', 'BiocManager')) update.packages(ask=F)#这一指令会更新所有的R包,耗时较长慎重使用 BiocManager::install(c("scran","MAST","monocle","ComplexHeatmap","slingshot","clusterExperiment"))
这些步骤应该设置一个环境,以便在Linux系统上使用教程工作流程执行单细胞分析。请注意,我们在Mac OS上遇到了Conda环境的问题。当使用Mac OS时,我们建议不带conda安装软件包,使用单独安装的python
和R
版本。或者,您也可以尝试使用基本conda环境并安装所有软件包,如conda_env_instructions_for_mac.txt
文件中所述。在基础环境中,R应该可以找到相关的gsl库,所以应该不需要设置LDFLAGS
和CFLAGS
。
还要注意的是,conda和pip并不总是和睦相处。Conda开发人员建议首先安装所有conda包,然后在conda包不可用的地方安装pip包。因此,在环境中安装更多的conda包可能会导致问题。因此,请启动一个新环境,并首先重新安装所有conda包。
如果您更喜欢手动设置环境,本文档末尾提供了所有软件包要求的列表。
下载数据
如上所述,案例研究的数据来自GSE92332。要运行所示的案例研究,您必须下载此数据并将其放入正确的文件夹中。解压数据需要tar
和gunzip
,这两个命令应该在大多数系统上都已可用。如果您要克隆GitHub存储库并将案例研究脚本放在latest_notebook/
文件夹中,则可以从存储案例研究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_*
我们在notebook末尾简要比较结果的带注释的数据集可以从相同的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
我们已经注意到,可视化、降维和聚类(因此也包括所有下游结果)等结果在不同的系统上可能会给出略有不同的结果。这与后端使用的数字库有关。因此,我们不能保证笔记本的重新运行将生成完全相同的clusters结果。
虽然所有的结果在质量上都是相似的,但是在不同的系统之间,特别是对于干细胞、TA细胞和肠系祖细胞,将细胞分配到簇中的情况可能会有所不同。为了显示预期的多样性,我们将缩小的案例研究笔记本上传到alternative_clustering_results/
文件夹。
请注意,使用参数svd_solver='arpack'
运行sc.pp.pca()
会大大降低系统之间的可变性,但是输出并不完全相同。
为其他数据集调整pipeline:
pipeline被设计成可以很容易地适应新的数据集。但是,当前工作流程的一般适用性有几个限制。在为您自己的数据集调整pipeline时,请考虑以下事项:
1.rpy2
不支持稀疏数据格式(Sparse data),因此不支持任何集成的R命令。可以使用以下代码将数据集转换为密集格式:adata.X = adata.X.toarray()
。
2.案例研究假设输入数据为UMIS单细胞protocol获取的计数数据。如果输入数据是全长读取数据,则可以考虑用包括基因长度归一化(例如,TPM)的另一种方法来替换归一化方法。
手动安装软件包要求
运行案例研究notebook的第一个版本需要以下软件包。有关更多版本,请参阅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
手动安装中可能的错误来源:
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
.