单细胞copyKat分析学习和整理

CopyKAT(肿瘤拷贝数核型分析)是一种使用综合贝叶斯方法的计算工具,能够在单细胞中以5MB分辨率检测全基因组非整倍体,以便从高通量单细胞RNA测序数据中区分肿瘤细胞与正常细胞,并识别肿瘤亚克隆。

(这里提一下,“5MB”是指 5兆碱基对(5 megabase pairs, 5 Mb),表示基因组上5百万个碱基对的区域。这个分辨率意味着CopyKAT可以在单细胞中检测到跨越5百万碱基对的染色体拷贝数变化,进而识别该区域内的非整倍体(基因组拷贝数异常)。在基因组分析中,分辨率越高(即Mb数越小),就越能检测到更小范围的拷贝数变化。5Mb分辨率是一种适中的水平,能够提供足够的精度来区分肿瘤细胞和正常细胞,并检测肿瘤亚克隆的拷贝数变异)。

其推断RNAseq数据中的DNA拷贝数事件的基本逻辑是,通过相邻基因的表达水平提供深度信息,从而推断该区域的基因组拷贝数。CopyKAT估算的拷贝数谱与全基因组DNA测序获得的实际DNA拷贝数可以达到80%的高度一致性。区分肿瘤/正常细胞状态的原理在于非整倍体在90%的癌症中普遍存在。具有广泛全基因组拷贝数异常(非整倍体)的细胞被视为肿瘤细胞,而基质正常细胞和免疫细胞通常具有2N二倍体或近二倍体的拷贝数谱。

那么这个工具跟目前另一个常用的工具inferCNV之间有什么区别呢?

inferCNV是使用邻近基因表达水平的变异来推断细胞中的CNV,基于假设拷贝数变化会引起局部基因表达的显著变化。inferCNV不使用贝叶斯方法,而是基于基因表达值与正常参考细胞进行比较,识别异常表达模式来推断拷贝数变化。它需要预先指定一组正常细胞作为参考,这些参考细胞用于构建基线表达模式,再通过与肿瘤细胞的表达模式比较来推断CNV。因此,inferCNV在依赖参考细胞的选择上比CopyKAT更为严格。

在应用层面两种都可以使用~ 不必纠结。

分析步骤
1.导入
rm(list = ls())
library(copykat)
library(Seurat)
library(gplots)
library(ggplot2)
library(qs)
#这里加载的是seurat对象,替换自己的数据即可
#load("scRNA.Rdata") 
scRNA <- qread("sc_dataset.qs")
# 提取肿瘤细胞并抽样一下
scRNA <- subset(scRNA,celltype=="epithelial/cancer cells")
scRNA <- subset(scRNA,downsample = 1000)#检查一下自己导入进来的数据
DimPlot(scRNA,reduction = 'umap',label = TRUE,pt.size = 0.5) +NoLegend()

2.数据预处理
exp.rawdata <- as.matrix(scRNA@assays$RNA@counts)
3.运行CopyKat

这一步很慢

copykat.test <- copykat(rawmat=exp.rawdata, id.type="S", # S是symbol的含义ngene.chr=5, # 规定每条染色体中至少5个基因来计算DNA拷贝数(可调整)win.size=25, # 每个片段至少25个基因KS.cut=0.1, # 增加KS.cut会降低敏感度,通常范围在0.05-0.15sam.name="241016",  # 自行命名distance="euclidean", norm.cell.names="",output.seg="FLASE", plot.genes="TRUE", genome="hg20",n.cores=8)
4.提取结果

二倍体通常指正常的非癌细胞,而非整倍体则指具有染色体数量异常、可能属于癌细胞的细胞

pred.test <- data.frame(copykat.test$prediction)
# check一下数据
table(pred.test$copykat.pred)# aneuploid     diploid not.defined #       348         450         202 
# 提取aneuploid(非整倍体)/diploid(二倍体)细胞
pred.test <- pred.test[which(pred.test$copykat.pred %in% c("aneuploid","diploid")),]
CNA.test <- data.frame(copykat.test$CNAmat)

查看pred.test$copykat.pred中的数据

5.UMAP可视化
# 把结果添加到Seurat对象的meta.data中
scRNA$CopyKAT = copykat.test$prediction$copykat.pred
DimPlot(scRNA, group.by = "CopyKAT",reduction = 'umap') + scale_color_manual(values = c("#F8766D",'#02BFC4', "gray"))

6.热图可视化

开发者给的代码不用改,直接用即可

my_palette <- colorRampPalette(rev(RColorBrewer::brewer.pal(n = 3, name = "RdBu")))(n = 999)# 染色体编号转化为奇偶性(1和2),用于区分不同的染色体。chr <- as.numeric(CNA.test$chrom) %% 2+1# 创建一个黑色到灰色的颜色渐变,用于染色体颜色标注。rbPal1 <- colorRampPalette(c('black','grey'))# 为染色体创建一个颜色向量,黑色和灰色表示不同的染色体。CHR <- rbPal1(2)[as.numeric(chr)]# 扩展CHR,生成一个二列矩阵,作为热图的ColSideColors参数,用于在热图的列侧边添加染色体颜色标注。chr1 <- cbind(CHR,CHR)# 使用Dark2调色板创建一个颜色渐变,用于预测类别的颜色标注rbPal5 <- colorRampPalette(RColorBrewer::brewer.pal(n = 8, name = "Dark2")[2:1])# 从pred.test中获取拷贝数预测结果com.preN <- pred.test$copykat.pred# 将预测结果转化为颜色(对应于不同的预测类别)。pred <- rbPal5(2)[as.numeric(factor(com.preN))]cells <- rbind(pred,pred)col_breaks = c(seq(-1,-0.4,length=50),seq(-0.4,-0.2,length=150),seq(-0.2,0.2,length=600),seq(0.2,0.4,length=150),seq(0.4, 1,length=50))heatmap.3(t(CNA.test[,4:ncol(CNA.test)]),dendrogram="r", distfun = function(x) parallelDist::parDist(x,threads =4, method = "euclidean"), hclustfun = function(x) hclust(x, method="ward.D2"),ColSideColors=chr1,RowSideColors=cells,Colv=NA, Rowv=TRUE,notecol="black",col=my_palette,breaks=col_breaks, key=TRUE,keysize=1, density.info="none", trace="none",cexRow=0.1,cexCol=0.1,cex.main=1,cex.lab=0.1,symm=F,symkey=F,symbreaks=T,cex=1, cex.main=4, margins=c(10,10))legend("topright", paste("pred.",names(table(com.preN)),sep=""), pch=15,col=RColorBrewer::brewer.pal(n = 8, name = "Dark2")[2:1], cex=0.6, bty="n")

这里可以看到非整倍体和二倍体的聚类结果,笔者的数据并没有那么明显。使用者在自行分析的时候接下来就可以提起非整倍体细胞进行分析,关于这里的非定义细胞的处理,笔者也没有找到明确处理方式,但不建议纳入分析。

7.定义非整倍体肿瘤细胞的亚群

开发者这里提取了肿瘤的非整倍体细胞

然后用hc.umap <- cutree(hcc,2)划分成两群细胞,使用者可以自行划分~

但一般不用这种方法去划分肿瘤亚群hhh,可以作为辅助验证使用

tumor.cells <- pred.test$cell.names[which(pred.test$copykat.pred=="aneuploid")]
tumor.mat <- CNA.test[, which(colnames(CNA.test) %in% tumor.cells)]
hcc <- hclust(parallelDist::parDist(t(tumor.mat),threads =4, method = "euclidean"), method = "ward.D2")
hc.umap <- cutree(hcc,2)rbPal6 <- colorRampPalette(RColorBrewer::brewer.pal(n = 8, name = "Dark2")[3:4])
subpop <- rbPal6(2)[as.numeric(factor(hc.umap))]
cells <- rbind(subpop,subpop)heatmap.3(t(tumor.mat),dendrogram="r", distfun = function(x) parallelDist::parDist(x,threads =4, method = "euclidean"), hclustfun = function(x) hclust(x, method="ward.D2"),ColSideColors=chr1,RowSideColors=cells,Colv=NA, Rowv=TRUE,notecol="black",col=my_palette,breaks=col_breaks, key=TRUE,keysize=1, density.info="none", trace="none",cexRow=0.1,cexCol=0.1,cex.main=1,cex.lab=0.1,symm=F,symkey=F,symbreaks=T,cex=1, cex.main=4, margins=c(10,10))legend("topright", c("c1","c2"), pch=15,col=RColorBrewer::brewer.pal(n = 8, name = "Dark2")[3:4], cex=0.9, bty='n')

开发者不建议使用该工具去预测CNA较少的儿童肿瘤和液体肿瘤中的肿瘤细胞和正常细胞。为解决此问题,CopyKAT提供了两种方法来避免直接无结果的情况并获得一定的输出:1)输入来自同一数据集中已知正常细胞的细胞名称向量;2)通过T细胞。

参考资料:
  1. Delineating copy number and clonal substructure in human tumors from single-cell transcriptomes. Nat Biotechnol. 2021 May;39(5):599-608.

  2. github: https://github.com/navinlabcode/copykat

  3. 单细胞天地:https://mp.weixin.qq.com/s/7Qz_LSW_cYFR2BL4pS5_NA

:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟

- END -

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

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

相关文章

CTF-PWN方向 栈溢出等基础知识笔记(2)

C语言基本函数补充 write函数 ret2syscall 要求有0x80这种系统调用存在 &#xff08;0x0A是回车的意思&#xff09; 案例 通过file查看这个文件 发现是静态编译的文件 所以很多库函数都被编译进去了 但是不存在bin/sh字符串 不存在system和backdoor函数 修改&#xff0c;rea…

【环境搭建】远程服务器搭建ElasticSearch

参考&#xff1a; 非常详细的阿里云服务器安装ElasticSearch过程..._阿里云服务器使用elasticsearch-CSDN博客 服务器平台&#xff1a;AutoDL 注意&#xff1a; 1、切换为非root用户&#xff0c;su 新用户名&#xff0c;否则ES无法启动 2、安装过程中没有出现设置账号密码…

AD9361 在低至 1MHz 的频率下运行

AD9361 在低至 1MHz 的频率下运行 AD -FREQCVT1-EBZ是包含AD9361的FMCOMMS3/4/5板的附加板。虽然完整的芯片级设计包可在此 RF 收发器的ADI产品页面上找到&#xff0c;但有关此卡的信息及其使用方法、围绕它的设计包以及可使其工作的软件可在此处找到。 AD-FREQCVT1-EBZ 模块…

山西农业大学20241015

02-VUE 一. Vue中常用的指令1. Vue指令概述2 Vue中指令的分类3 Vue中指令3.1 内容渲染指令3.2 条件渲染指令3.2.1 v-show3.2.2 v-if3.2.3 v-else 和 v-else-if 3.3 事件绑定指令 v-on--重要3.3.1 内联语句3.3.2 methods中的函数名 一. Vue中常用的指令 1. Vue指令概述 概念: 指…

安装Node.js环境,安装vue工具

一、安装Node.js 去官方网站自行安装自己所需求的安装包 这是下载的官方网站 下载 | Node.js 中文网 给I accept the terms in the License Agreement打上勾然后点击Next 把安装包放到自己所知道的位置,后面一直点Next即可 等待它安装好 然后winr打开命令提示符cmd 二、安装…

MySQL中表的约束

1&#xff0c;概念 表中一定要有各种约束&#xff0c;通过约束&#xff0c;让我们来插入数据库中的数据是符合预期的。 约束本质是通过技术手段&#xff0c;倒逼程序员插入正确的数据&#xff1b;反过来&#xff0c;站在MySQL的角度来单&#xff0c;内部已经插进来的数据&…

Web安全 - 跨站点请求伪造CSRF(Cross Site Request Forgery)

文章目录 OWASP 2023 TOP 10CSRF 导图CSRF的基本概念CSRF的工作原理常见CSRF攻击模式CSRF防御策略补充建议应用场景实战防御策略选择1. CSRF Token&#xff08;首选&#xff09;2. SameSite Cookie属性3. 验证Referer和Origin4. 多因素认证 实现方案CSRF Token实现SameSite Coo…

(39)MATLAB生成高斯脉冲及其频谱

文章目录 前言一、MATLAB仿真代码二、仿真结果画图 前言 高斯脉冲在通信中是很重要的调制符号波形&#xff0c;本文使用MATLAB生成高斯脉冲&#xff0c;并使用FFT变换给出其频谱。 一、MATLAB仿真代码 代码如下&#xff1a; % 信号参数 fs 100; % 采样…

【Vercel】Vercel部署项目遇到的问题

部署问题1&#xff1a; 问题详情 部署提示报错&#xff0c;vite的命令找不到 13:18:21.159 13:18:21.160npm error This is an error with npm itself. Please report this error at: 13:18:21.160npm error 13:18:221.16 npm error A complete l <https://github.com/np…

【自动驾驶汽车通讯协议】I2C(IIC)总线通讯技术详解

文章目录 0. 前言1. I2C简介2.I2C的工作原理2.1 硬件要求&#xff1a;2.2 半双工通信&#xff1a; 3. 通信时序4. 其他特性4.1 通信速率4.2 抗干扰措施4.3 注意事项 5. 在自动驾驶汽车中的应用5.1 I2C操作模式5.2 I2C的用途 6. 总结 0. 前言 按照国际惯例&#xff0c;首先声明&…

Java—类和对象习题讲解

如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 目录 习题一&#xff1a; 习题二&#xff1a; 习题三&#xff1a;.import static 能够导入一些静态方法 习题四&#xff1a; 习题五&#xff1a; 习题六&#xff1…

【刷题册】2024.10.13 - 2024.10.15

目录 一、2024.10.131.1 BC153 [NOIP2010]数字统计1.2 NC313 两个数组的交集1.2.1 思路一&#xff1a;暴力O(N^2)1.2.2 思路二&#xff1a;hash 1.3 AB5 点击消除 二、2024.10.142.1 BC64⽜⽜的快递2.2 DP4 最⼩花费爬楼梯2.3 数组中两个字符串的最⼩距离 三、2024.10.153.1 BC…

Visual Studio Code基础:使用debugpy调试python程序

相关阅读 VS codehttps://blog.csdn.net/weixin_45791458/category_12658212.html?spm1001.2014.3001.5482 一、安装调试器插件 在VS code中可以很轻松地调试Python程序&#xff0c;首先需要安装Python调试器插件&#xff0c;如图1所示。 图1 安装调试器插件 Python Debugge…

Redis --- 第四讲 --- 常用数据结构 --- Hash、List

一、Hash哈希类型的基本介绍。 哈希表&#xff1a;之前学过的所有数据结构中&#xff0c;最最重要的。 1、日常开发中&#xff0c;出场频率非常高。 2、面试中&#xff0c;非常重要的考点。 Redis自身已经是键值对结构了。Redis自身的键值对就是通过哈希的方式来组织的。把…

16年408计算机网络

第一题&#xff1a; 解析&#xff1a; 首先我们要清楚R1,R2,R3是路由器&#xff08;网络层&#xff09;&#xff0c;Switch是以太网交换机&#xff08;数据链路层&#xff09;&#xff0c;Hub是集线器&#xff08;物理层&#xff09;。 由此可见路由器实现的最高功能层是3层&am…

如何利用phpstudy创建mysql数据库

phpStudy诞生于2007年&#xff0c;是一款老牌知名的PHP开发集成环境工具&#xff0c;产品历经多次迭代升级&#xff0c;目前有phpStudy经典版、phpStudy V8&#xff08;2019版&#xff09;等等&#xff0c;利用phpstudy可以快速搭建一个mysql环境&#xff0c;接下来我们就开始吧…

【计算机网络 - 基础问题】每日 3 题(三十六)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

Java项目:160 基于springboot物流管理系统(PPT+论文+说明文档)

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 物流管理系统有管理员和用户两个角色。 ​ 管理员功能有个人中心&#xff0c;用户管理&#xff0c;车辆信息管理&#xff0c;公告信息管理&#xff…

实现MySQL异地多活场景

作为现代化的互联网企业 &#xff0c;最怕的是什么 &#xff1f;是意外&#xff01;由各种意外导致的数据库问题&#xff0c;磁盘问题、网络问题、人员误操作问题等等&#xff0c;这些问题都可能导致数据不可用或者丢失&#xff0c;造成重大损失。 因此&#xff0c;很少会有企…

运维:winserver服务器添加nginx开机自启动

前言 发现之前做的一版windows开机自启动任务对nginx的启用无效&#xff0c;因此这里给出针对性的配置&#xff0c;以实现winserver服务器添加nginx开机自启动目的。 先前的配置方案&#xff1a;windows部署开机自启动服务_windows 服务中添加自行启动任务-CSDN博客 方案 1、进…