package i5.las2peer.services.ocd.metrics;
import static org.junit.Assert.assertEquals;
import i5.las2peer.services.ocd.algorithms.utils.OcdAlgorithmException;
import i5.las2peer.services.ocd.graphs.Cover;
import i5.las2peer.services.ocd.graphs.CustomGraph;
import i5.las2peer.services.ocd.metrics.ExtendedModularityMetric;
import i5.las2peer.services.ocd.metrics.OcdMetricException;
import i5.las2peer.services.ocd.metrics.OcdMetricType;
import i5.las2peer.services.ocd.metrics.OcdMetricExecutor;
import i5.las2peer.services.ocd.testsUtils.OcdTestGraphFactory;
import org.junit.Test;
import org.la4j.matrix.Matrix;
import org.la4j.matrix.sparse.CCSMatrix;
public class OcdMetricExecutorTest {
@Test
public void testExtendedModularityOnDirectedAperiodicTwoCommunities() throws OcdAlgorithmException, OcdMetricException, InterruptedException {
CustomGraph graph = OcdTestGraphFactory.getDirectedAperiodicTwoCommunitiesGraph();
Matrix memberships = new CCSMatrix(graph.nodeCount(), 3);
memberships.set(0, 0, 1);
memberships.set(1, 0, 0.7);
memberships.set(1, 1, 0.3);
memberships.set(2, 0, 1);
memberships.set(3, 0, 1);
memberships.set(4, 0, 0.8);
memberships.set(4, 1, 0.2);
memberships.set(5, 1, 0.4);
memberships.set(5, 2, 0.6);
memberships.set(6, 2, 1);
memberships.set(7, 2, 1);
memberships.set(8, 2, 1);
memberships.set(9, 1, 0.1);
memberships.set(9, 2, 0.9);
memberships.set(10, 0, 0.4);
memberships.set(10, 1, 0.4);
memberships.set(10, 2, 0.2);
Cover cover = new Cover(graph, memberships);
ExtendedModularityMetric metric = new ExtendedModularityMetric();
OcdMetricExecutor executor = new OcdMetricExecutor();
executor.executeStatisticalMeasure(cover, metric);
assertEquals(0.581, cover.getMetric(OcdMetricType.EXTENDED_MODULARITY).getValue(), 0.01);
System.out.println(cover);
}
}