infercnv 三回首:深入理解infercnv为何能发nature

news2025/1/10 1:40:03

大家好,不知你是否还记得,前两次关于infercnv的介绍。请看这里:

肿瘤单细胞转录组拷贝数分析结果解读和应用

单细胞拷贝数变异 infercnv再回首


如果下载了示例数据,并且你已经跑了上述代码,不难得到这张图:

图片

高考作文问你对这张图的理解

01

图片


关于我对infercnv的理解:其实结果是哪种图真的不重要,重点是对图形的解读。比如本文中出现的第一张图,里面有个绿色圈圈,可以看到柱子里深灰和浅灰部分(就是我标注的A 和B部分)的突变图景肉眼几乎不可分辨,但是却被分属于两群不同的细胞群。

图片

这就说明:通过肉眼观察,从A和B的突变图景上来看,A和B的突变图景是一致的,那么我们就可以把A亚群细胞与B亚群细胞合并,把他们当作恶性细胞。

但是 柱子里所有的深灰和浅灰  所对应的组别别是seurat分群里面的2群和4群

图片

这就提示我们本文中的seurat分群结果并不一定能把恶性细胞单纯分出来
(也许我们在seurat里可以把所有分辨率都试一下,理论上应该可以分出恶性细胞)。所以我们要对seurat的分群结果进行重新命名,2群和4群中我画出来的A和B是恶性细胞,但是2群和4群中剩下的其他部分细胞不是。


其实,你仔细去看这张图的话,最左边还有一根柱子,这个柱子不同的颜色对应着infercnv突变图景的聚类结果。你会发现最左边的柱子上存在A1 和B1部分(用红字标出来的部分)正好对应着A1和B1部分的细胞。这里的A1 和B1的聚类结果就是我们想要定义的恶性细胞。我们可以通过代码获取A1和B1部分细胞id(这是一个思考题,如何获取细胞id见文末),进而命名为恶性细胞。

图片


就本数据集而言,通过这样的分析,大家能明白为啥我们要做cnvscore了吗:因为单纯通过seruat分群,只能找出2群和4群为恶性细胞。但实际上只有2群和4群中的A部分和B部分为恶性细胞。    所以说infercnv备受CNS青睐,是因为它精准的预测恶性细胞的能力,而这种能力是普通的降维聚类分群所达不到的(感兴趣的同学可以在seurat中把分辨率调大一点再试试)。

致敬!

Anoop P. Patel, Itay Tirosh, et al. Single-cell RNA-seq highlights intratumoral heterogeneity in primary glioblastoma. Science. 2014 Jun 20: 1396-1401

Tirosh I et al. Dissecting the multicellular ecosystem of metastatic melanoma by single-cell RNA-seq. Science. 2016 Apr 8;352(6282):189-96

Tirosh I et al. Single-cell RNA-seq supports a developmental hierarchy in human oligodendroglioma. Nature. 2016 Nov 10;539(7628):309-313. PubMed PMID: 27806376; PubMed Central PMCID: PMC5465819.

Venteicher AS, Tirosh I, et al. Decoupling genetics, lineages, and microenvironment in IDH-mutant gliomas by single-cell RNA-seq. Science. 2017 Mar 31;355(6332).PubMed PMID: 28360267; PubMed Central PMCID: PMC5519096.

Puram SV, Tirosh I, et al. Single-Cell Transcriptomic Analysis of Primary and Metastatic Tumor Ecosystems in Head and Neck Cancer. Cell. 2017 Dec 14;171(7):1611-1624.e24. PubMed PMID: 29198524; PubMed Central PMCID: PMC5878932.


02

图片

ok,我这里只是稍带了一下infercnv的厉害之处,下面我们进入第二个问题,你知道为什么为什么有的文章会使用另外一种图吗?:

图片


大家可以看到最左边的柱子,本文第一个图是多色的,而这个只有靛青色。你知道这分别代表什么意思吗?欢迎来稿,说出你的见解,下期见分晓~。

2.5

图片

有的时候还会出现下面这种图,看着就很诡异:

图片

但是真不用害怕,这些图都是正常的,这是由于参数的原因!你要学会找到你到底需要哪一张图。

出现各种奇怪的图,基本就两个原因:1.参数原因(cluster_by_groups和leiden_resolution参数特别重要)  2.细胞数量原因 。详情见官方链接https://www.youtube.com/watch?v=-qOcHAavZT8


03

图片

下面列举七种不同参数出的不同结果

当然你可以在每个代码里面都加上 denoise=T参数 进行降噪处理


接下来就展示一下不同的代码参数,所获得的突变图景,稍有差别。

0

如果没有cluster_by_groups=T参数的话,图形丑且不能用。

  # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics  infercnv_obj2 = infercnv::run(infercnv_obj,                                cutoff=0.1, # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics                                out_dir= "infercnv_output_noclusterbygroup",  # dir is auto-created for storing outputs                               # cluster_by_groups=T ,   # cluster                                hclust_method="ward.D2", plot_steps=F)

图片

图片


后面都加上这个参数:

1

 # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics  infercnv_obj2 = infercnv::run(infercnv_obj,                                cutoff=0.1, # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics                                out_dir= "infercnv_output",  # dir is auto-created for storing outputs                                cluster_by_groups=T ,   # cluster                                hclust_method="ward.D2", plot_steps=F)  

图片

图片

2

 infercnv_obj2 = infercnv::run(infercnv_obj,                                cutoff=0.1, # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics                                out_dir= "infercnv_output2",  # dir is auto-created for storing outputs                                cluster_by_groups=T ,   # cluster                                leiden_resolution = 0.01,                                hclust_method="ward.D2", plot_steps=F)

infercnv_obj2 = infercnv::run(infercnv_obj,

                                cutoff=0.1, # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics                                out_dir= "infercnv_outputres0.6",  # dir is auto-created for storing outputs                                cluster_by_groups=T ,   # cluster                                leiden_resolution = 0.6,                                hclust_method="ward.D2", plot_steps=F)  

图片

4

​​​

  infercnv_obj2 = infercnv::run(infercnv_obj,                                cutoff=0.1, # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics                                out_dir= "infercnv_outputres0.01",  # dir is auto-created for storing outputs                                cluster_by_groups=T ,   # cluster                                leiden_resolution = 0.01,                                HMM = TRUE,                                 plot_steps=F)                                #subcluster

图片

图片

5

  infercnv_obj2 = infercnv::run(infercnv_obj,                                cutoff=0.1,  # use 1 for smart-seq, 0.1 for 10x-genomics                                out_dir="infercnv_output_mycodes",  # dir is auto-created for storing outputs                                analysis_mode="subclusters", # 更好方法,按照 cnv 亚群进行预测,而不是样本。能更好的区分肿瘤异质性。                                cluster_by_groups=T,  # 根据细胞类型对肿瘤细胞执行单独的聚类,如 cell annotations 文件中定义的那样                                denoise=T,  # 去噪处理                                num_threads=18, # 设置线程数, 多线程运行,加快计算速度                                HMM=T,                              #  hclust_method="ward.D2",                                 plot_steps=F                                )  

图片

图片

6

    infercnv_obj2 = infercnv::run(infercnv_obj,                                cutoff=0.1, # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics                                out_dir= "infercnv_outputres0.1",  # dir is auto-created for storing outputs                                cluster_by_groups=T ,   # cluster                                leiden_resolution = 0.1,                                #hclust_method="HMM",                               plot_steps=F)  

图片

图片

7

 infercnv_obj2 = infercnv::run(infercnv_obj,                                cutoff=0.1, # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics                                out_dir= "infercnv_outputres0.2",  # dir is auto-created for storing outputs                                cluster_by_groups=T ,   # cluster                                leiden_resolution = 0.2,                                HMM = TRUE, plot_steps=F)

图片

图片


04

图片

题外话:如果超过5k个细胞,不建议用r跑程序。如果超过1w个恶性细胞,普通电脑(我的OMEN游戏本)根本带不起来哈。2w个恶性细胞的话,普通服务器带不起来哈,得用高性能计算。当然你可以设置HMM=F,这样内存消耗会小很多,然后再试试。

如果使用python的话,应该会快很多,可能内存要求不那么高,我目前还没有试验~。哪天来个超大数据集,说不定会逼得我用python。

本文中的思考题,提示:如果想获取A1和B1部分细胞id,你可以检查以下圈出来的这两个文件,可以根据里面的行名获取A1和B1部分细胞id。欢迎来稿,使用详细代码写出如何获取这些恶性细胞的id。

图片

收录于合集 #月更—单细胞

 5个

上一篇infercnv官方全流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1232601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海外服务器相较于国内服务器有何特点?亚马逊海外服务器为何零跑全球

随着数字时代的迅猛发展,云计算基础设施的重要性愈发凸显。在这个信息爆炸的全球化时代,很多企业的海外业务的成功往往取决于是否拥有安全、可靠、高性能、可扩展、灵活且全球覆盖的云基础设施,因此对很多企业来说,选择一款优质的…

基于STM32设计的(无人)智慧超市-2023改进版

改进的内容: 增加了一个智慧超市登录入口,整个上位机只有一个APP文件。 可以选择顾客或者管理员的身份进去。优化了界面的显示。 一、项目背景 智慧超市是一种新型的零售形式,它将人工智能、物联网、云计算等技术应用到超市运营中,为消费者提供更加便捷、快捷、个性化的购…

X2Keyarch迁移工具实战 | 将CentOS高效迁移至浪潮云峦操作系统KeyarchOS

X2Keyarch迁移工具实战 | 将CentOS高效迁移至浪潮云峦操作系统KeyarchOS 1. 搭建仿真线上业务环境2. 安装KeyarchOS操作系统和X2Keyarch迁移工具3. 将CentOS系统业务迁移至KeyarchOS系统 浪潮信息云峦操作系统KeyarchOS基于Linux Kernel、OpenAnolis等开源技术自主研发的一款服…

Java Enumeration 接口

Java Enumeration 接口 这段代码展示了如何使用 Enumeration 接口来遍历 Properties 对象的键。在这里,foo.getProp() 返回一个 Properties 对象,而 propertyNames() 方法返回一个 Enumeration 对象,它包含了 Properties 对象中所有键的枚举。…

shell编脚本概述和变量解释

shell的基本概述和规范 shell面向的对象 面向过程语言 (开发的时候,需要一步一步的执行) 做一件事情,排出个步骤,第一步干什么,第二步干什么,如果出现情况A,做什么处理&#xff0…

力扣每日一题-美化数组的最少删除数-2023.11.21

力扣每日一题:美化数组的最少删除数 开篇 今天的力扣每日一题居然写出来了,好开心,迫不及待地把题目分享出来,希望你也能把它狠狠拿下。 题目链接: 2216.美化数组的最少删除数 题目描述 代码思路 创建一个list集合来保存数组&a…

【机器学习】036_权重衰退

一、范数 定义:向量的范数表示一个向量有多大(分量的大小) L1范数: 即向量元素绝对值之和,用符号 ‖ v ‖ 1 表示。 公式: L2范数: 即向量的模,向量各元素绝对值的平方之和再…

对一个Series序列内的元素逐个扩展同一聚合操作一个序列中共有m个元素,从指定的第n个元素开始,对前i元素进行聚合计算Series.expanding()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 一个序列中共有m个元素 从指定的第n个元素开始 对前i元素进行聚合计算 其中&#xff1a;n < i < m 聚合计算&#xff1a;求最大、平均值等 Series.expanding(n).max() Series.expanding(…

重磅,瑞士药监局 发布 EU GMP附录1《无菌药品生产》官方解读!

近日&#xff0c;瑞士药监局发布了EU GMP附录1《无菌药品生产》&#xff08;同时也是PIC/S和WHO GMP附录1&#xff09;的解读文件&#xff0c;该文件侧重于新版EU、PIC/S和WHO GMP附录1的一些最重要的变化&#xff0c;也涵盖了长期以来反复引起问题的方面。反映了检查员对这些主…

HALCON中的运算符和控制流算子

HALCON中的运算符 Haclon中的运算符包括算术运算符、逻辑运算符、关系运算符&#xff0c;其功能和用法与C语言相类似。但HALCON中每个运算符都有一个算子相对应&#xff0c;如表2-2所示。 HALCON中的控制流算子 HALCON通过控制流算子来控制程序的走向&#xff0c;包括条件选…

MQTT协议消息代理服务远程连接

目录 1. Linux 搭建 Mosquitto 2. Linux 安装Cpolar 3. 创建MQTT服务公网连接地址 4. 客户端远程连接MQTT服务 5. 代码调用MQTT服务 6. 固定连接TCP公网地址 7. 固定地址连接测试 Mosquitto是一个开源的消息代理&#xff0c;它实现了MQTT协议版本3.1和3.1.1。它可以在不…

在浏览器中使用WebRTC获取用户IP地址

本文翻译自 Discover WebRTC: Obtain User IP Addresses in the Browser&#xff0c;作者&#xff1a;Zack&#xff0c; 略有删改。 如果需要在程序中获取当前用户的IP&#xff0c;通常手段都是需要使用服务器。但现在借助WebRTC的强大功能&#xff0c;我们可以直接在浏览器客户…

你知道如何实现游戏中的透视效果吗?

引言 游戏中的透视效果可以合理运用CtrlCV实现。 不知道大家有没有这样一段经历&#xff1a;在做Cocos项目时需要一些特定的Shader去做一些特定的效果&#xff0c;例如透视、高光、滤镜等等&#xff0c;想自己写吧&#xff0c;不怎么会啊&#xff0c;网上又找不到&#xff0c…

Gensim库——文本处理和主题建模的强大工具

在信息时代&#xff0c;海量的文本数据不断地涌现。如何从这如山如海的文本中提取有意义的信息&#xff0c;成为了一项关键任务。Python语言提供了许多优秀的库和工具来处理文本数据&#xff0c;其中一款备受推崇的工具就是Gensim库。Gensim是一个开源的Python库&#xff0c;它…

ESP32 MicroPython AI摄像头应用⑩

ESP32 MicroPython AI摄像头应用⑩ 1、AI摄像头应用2、移动检测&#xff08;LCD显示&#xff09;3、实验内容3、参考代码4、实验结果 1、AI摄像头应用 我们小车MCU支持AI(人工智能)加速&#xff0c;可以用于加速神经网络计算和信号处理等工作的向量指令 (vector instructions)…

Haclon简介及数据类型

Haclon简介 HALCON是由德国MVtec公司开发的机器视觉算法包&#xff0c;它由一千多个各自独立的函数&#xff08;算子&#xff09;构成&#xff0c;其中除了包含各类滤波、色彩以及几何、数学转换、形态学计算分析、图像校正&#xff0c;目标分类辨识、形状搜寻等基本的图像处理…

【SEO学习】专家优化

创建、编辑和推广独特的高质量内容既困难又耗时。如果你真的认真对待搜索引擎优化&#xff0c;但却没有取得预期效果&#xff0c;那么最好聘请一位搜索引擎优化专家。 搜索引擎优化专家会执行以下任务&#xff1a; 代码验证和清理 - 确保代码对搜索引擎友好并符合标准。网站结…

CentOS7安装Docker遇到的问题笔记

笔记/朱季谦 以下是笔者本人学习搭建docker过程当中记录的一些实践笔记&#xff0c;过程当中也遇到了一些坑&#xff0c;但都解决了&#xff0c;就此记录&#xff0c;留作以后再次搭建时可以直接参考。 一、首先&#xff0c;先检查CentOS版本&#xff0c;保证在CentOS7版本以…

Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)

Linux 软件包管理器 yum 什么是软件包&#xff1a; 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通…

【opencv】debug报错HEAP CORRUPTION DETECTED

运行至第一句涉及矩阵运算的代码&#xff08;如cv::multiply&#xff09;时报错 HEAP CORRUPTION DETECTED: after Normal block (#45034) at 0x000001BDC586F0E0. CRT detected that the application wrote to memory after end of heap buffer.release下不会报错&#xff0…