💡
concept
【详细原理与应用】
**生物中的图数据** 1. **蛋白质相互作用网络(PPI)**:节点是蛋白质,边是物理相互作用 2. **基因调控网络**:节点是基因,边是调控关系 3. **药物-靶点网络**:二分图,连接药物和靶点蛋白质 4. **代谢网络**:节点是代谢物,边是生化反应 **GNN在生物信息学中的应用** 1. **蛋白质功能预测**:在PPI网络上,利用邻居蛋白质的功能预测目标蛋白质的功能 -...
📖 定义
生物中的图数据
1. 蛋白质相互作用网络(PPI):节点是蛋白质,边是物理相互作用
2. 基因调控网络:节点是基因,边是调控关系
3. 药物-靶点网络:二分图,连接药物和靶点蛋白质
4. 代谢网络:节点是代谢物,边是生化反应
GNN在生物信息学中的应用
1. 蛋白质功能预测:在PPI网络上,利用邻居蛋白质的功能预测目标蛋白质的功能
- 方法:GCN、GraphSAGE
- 输入:PPI网络 + 蛋白质特征(序列、结构)
- 输出:GO功能注释
2. 药物重定位(Drug Repositioning):预测已知药物的新适应症
- 方法:图注意力网络(GAT)在药物-疾病网络上
- 利用网络中已有的药物-疾病关联,预测新的关联
3. 分子性质预测:将分子表示为图(原子为节点,化学键为边)
- 方法:GNN(GCN、GAT、MPNN)
- 应用:毒性预测、溶解度预测
# 示例: 使用PyTorch Geometric进行蛋白质功能预测
"""
pip install torch-geometric
"""
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConv
from torch_geometric.data import Data
class GCN(torch.nn.Module):
def __init__(self, num_features, hidden_dim, num_classes):
super().__init__()
self.conv1 = GCNConv(num_features, hidden_dim)
self.conv2 = GCNConv(hidden_dim, num_classes)
def forward(self, data):
x, edge_index = data.x, data.edge_index
x = self.conv1(x, edge_index)
x = F.relu(x)
x = F.dropout(x, training=self.training)
x = self.conv2(x, edge_index)
return F.log_softmax(x, dim=1)
# 创建模拟的PPI网络数据
# 节点特征: 蛋白质的序列特征 (100维)
# 边: 蛋白质相互作用
num_nodes = 1000
num_features = 100
num_classes = 10 # 10个功能类别
x = torch.randn(num_nodes, num_features)
edge_index = torch.randint(0, num_nodes, (2, 5000)) # 5000条边
y = torch.randint(0, num_classes, (num_nodes,))
data = Data(x=x, edge_index=edge_index, y=y)
model = GCN(num_features, 64, num_classes)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
# 训练
model.train()
for epoch in range(100):
optimizer.zero_grad()
out = model(data)
loss = F.nll_loss(out, data.y)
loss.backward()
optimizer.step()
if epoch % 20 == 0:
print(f"Epoch {epoch}, Loss: {loss.item():.4f}")