@@ -306,6 +306,29 @@ centralityWithHyperlinkInducedTopicSearchHITS() {
306
306
execute_cypher " ${CENTRALITY_CYPHER_DIR} /Centrality_1d_Label_Add.cypher" " ${@ } " " ${writePropertyName} Hub"
307
307
}
308
308
309
+ # Apply the centrality algorithm "Bridges".
310
+ # Requires an undirected graph projection and ignores weights. Thus, no weight property is needed.
311
+ #
312
+ # Required Parameters:
313
+ # - dependencies_projection=...
314
+ # Name prefix for the in-memory projection name for dependencies. Example: "type-centrality"
315
+ # - dependencies_projection_node=...
316
+ # Label of the nodes that will be used for the projection. Example: "Type"
317
+ centralityWithBridges () {
318
+ local CENTRALITY_CYPHER_DIR=" $CYPHER_DIR /Centrality"
319
+ local PROJECTION_CYPHER_DIR=" $CYPHER_DIR /Dependencies_Projection"
320
+
321
+ # Statistics
322
+ execute_cypher " ${CENTRALITY_CYPHER_DIR} /Centrality_10a_Bridges_Estimate.cypher" " ${@ } " " ${writePropertyName} "
323
+
324
+ # Stream to CSV
325
+ local nodeLabel
326
+ nodeLabel=$( extractQueryParameter " dependencies_projection_node" " ${@ } " )
327
+ execute_cypher " ${CENTRALITY_CYPHER_DIR} /Centrality_10d_Bridges_Stream.cypher" " ${@ } " > " ${FULL_REPORT_DIRECTORY} /${nodeLabel} _Centrality_Bridges.csv"
328
+
329
+ # TODO Update Graph (mark bridge relationships)
330
+ }
331
+
309
332
listAllResults () {
310
333
local CENTRALITY_CYPHER_DIR=" $CYPHER_DIR /Centrality"
311
334
@@ -334,25 +357,47 @@ runCentralityAlgorithms() {
334
357
listAllResults " ${@ } "
335
358
}
336
359
360
+ # Run all centrality algorithms that require an undirected graph projection.
361
+ #
362
+ # Required Parameters:
363
+ # - dependencies_projection=...
364
+ # Name prefix for the in-memory projection name for dependencies. Example: "package"
365
+ # - dependencies_projection_node=...
366
+ # Label of the nodes that will be used for the projection. Example: "centralityPageRank"
367
+ # - dependencies_projection_weight_property=...
368
+ # Name of the node property that contains the dependency weight. Example: "weight"
369
+ runUndirectedCentralityAlgorithms () {
370
+ time centralityWithBridges " ${@ } "
371
+ }
372
+
373
+
337
374
# -- Java Artifact Centrality ------------------------------------
338
375
339
376
ARTIFACT_PROJECTION=" dependencies_projection=artifact-centrality"
377
+ ARTIFACT_PROJECTION_UNDIRECTED=" dependencies_projection=${ARTIFACT_PROJECTION} -undirected"
340
378
ARTIFACT_NODE=" dependencies_projection_node=Artifact"
341
379
ARTIFACT_WEIGHT=" dependencies_projection_weight_property=weight"
342
380
343
381
if createDirectedDependencyProjection " ${ARTIFACT_PROJECTION} " " ${ARTIFACT_NODE} " " ${ARTIFACT_WEIGHT} " ; then
344
382
runCentralityAlgorithms " ${ARTIFACT_PROJECTION} " " ${ARTIFACT_NODE} " " ${ARTIFACT_WEIGHT} "
345
383
fi
384
+ if createUndirectedDependencyProjection " ${ARTIFACT_PROJECTION_UNDIRECTED} " " ${ARTIFACT_NODE} " " ${ARTIFACT_WEIGHT} " ; then
385
+ runUndirectedCentralityAlgorithms " ${ARTIFACT_PROJECTION_UNDIRECTED} " " ${ARTIFACT_NODE} "
386
+ fi
346
387
347
388
# -- Java Package Centrality -------------------------------------
348
389
349
390
PACKAGE_PROJECTION=" dependencies_projection=package-centrality"
391
+ PACKAGE_PROJECTION_UNDIRECTED=" dependencies_projection=${PACKAGE_PROJECTION} -undirected"
350
392
PACKAGE_NODE=" dependencies_projection_node=Package"
351
393
PACKAGE_WEIGHT=" dependencies_projection_weight_property=weight25PercentInterfaces"
352
394
353
395
if createDirectedDependencyProjection " ${PACKAGE_PROJECTION} " " ${PACKAGE_NODE} " " ${PACKAGE_WEIGHT} " ; then
354
396
runCentralityAlgorithms " ${PACKAGE_PROJECTION} " " ${PACKAGE_NODE} " " ${PACKAGE_WEIGHT} "
355
397
fi
398
+ if createUndirectedDependencyProjection " ${PACKAGE_PROJECTION_UNDIRECTED} " " ${PACKAGE_NODE} " " ${PACKAGE_WEIGHT} " ; then
399
+ runUndirectedCentralityAlgorithms " ${PACKAGE_PROJECTION_UNDIRECTED} " " ${PACKAGE_NODE} "
400
+ fi
356
401
357
402
# -- Java Type Centrality ----------------------------------------
358
403
378
423
379
424
MODULE_LANGUAGE=" dependencies_projection_language=Typescript"
380
425
MODULE_PROJECTION=" dependencies_projection=typescript-module-centrality"
426
+ MODULE_PROJECTION_UNDIRECTED=" dependencies_projection=${MODULE_PROJECTION} -undirected"
381
427
MODULE_NODE=" dependencies_projection_node=Module"
382
428
MODULE_WEIGHT=" dependencies_projection_weight_property=lowCouplingElement25PercentWeight"
383
429
384
430
if createDirectedDependencyProjection " ${MODULE_LANGUAGE} " " ${MODULE_PROJECTION} " " ${MODULE_NODE} " " ${MODULE_WEIGHT} " ; then
385
431
runCentralityAlgorithms " ${MODULE_PROJECTION} " " ${MODULE_NODE} " " ${MODULE_WEIGHT} "
386
432
fi
433
+ if createUndirectedDependencyProjection " ${MODULE_LANGUAGE} " " ${MODULE_PROJECTION_UNDIRECTED} " " ${MODULE_NODE} " " ${MODULE_WEIGHT} " ; then
434
+ runUndirectedCentralityAlgorithms " ${MODULE_PROJECTION_UNDIRECTED} " " ${MODULE_NODE} "
435
+ fi
387
436
388
437
# ---------------------------------------------------------------
389
438
0 commit comments