gpt4 book ai didi

python - 在Python中从字母数字边缘列表创建加权邻接列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:35 35 4
gpt4 key购买 nike

我一直在研究蛋白质-蛋白质相互作用的数据集。我有以下格式的边缘列表:

AIG676464 AIG8475985 0.00035. Protein 1, Protein 2, weight.

我尝试了多种方法,但无法让它输出矩阵。我希望得到的是相互作用的矩阵形式。任何帮助将不胜感激。 Python 或 R 都可以。

我尝试过networkx:

import networkx as nx

fh = open("InWeb29.txt", 'rb')
#d = fh.write(textline)
#fh.close()

G = nx.read_edgelist(fh)
G = nx.Graph([()])
A = nx.adjacency_matrix(G)
print(A.todense())
A.setdiag(A.diagonal()*2)
print(A.todense())

这是迄今为止我的其他代码:

import csv
import pandas as pd

"Load in data file"
"""Read in the data file"""

df = pd.read_csv("datafile.txt", sep= '\t', header=0)
headers = list(df)
prot1 = df[df.columns[0]]
prot2 = df[df.columns[1]]
weight = df[df.columns[2]]
print prot1
with open("datafile.txt") as f:
next(f)
data = [tuple(map(str,row)) for row in csv.reader(f)]

n = max(max(prot1, prot2) for prot1, prot2, weight in data)
matrix = [[None]* n for i in range(n)]

for prot1, prot2 in data:
matrix[prot1][prot2]= weight

for row in matrix:
print(row)

最佳答案

您可以使用 NetworkX read_weighted_edgelist

import networkx as nx
import StringIO

s = StringIO.StringIO("AIG676464 AIG8475985 0.00035")

G = nx.read_weighted_edgelist(s)
A = nx.adjacency_matrix(G)

print A.todense()

输出

[[ 0.       0.00035]
[ 0.00035 0. ]]

关于python - 在Python中从字母数字边缘列表创建加权邻接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27279946/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com