首页 > 解决方案 > 将txt文件转换为邻接矩阵

问题描述

我有一个与 将邻接矩阵转换为 csv 文件中发布的类似的问题

我想使用 python(或者可能是 R)将 ARACNE 的邻接矩阵输出转换为 csv 文件。

adj 文件设置为显示一个基因的右侧以及它与其他基因的每个相互作用。例如 a.csv 的文件为:

A B 0.4 C 0.3
B C 0.1 E 0.4
C D 0.2 E 0.3

所以上面,A 和 B 相互交互,交互的值为 0.4。A 和 C > > 相互作用,取值为 0.3 以此类推。

我想更改布局,所以我将文件 b.csv 作为...

A B 0.4
A C 0.3
B C 0.1
B E 0.4
C D 0.2
C E 0.3

基本上我想要一个所有交互节点的列表和相应的值,以便我可以将文件上传到 Cytoscape 并绘制一个网络。

在这篇文章中,有一个使用 Python 的很棒的答案。如果我想将 b.csv 的格式转换回 a.csv 怎么办?我挠了挠头,但找不到解决办法。我很想看看 Python 是如何做到这一点的!

谢谢回答。-小勇

标签: pythonadjacency-matrix

解决方案


这可以使用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)

中的数据b.csv是:

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

生成a.csv是:

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

推荐阅读