CINNA (Central Informative Nodes in Network Analysis) is an R package for computing, analyzing and comparing centrality measures. It has all useful functions in centrality network analysis. By using CINNA, researchers would be able to distinguish and calculate all proper centralities based on the network structure. Additionally, they can detect which centrality measures can discover real central nodes of the network more accurately. In the other words, they can choose the most appropriate centrality measure which is most informative about influential nodes. Moreover, CINNA has provided some visualization functions for graph visualization based on centrality, comparing cenralities values and also evaluation of nodes in all centralitie’s values.

Centrality types are defined as measures for identifying the most important vertices within a network in graph theory. Several kinds of centrality has been provided to compute most central nodes by different formulas, while some analysis is needed to evaluate the most informative ones. In this package, we have prepared these resolutions and some examples of real networks.

This package can be used in R environment platform. CINNA is now available on CRAN repository. To download it, please click here.

To install it directly from R:

In order to cite, please refer to:

“M Ashtiani, A Salehzadeh, Z Razaghi-Moghadam, H Hennig, Olaf Wolkenhauer, M Mirzaie, M Jafari. A systematic survey of centrality measures for protein-protein interaction networks. (https://www.ncbi.nlm.nih.gov/pubmed/30064421).

“M Ashtiani, M Mirzaie, M Jafari. CINNA: An R/CRAN package to decipher Central Informative Nodes in Network Analysis. (https://www.ncbi.nlm.nih.gov/pubmed/30239607).

For the example in the following sections, we assume that the “CINNA” package has been properly installed into the R environment. This can be done by typing

into the R console. After installations, the “CINNA” package can be loaded via

An illustration of the use of an approach for CINNA would be via using an existing data set in the package:

```
## IGRAPH 455c916 U--- 34 78 --
## + attr: id (v/n)
## + edges from 455c916:
## [1] 1-- 2 1-- 3 2-- 3 1-- 4 2-- 4 3-- 4 1-- 5 1-- 6 1-- 7 5-- 7
## [11] 6-- 7 1-- 8 2-- 8 3-- 8 4-- 8 1-- 9 3-- 9 3--10 1--11 5--11
## [21] 6--11 1--12 1--13 4--13 1--14 2--14 3--14 4--14 6--17 7--17
## [31] 1--18 2--18 1--20 2--20 1--22 2--22 24--26 25--26 3--28 24--28
## [41] 25--28 3--29 24--30 27--30 2--31 9--31 1--32 25--32 26--32 29--32
## [51] 3--33 9--33 15--33 16--33 19--33 21--33 23--33 24--33 30--33 31--33
## [61] 32--33 9--34 10--34 14--34 15--34 16--34 19--34 20--34 21--34 23--34
## [71] 24--34 27--34 28--34 29--34 30--34 31--34 32--34 33--34
```

The below steps would be a simple exemplary usage of this package:

“graph.extract.components” function is able to read “igraph” and “network” objects and returns their componets as a list of “igraph” objects. This function also has this ability to recognized bipartite graphs and user can decide that which project is suitable for his analysis. In order to use this function, we use zachary dataset and develop it in all of our functions.

`graph_extract_components(zachary)`

```
## [[1]]
## IGRAPH 50cb7c7 U--- 34 78 --
## + attr: id (v/n)
## + edges from 50cb7c7:
## [1] 1-- 2 1-- 3 2-- 3 1-- 4 2-- 4 3-- 4 1-- 5 1-- 6 1-- 7 5-- 7
## [11] 6-- 7 1-- 8 2-- 8 3-- 8 4-- 8 1-- 9 3-- 9 3--10 1--11 5--11
## [21] 6--11 1--12 1--13 4--13 1--14 2--14 3--14 4--14 6--17 7--17
## [31] 1--18 2--18 1--20 2--20 1--22 2--22 24--26 25--26 3--28 24--28
## [41] 25--28 3--29 24--30 27--30 2--31 9--31 1--32 25--32 26--32 29--32
## [51] 3--33 9--33 15--33 16--33 19--33 21--33 23--33 24--33 30--33 31--33
## [61] 32--33 9--34 10--34 14--34 15--34 16--34 19--34 20--34 21--34 23--34
## [71] 24--34 27--34 28--34 29--34 30--34 31--34 32--34 33--34
```

In this function, you have the ability to specify some centrality types that is not your favor to calculate by the “except” argument:

`pr_cent <- proper_centralities(zachary)`

```
## [1] "subgraph centrality scores"
## [2] "Topological Coefficient"
## [3] "Average Distance"
## [4] "Barycenter Centrality"
## [5] "BottleNeck Centrality"
## [6] "Centroid value"
## [7] "Closeness Centrality (Freeman)"
## [8] "ClusterRank"
## [9] "Decay Centrality"
## [10] "Degree Centrality"
## [11] "Diffusion Degree"
## [12] "DMNC - Density of Maximum Neighborhood Component"
## [13] "Eccentricity Centrality"
## [14] "Harary Centrality"
## [15] "eigenvector centralities"
## [16] "K-core Decomposition"
## [17] "Geodesic K-Path Centrality"
## [18] "Katz Centrality (Katz Status Index)"
## [19] "Kleinberg's authority centrality scores"
## [20] "Kleinberg's hub centrality scores"
## [21] "clustering coefficient"
## [22] "Lin Centrality"
## [23] "Lobby Index (Centrality)"
## [24] "Markov Centrality"
## [25] "Radiality Centrality"
## [26] "Shortest-Paths Betweenness Centrality"
## [27] "Current-Flow Closeness Centrality"
## [28] "Closeness centrality (Latora)"
## [29] "Communicability Betweenness Centrality"
## [30] "Community Centrality"
## [31] "Cross-Clique Connectivity"
## [32] "Entropy Centrality"
## [33] "EPC - Edge Percolated Component"
## [34] "Laplacian Centrality"
## [35] "Leverage Centrality"
## [36] "MNC - Maximum Neighborhood Component"
## [37] "Hubbell Index"
## [38] "Semi Local Centrality"
## [39] "Closeness Vitality"
## [40] "Residual Closeness Centrality"
## [41] "Stress Centrality"
## [42] "Load Centrality"
## [43] "Flow Betweenness Centrality"
## [44] "Information Centrality"
## [45] "Dangalchev Closeness Centrality"
## [46] "Group Centrality"
## [47] "Harmonic Centrality"
## [48] "Local Bridging Centrality"
## [49] "Wiener Index Centrality"
```

`calc_cent <- calculate_centralities(zachary, except = pr_cent[5:40])`

In order to figure out the order of most important centrality types based on your graph structure, “pca.centralities” function can be used. This applies principal component analysis on the computed centrality values. For this, the result of “calculate.centralities” method is needed:

`pca_centralities( calc_cent )`

On of the way of complex large network visualizations(more than 100 nodes and 200 edges) is using heatmap. “visualize.heatmap” function demonstrates a heatmap plot between the centrality values. The input is a list containing the computed values.

`visualize_heatmap( calc_cent , scale = TRUE )`