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);
+
+}