0

我正在分析肿瘤微环境,我想展示我发现的亚群之间的相互作用。例如,我有一个受体和配体列表,我想证明群体 A 表达配体 1,群体 C 表达受体 1,因此这两个群体之间可能通过配体-受体 1 的表达相互作用。

我一直在尝试使用 circlize 通过制作 来可视化这些交互chordDiagram,但它需要一个邻接矩阵作为输入,我不明白如何创建矩阵。邻接矩阵应该显示矩阵中任意两个基因之间关系的强度。我有 6 个独特的细胞群,可以表达我感兴趣的 485 种配体/受体中的任何一种,目标是通过配体和受体显示这些群体之间的相互作用。

我在 RStudio 中找到了一个名为 BUS-gene.similarity 的工具:计算基因-基因相互作用的邻接矩阵。

也许我只是错误地使用了 BUS,但它说:对于具有 M 个基因和 N 个实验的基因表达数据,邻接矩阵的大小为 MxM。MxM 大小的邻接矩阵,行和列都代表基因。第 i 行和第 j 列中的元素表示基因 i 和基因 j 之间的相似性。

所以,我制作了一个矩阵,其中每一列是一个亚群,每一行是我想展示与之相互作用的配体/受体。单元格具有表达式值,如下所示:

> head(Test)
            A          B           C          D           E           F
Adam10 440.755990 669.875468 748.7313995 702.991422 1872.033343 2515.074366
Adam17 369.813134 292.625603 363.0301707 434.905968 1183.152694 1375.424034
Agt     12.676036  28.269671   9.2428034  19.920561  121.587010  168.116735
Angpt1  22.807415  42.350205  25.5464603  16.010813  194.620550   99.383567
Angpt2  92.492760 186.167844 819.3679836 852.666499  669.642441 1608.748788
Angpt4   3.327743   0.693985   0.8292746   1.112826    5.463647    5.826927

AF 是我的人口。然后我将此矩阵传递给 BUS:

res<-gene.similarity(Test,measure="corr",net.trim="none")

Warning message:
In cor(mat) : the standard deviation is zero

但是应该是我的邻接矩阵的输出文件充满了 NA:

         Adam10 Adam17 
Adam10      1     NA
Adam17     NA     1       

我想也许我的矩阵太复杂了,所以我只比较了 2 个细胞群和我的配体/受体,但我得到了完全相同的输出。

我期待得到类似的东西:

         A:Adam10 A:Adam17 
C:Adam10     6       1 
E:Adam17     2      10 

但是,即使res对象给了我数字而不是NA它,在基因之间建立关系时也不能保持群体的身份,所以它仍然不会产生我预期的输出。

我不必使用 BUS 来制作矩阵,所以我不一定需要帮助解决该代码,我只需要一些方法来制作邻接矩阵。

我以前从未使用过 circlize 或 Circos,所以如果我的问题很愚蠢,我深表歉意。

4

1 回答 1

0

好像你需要稍微改变你的矩阵。
您可以创建一个大小为 (nrow(Test) x ncol(Text)) x (nrow(Test) x ncol(Text)) 的新矩阵,因此在您给出的示例中,新矩阵将为 36x36,而 colnames并且行名将相同,即 A_Adam10、A_Adam17、...、A_Angpt4、B_Adam10、...、F_Angpt4。
借助循环,您可以将每对的相似性加载到新矩阵中,现在您可以绘制矩阵。它有点复杂,运行循环也需要一段时间,但它很直观。
欢迎您查看我的github repo,因为不久前我遇到了类似的问题,并且我在那里发布了详细的代码。我希望这能帮到您

于 2019-04-18T19:37:25.763 回答