pythonscRNAseq-scanpy

By Kaiyi Fu

环境配置

  • Anaconda

    • 配置channels:打开Anaconda Navigator,点击Channel,添加conda-forge和bioconda,点击更“Update channels”

    • 在conda环境中安装包:点击Anaconda Powershell Prompt,即可用conda命令创建环境,安装python包

  • VScode

    • 下载并安装VScode

    • 安装插件:Python、C/C++、R、R Debugger、Jupyter相关、Github Copilot、Auto Import、Remote - SSH、WSL等扩展插件

    • 新建ipynb文件,Select Kernel选择环境变量

  • PyTorch

    • 根据驱动和CUDA版本,在官网选择适当版本的PyTorch,进入conda环境,将下载指令复制到"Conda Prompt"中运行

    • 下载完成后输入"pip list",查看列表中有没有"torch",有则说明安装完成

  • Conda常用命令操作

// Conda Powershell

# 创建名称为scanpy,python版本为3.11的虚拟环境
conda create -n scanpy python=3.11 --yes

# 激活scanpy环境
conda activate scanpy

# 退出当前虚拟环境
conda deactivate

# 查看所有虚拟环境
conda env list  

#删除环境
conda remove -n 名字 --all

#重命名环境:conda没有提供重命名环境的命令,我们只能先克隆一份原来的环境,然后再删除原来的环境
conda create -n b --clone a
conda remove -n a --all

#安装包
conda install pip
#格式:conda install [-n env_name | -p path] [-c channel_address] [packages]
#安装指定版本的包
conda install peckage_name==x.x
#如果conda安装太慢可以用mamba install

#移除包
conda remove -n my_env numpy
conda uninstall 是 conda remove 的别名,同理

#列出环境中所有包
conda list

#更新包
conda update -n my_env numpy scipy
#格式:conda update [-n env_name | -p path] [packages] [--all]


#设置镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
#设置搜索时显示Channel地址
conda config --set show_channel_urls yes

系统教程

安装Python包

分析前参数设置

路径设置

导入必要的包

绘图参数设置

数据的基本处理

1、数据格式

  • Scanpy 构建的对象叫做 AnnData 对象,数据存储是以多个模块存储;

    • obs 存储的是 seurat 对象中的 meta.data 矩阵

    • X 对象为一个稀疏矩阵(scipy.sparse.csr.csr_matrix),用于存储矩阵的值,与 seurat 对象是转置关系,即Scanpy 中的行为样本,列为基因

    • X 的多层级是由 layers 管理的,X 仍然只是一个矩阵而已。例如,在 X 存储未归一化的原始计数数据,在 layers 中可以添加归一化的数据或其他转换后的数据

    • var 存储的是基因(特征)的信息

    • uns 存储的是后续添加的非结构信息

    • obsm 和 varm 两个属性类似于字典,可以用键值对的方式添加矩阵类型(如 Pandas 数据框, scipy 稀疏矩阵, numpy 数组)的元数据信息,如 UMAP embedding 等;obsm 所添加的每个数据长度一定等于 n_obsvarm 的长度与 n_vars 相同

    • obsp 和 varp 中主要存储了观测值或变量两两之间的关系矩阵

  • AnnData object with n_obs × n_vars = 8931 × 33538

    • n_obs: 代表观测的数量

    • n_vars: 代表变量的数量,即测量的基因数

  • scanpy常用组件

    • sc.pp:用于数据预处理的 preprocessing 模块

    • sc.tl :访问用于数据分析的 tools 模块

    • sc.pl:用于可视化的 ploting 模块

    • 访问读写操作是顶层函数,直接使用 sc 访问

2、数据读入

3、数据提取、修改与导出

4、数据转换(H5AD/Seurat/H5等)

H5AD转换为Seurat

Seurat转换为H5AD

5、子集操作与添加metadata

6、对象合并

数据预处理

对于单细胞数据,我们需要在分析前进行质量控制,包括去除包含双细胞、低表达细胞和低表达基因的细胞。除此之外,我们还需要根据线粒体基因比例、转录本数量、每个细胞表达的基因数量、细胞复杂性等进行过滤。

1、背景RNA校正

CellBender:

  • 需要输入 cellranger count 输出的没有 filter 的矩阵(raw_feature_bc_matrix)

  • 如果没有cellranger的输出文件,可以在R中将三个未经过滤的的10X文件转为h5文件,然后在linux的conda终端中运行cellbender

  • 值得注意的是,与CellRanger相比,CellBender会保留许多遗漏的低UMI计数细胞,但是也会遗漏大量具有相对较高的UMI计数的液滴,因此需要在后续进行仔细的QC。

decontX

  • 在R中运行,可以自行设定阈值

2、去除双细胞

COMPOSITE

Scrublet

3、线粒体/核糖体/红细胞过滤

4、基因和细胞数过滤

5、计算细胞周期

归一化(Normalization)+ 选择高可变基因

normalize_total + log1p

使用omicverse

降维、整合与批次校正

仅用PCA降维,不去批次

scVI

CellANOVA

  • 原始代码:

  • Omicverse中调用:

Harmony

  • scanpy函数

  • Omicverse调用:

BBKNN

scAtlasVAE

不同整合方式的比较

可以从生物保留性、批次效应消除、以及簇同质性三个维度对不同方法进行评价(https://mp.weixin.qq.com/s/DK91JN-hsYSZW0BaMeetxwarrow-up-right)

(https://mp.weixin.qq.com/s/CJq1WJ2EMi2z9RDT5axPAgarrow-up-right)

聚类分群

计算neighbors + leiden分群

phenograph分群

GMM(Gaussian mixture model)分群

cNMF

确定合适的分群resolution

cluster tree和 marker gene AUC值

ROGUE:评估细胞亚群纯度

UMAP及其优化

基础绘图(Scatter plot)

结合PAGA或使用force atlas layout

UMAP密度图

等高线图(Contour plot)

细胞注释+寻找marker基因

手动注释

自动注释

迁移注释

与参考注释集计算相关性

寻找细胞亚群差异基因

sc.tl.rank_genes_groups:使用没有矫正的数据做差异表达分析

scVI差异分析:使用模型标准化后的值做差异表达分析

COSG差异分析

常用细胞marker

T细胞marker

file-download
26KB

肿瘤细胞推断

InferCNV

细胞比例/差异丰度分析

绝对比例和相对比例

scCODA

milo

Ro/e

差异及富集分析

Scanpy差异分析 + gseapy富集分析

Seurat::FindMarkers + 富集分析

pseudobulks

SEACells/Metacell 差异分析

Memento

通路打分

scanpy.tl.score_genes

AUCell

ov.single.pathway_enrichment

AddModuleScore

singleseqgset富集分析

GSVA富集分析

irGSEA:整合多种算法分析

DecoupleR:整合多种算法分析

富集通路网络图

拟时序分析

Diffusion Map

CytoTrace2

Monocle

PAGA

scTour

RNAvelocity

scVelo

Cell2fate

细胞通讯

CellPhoneDB

CellChat

CellChat细胞通讯数据库通过整合KEGG和文献,构建了细胞通讯数据库cellchatDB,数据库主要包括三部分,(1)旁分泌、自分泌的信号互作。(2)胞外基质-受体互作。(3)细胞直接互作。在这些直接互作的蛋白外,cellchat还将可溶性激动剂、拮抗剂等互作引子考虑在内。

iTALK

NicheNet

MultiNicheNet

转录因子分析

Last updated