extern/PGD/graphlet_params.h
void print_help(char *argv0) {
		const char *params =
				"Usage: %s -f path\n"
				"\t \n"
				"\t pgd options:\n"
				"\t=================================================================================\n"
				"\tParallel Parameterized Graphlet Decomposition (PGD) Library\n"
				"\t=================================================================================\n"
				"\t-f, --file,--graph              : Input GRAPH file for computing the graphlets (e.g., matrix market format, simple edge list). \n"
				"\t-a, --algorithm                 : Algorithm for the GRAPHLET DECOMPOSITION. Default: exact, approximate, etc.  \n"
				"\t---------------------------------------------------------------------------------\n"
				"\t-w, --workers                   : Number of PROCESSING UNITS (workers) for the algorithm to use (default = max). \n"
				"\t-b, --block_size                : Size of batch (number of jobs) dynamically assigned to the processing unit, that is, 1, 64, 512, etc.  Default: -b 64\n"
				"\t---------------------------------------------------------------------------------\n"
				"\t-o, --ordering                  : Strategy used to determine the order in which the edge/node graphlets are computed.\n"
				"\t                                  Default: -o degree (kcore, rand, natural/off, etc.).\n"
				"\t    --s2l                       : Direction of the ordering (default: largest to smallest).\n"
				"\t                                  Note to order from smallest to largest, set '--s2l'  \n"
				"\t-n, --neigh_ordering            : Strategy used to order the neighbors of each node. Default: degree (kcore, rand, natural, etc.)\n"
				"\t                                  Note only applicable if CSC/CSR is used (-r csc).\n"
				"\t    --s2l_neigh                 : Order direction for neighbor/csc ordering strategy\n"
				"\t                                  (e.g., --neigh_ordering degree --s2l_neigh, default: largest to smallest)\n"
				"\t---------------------------------------------------------------------------------\n"
				"\t-c, --counts,--macro            : Compute MACRO (GLOBAL) GRAPHLET FEATURES and save counts to file (e.g., --counts name.graphlets)\n"
				"\t-m, --micro                     : Compute MICRO (LOCAL) GRAPHLET FEATURES and save EDGE-by-MOTIF feature matrix (-m name.micro_graphlets)\n"
				"\t                                  Default: OFF. NOTE: Turn ON edge graphlet counting by specifying an output file, e.g., '-m name.micro_graphlets' \n"
				"\t---------------------------------------------------------------------------------\n"
				"\t-v, --verbose                   : Output additional details to the screen. \n"
				"\t-?, -h, --help                  : Print out this help menu. \n"
				"\n"
				"\n"
				"\tREPRESENTATION: Example: ./pgd -r csc (adj, etc.)\n"
				"\t=================================================================================\n"
				"\t-r,   --rep                     : Graph representation [adj, csc, hybrid, auto, etc].\n"
				"\t                                  Default: Auto select optimal. \n"
				"\t\t'adj'    - adjacency matrix   : dense n by n matrix, O(|V|^2) storage cost\n"
				"\t\t'csc'    - comp. sparse col   : large sparse graphs, O(|V|+|E|) storage cost\n"
				"\t\t'hybrid' -  csc + adj         : small sparse and dense graphs, O(|V|^2 + |V| + |E|) storage cost\n"
				"\t-l, --adj_limit                 : Threshold/limit for creating adj representation. Default: '-l 10000' (that is <10000 nodes).\n"
				"\n"
				"\n"
				"\tORDERING TECHNIQUES: Example: ./pgd -o degree (kcore, rand, etc.)\n"
				"\t=================================================================================\n"
				"\t'degree',   'deg'                    : O(|V|)\n"
				"\t'kcore',                             : O(|E|)\n"
				"\t'rand', 'random'                     : O(|V|)\n"
				"\t'off',  'natural'                    \n"
				"\n"
				"\t Other methods for ordering include: \n"
				"\t'kcore_degree', 'kcore_deg'          : O(|V|)\n"
				"\t'degree_vol',   'deg_vol'            : O(|E|)\n"
				"\t'kcore_vol',                         : O(|E|)\n"
				"\t'deg_kcore_vol'                      : O(|E|)\n"
				"\t------------------------------------------------------------------\n"
				"\tNOTE: Default ordering is kcore (degeneracy order). For natural order, use '-o off' or '-o natural'\n"
				"\n"
				"\tCopyright Nesreen K. Ahmed (http://nesreenahmed.com) and Ryan A. Rossi (http://ryanrossi.com).\n"
				"\tWebsite: http://nesreenahmed.com/graphlets for news and updates.\n"
				"\t";
		fprintf(stderr, params, argv0);
		exit(-1);
	}
/**
	 * @brief Display usage information to help the user
	 *
	 * @param argv0
	 */
@brief Display usage information to help the user
@param argv0
@brief Display usage information to help the user @param argv0
void print_help(char *argv0) {
		const char *params =
				"Usage: %s -f path\n"
				"\t \n"
				"\t pgd options:\n"
				"\t=================================================================================\n"
				"\tParallel Parameterized Graphlet Decomposition (PGD) Library\n"
				"\t=================================================================================\n"
				"\t-f, --file,--graph              : Input GRAPH file for computing the graphlets (e.g., matrix market format, simple edge list). \n"
				"\t-a, --algorithm                 : Algorithm for the GRAPHLET DECOMPOSITION. Default: exact, approximate, etc.  \n"
				"\t---------------------------------------------------------------------------------\n"
				"\t-w, --workers                   : Number of PROCESSING UNITS (workers) for the algorithm to use (default = max). \n"
				"\t-b, --block_size                : Size of batch (number of jobs) dynamically assigned to the processing unit, that is, 1, 64, 512, etc.  Default: -b 64\n"
				"\t---------------------------------------------------------------------------------\n"
				"\t-o, --ordering                  : Strategy used to determine the order in which the edge/node graphlets are computed.\n"
				"\t                                  Default: -o degree (kcore, rand, natural/off, etc.).\n"
				"\t    --s2l                       : Direction of the ordering (default: largest to smallest).\n"
				"\t                                  Note to order from smallest to largest, set '--s2l'  \n"
				"\t-n, --neigh_ordering            : Strategy used to order the neighbors of each node. Default: degree (kcore, rand, natural, etc.)\n"
				"\t                                  Note only applicable if CSC/CSR is used (-r csc).\n"
				"\t    --s2l_neigh                 : Order direction for neighbor/csc ordering strategy\n"
				"\t                                  (e.g., --neigh_ordering degree --s2l_neigh, default: largest to smallest)\n"
				"\t---------------------------------------------------------------------------------\n"
				"\t-c, --counts,--macro            : Compute MACRO (GLOBAL) GRAPHLET FEATURES and save counts to file (e.g., --counts name.graphlets)\n"
				"\t-m, --micro                     : Compute MICRO (LOCAL) GRAPHLET FEATURES and save EDGE-by-MOTIF feature matrix (-m name.micro_graphlets)\n"
				"\t                                  Default: OFF. NOTE: Turn ON edge graphlet counting by specifying an output file, e.g., '-m name.micro_graphlets' \n"
				"\t---------------------------------------------------------------------------------\n"
				"\t-v, --verbose                   : Output additional details to the screen. \n"
				"\t-?, -h, --help                  : Print out this help menu. \n"
				"\n"
				"\n"
				"\tREPRESENTATION: Example: ./pgd -r csc (adj, etc.)\n"
				"\t=================================================================================\n"
				"\t-r,   --rep                     : Graph representation [adj, csc, hybrid, auto, etc].\n"
				"\t                                  Default: Auto select optimal. \n"
				"\t\t'adj'    - adjacency matrix   : dense n by n matrix, O(|V|^2) storage cost\n"
				"\t\t'csc'    - comp. sparse col   : large sparse graphs, O(|V|+|E|) storage cost\n"
				"\t\t'hybrid' -  csc + adj         : small sparse and dense graphs, O(|V|^2 + |V| + |E|) storage cost\n"
				"\t-l, --adj_limit                 : Threshold/limit for creating adj representation. Default: '-l 10000' (that is <10000 nodes).\n"
				"\n"
				"\n"
				"\tORDERING TECHNIQUES: Example: ./pgd -o degree (kcore, rand, etc.)\n"
				"\t=================================================================================\n"
				"\t'degree',   'deg'                    : O(|V|)\n"
				"\t'kcore',                             : O(|E|)\n"
				"\t'rand', 'random'                     : O(|V|)\n"
				"\t'off',  'natural'                    \n"
				"\n"
				"\t Other methods for ordering include: \n"
				"\t'kcore_degree', 'kcore_deg'          : O(|V|)\n"
				"\t'degree_vol',   'deg_vol'            : O(|E|)\n"
				"\t'kcore_vol',                         : O(|E|)\n"
				"\t'deg_kcore_vol'                      : O(|E|)\n"
				"\t------------------------------------------------------------------\n"
				"\tNOTE: Default ordering is kcore (degeneracy order). For natural order, use '-o off' or '-o natural'\n"
				"\n"
				"\tCopyright Nesreen K. Ahmed (http://nesreenahmed.com) and Ryan A. Rossi (http://ryanrossi.com).\n"
				"\tWebsite: http://nesreenahmed.com/graphlets for news and updates.\n"
				"\t";
		fprintf(stderr, params, argv0);
		exit(-1);
	}
void print_help ( char * argv0 ) { const char * params = " \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \n " " \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \t \n " " \t \t \n " " \t \t \n " " \t \n " " \n " " \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \t \n " " \n " " \t \n " " \t \n " " \t " ; fprintf ( stderr , params , argv0 ) ; exit ( -1 ) ; }
@brief Display usage information to help the user
 @param argv0
@brief Display usage information to help the user @param argv0