Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
33 changed files
with
1,126 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Standalone application for CLI execution | ||
|
||
Build the project, and move the files to the root of the repository. | ||
|
||
```bash | ||
cd $(git rev-parse --show-toplevel) && \ | ||
rm -rf lib/ bin/ && \ | ||
./gradlew clean build installDist -x test && \ | ||
cp -R analyzer/build/install/analyzer/. analyzer && \ | ||
cd analyzer | ||
``` | ||
|
||
Ensure that the JVM will have sufficient memory by using: | ||
|
||
```bash | ||
export JAVA_OPTS="-Xms4G -Xmx12G" | ||
``` | ||
|
||
Run the analyzer with: | ||
|
||
```bash | ||
bin/analyzer panama/panama | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
0 intermediary_of 1 | ||
1 officer_of 2 | ||
2 registered_address 3 |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
*.csv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package analyzer; | ||
|
||
import hu.bme.mit.mba.modelmetrics.AbstractModelMetric; | ||
import hu.bme.mit.mba.modelmetrics.ModelMetric; | ||
import org.supercsv.cellprocessor.Optional; | ||
import org.supercsv.cellprocessor.constraint.NotNull; | ||
import org.supercsv.cellprocessor.ift.CellProcessor; | ||
import org.supercsv.io.CsvMapWriter; | ||
import org.supercsv.io.ICsvMapWriter; | ||
import org.supercsv.prefs.CsvPreference; | ||
|
||
import java.io.FileWriter; | ||
import java.io.IOException; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
public class Analyzer { | ||
|
||
public static final CellProcessor[] processors = new CellProcessor[]{ | ||
new NotNull(), | ||
new Optional(), | ||
new Optional(), | ||
new NotNull() | ||
}; | ||
|
||
public static void showResult(ModelMetric metric) { | ||
System.out.println(String.format("Data of %s : %s", metric.getName(), metric.getData().toString())); | ||
} | ||
|
||
public static void writeToTsv(List<AbstractModelMetric> metrics, String[] header, String filename) throws IOException { | ||
ICsvMapWriter mapWriter = null; | ||
|
||
try { | ||
mapWriter = new CsvMapWriter(new FileWriter(filename), CsvPreference.TAB_PREFERENCE); | ||
|
||
// write the header | ||
mapWriter.writeHeader(header); | ||
|
||
for (AbstractModelMetric metric : metrics) { | ||
List<Map<String, Object>> mapList = metric.getTsvMaps(header); | ||
for (Map<String, Object> map : mapList) { | ||
mapWriter.write(map, header, processors); | ||
} | ||
} | ||
|
||
} finally { | ||
if (mapWriter != null) { | ||
mapWriter.close(); | ||
} | ||
} | ||
|
||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
package analyzer; | ||
|
||
import hu.bme.mit.mba.modeladapters.csv.CsvModelAdapter; | ||
import hu.bme.mit.mba.modelmetrics.AbstractModelMetric; | ||
import hu.bme.mit.mba.modelmetrics.impl.simple.Density; | ||
import hu.bme.mit.mba.modelmetrics.impl.simple.NumberOfEdges; | ||
import hu.bme.mit.mba.modelmetrics.impl.simple.NumberOfNodes; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.DimensionActivity; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.DimensionalClusteringCoefficient; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.DimensionalDegree; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.DimensionalDegreeEntropy; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.EdgeDimensionConnectivity; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.EdgeOverlap; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.MultiplexParticipationCoefficient; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.NodeActivity; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.NumberOfTypedEdges; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.PairwiseMultiplexity; | ||
import org.supercsv.cellprocessor.constraint.NotNull; | ||
|
||
import java.io.IOException; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class Main { | ||
|
||
public static void main(String[] args) throws IOException { | ||
final String graph = args[0]; | ||
final String metrics = graph + ".tsv"; | ||
final String nodes = graph + "-nodes.csv"; | ||
final String edges = graph + "-edges.csv"; | ||
|
||
final String[] header = new String[]{"Category", "Instance", "Index", "Value"}; | ||
List<AbstractModelMetric> modelMetrics = new ArrayList<>(); | ||
|
||
// the adapter represents a bridge between model and metrics | ||
CsvModelAdapter adapter = new CsvModelAdapter(new NotNull()); | ||
|
||
// adapter must be initialized, this will create an index which is necessary during the evaluation | ||
adapter.init(nodes, edges); | ||
System.out.println("initialized"); | ||
|
||
// calculate metrics | ||
// System.out.println("degree"); | ||
// Degrees dd = new Degrees(); | ||
// dd.evaluate(adapter); | ||
// modelMetrics.add(dd); | ||
|
||
System.out.println("density"); | ||
Density d = new Density(); | ||
d.evaluate(adapter); | ||
modelMetrics.add(d); | ||
|
||
System.out.println("dimension activity"); | ||
DimensionActivity dimensionActivity = new DimensionActivity(); | ||
dimensionActivity.evaluate(adapter); | ||
modelMetrics.add(dimensionActivity); | ||
|
||
System.out.println("dimensional degree"); | ||
DimensionalDegree dimensionalDegree = new DimensionalDegree(); | ||
dimensionalDegree.evaluate(adapter); | ||
modelMetrics.add(dimensionalDegree); | ||
|
||
System.out.println("dimensional clustering coefficient"); | ||
DimensionalClusteringCoefficient dcc = new DimensionalClusteringCoefficient(); | ||
dcc.evaluate(adapter); | ||
modelMetrics.add(dcc); | ||
|
||
System.out.println("dimensional degree entropy"); | ||
DimensionalDegreeEntropy dde = new DimensionalDegreeEntropy(); | ||
dde.evaluate(adapter); | ||
modelMetrics.add(dde); | ||
|
||
System.out.println("edge dimension connectivity"); | ||
EdgeDimensionConnectivity edgeDimensionConnectivity = new EdgeDimensionConnectivity(); | ||
edgeDimensionConnectivity.evaluate(adapter); | ||
modelMetrics.add(edgeDimensionConnectivity); | ||
|
||
System.out.println("edge overlap"); | ||
EdgeOverlap eo = new EdgeOverlap(); | ||
eo.evaluate(adapter); | ||
modelMetrics.add(eo); | ||
|
||
MultiplexParticipationCoefficient mpc = new MultiplexParticipationCoefficient(); | ||
System.out.println("mpc"); | ||
mpc.evaluate(adapter); | ||
modelMetrics.add(mpc); | ||
|
||
System.out.println("node activity"); | ||
NodeActivity nodeActivity = new NodeActivity(); | ||
nodeActivity.evaluate(adapter); | ||
modelMetrics.add(nodeActivity); | ||
|
||
System.out.println("number of edges"); | ||
NumberOfEdges numberOfEdges = new NumberOfEdges(); | ||
numberOfEdges.evaluate(adapter); | ||
modelMetrics.add(numberOfEdges); | ||
|
||
System.out.println("number of nodes"); | ||
NumberOfNodes numberOfNodes = new NumberOfNodes(); | ||
numberOfNodes.evaluate(adapter); | ||
modelMetrics.add(numberOfNodes); | ||
|
||
System.out.println("number of typed edges"); | ||
NumberOfTypedEdges numberOfTypedEdges = new NumberOfTypedEdges(); | ||
numberOfEdges.evaluate(adapter); | ||
modelMetrics.add(numberOfTypedEdges); | ||
|
||
System.out.println("pairwise multiplexity"); | ||
PairwiseMultiplexity pm = new PairwiseMultiplexity(); | ||
pm.evaluate(adapter); | ||
modelMetrics.add(pm); | ||
|
||
Analyzer.writeToTsv(modelMetrics, header, metrics); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
package analyzer; | ||
|
||
import hu.bme.mit.mba.modeladapters.csv.CsvModelAdapter; | ||
import hu.bme.mit.mba.modelmetrics.AbstractModelMetric; | ||
import hu.bme.mit.mba.modelmetrics.ModelMetric; | ||
import hu.bme.mit.mba.modelmetrics.impl.simple.Degrees; | ||
import hu.bme.mit.mba.modelmetrics.impl.simple.Density; | ||
import hu.bme.mit.mba.modelmetrics.impl.simple.NumberOfEdges; | ||
import hu.bme.mit.mba.modelmetrics.impl.simple.NumberOfNodes; | ||
import hu.bme.mit.mba.modelmetrics.impl.typed.*; | ||
import org.supercsv.cellprocessor.Optional; | ||
import org.supercsv.cellprocessor.constraint.NotNull; | ||
import org.supercsv.cellprocessor.ift.CellProcessor; | ||
import org.supercsv.io.CsvMapWriter; | ||
import org.supercsv.io.ICsvMapWriter; | ||
import org.supercsv.prefs.CsvPreference; | ||
import org.testng.annotations.Test; | ||
|
||
import java.io.FileWriter; | ||
import java.io.IOException; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
public class CsvTest { | ||
|
||
@Test | ||
public void test() throws IOException { | ||
final String filename = "modelmetrics.tsv"; | ||
final String[] header = new String[]{"Category", "Instance", "Index", "Value"}; | ||
final List<AbstractModelMetric> modelMetrics = new ArrayList<>(); | ||
|
||
// the adapter represents a bridge between model and metrics | ||
CsvModelAdapter adapter = new CsvModelAdapter(new NotNull()); | ||
|
||
// adapter must be initialized, this will create an index which is necessary during the evaluation | ||
adapter.init("nodes.csv", "edges.csv"); | ||
System.out.println("initialized"); | ||
|
||
// calculate metrics | ||
System.out.println("dd"); | ||
Degrees dd = new Degrees(); | ||
dd.evaluate(adapter); | ||
modelMetrics.add(dd); | ||
// showResult(dd); | ||
|
||
System.out.println("pm"); | ||
PairwiseMultiplexity pm = new PairwiseMultiplexity(); | ||
pm.evaluate(adapter); | ||
showResult(pm); | ||
modelMetrics.add(pm); | ||
|
||
MultiplexParticipationCoefficient mpc = new MultiplexParticipationCoefficient(); | ||
System.out.println("mpc"); | ||
mpc.evaluate(adapter); | ||
modelMetrics.add(mpc); | ||
showResult(mpc); | ||
|
||
System.out.println("dimension activity"); | ||
DimensionActivity dimensionActivity = new DimensionActivity(); | ||
dimensionActivity.evaluate(adapter); | ||
showResult(dimensionActivity); | ||
modelMetrics.add(dimensionActivity); | ||
|
||
EdgeDimensionConnectivity edgeDimensionConnectivity = new EdgeDimensionConnectivity(); | ||
edgeDimensionConnectivity.evaluate(adapter); | ||
showResult(edgeDimensionConnectivity); | ||
modelMetrics.add(edgeDimensionConnectivity); | ||
|
||
Density d = new Density(); | ||
d.evaluate(adapter); | ||
modelMetrics.add(d); | ||
|
||
NumberOfNodes numberOfNodes = new NumberOfNodes(); | ||
numberOfNodes.evaluate(adapter); | ||
modelMetrics.add(numberOfNodes); | ||
|
||
NumberOfEdges numberOfEdges = new NumberOfEdges(); | ||
numberOfEdges.evaluate(adapter); | ||
modelMetrics.add(numberOfEdges); | ||
|
||
NodeActivity nodeActivity = new NodeActivity(); | ||
nodeActivity.evaluate(adapter); | ||
modelMetrics.add(nodeActivity); | ||
|
||
NumberOfTypedEdges numberOfTypedEdges = new NumberOfTypedEdges(); | ||
numberOfEdges.evaluate(adapter); | ||
modelMetrics.add(numberOfTypedEdges); | ||
|
||
DimensionalDegree dimensionalDegree = new DimensionalDegree(); | ||
dimensionalDegree.evaluate(adapter); | ||
modelMetrics.add(dimensionalDegree); | ||
|
||
writeToTsv(modelMetrics, header, filename); | ||
|
||
} | ||
|
||
|
||
private void showResult(ModelMetric metric) { | ||
System.out.println(String.format("Data of %s : %s", metric.getName(), metric.getData().toString())); | ||
} | ||
|
||
private static CellProcessor[] getProcessors() { | ||
|
||
final CellProcessor[] processors = new CellProcessor[]{ | ||
new NotNull(), | ||
new Optional(), | ||
new Optional(), | ||
new NotNull() | ||
}; | ||
|
||
return processors; | ||
} | ||
|
||
private void writeToTsv(List<AbstractModelMetric> metrics, String[] header, String filename) throws IOException { | ||
ICsvMapWriter mapWriter = null; | ||
|
||
try { | ||
mapWriter = new CsvMapWriter(new FileWriter(filename), | ||
CsvPreference.TAB_PREFERENCE); | ||
|
||
final CellProcessor[] processors = getProcessors(); | ||
|
||
// write the header | ||
mapWriter.writeHeader(header); | ||
|
||
for (AbstractModelMetric metric : metrics) { | ||
List<Map<String, Object>> mapList = metric.getTsvMaps(header); | ||
for (Map<String, Object> map : mapList) { | ||
mapWriter.write(map, header, processors); | ||
} | ||
} | ||
|
||
} finally { | ||
if (mapWriter != null) { | ||
mapWriter.close(); | ||
} | ||
} | ||
|
||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.