簡體   English   中英

從Python中的字母數字邊緣列表創建加權鄰接列表

[英]Create a weighted adjacency list from an alphanumeric edgelist in Python

我一直在研究蛋白質相互作用的數據集。 我的邊緣列表格式如下:

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.     ]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM