python将gml格式的图数据转为txt格式,点和边的字符值分别用数字替代

# -*- coding: utf-8 -*-
import networkx as nx
import copy


# 抽取gml中的数据
# networkx可以直接通过函数从gml文件中读出数据
def read_gml(data):
    G = nx.read_gml(data)
    nodes = []
    edges = []
    nodes_id = dict()
    nodes_label = dict()
    edges_id = []
    for id, label in enumerate(G.nodes()):
        nodes_id[label] = id
        nodes_label[id] = label
        nodes.append(id)
    for (v0, v1) in G.edges():
        print(v1)
        temp = [nodes_id[v0], nodes_id[v1]]
        edges.append(temp)
    edges_id = copy.deepcopy(edges)
    G = nx.Graph()
    G.add_nodes_from(nodes)
    G.add_edges_from(edges)
    return G, nodes_id, edges_id, nodes_label


# 保存子图边集
def save(data, file_name):
    f = open(file_name, 'w')
    temp = ''
    for item in data:
        temp += str(item[0]) + ' ' + str(item[1])
        temp += '\n'
    f.write(temp)
    f.close()


if __name__ == "__main__":
    G, nodes_id, edges_id, nodes_label = read_gml('../../data/genuine/celegansneural.gml')
    print(edges_id)
    save(edges_id, '../../data/genuine/celegansneural.txt')

 

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
【强烈推荐,非常好的论文】如今人们生活在一个网络无处不在的时代,例如,交通运输网、移动通信网、互联网、在线社交网等,这些网络结构复杂,人们无法直接从中提取有用信息。社区发现作为一种重要的网络分析技术,能够挖掘出网络中具有某些共性的节集合,有助于人们更加清楚的认识网络,吸引了很多专家的注意。随着现实网络和人们需求的变化,社区发现研究的侧重也在不断变化。最初研究静态小规模网络的社区发现算法,随后由于网络规模的增大,算法的可伸缩性受到限制,人们开始研究如何提高算法效率。鉴于网络动态变化的本质特征以及人们对社区结构准确性和实时性的要求,动态网络社区发现开始受到关注。 本文首先介绍了社区发现相关技术,分析了经典的静态和动态社区发现算法及其优缺,例如,GN算法、KL算法、CMP算法、GraphScope算法、FaceNet算法等。然后深入分析了基于贪婪思想的SHRINK-G算法,该算法不需要用户提供参数并且对每个节只访问一次,算法效率较高,但存在的问题是对社区边界的处理并不合理,容易使其成为无社区归属的节,为此我们改进SHRINK-G算法,提出了 MSHRINK-G算法。随后基于MSHRINK-G算法研究了动态网络中的社区发现问题,并提出了基于增量处理的DMSHRINK-G算法。通过在LFR合成数据集和不同规模的真实数据集上的实验结果表明,MSHRINK-G算法准确性得到较大提高,DMSHRINK-G算法能够准确处理网络变化且算法效率较高。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赴前尘

喜欢我的文章?请我喝杯咖啡吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值