我正在描绘肿瘤微环境,我想展示我发现的不同亚群之间的相互作用。例如,我有一个受体和配体的列表,我想证明A群体表达配体1,C群体表达受体1,所以这两个群体之间可能存在通过配体-受体1表达的相互作用。
我一直试图使用circlize通过制作chordDiagram来可视化这些交互,但它需要一个邻接矩阵作为输入,而我不知道如何创建该矩阵。邻接矩阵应该显示矩阵中任意两个基因之间关系的强度。我有6个独特的细胞群体,可以表达我感兴趣的485个配体/受体中的任何一个,目标是通过配体和受体展示这些群体之间的相互作用。
我发现了一个在RStudio中使用的工具,叫做BUS- gene.similarity:计算基因-基因相互作用的邻接矩阵。
也许我只是错误地使用了总线,但它显示:对于包含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其中A-F是我的人口。然后我将这个矩阵传递给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,它在建立基因之间的关系时也不会保持群体的身份,所以它仍然不会产生我预期的输出。
我不需要使用总线来制作矩阵,所以我不一定需要帮助来排除代码故障,我只需要一些方法来制作邻接矩阵。
我以前从来没有用过circlize或Circos,所以如果我的问题很愚蠢,我道歉。
发布于 2019-04-19 03:37:26
看起来你需要稍微改造一下你的矩阵。
您可以创建一个大小为(nrow(测试)x ncol(文本))x(nrow(测试)x ncol(文本))的新矩阵,因此在您给出的示例中,新矩阵将是36x36,列名和行名将是相同的,即A_Adam10、A_Adam17、...、A_Angpt4、B_Adam10、...、F_Angpt4。
在循环的帮助下,您可以将每一对的相似度加载到新矩阵中,现在您可以绘制矩阵。这有点复杂,运行循环也需要一段时间,但这是直观的。
欢迎您查看我的github repo,因为不久前我遇到了类似的问题,我在那里发布了详细的代码。我希望这能对你有所帮助
https://stackoverflow.com/questions/55501427
复制相似问题