2014-12-03 2 views
1

저는이 단백질 - 단백질 상호 작용의 데이터 세트를 연구하고 있습니다. 나는 다음과 같은 형식의 edgelist를 가지고있다.Python의 영숫자 edgelist에서 가중치가있는 인접성 목록을 만듭니다.

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

나는 여러 가지 방법을 시도해 본 결과 출력 할 수 없다. 내가 얻고 자하는 것은 행렬 형태의 상호 작용입니다. 어떤 도움이라도 대단히 감사하겠습니다. 파이썬이나 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()) 

지금까지 내 다른 코드입니다 : 그것은 당신이 사용할 수있는 NetworkX

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)  
+0

시험 데이터의 짧은 붙여 넣기와 테스트 세트의 원하는 출력을 추가하십시오. – bjornsen

+0

R의'igraph' 프레임 워크에서 잘 작동한다면'get.adjacency()'가 도움이 될 것입니다. –

+0

다른 시도해 보겠습니다. – Nev

답변

1

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

좋아, 그게 바로 Aric이 원하는거야! 정말 고마워!! 도와 주셔서 감사합니다! 지금 이걸 시도해! – Nev

관련 문제