作者,追风少年i
hello,大家好,新的一周,新的开始,脑海里浮现周星驰的一句台词,只有越来越强大,才能越来越童话。
今天我们简单来学习一个简单的内容,肿瘤进化树,先看示例。不过之前大家要先补充一下基础知识,我列在下面,供大家参考。
10X单细胞(10X空间转录组)CNV分析之inferCNVpy
10X单细胞个性化分析之CNV篇
10X单细胞(10X空间转录组)CNV分析回顾之CopyKAT
10X单细胞(10X空间转录组)分析之将单细胞转录组映射到拷贝数进化树(scatrex)
10X空间转录组CNV和速率分析的空间图谱
10X单细胞(10X空间转录组)数据分析之识别肿瘤细胞的CNV分析原理
其中文章10X单细胞个性化分析之CNV篇和10X单细胞(10X空间转录组)数据分析之识别肿瘤细胞的CNV分析原理主要讲分析原理,建议大家好好看看。
先来看看范例
文章Single-cell analysis reveals new evolutionary complexity in uveal melanoma,2020年的NC文章。
图片要说明的问题并不复杂,a 和 b图就是简单的CNV事件热图,c图是每一个样本的进化树,上方主干对应的CNV事件,是早期就发生的;下方分枝的CNV事件是后期发生的。其中蕴含的逻辑就是含有某个CNV的细胞占比越多,那么这个CNV就发生得越早;含有某个CNV的细胞占比越少,这个CNV就发生得越晚。
文章Single-cell RNA landscape of intratumoral heterogeneity and immunosuppressive microenvironment in advanced osteosarcoma
和上一张图的形式差不多,解读也是一样的,我们今天的目标就是来实现进化树的结果
其中我们需要注意2点
- 进化树的绘制
- 长短臂注释的由来
我们先来看看文章中的方法,在文章Single-cell analysis reveals new evolutionary complexity in uveal melanoma中的方法是这样的:
inferCNV and clonality analysis:
“使用 10x 数据”部分(inferCNV,https://github.com/broadinstitute/inferCNV)中的建议,从 Seurat 对象中提取原始基因表达数据。对于每位患者,通过 CD3E 的表达高于平均表达 2 个标准差并且没有 PRAME 和 HTR2B 的表达来选择正常参考细胞(选择reference)。对于 inferCNV 分析,使用了以下参数:“denoise”、默认隐藏马尔可夫模型 (HMM) 设置和“cutoff”值 0.1。为了减少假阳性 CNV 调用的可能性,实施了默认的贝叶斯潜在混合模型来识别每个细胞中改变的后验概率。使用阈值的默认值“0.5”过滤低概率 CNV。为了确定每个肿瘤中的克隆 CNV 变化,对 HMM 生成的 CNV 使用了“subcluster”方法。 GRCh38 cytoband information用于将每个 CNV 转换为 p 或 q 臂水平变化,以便根据其位置进行简化。每个 CNV 都被注释为gain或loss。数据转换后,包含相同臂级 CNV 的亚克隆被折叠,树被重组以准确表示亚克隆 CNV 架构。该分析排除了线粒体CNV。对于数据可视化,开发了 UPhyloplot2 (https://github.com/harbourlab/UPhyloplot2) 绘图算法以自动生成肿瘤内进化树。从 inferCNV HMM 子集群 CNV 预测算法策划的臂级 CNV 调用和每个子克隆中的细胞百分比用作输入。为每个样本生成可视化系统发育树的可缩放矢量图形 (.svg) 文件。臂长与细胞百分比加上间隔(圆直径 + 5 像素)成正比。
在文章Single-cell RNA landscape of intratumoral heterogeneity and immunosuppressive microenvironment in advanced osteosarcoma中:
Single-cell copy-number variation (CNV) and clonality analysis:
使用 R 的 inferCNV 包(版本 1.2.2;https://github.com/broadinstitute/inferCNV/wiki)估计成骨细胞和软骨母细胞肿瘤细胞中每个细胞的初始 CNV。计算成骨细胞和软骨细胞肿瘤细胞的CNVs,并以免疫细胞作为参考。在过滤具有 < 2000 个 UMI 的不合格细胞后,使用包括“denoise”、默认隐藏马尔可夫模型 (HMM) 设置和“cutoff”值 0.1 在内的参数执行 inferCNV 分析。为了减少假阳性 CNV 调用,实现了默认的贝叶斯潜在混合模型来识别每个细胞中 CNV 变化的后验概率,默认值为 0.5 作为阈值。为了推断克隆单细胞CNV的变化,应用“subcluster”方法根据HMM生成的CNV值推断子簇细胞。注释gene cytoband information信息,每个 p 或 q 臂水平变化都根据其位置简单地转换为等效的 CNV。每个 CNV 都被注释为gain或loss。数据转换后,包含相同臂级 CNV 的亚克隆被折叠,树被重组以表示亚克隆 CNV 架构。对于数据可视化,遵循了 Durante 等人开发的 UPhyloplot2 算法。 (https://github.com/harbourlab/UPhyloplot2)自动生成肿瘤内进化树。从 inferCNV HMM 子集群 CNV 预测算法策划的臂级 CNV 调用和每个子克隆中的细胞百分比用作输入。
我们希望拿到的结果
信息量有点庞大,我们先来一步一步的解析:
首先来看基础的CNV分析参数:
- “denoise”
- (HMM) 设置和“cutoff”值 0.1
- 贝叶斯潜在混合模型来识别每个细胞中 CNV 变化的后验概率,默认值为 0.5 作为阈值
- 注意其中参考细胞的选择,可以选择免疫细胞
运行实例
library(infercnv)
#1
infercnv_obj = CreateInfercnvObject(raw_counts_matrix="oligodendroglioma_expression_downsampled.counts.matrix",
annotations_file="oligodendroglioma_annotations_downsampled.txt",
delim="\t",
gene_order_file="gencode_downsampled.EXAMPLE_ONLY_DONT_REUSE.txt",
ref_group_names=c("Microglia/Macrophage","Oligodendrocytes (non-malignant)")
)
#2
infercnv_obj = infercnv::run(infercnv_obj,
cutoff=1,
out_dir="try2",
cluster_by_groups=F,
analysis_mode="subclusters",
denoise=TRUE,
HMM=TRUE,
num_threads=1)
注意两个参数cluster_by_groups=F,以及analysis_mode="subclusters",这个参数最终会将肿瘤细胞分为8个cluster(少数情况是7类,如果实在找不出进一步的差别),每个cluster有各自的CNV模式,如果analysis_mode="samples",则一个样本不同细胞最终预测的CNV模式是唯一的。另外需要注意的是,一般文章放的热图是去噪后的热图,那张图两种模式没什么区别,因为去噪和预测CNV在inferCNV里面是分开的两步。
inferCNV分析完之后,我们一般会得到如下的三个文件:
17_HMM_predHMMi6.rand_trees.hmm_mode-subclusters.cell_groupings包含了根据CNV分类的结果,一共两列,一列是类别名称(1.1.1.1, 1.1.1.2, 1.1.2.1, 1.1.2.2, 1.2.1.1, 1.2.1.2, 1.2.2.1, 1.2.2.2这8类),另一列是细胞编号。这个文件不止包含观测,还有参照,参照对应的行要去掉。
HMM_CNV_predictions.HMMi6.rand_trees.hmm_mode-subclusters.Pnorm_0.5.pred_cnv_regions.dat
# cell_group_name cnv_name state chr start end
# all_observations.all_observations.1.1.1.1 chr1-region_1 2 chr1 14363 145116922
# all_observations.all_observations.1.1.1.1 chr1-region_3 3 chr1 151264273 156182587
第二列是CNV的name,唯一;第一列是CNV所属的group,示例在"subclusters"模式下有7个group;4 5 6列包含CNV的坐标;第三列表示状态:
# State 1: 0x: complete loss
# State 2: 0.5x: loss of one copy
# State 3: 1x: neutral
# State 4: 1.5x: addition of one copy
# State 5: 2x: addition of two copies
# State 6: 3x: essentially a placeholder for >2x copies but modeled as 3x
- HMM_CNV_predictions.HMMi6.rand_trees.hmm_mode-subclusters.Pnorm_0.5.pred_cnv_genes.dat
# cell_group_name gene_region_name state gene chr start end
# all_observations.all_observations.1.1.1.1 chr1-region_1 2 WASH7P chr1 14363 29806
# all_observations.all_observations.1.1.1.1 chr1-region_1 2 LINC00115 chr1 14363 29806
每一个group(第一列), 每一个CNV片段(第二列)上面每一个基因(第四列)的CNV状态(第三列),文件中基因这一列是唯一的。相当于上一个文件细化到基因层面。
需要说明的是,上面三个文件只有第一个文件是画进化树需要的,后面两个文件是为了注释进化树的分枝。