38:    public static final boolean DEFAULT_USE_MODULARITY = false;
88:          + "-q --quality-function {CPM|modularity} (default: CPM)\n"
90:          + "    the modularity quality function can be used.\n"
143:        boolean useModularity = DEFAULT_USE_MODULARITY;
166:                    if (((argIndex + 1) >= args.length) || (!args[argIndex + 1].equals("CPM") && !args[argIndex + 1].equals("modularity")))
167:                        throw new IllegalArgumentException("Value must be 'CPM' or 'modularity'.");
168:                    useModularity = args[argIndex + 1].equals("modularity");
300:        Network network = readEdgeList(edgeListFilename, useModularity, weightedEdges, sortedEdgeList);
302:        System.err.println("Network consists of " + network.getNNodes() + " nodes and " + network.getNEdges() + " edges" + (weightedEdges ? " with a total edge weight of " + network.getTotalEdgeWeight() : "") + ".");
320:        System.err.println("Quality function:             " + (useModularity ? "modularity" : "CPM"));
322:        if ((!weightedEdges) && (!useModularity) && (resolution >= 1))
331:        double resolution2 = useModularity ? (resolution / (2 * network.getTotalEdgeWeight() + network.getTotalEdgeWeightSelfLinks())) : resolution;
333:        IterativeCPMClusteringAlgorithm algorithm = useLouvain ? new LouvainAlgorithm(resolution2, nIterations, random) : new LeidenAlgorithm(resolution2, nIterations, randomness, random);
340:            double quality = algorithm.calcQuality(network, clustering);
365:     * @param useModularity  Indicates whether to use the modularity or the CPM
372:    public static Network readEdgeList(String filename, boolean useModularity, boolean weightedEdges, boolean sortedEdgeList)
460:                network = new Network(nNodes, useModularity, edges2, edgeWeights.toArray(), sortedEdgeList, true);
462:                network = new Network(nNodes, useModularity, edges2, sortedEdgeList, true);
111:    public double calcQuality(Network network, Clustering clustering)
112-    {
113-        double quality;
114-        double[] clusterWeights;
115-        int i, j, k;
116-
117-        quality = 0;
118-
119-        for (i = 0; i < network.nNodes; i++)
120-        {
121-            j = clustering.clusters[i];
122-            for (k = network.firstNeighborIndices[i]; k < network.firstNeighborIndices[i + 1]; k++)
123-                if (clustering.clusters[network.neighbors[k]] == j)
