不想用Cytoscape:pyscenic单细胞转录因子分析TF-target网络图

学术   2024-09-23 09:36   重庆  

偷偷问一下,关注了吗

内容获取


1、购买打包合集(《KS科研分享与服务》付费内容打包集合),价格感人,可以加入微信VIP群(答疑交流群,甚至有小伙伴觉得群比代码更好),可以获取建号以来所有内容,群成员专享视频教程,提前更新,其他更多福利!


2、《KS科研分享与服务》公众号有QQ群,进入门槛是20元(完全是为了防止白嫖党,请理解),请考虑清楚。群里有免费推文的注释代码和示例数据(终身拥有),没有付费内容,群成员福利是购买单个付费内容半价!


需要者详情请联系作者(非需要者勿扰,处理太费时间):


这一期内容是网络图的绘制,网络图之前多多少少写过很多,公众号搜索关键词“网络图”。这里我们要展示的是pyscenic单细胞转录因子分析,TF与target基因之间的网络图。很多小伙伴,其实也包括我,明明Cytoscape绘制可能更加简单,但是奈何觉得换软件麻烦,而且还要学,所以想着R直接做出来。所以我们这里演示一下。本文注释代码及数据已上传QQ群,请自行下载!
读取数据,做一下处理,挑选需要展示的TF及gene:
library(tidyverse)library(igraph)library(ggraph)library(ggplot2)library(ggnetwork)
setwd('D:\\KS项目\\公众号文章\\pyscenic-TF-target-gene-网络图')df <- read.csv('sce.adj.csv',header = T)colnames(df)[3] <- 'Weight'#我们选择需要的TF去呈现df_sec <- df[df$TF %in% c("SOX7", "SOX15","TAL1"),]df_sec <- df_sec[df_sec$Weight >10,]
构建网络:
#构建网络gr <- df_sec %>% graph_from_data_frame(directed = T)#添加一些TF、targrt信息,方便后续数据修饰V(gr)$type = names(degree(gr))#定义TF和targrt typeV(gr)$type[V(gr)$type %in% c("SOX7", "SOX15","TAL1")] = 'TF' V(gr)$type[V(gr)$type %in% df_sec$target] = 'Target'V(gr)$size[V(gr)$type =="TF"] = 2V(gr)$size[V(gr)$type =="Target"] = 1V(gr)$color   = 'white'
作图,使用ggraph,这是ggplot格式,很熟悉了。关于图的layout可以有多种选择,不妨去igraph或者ggraph帮助函数看看,总有您满意的:
p = ggraph(gr, layout = 'sugiyama') +   geom_edge_link(aes(color = "#D6404E"), show.legend = F) +   geom_node_point(color = 'white')#网络图
#获取网络图数据,添加一些自己需要的信息pData = p$datapData = pData[rev(order(pData$type)),]pData$color[1:3] <- c("#377EB8","#FF7F00", "#4DAF4A")pData$color[pData$color == "white"] <- 'grey'

#ggplot格式作图,添加上其他内容即可p + geom_point(data=pData,aes(x,y,color=color,size=size,stroke=1), show.legend = F) + scale_color_manual(values=pData$color) + geom_text(data=subset(pData, type=='Target'),aes(x,y,label=name), size=3,fontface="italic", angle=45, hjust=1)+ geom_text(data=subset(pData, type=='TF'),aes(x,y,label=name), size=4,fontface="bold")+ theme_graph()+ scale_y_discrete(expand=expansion(mult=c(0.5,0.05)))
换一种形式,可能就是很多文章中布局:
p = ggraph(gr, layout = 'fr') +   geom_edge_link(aes(color = "#D6404E"), show.legend = F) +   geom_node_point(color = 'white')#网络图
#获取网络图数据,添加一些自己需要的信息pData = p$datapData = pData[rev(order(pData$type)),]pData$color[1:3] <- c("#377EB8","#FF7F00", "#4DAF4A")pData$color[pData$color == "white"] <- 'grey'
#ggplot格式作图,添加上其他内容即可p + geom_point(data=pData,aes(x,y,color=color,size=size,stroke=1), show.legend = F) + scale_color_manual(values=pData$color) + geom_text(data=subset(pData, type=='Target'),aes(x,y,label=name), size=3,fontface="italic")+ geom_text(data=subset(pData, type=='TF'),aes(x,y,label=name), size=4,fontface="bold")+ theme_graph()
其他形式的layout可自行探究!希望对您有用。

觉得我们分享有些用的,点个赞再走呗!

关注我们获取精彩内容:


关注不迷路:扫描下面二维码关注公众号!
B站视频号链接https://space.bilibili.com/471040659?spm_id_from=333.1007.0.0




关注 KS科研分享与服务,

认清正版优质内容和服务!

优质内容持续输出,物超所值!

合作联系:ks_account@163.com

新的板块-重要通知-双向选择

KS科研分享与服务
科研学习交流于分享,生信学习笔记,科研经历和生活!
 最新文章