10X单细胞(10X空间转录组)数据分析之神经网络(社区发现算法)

hello,大家好,今天我们来分享一个简单的内容,如下图

我们在看单细胞文献的时候,经常会见到下面的图,描述各个细胞类型之间的亲疏关系,甚至于进行网络聚类,划分类别,以表征各个细胞类型之间的差异。那这个到底如何做呢??相对简单,我们今天来分享一下

Neuron network analysis

The neuron network containing all neuron types was constructed on the basis of the transcriptome similarity between each pair of neuron types(神经网络的建立主要是依据细胞类型之间转录表达的相似性). We obtained the transcriptional profile of each neuron type by averaging gene expression(基因表达的均值) across all cells within the given type, resulting in the gene expression trajectory(涉及到轨迹部分的分析) for each neuron type. We next calculated transcriptome similarity (after log transformation) as the Pearson correlation coefficient between pairwise neuron types(相关性系数衡量相似性), using 7,390 highly variable genes identified by Seurat based on their variance and mean expression. The neuron network in a graphopt layout was constructed by the package ‘‘igraph’’ in R using the force-directed(力导向) graphopt algorithm based on the above similarity matrix.

我们稍微分享一下igraph(社区神经网络)的代码

当然,实现这种神经网络的语言包括C,R,python,较为广泛。这个大家可以参考文章社区网络分析学习笔记 —— 算法实现及 igraph 介绍,我们看一下代码(示例)

导入边数据和节点数据
这里主要是将边数据和节点数据分别导入,再利用igraph包中的graph_from_data_frame()将边,节点数据进行合并构成一个网络图。注意:节点数据中可包含一些属性(年龄,性别等),这些属性可以再在分析和绘图中起到较大作用。比如:各个节点的形状可由年龄大小决定,节点颜色可由性别决定。在我们本文的数据中,只包含一个节点属性(课程所含类别:1,2,3,4),数据包含36个节点,35条边。
edges <- read.table('edge.csv', header=T, sep=',') #导入边数据
vertices <- read.table('vertices.csv', header=T, sep=',') #导入节点数据
edges;vertices
graph <- graph_from_data_frame(edges, directed = F, vertices=vertices)
directed = TRUE表示有方向;如果不需要节点数据,可以设置vertices=NULL。接下来对改图进行绘制,有两种生成方式,一是直接绘制,参数放plot()里面;二是通过修改图的方式设置参数,然后利用plot()绘制。
生成方式1(没有颜色分类)
igraph.options(vertex.size=3, vertex.label=NA, edge.arrow.size=0.5)
V(graph)$color <- colrs[V(graph)$color]
plot(graph,  
     layout=layout.reingold.tilford(graph,circular=T),  #layout.fruchterman.reingold表示弹簧式发散的布局,
     vertex.size=5,     #节点大小  
     vertex.shape='circle',    #节点不带边框none,,圆形边框circle,方块形rectangle  
     vertex.color="lightgreen",#设置颜色,其他如red,blue,cyan,yellow等
     vertex.label=vertices$name, #NULL表示不设置,为默认状态  
     vertex.label.cex=0.8,    #节点字体大小  
     vertex.label.color='black',  #节点字体颜色,red  
     vertex.label.dist=0.4,   #标签和节点位置错开
     edge.arrow.size=0,#连线的箭头的大小,若为0即为无向图,当然有些数据格式不支持有向图  
     edge.width = 0.5, #连接线宽度
     edge.color="gray")  #连线颜色

当然,上面的plot函数中,很多参数你都可以使用默认参数,最主要的是layout的设置。下面我整理了一些用的比较多的选项。

生成方式2(有颜色分类)
这里主要是将节点的属性color加入其中,通过颜色来呈现。因为节点比较多,所以把V(graph)$size调的比较小。
l = layout.reingold.tilford(graph,circular=T)
V(graph)$size <- 8  
colrs <- c('#0096ff', "lightblue", "azure3","firebrick1")
V(graph)$color <- colrs[vertices$color] #根据类型设置颜色,按照类型分组
V(graph)$label.color <- 'black' #设置节点标记的颜色
V(graph)$label <- V(graph)$name 
E(graph)$arrow.size=0.3 #设置箭头大
#生成图
plot(graph, layout=l)

当然,还可以进一步优化,精细的调节就会得到文献中的结果。

我们这里最好还是多多熟悉其中社区发现的算法,运用到我们单细胞的数据,但是今天的重点并不是将这个运用到单细胞数据,而是我们的空间转录组。
之前分享的文献中提到了细胞网络,社区网络在空间转录组什么作用呢?体现的就是位置迁移,社区网络的位置迁移,这个研究相当重要。如下图:

很多时候我们很想知道疾病样本中社区网络的改变,而这个给我们提供了很好的借鉴。

今天是9月28号,30号下午我会给大家线上介绍单细胞空间转录组的个性化分析,希望大家多多来交流。

生活很好,有你更好

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值