Mercurial > repos > petr-novak > repeatrxplorer
diff louvain/main_convert.cpp @ 0:1d1b9e1b2e2f draft
Uploaded
author | petr-novak |
---|---|
date | Thu, 19 Dec 2019 10:24:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/louvain/main_convert.cpp Thu Dec 19 10:24:45 2019 -0500 @@ -0,0 +1,87 @@ +// File: main_convert.cpp +// -- conversion of a graph from ascii to binary, sample main file +//----------------------------------------------------------------------------- +// Community detection +// Based on the article "Fast unfolding of community hierarchies in large networks" +// Copyright (C) 2008 V. Blondel, J.-L. Guillaume, R. Lambiotte, E. Lefebvre +// +// This program must not be distributed without agreement of the above mentionned authors. +//----------------------------------------------------------------------------- +// Author : E. Lefebvre, adapted by J.-L. Guillaume +// Email : jean-loup.guillaume@lip6.fr +// Location : Paris, France +// Time : February 2008 +//----------------------------------------------------------------------------- +// see readme.txt for more details + +#include "graph.h" + +using namespace std; + +char *infile = NULL; +char *outfile = NULL; +char *outfile_w = NULL; +int type = UNWEIGHTED; +bool do_renumber = false; + +void +usage(char *prog_name, const char *more) { + cerr << more; + cerr << "usage: " << prog_name << " -i input_file -o outfile [-r] [-w outfile_weight]" << endl << endl; + cerr << "read the graph and convert it to binary format." << endl; + cerr << "-r\tnodes are renumbered from 0 to nb_nodes-1 (the order is kept)." << endl; + cerr << "-w filename\tread the graph as a weighted one and writes the weights in a separate file." << endl; + cerr << "-h\tshow this usage message." << endl; + exit(0); +} + +void +parse_args(int argc, char **argv) { + for (int i = 1; i < argc; i++) { + if(argv[i][0] == '-') { + switch(argv[i][1]) { + case 'i': + if (i==argc-1) + usage(argv[0], "Infile missing\n"); + infile = argv[i+1]; + i++; + break; + case 'o': + if (i==argc-1) + usage(argv[0], "Outfile missing\n"); + outfile = argv[i+1]; + i++; + break; + case 'w' : + type = WEIGHTED; + outfile_w = argv[i+1]; + i++; + break; + case 'r' : + do_renumber=true; + break; + default: + usage(argv[0], "Unknown option\n"); + } + } else { + usage(argv[0], "More than one filename\n"); + } + } + if (infile==NULL || outfile==NULL) + usage(argv[0], "In or outfile missing\n"); +} + +int +main(int argc, char **argv) { + parse_args(argc, argv); + + Graph g(infile, type); + + g.clean(type); + + if (do_renumber) + g.renumber(type); + + g.display_binary(outfile, outfile_w, type); + +}