-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnodeRobDiam.R
69 lines (53 loc) · 2.1 KB
/
nodeRobDiam.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
library(igraph)
input <- read.graph("~/Documentos/Coquito/MM_coquitoCyto.txt","ncol")
input <- read.graph("~/Documentos/Data3.0/AZ/AlzheimerN.net","ncol")
fraction <- 0.05
by <- 0.005
centrality <- "betweenness"
vector.name <- NULL
hubs <- names(sort(degree(input),decreasing = TRUE))
random <- sample(hubs,length(hubs))
input.hubs <- input.random <- input
before_array <- 0
diam.hub <- diam.random <- diameter(input)
result <- data.frame(seq(0,fraction,by))
names(result) <- "fr"
if(centrality == "clustering"){
diam.centrality <- diameter(input)
input.centrality <- input
clustering <- data.frame(transitivity(input,type = "local",isolates = "zero"),names(V(input)))
names(clustering) <- c("value","ID")
data.centrality <- clustering[with(clustering,order(clustering$value,decreasing = TRUE)),]$ID
}else if(centrality == "betweenness"){
diam.centrality <- diameter(input)
input.centrality <- input
data.centrality <- names(sort(betweenness(input,directed = FALSE),decreasing = TRUE))
}else if(is.vector(centrality) & length(centrality) == vcount(input)){
diam.centrality <- diameter(input)
input.centrality <- input
data.centrality <- centrality
}else if(!is.null(centrality)){
stop("The selected option is invalid")
}
for(i in seq(by,fraction,by)){
to_delete <- round(vcount(input)*i)
if(to_delete > before_array){
input.hubs <- input.hubs - vertices(as.vector(na.omit(hubs[(before_array+1):to_delete])))
input.random <- input.random - vertices(as.vector(na.omit(random[(before_array+1):to_delete])))
}
if(!is.null(centrality)){
if(to_delete > before_array){
input.centrality <- input.centrality - vertices(as.vector(na.omit(data.centrality[(before_array+1):to_delete])))
}
diam.centrality <- c(diam.centrality,diameter(input.centrality))
}
diam.hub <- c(diam.hub,diameter(input.hubs))
diam.random <- c(diam.random,diameter(input.random))
before_array <- to_delete
}
if(centrality != "clustering" & centrality != "betweenness"){
centrality <- vector.name
}
result$f_hub <- diam.hub
result$f_random <- diam.random
result[[paste0("f_",centrality)]] <- diam.hub