单细胞学习教程-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外手动设置环境,请按照以下说明操作。

要运行教程案例研究,必须安装几个软件包。因为同时需要Rpython包,所以我们更喜欢使用conda环境。为了方便设置conda环境,我们提供了sc_tutorial_environment.yml文件,该文件包含所有conda和pip可安装的依赖项。R依赖项(尚未作为conda包提供)必须安装到环境中。

要设置conda小环境,必须遵循以下说明。

  1. 使用 sc_tutorial_environment.yml 设置小环境.

    conda env create -f sc_tutorial_environment.yml
    
  2. 确保环境可以从R找到gsl库。这可以通过设置CFLAGSLDFLAGS环境变量来完成(请参见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环境变量!

  3. 如果您在sc_tutorial_environment.yml文件中更改了环境名称,请通过conda activate sc-tutorialconda activate ENV_NAME进入环境。

  4. 打开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安装软件包,使用单独安装的pythonR版本。或者,您也可以尝试使用基本conda环境并安装所有软件包,如conda_env_instructions_for_mac.txt文件中所述。在基础环境中,R应该可以找到相关的gsl库,所以应该不需要设置LDFLAGSCFLAGS

还要注意的是,conda和pip并不总是和睦相处。Conda开发人员建议首先安装所有conda包,然后在conda包不可用的地方安装pip包。因此,在环境中安装更多的conda包可能会导致问题。因此,请启动一个新环境,并首先重新安装所有conda包。

如果您更喜欢手动设置环境,本文档末尾提供了所有软件包要求的列表。

下载数据

如上所述,案例研究的数据来自GSE92332。要运行所示的案例研究,您必须下载此数据并将其放入正确的文件夹中。解压数据需要targunzip,这两个命令应该在大多数系统上都已可用。如果您要克隆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()

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.

你可能感兴趣的:(单细胞学习教程-Python+R学前准备)