heatmap | cell cycle genes in Seurat

目的:使用bulk 数据,查看HeLa 双胸苷阻断法 细胞同步化 释放 [0, 3, 4.5, 6, 9, 10.5, 12, 15, 18, 19.5, 21, 22.5, 25.5, 30] 小时后 cell cycle 基因的表达情况。

1.结果

S phase

S

G2M phase

在这里插入图片描述

S + G2M phase

在这里插入图片描述
不方便看,横过来看:

在这里插入图片描述

2.代码

counts_dir="/home/wangjl/data/rsa/HeLa/"

# 1.load data----
##  load raw from featureCounts ----
HeLa.raw=read.table( paste0(counts_dir, "counts/featureCounts_HeLa_CellCycle16Points_matrix.txt"),
           skip = 1, row.names = 1, header = T)

gene.counts = HeLa.raw[, 6:ncol(HeLa.raw)] #col5 length
colnames(gene.counts) = sub("map.", "", colnames(gene.counts))
colnames(gene.counts) = sub("_Aligned.sortedByCoord.out.bam", "", colnames(gene.counts))
colnames(gene.counts)|>jsonlite::toJSON()
# ["SRR3535826","SRR3535828","SRR3535830","SRR3535832","SRR3535834","SRR3535835","SRR3535836","SRR3535837",
# "SRR3535838","SRR3535839","SRR3535840","SRR3535841","SRR3535842","SRR3535843","SRR3616961","SRR3616962"]

gene.counts[1:5, 1:2]

# rm all 0 rows
dim(gene.counts) #61209    16
gene.counts = gene.counts[ rowSums(gene.counts)>0, ]
dim(gene.counts) #42530    16

gene.counts[1:5, 1:10]

gene.length = HeLa.raw[rownames(gene.counts),'Length']




#2. normalize to TPM ----
gene.tpm=apply(gene.counts, 2, function(x){
  x1=x/gene.length
  x1/sum(x1)*1e6
})
dim(gene.tpm)
head(gene.tpm)

if(0){
  write.table(gene.tpm,    paste0(counts_dir, "counts/HeLa_cellcycle16points.gene.tpm.txt") )
  write.table(gene.length, paste0(counts_dir, "counts/HeLa_cellcycle16points.gene.length.txt") )
  write.table(gene.counts, paste0(counts_dir, "counts/HeLa_cellcycle16points.gene.counts.txt") )
}



# (1c) cycle genes from Seurat
tmp.genes=c(
  Seurat::cc.genes.updated.2019$s.genes,
  Seurat::cc.genes.updated.2019$g2m.genes
)

laply(cc.genes, length)



# (2) get tpm
setdiff(tmp.genes, rownames(gene.tpm))
dat.heatmap=gene.tpm[ intersect(rownames(gene.tpm), tmp.genes),]
# OR use all matrix
#dat.heatmap=gene.tpm #[ intersect(rownames(gene.tpm), tmp.genes),]

# rm all 0 rows
dat.heatmap=dat.heatmap[rowSums(dat.heatmap)>0,]
head(dat.heatmap[,1:5])
dim(dat.heatmap)

library(pheatmap) #https://www.jianshu.com/p/1c55ea64ff3f
# anno columns
annotation_col <- data.frame(
  #type = gene.long$type,
  phase = c("S", "G2", "G2", "G2", "M", "G1", "G1", "S", #1-8
          "G2", "G2", "M", "M", "G1", "S",     "G1", "G1"), #9-16
  time=c(0, 3, 4.5, 6, 9, 10.5, 12, 15, 18, 19.5, 21, 22.5, 25.5, 30, 31, 32),
  row.names = rownames(gene.long)
)
# set colors
ann_colors = list(
  phase = c('G1'="#66C2A5", 'S'="#FC8D62", 'G2'="#8DA0CB", 'M'="deeppink")
  #type = c('S'="#ed553b", 'ctrl'="#99b433")
)

pheatmap(
  dat.heatmap[,1:14],
  #log( dat.heatmap[,1:14] + 1 ), 
  #log(dat.heatmap[, 1:10] + 1), 
  # log(dat.heatmap[, c(16, 1:10, 11:15)] + 1),
  border_color =NA, # "white", 
  color = colorRampPalette(c("navy", "white", "firebrick3"))(50), #自定义颜色
  scale="row",
  cluster_cols = F,
  #cluster_rows = F,
  annotation_col = annotation_col, #set anno for column
  annotation_colors = ann_colors, #set colors
  show_colnames = T,
  #show_rownames = F,
  #angle_col = 315,

  #filename =paste0("tmp/HeLa_sync16Timepoints_pheatmap-2.pdf"), width=18.6, height=3.5,
  main="HeLa after sync: 14 time points\n(Seurat::cc.genes)",
  clustering_method = "ward.D2") #聚类方法

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux下运行Jmeter压测

一、在Linux服务器先安装SDK 1、先从官网下载jdk1.8.0_131.tar.gz&#xff0c;再从本地上传到Linux服务器 2、解压&#xff1a;tar -xzf jdk1.8.0_131.tar.gz&#xff0c;生成文件夹 jdk1.8.0_131 3、在/usr/目录下创建java文件夹&#xff0c;再将 jdk1.8.0_131目录移动到/u…

【操作系统】磁盘物理地址怎么表示

常见主存物理地址是一串01串&#xff0c;那磁盘物理地址呢&#xff1f; 磁盘物理地址由以下组成&#xff1a; 柱面号磁头号扇区号 重点知识点辨析&#xff1a; 磁盘物理地址的翻译是由磁盘驱动程序进行的&#xff0c;目的是将逻辑上的蔟号转化为上述的物理地址 408真题溯源…

harmonyOS鸿蒙开发工具下载安装以及使用流程

注册账号 进入鸿蒙官方网站&#xff1a;https://www.harmonyos.com/ 推荐使用手机号注册 进行实名认证 下载开发环境 华为集成开发环境IDE DevEco Device Tool下载 | HarmonyOS设备开发 下载开发工具 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装 无脑下一…

使用共享内存进行通信的代码和运行情况分析,共享内存的特点(拷贝次数,访问控制),加入命名管道进行通信的代码和运行情况分析

目录 示例代码 头文件(comm.hpp) log.hpp 基础版 -- 服务端 代码 运行情况 加入客户端 代码 运行情况 两端进行通信 客户端 代码 注意点 服务端 代码 两端运行情况 共享内存特点 拷贝次数少 管道的拷贝次数 共享内存的拷贝次数 没有访问控制 管道 共享…

Spring学习③__Bean管理

目录 IOC接口ApplicationContext 详解IOC操作Bean管理基于xml方式基于xml方式创建对象基于xml方式注入属性使用set方法进行注入通过有参数的构造进行注入p 名称空间注入&#xff08;了解&#xff09; 基于xml方式注入其他类型属性xml 注入数组类型属性 IOC接口 IOC思想基于IOC…

龙芯 操作系统选择和安装

龙芯3a5000及之后的cpu底层架构已经从mips64el改为了loongarch64 所以这里分了2种来说明&#xff0c;分别对应3a4000之前的和3a5000之后的 龙芯的系统安装难点在于操作系统的选取和引导 一、烧录工具 制作安装盘使用常规的烧录工具是不行滴&#xff0c;会提示没有\boot\initrd…

Vue 路由缓存 防止路由切换数据丢失 路由的生命周期

在切换路由的时候&#xff0c;如果写好了一丢数据在去切换路由在回到写好的数据的路由去将会丢失&#xff0c;这时可以使用路由缓存技术进行保存&#xff0c;这样两个界面来回换数据也不会丢失 在 < router-view >展示的内容都不会被销毁&#xff0c;路由来回切换数据也…

【SpringBoot3+Vue3】四【实战篇】-前端(vue基础)

目录 一、项目前置知识 二、使用vscode创建 三、vue介绍 四、局部使用vue 1、快速入门 1.1 需求 1.2 准备工作 1.3 操作 1.3.1 创建html 1.3.2 创建初始html代码 1.3.3 参照官网import vue 1.3.4 创建vue应用实例 1.3.5 准备div 1.3.6 准备用户数据 1.3.7 通过…

DPDK初始化

rte_eal_init │ ├──rte_cpu_is_supported&#xff1a;检查cpu是否支持 │ ├──rte_atomic32_test_and_set&#xff1a;操作静态局部变量run_once确保函数只执行一次 │ ├──pthread_self() 获取主线程的线程ID,只是用于打印 │ ├──eal_reset_internal_config&#x…

UE 程序化网格 计算横截面

首先在构造函数内加上程序化网格&#xff0c;然后复制网格体到程序化网格组件上&#xff0c;将Static Mesh&#xff08;类型StaticMeshActor&#xff09;的静态网格体组件给到程序化网格体上 然后把StaticMesh&#xff08;类型为StaticMeshActor&#xff09;Instance暴漏出去 …

异地工业设备集中运维、数据采集,一招搞定

为了提升运维效率&#xff0c;能够及时发现和响应设备的故障、异常和潜在问题。 越来越多的企业都在搭建“集中式”的远程智慧运维体系&#xff0c;以提高运维效率和降低成本。 异地工业设备远程运维&#xff0c;提升响应效率、降低运维成本 以国内陕西某机床公司为例&#xff…

在vmware中给linux添加硬盘

1.必须在断开linux电源的情况下&#xff0c;才能添加硬盘成功。注&#xff1a;自己好几次在开机状态下添加硬盘都失败了&#xff0c;然后关机后&#xff0c;又试了下&#xff0c;居然成功了。

Python (十一) 迭代器与生成器

迭代器 迭代器是访问集合元素的一种方式&#xff0c;可以记住遍历的位置的对象 迭代器有两个基本的方法&#xff1a;iter() 和 next() 字符串&#xff0c;列表或元组对象都可用于创建迭代器 字符串迭代 str1 Python str_iter iter(str1) print(next(str_iter)) print(next(st…

Docker入门学习笔记

学习笔记网址推送&#xff1a;wDocker 10分钟快速入门_哔哩哔哩_bilibili docker是用来解决什么问题的&#xff1f; 例如当你在本地主机写了个web应用&#xff0c;而你打算将该应用发送给其他客户端进行案例测试和运行&#xff0c;若是传统做法&#xff0c;就比较复杂&#xf…

《轻购优品》新零售玩法:消费积分认购+众筹新玩法

《轻购优品》新零售玩法&#xff1a;消费积分认购众筹新玩法 引言&#xff1a;2023年开年已来&#xff0c;政府的工作报告提出“把恢复和扩大消费摆在优先位置”&#xff0c;并且把2023年定位为“消费提振年”&#xff0c;以“全年乐享全年盛惠”为主题多地政府共同发力&#x…

mmdet 3.x 打印各类指标

和mmdet2.x中的修改地方不一样&#xff0c;在mmdet/evaluation/metrics/coco_metric.py中第72行将classwise设为True就可以打印各类指标了 但是在test的时候一直都是什么指标都不打印&#xff0c;不管是上面总的指标还是下面的各类指标&#xff0c;暂时不知道怎么处理 找到原因…

【一周安全资讯1118】北京高院发布《侵犯公民个人信息犯罪审判白皮书》;工银金融勒索案的事件响应服务商MoxFive是谁?

要闻速览 1、工信部等四部门部署开展智能网联汽车准入和上路通行试点工作 2、北京高院发布《侵犯公民个人信息犯罪审判白皮书》 3、丰田公司确认遭遇美杜莎勒索软件攻击 4、家中设备把数据信息泄露到国外&#xff0c;浙江一男子被罚5000元 5、工银金融勒索案的事件响应服务商M…

合成事件在san.js中的应用

一、 什么是合成事件 DOM3 Event 新增了合成事件(CompositionEvent ), 用于处理通常使用 IME 输入时的复杂输入序列。 二、合成事件常见事件 compositionstart&#xff1a;文本合成系统如 IME&#xff08;即输入法编辑器&#xff09;开始新的输入合成时会触发 compositionst…

如何实现用户未登录不可访问系统

在开发web系统时&#xff0c;如果用户不登录&#xff0c;发现用户也可以直接正常访问系统&#xff0c;这种设计本身并不合理&#xff0c;那么我们希望看到的效果是&#xff0c;只有用户登录成功之后才可以正常访问系统&#xff0c;如果没有登录则拒绝访问。那么我们可以使用过滤…

迪杰斯特拉算法(C++)

目录 介绍&#xff1a; 代码&#xff1a; 结果&#xff1a; 介绍&#xff1a; 迪杰斯特拉算法&#xff08;Dijkstras algorithm&#xff09;是一种用于计算加权图的单点最短路径的算法。它是由荷兰计算机科学家Edsger W. Dijkstra在1956年发明的。 该算法的思路是&#xf…
最新文章