Java implementation of the Ablatio Triadum (ATria) centrality algorithm for PluMA.
Based on the original C++ implementation by movingpictures83/ATria and the algorithm described in Cickovski et al, 2015, 2017.
ATria (Ablatio Triadum) is a centrality algorithm for analyzing microbial interaction networks. It identifies the most central nodes in a network by iteratively:
- Computing shortest paths using a modified Floyd-Warshall algorithm
- Calculating payoff scores for each node
- Removing triads associated with the highest-scoring node
- Repeating until all nodes are ranked
CSV format with nodes as rows and columns, where entry (i,j) represents the weight of the edge from node i to node j.
Example:
"","NodeA","NodeB","NodeC"
"NodeA",1,0.8,-0.5
"NodeB",0.8,1,0.6
"NodeC",-0.5,0.6,1Tab-separated file with columns: Name, Centrality, Rank
sconsjavac ATriaJavaPlugin.javaRun the unit tests:
javac -cp . ATriaJavaPluginTest.java
java -cp . ATriaJavaPluginTest- Place the plugin in PluMA's
plugins/directory - Create a config file:
Prefix plugins/ATriaJava/example/
Plugin ATriaJava inputfile corrP.never.csv outputfile output.noa
- Run PluMA:
./pluma config.txtThe plugin is optimized for performance with:
- Precomputed row offsets for array indexing
- Early termination in Floyd-Warshall for zero paths
- Bitwise operations for even/odd checks
- Loop hoisting and reduced bounds checking
Typical execution time: ~9ms for a 126-node network.
MIT License
- Cickovski, T., & Narasimhan, G. (2018). Constructing Lightweight and Flexible Pipelines Using Plugin-Based Microbiome Analysis (PluMA). Bioinformatics, 34(17), 2881-2888.