如何使用tanimoto距离形成网络

问题描述 投票:3回答:1

我有这样的数据

column-1   Column-2      Similarity_dist
chemical-1 chemical-2    0.6
chemical-1 chemical-3    0.1
chemical-1 chemical-4    0.7
chemical-1 chemical-5    0.3
chemical-2 chemical-1    0.05
chemical-2 chemical-3    0.65
chemical-2 chemical-4    0.75
chemical-2 chemical-5    0.4

。 。这样的16000行。现在我用相似截止值0.5来过滤它们,我的数据看起来像

column-1   Column-2      Similarity_dist
chemical-1 chemical-2    0.6
chemical-1 chemical-4    0.7
chemical-2 chemical-3    0.65
chemical-2 chemical-4    0.75

. .

我想找到这些化学品之间的互动网络。有没有人知道R中的方法,我可以使用化学品作为节点和距离作为边缘,然后形成网络?还有其他建议吗?任何代码?

r bioinformatics bayesian-networks
1个回答
2
投票

igraph软件包具有使这一过程变得简单的工具。我认为你的意思是这些化学品之间的无向联系。如果没有,只需删除下面的directed=FALSE部分。

## Data
Chems = read.table(text="Column-1   Column-2   Similarity_dist
chemical-1 chemical-2    0.6
chemical-1 chemical-4    0.7
chemical-2 chemical-3    0.65
chemical-2 chemical-4    0.75", 
header=TRUE, stringsAsFactors=FALSE)

现在我们有了您的数据,我们可以将其直接转换为网络。

library(igraph)
ChemGraph = graph_from_data_frame(Chems, directed=FALSE)
plot(ChemGraph)

Chemical Network

权重存储为边的属性(类型为E(ChemGraph)$Similarity_dist),可用作标签或更改链接的外观。

加成

如果有许多节点并且您只想查看子集的连接性,则可以这样:

## List the nodes you want
Wanted = c("chemical-1", "chemical-2", "chemical-4")

## Create the graph containing only wanted nodes
WantedGraph = induced_subgraph(ChemGraph, Wanted)
plot(WantedGraph)

Subgraph

© www.soinside.com 2019 - 2024. All rights reserved.