def get_randomdeletion_graph(network, filename, count): while len(network) > count: toRemove = numpy.random.choice(network.nodes()) if toRemove not in nx.articulation_points(network): network.remove_node(toRemove) fh.write_edge_list("%s-RD.txt" % filename, network)
def get_randomwalk_graphs(network, filename, count): root = numpy.random.randint(1, len(network)+1) graph = nx.Graph() graph.add_node(root) actualNode = root while len(graph) < count: if numpy.random.random() < RESTART_PROB: actualNode = root else: neighbors = network.neighbors(actualNode) nextNode = neighbors[numpy.random.randint(len(neighbors))] graph.add_edge(actualNode, nextNode) actualNode = nextNode fh.write_edge_list("%s-RW.txt" % filename, graph) for node in graph.nodes(): for neighbor in network.neighbors(node): if (graph.has_node(neighbor)): graph.add_edge(node, neighbor) fh.write_edge_list("%s-IRW.txt" % filename, graph)
#!/usr/bin/env python # encoding: utf-8 import os import sys import argparse import numpy import networkx as nx import filehandler as fh if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--network', required=True) parser.add_argument('--filename', required=True) args = parser.parse_args() network = fh.load_from_edge_list(args.network) if (nx.is_connected(network)): print 'already a connected graph' else: largest = nx.connected_component_subgraphs(network)[0] fh.write_edge_list(args.filename, largest) sys.exit(0)