I have a similar question as posted in Convert adjacency matrix to a csv file
I want to convert the adjacency matrix output from ARACNE into a csv file using python (or possibly R).
The adj file is set up to show one gene one the right and each of its interactions with other genes. For example the file of a.csv as:
A B 0.4 C 0.3
B C 0.1 E 0.4
C D 0.2 E 0.3
So above, A and B interact with each other and the value of that interaction is 0.4. A and C > > interact with each other and the value is 0.3 and so on.
I want to change the layout so I get the file b.csv as ...
A B 0.4
A C 0.3
B C 0.1
B E 0.4
C D 0.2
C E 0.3
Basically I want a list of all interacting nodes and the corresponding values so that I can upload the file to Cytoscape and plot a network.
In this post, there is an awesome answer using Python. What about if I want to convert the format of b.csv back to a.csv? I scratched my head but cannot find a solution. I would love to see how Python can do the magic!
Thanks for answering. -Xiaoyong
This can be done using pandas.Dataframe.groupby
import pandas as pd
df = pd.read_csv('b.csv', delimiter=' ', header=None)
data = ''
for key, value in df.groupby([0]):
for i,item in enumerate(value.values):
if i == 0:
data += item[0]
for itm in item[1:]:
data += ' '+str(itm)
data += '\n'
#Saving the string
with open('a.csv', 'w') as f:
f.write(data)
Data in b.csv
was:
A B 0.4
A C 0.3
B C 0.1
B E 0.4
C D 0.2
C E 0.3
C F 0.3
A D 0.3
Generate a.csv
is:
A B 0.4 C 0.3 D 0.3
B C 0.1 E 0.4
C D 0.2 E 0.3 F 0.3