This is the publication of all data used analysing the Nationale Forschungsdateninfrastruktur (NFDI) with its different consortia. The source of the data are the binding Letters of Intent (LoI) of the consortia in which they name their collaboration partners.1 The following analysis only includes documents that were submitted to the DFG as binding pre-applications for 2019 and 2020 (binding Letters of Intent). Consortia that did not submit a binding Letter of Intent in 2019 or 2020 were not included. We gathered all the data at the point when the LoI have been turned in. Consortia which have not turned in a binding Letter of Intent are not considered at all.
Have a look at the GitHub repository of Dorothea Strecker (https://github.com/dorothearrr/NFDI_Netzwerk), where the data has been destilled from the various LoI.↩
Making sure that we have a common seed.
nfdi_seed <- function() {
set.seed(1234)
}
We define colors we will use for grouping consortia.
nfdi_conference_colors <- function() {
nfdi_color_code <<- c("#f5ac9f", # Medizin
"#e43516", # Lebenswissenschaften
"#f9b900", # Geisteswissenschaften
"#007aaf", # Ingenieurwissenschaften
"#6ca11d" # Chemie und Physik
)
nfdi_color_groups <<- nfdi_color_code[as.numeric(as.factor(V(nfdi_network_year)$group))]
}
Some presettings for plotting the networks.
nfdi_plot_settings <- function(){
nfdi_conference_colors()
graph_attr(nfdi_network_year, "layout") <<- norm_coords(layout.graphopt(nfdi_network_year),
ymin = -1, ymax = 1, xmin = -1, xmax = 1)*2
vertex_attr(nfdi_network_year, "label.cex") <<- .7
vertex_attr(nfdi_network_year, "label.color") <<- "black"
vertex_attr(nfdi_network_year, "label.font") <<- 1
vertex_attr(nfdi_network_year, "label.family") <<- "Helvetica"
vertex_attr(nfdi_network_year, "color") <<- nfdi_color_groups
vertex_attr(nfdi_network_year, "frame.color") <<- nfdi_color_groups
vertex_attr(nfdi_network_year, "size") <<- rescale_vertices(degree(nfdi_network_year,
mode="total"))*20
edge_attr(nfdi_network_year, "color") <- "#808080"
edge_attr(nfdi_network_year, "curved") <<- 0.1
edge_attr(nfdi_network_year, "arrow.size") <<- .5
edge_attr(nfdi_network_year, "arrow.width") <<- .5
rescale = F
}
We can define a function for rescaling the vertex size. This makes plots of the 2019 and 2020 networks visually comparable.
rescale_vertices <- function(x){(x - 3)/(20 - 3)} # min-max normalization; min = (min - 1) to omit zeroes
Next we are setting up a function to get the same presettings for all different data frames.
nfdi_presettings <- function(nfdi_edges_year,nfdi_directed_graph){
nfdi_seed()
nfdi_edges <<- get(paste0("nfdi_edges_",nfdi_edges_year))
nfdi_nodes <<- get(paste0("nfdi_nodes_",nfdi_edges_year))
nfdi_network_year <<- graph_from_data_frame(
d = nfdi_edges,
vertices = nfdi_nodes,
directed = nfdi_directed_graph)
nfdi_plot_settings()
}
The core of the this publication are the sets of edges i.e. the connections for collaborations between the consortia. So far there are only two data sets available, for 2019 and for 2020.
Now follows the information regarding the consortia.
Precisly the allocated group according to the NFDI-conference system (group
),
and since at the time of turning in the LoI none of the consortia had been funded the column (funded
) has 0
as value for all the consortia.
nfdi_nodes_2019 <- read.table(
header=TRUE,
sep=",",
text="
name,group,funded
Astro-NFDI,5,0
BERD\\@NFDI,3,0
DAPHNE,5,0
DataPLANT,2,0
FAIRmat,5,0
ForumX,3,0
GHGA,1,0
KonsortSWD,3,0
MaRDI,4,0
NFDI4Agri,2,0
NFDI4BioDiversity,2,0
NFDI4Cat,5,0
NFDI4Chem,5,0
NFDI4Crime,2,0
NFDI4Culture,3,0
NFDI4Earth,2,0
NFDI4Health,1,0
NFDI4Ing,4,0
NFDI4MSE,5,0
NFDI4Medicine,1,0
NFDI4MobilTech,4,0
PAHN-PaN,5,0
Text+,3,0
")
What follows is the data for the year 2020 and the collaboration intentions between new and already funded consortia.
nfdi_nodes_2020 <- read.table(
header=TRUE,
sep=",",
text="
name,group,funded
BERD\\@NFDI,3,0
DAPHNE4NFDI,5,0
DataPLANT,2,1
FAIRmat,5,0
GHGA,1,1
KonsortSWD,3,1
MaRDI,4,0
NFDI-MatWerk,4,0
NFDI-Neuro,1,0
NFDI4Agri,2,0
NFDI4BioDiversity,2,1
NFDI4Cat,5,1
NFDI4Chem,5,1
NFDI4Culture,3,1
NFDI4DataScience,4,0
NFDI4Earth,2,0
NFDI4Health,1,1
NFDI4Immuno,1,0
NFDI4Ing,4,1
NFDI4Memory,3,0
NFDI4Microbiota,2,0
NFDI4Objects,3,0
NFDI4SD,3,0
NFDIxCS,4,0
PUNCH4NFDI,5,0
Text+,3,0
")
Let us now display the edges for the data sets we have so far. We do this using a particular function.
nfdi_edges <- function(nfdi_edges_year) {
df <- get(paste0("nfdi_edges_",nfdi_edges_year))
# df
print(tbl_df(df), n=Inf)
}
# nfdi_edges(2019)
# nfdi_edges(2020)
nfdi_edges(2019)
# A tibble: 111 × 2 from to <fctr> <fctr> 1 Astro-NFDI PAHN-PaN 2 Astro-NFDI DAPHNE 3 Astro-NFDI NFDI4Earth 4 BERD\\@NFDI KonsortSWD 5 BERD\\@NFDI ForumX 6 BERD\\@NFDI Text+ 7 DAPHNE FAIRmat 8 DAPHNE NFDI4Chem 9 DAPHNE NFDI4Ing 10 DAPHNE NFDI4MSE 11 DAPHNE NFDI4Cat 12 DAPHNE PAHN-PaN 13 DAPHNE Astro-NFDI 14 DataPLANT NFDI4BioDiversity 15 DataPLANT NFDI4Agri 16 DataPLANT NFDI4Chem 17 FAIRmat DAPHNE 18 FAIRmat MaRDI 19 FAIRmat NFDI4Chem 20 FAIRmat NFDI4Cat 21 FAIRmat NFDI4Ing 22 FAIRmat NFDI4MSE 23 ForumX NFDI4Medicine 24 ForumX KonsortSWD 25 ForumX BERD\\@NFDI 26 ForumX NFDI4Culture 27 ForumX Text+ 28 GHGA NFDI4Medicine 29 GHGA NFDI4Health 30 KonsortSWD BERD\\@NFDI 31 KonsortSWD NFDI4BioDiversity 32 KonsortSWD NFDI4Earth 33 KonsortSWD NFDI4Health 34 KonsortSWD Text+ 35 MaRDI NFDI4MSE 36 MaRDI PAHN-PaN 37 MaRDI FAIRmat 38 MaRDI NFDI4Ing 39 MaRDI NFDI4Chem 40 MaRDI NFDI4Culture 41 NFDI4Agri NFDI4Health 42 NFDI4Agri DataPLANT 43 NFDI4Agri NFDI4BioDiversity 44 NFDI4Agri KonsortSWD 45 NFDI4Agri NFDI4Earth 46 NFDI4BioDiversity NFDI4Earth 47 NFDI4BioDiversity NFDI4Agri 48 NFDI4BioDiversity NFDI4Chem 49 NFDI4BioDiversity NFDI4Health 50 NFDI4BioDiversity KonsortSWD 51 NFDI4BioDiversity NFDI4Crime 52 NFDI4BioDiversity DataPLANT 53 NFDI4BioDiversity NFDI4Medicine 54 NFDI4Cat FAIRmat 55 NFDI4Cat NFDI4Chem 56 NFDI4Cat NFDI4Ing 57 NFDI4Cat DAPHNE 58 NFDI4Chem FAIRmat 59 NFDI4Chem NFDI4Ing 60 NFDI4Chem NFDI4Cat 61 NFDI4Chem DAPHNE 62 NFDI4Chem PAHN-PaN 63 NFDI4Chem NFDI4Health 64 NFDI4Chem NFDI4BioDiversity 65 NFDI4Crime NFDI4BioDiversity 66 NFDI4Crime NFDI4Medicine 67 NFDI4Crime Text+ 68 NFDI4Culture Text+ 69 NFDI4Culture MaRDI 70 NFDI4Culture NFDI4Ing 71 NFDI4Earth Astro-NFDI 72 NFDI4Earth KonsortSWD 73 NFDI4Earth NFDI4Agri 74 NFDI4Earth NFDI4BioDiversity 75 NFDI4Earth NFDI4Ing 76 NFDI4Health NFDI4Medicine 77 NFDI4Health GHGA 78 NFDI4Health KonsortSWD 79 NFDI4Health NFDI4Chem 80 NFDI4Health NFDI4Agri 81 NFDI4Health NFDI4Earth 82 NFDI4Health NFDI4BioDiversity 83 NFDI4Ing NFDI4MSE 84 NFDI4Ing FAIRmat 85 NFDI4Ing NFDI4MobilTech 86 NFDI4Ing NFDI4Chem 87 NFDI4Ing NFDI4Earth 88 NFDI4Ing MaRDI 89 NFDI4Ing NFDI4Medicine 90 NFDI4Ing Text+ 91 NFDI4Ing NFDI4Culture 92 NFDI4Medicine GHGA 93 NFDI4Medicine NFDI4Health 94 NFDI4Medicine NFDI4Ing 95 NFDI4Medicine NFDI4Crime 96 NFDI4Medicine ForumX 97 NFDI4Medicine KonsortSWD 98 NFDI4Medicine NFDI4Agri 99 NFDI4MobilTech NFDI4Ing 100 NFDI4MobilTech ForumX 101 NFDI4MobilTech NFDI4Earth 102 NFDI4MSE FAIRmat 103 NFDI4MSE NFDI4Ing 104 NFDI4MSE MaRDI 105 NFDI4MSE NFDI4Chem 106 NFDI4MSE DAPHNE 107 Text+ NFDI4Culture 108 Text+ KonsortSWD 109 Text+ NFDI4Ing 110 Text+ NFDI4Earth 111 Text+ NFDI4BioDiversity
nfdi_edges(2020)
# A tibble: 125 × 2 from to <fctr> <fctr> 1 BERD\\@NFDI KonsortSWD 2 BERD\\@NFDI MaRDI 3 BERD\\@NFDI NFDI4Memory 4 BERD\\@NFDI Text+ 5 DAPHNE4NFDI FAIRmat 6 DAPHNE4NFDI NFDI-MatWerk 7 DAPHNE4NFDI NFDI4Cat 8 DAPHNE4NFDI NFDI4Chem 9 DAPHNE4NFDI NFDI4Health 10 DAPHNE4NFDI NFDI4Ing 11 DAPHNE4NFDI NFDI4Objects 12 DAPHNE4NFDI PUNCH4NFDI 13 FAIRmat DAPHNE4NFDI 14 FAIRmat DataPLANT 15 FAIRmat MaRDI 16 FAIRmat NFDI-MatWerk 17 FAIRmat NFDI4Cat 18 FAIRmat NFDI4Chem 19 FAIRmat NFDI4DataScience 20 FAIRmat NFDI4Ing 21 FAIRmat NFDIxCS 22 FAIRmat PUNCH4NFDI 23 MaRDI BERD\\@NFDI 24 MaRDI FAIRmat 25 MaRDI NFDI-MatWerk 26 MaRDI NFDI-Neuro 27 MaRDI NFDI4Cat 28 MaRDI NFDI4Chem 29 MaRDI NFDI4Ing 30 MaRDI PUNCH4NFDI 31 NFDI-MatWerk DAPHNE4NFDI 32 NFDI-MatWerk DataPLANT 33 NFDI-MatWerk FAIRmat 34 NFDI-MatWerk MaRDI 35 NFDI-MatWerk NFDI4Chem 36 NFDI-MatWerk NFDI4DataScience 37 NFDI-MatWerk NFDI4Ing 38 NFDI-MatWerk NFDIxCS 39 NFDI-Neuro DataPLANT 40 NFDI-Neuro GHGA 41 NFDI-Neuro NFDI4BioDiversity 42 NFDI-Neuro NFDI4Culture 43 NFDI-Neuro NFDI4Earth 44 NFDI-Neuro NFDI4Health 45 NFDI-Neuro NFDI4Ing 46 NFDI-Neuro NFDI4Microbiota 47 NFDI4Agri DataPLANT 48 NFDI4Agri KonsortSWD 49 NFDI4Agri NFDI4BioDiversity 50 NFDI4Agri NFDI4Earth 51 NFDI4Agri NFDI4Health 52 NFDI4Agri NFDI4Immuno 53 NFDI4Agri NFDI4Microbiota 54 NFDI4DataScience KonsortSWD 55 NFDI4DataScience MaRDI 56 NFDI4DataScience NFDI-MatWerk 57 NFDI4DataScience NFDI4BioDiversity 58 NFDI4DataScience NFDI4Cat 59 NFDI4DataScience NFDI4Chem 60 NFDI4DataScience NFDI4Culture 61 NFDI4DataScience NFDI4Health 62 NFDI4DataScience NFDI4Ing 63 NFDI4DataScience NFDI4Microbiota 64 NFDI4DataScience NFDIxCS 65 NFDI4Earth DataPLANT 66 NFDI4Earth GHGA 67 NFDI4Earth KonsortSWD 68 NFDI4Earth NFDI4Agri 69 NFDI4Earth NFDI4BioDiversity 70 NFDI4Earth NFDI4Cat 71 NFDI4Earth NFDI4Chem 72 NFDI4Earth NFDI4Culture 73 NFDI4Earth NFDI4Health 74 NFDI4Earth NFDI4Ing 75 NFDI4Earth NFDI4Objects 76 NFDI4Immuno GHGA 77 NFDI4Immuno NFDI4Agri 78 NFDI4Immuno NFDI4Health 79 NFDI4Immuno NFDI4Microbiota 80 NFDI4Memory BERD\\@NFDI 81 NFDI4Memory KonsortSWD 82 NFDI4Memory MaRDI 83 NFDI4Memory NFDI4Culture 84 NFDI4Memory NFDI4Objects 85 NFDI4Memory Text+ 86 NFDI4Microbiota DataPLANT 87 NFDI4Microbiota GHGA 88 NFDI4Microbiota NFDI4Agri 89 NFDI4Microbiota NFDI4BioDiversity 90 NFDI4Microbiota NFDI4Chem 91 NFDI4Microbiota NFDI4DataScience 92 NFDI4Microbiota NFDI4Health 93 NFDI4Microbiota NFDI4Immuno 94 NFDI4Microbiota NFDI4Ing 95 NFDI4Objects KonsortSWD 96 NFDI4Objects NFDI4Agri 97 NFDI4Objects NFDI4BioDiversity 98 NFDI4Objects NFDI4Culture 99 NFDI4Objects NFDI4Earth 100 NFDI4Objects NFDI4Memory 101 NFDI4Objects Text+ 102 NFDI4SD NFDI4Culture 103 NFDI4SD NFDI4DataScience 104 NFDI4SD NFDI4Memory 105 NFDI4SD NFDI4Objects 106 NFDIxCS FAIRmat 107 NFDIxCS MaRDI 108 NFDIxCS NFDI4Chem 109 NFDIxCS NFDI4DataScience 110 NFDIxCS NFDI4Earth 111 NFDIxCS NFDI4Ing 112 PUNCH4NFDI DAPHNE4NFDI 113 PUNCH4NFDI FAIRmat 114 PUNCH4NFDI GHGA 115 PUNCH4NFDI MaRDI 116 PUNCH4NFDI NFDI4Earth 117 PUNCH4NFDI NFDI4Ing 118 PUNCH4NFDI NFDIxCS 119 Text+ KonsortSWD 120 Text+ NFDI4BioDiversity 121 Text+ NFDI4Culture 122 Text+ NFDI4Earth 123 Text+ NFDI4Ing 124 Text+ NFDI4Memory 125 Text+ NFDI4Objects
Following we present and explain the data and its origin.
The values whether a consortia is funded or not cannot be calculated. Therefore we already passed the information as a column to the consortia above.
The column funded
has either the value 0
(consortium has not been funded) or 1
(consortium has been funded).
Since we look at the consortia at the time of turning in binding Letters of Intent,
for 2019 there is no value at all.
nfdi_funded <- function(nfdi_edges_year) {
df <- data.frame(get(paste0("nfdi_nodes_",nfdi_edges_year)))
names(df)[1] <- "Name"
rownames(df) <- 1:nrow(df)
df %>% select(1,3)
}
# nfdi_funded(2019)
# nfdi_funded(2020)
Now we can plot the networks and for 2020 we will highlight the funded consortia.
nfdi_plot<- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,FALSE)
colrs <- c("#ffcc66","#acd69a")
nfdi_local_network <- function() {
plot(nfdi_network_year,
vertex.color = colrs[V(nfdi_network_year)$funded + 1 ],
vertex.frame.color = colrs[V(nfdi_network_year)$funded + 1 ]
)
}
pdf(paste0("network_",nfdi_edges_year,".pdf"))
nfdi_local_network()
dev.off()
nfdi_local_network()
}
nfdi_plot(2019)
nfdi_plot(2020)
group
)¶Each consortium has been allocated to a group which is known as the NFDI conference system.
In the first column you see the consortia’s name in the second column (group
) the number of the allocated group.
There are five groups and each has a special color code.
No. | Conference group | Color code |
---|---|---|
(1) | Medizin | #f5ac9f |
(2) | Lebens- und Geowissenschaften | #e43516 |
(3) | Geistes- und Sozialwissenschaften | #f9b900 |
(4) | Ingenieurwissenschaften und Mathemaik | #007aaf |
(5) | Chemie und Physik | #6ca11d |
: NFDI Conference system. Each consortia is allocated to one specific group.
nfdi_group <- function(nfdi_edges_year) {
df <- data.frame(get(paste0("nfdi_nodes_",nfdi_edges_year)))
names(df)[1] <- "Name"
rownames(df) <- 1:nrow(df)
df %>% select(1,2)
}
# nfdi_group(2019)
# nfdi_group(2020)
First we are defining a common legend for the networks, since we want to be able to differentiate the various groups the consortia are colored in.
nfdi_plot_legend <- function(){
legend("bottomright", # x-position
title = "NFDI-Konferenzsystematik", # title
legend = c(
"(1)",
"(2)",
"(3)",
"(4)",
"(5)"
), # the text of the legend
col = nfdi_color_code, # colors of lines and points beside the legend text
pch = 20, # the plotting symbols appearing in the legend
bty = "n", # no frame, the type of box to be drawn around the legend (n=no frame)
cex = .75, # character expansion factor relative to current par("cex").
pt.cex = 2, # expansion factor(s) for the points
ncol = 5,
)
}
Now we can go on and plot the network with colored consortia nodes.
nfdi_plot_group <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,FALSE)
pdf(paste0("network_group_",nfdi_edges_year,".pdf"))
plot(nfdi_network_year)
nfdi_plot_legend()
dev.off()
plot(nfdi_network_year)
nfdi_plot_legend()
}
# nfdi_plot_group(2019)
nfdi_plot_group(2020)
The value of the column cluster
has been calculated by the function cluster_optimal
. Each consortia is allocated to a cluster.
nfdi_list_cluster <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
liste <- list(y=c(membership(cluster_optimal(nfdi_network_year))))
df = with(data=liste,
expr=data.frame(y))
df <- cbind(Name = rownames(df), df)
rownames(df) <- 1:nrow(df)
names(df) <- c("Name","cluster")
df
}
# nfdi_list_cluster(2019)
# nfdi_list_cluster(2020)
With the algorithm cluster_optimal
we can do a community detection.
nfdi_plot_cluster <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,FALSE)
nfdi_network_year_cluster <- cluster_optimal(nfdi_network_year)
nfdi_local_network <- function() {
plot(nfdi_network_year_cluster,
nfdi_network_year,
edge.color = NA,
col = nfdi_color_groups, #color of nodes
mark.col = "grey", # color groups
mark.border = NA, # no border color
)
nfdi_plot_legend()
}
pdf(paste0("network_cluster_",nfdi_edges_year,".pdf"))
nfdi_local_network()
dev.off()
nfdi_local_network()
}
# nfdi_plot_cluster(2019)
nfdi_plot_cluster(2020)
Now we are hightlighting only the connections of consortia between different clusters.
nfdi_plot_cluster_trans <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,FALSE)
nfdi_network_year_cluster <- cluster_optimal(nfdi_network_year)
nfdi_local_network <- function() {
plot(nfdi_network_year_cluster,
nfdi_network_year, # loading data frame
col = nfdi_color_groups, #color of nodes
mark.col = "grey", # color groups
mark.border = NA, # no border color
edge.color = c(NA, "#bf4040")[crossing(nfdi_network_year_cluster, nfdi_network_year) + 1], # color of edges
)
nfdi_plot_legend()
}
pdf(paste0("network_cluster_trans_",nfdi_edges_year,".pdf"))
nfdi_local_network()
dev.off()
nfdi_local_network()
}
# nfdi_plot_cluster_trans(2019)
nfdi_plot_cluster_trans(2020)
There are three different ways of counting edges to a node: all, incoming ones and outgoing ones.
All edges (degree.total
)
We get all the edges with the function
degree(<GRAPH-OF-DATA-FRAME>, mode="total")
and receive the following table.
nfdi_degree_total_filtered <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
df <- data.frame(degree(nfdi_network_year,
mode = "total"))
names(df)[1] <- "degree.total"
df <- cbind(Name = rownames(df), df)
rownames(df) <- 1:nrow(df)
df
}
#nfdi_degree_total_filtered(2019)
#nfdi_degree_total_filtered(2020)
Incoming edges (degree.in
)
For counting incomgin edges a directed network is necessary.
Then the function degree
with a different value for mode
is applied.
degree(<GRAPH-OF-DATA-FRAME>, mode="in")
nfdi_degree_in <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
df <- data.frame(degree(nfdi_network_year,
mode = "in"))
names(df)[1] <- "degree.in"
df <- cbind(Name = rownames(df), df)
rownames(df) <- 1:nrow(df)
df
}
# nfdi_degree_in(2019)
# nfdi_degree_in(2020)
Outgoing edges (degree.out
)
As before the function degree
with a different value for mode
is applied.
degree(<GRAPH-OF-DATA-FRAME>, mode="out")
nfdi_degree_out <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
df <- data.frame(degree(nfdi_network_year,
mode = "out"))
names(df)[1] <- "degree.out"
df <- cbind(Name = rownames(df), df)
rownames(df) <- 1:nrow(df)
df
}
#nfdi_degree_out(2019)
#nfdi_degree_out(2020)
betweenness
)¶The vertex betweenness has been calculated by the function betweenness()
^[https://igraph.org/r/doc/betweenness.html].
nfdi_betweenness <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
df <- data.frame(betweenness(nfdi_network_year,
v=V(nfdi_network_year)))
names(df)[1] <- "betweenness"
df <- cbind(Name = rownames(df), df)
rownames(df) <- 1:nrow(df)
df
}
#nfdi_betweenness(2019)
#nfdi_betweenness(2020)
Clo[se]ness centrality measures how many steps is required to access every other vertex from a given vertex.^[https://igraph.org/r/doc/closeness.html]
Thereby we can differentiate between three different ways of closeness centrality.
closeness.total
closeness(<GRAPH-OF-DATA-FRAME>, mode="total")
nfdi_closeness_total <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
df <- data.frame(closeness(nfdi_network_year,
mode="total"))
names(df)[1] <- "closeness.total"
df <- cbind(Name = rownames(df), df)
rownames(df) <- 1:nrow(df)
df
}
#nfdi_closeness_total(2019)
#nfdi_closeness_total(2020)
closeness.in
closeness(<GRAPH-OF-DATA-FRAME>, mode="in")
nfdi_closeness_in <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
df <- data.frame(closeness(nfdi_network_year,
mode="in"))
names(df)[1] <- "closeness.in"
df <- cbind(Name = rownames(df), df)
rownames(df) <- 1:nrow(df)
df
}
#nfdi_closeness_in(2019)
#nfdi_closeness_in(2020)
closeness.out
closeness(<GRAPH-OF-DATA-FRAME>, mode="out")
nfdi_closeness_out <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
df <- data.frame(closeness(nfdi_network_year,
mode="out"))
names(df)[1] <- "closeness.out"
df <- cbind(Name = rownames(df), df)
rownames(df) <- 1:nrow(df)
df
}
#nfdi_closeness_out(2019)
#nfdi_closeness_out(2020)
Here is an overview of all the data we have gathered so far.
nfdi_data_set <- function(nfdi_edges_year) {
d1 <- nfdi_funded(nfdi_edges_year)
d2 <- nfdi_group(nfdi_edges_year)
d3 <- nfdi_list_cluster(nfdi_edges_year)
d4 <- nfdi_degree_in(nfdi_edges_year)
d5 <- nfdi_degree_out(nfdi_edges_year)
d6 <- nfdi_degree_total_filtered(nfdi_edges_year)
d7 <- nfdi_betweenness(nfdi_edges_year)
d8 <- nfdi_closeness_in(nfdi_edges_year)
d9 <- nfdi_closeness_out(nfdi_edges_year)
d10 <-nfdi_closeness_total(nfdi_edges_year)
df <- d1 %>% inner_join(d2, by = "Name") %>%
full_join(d3, by = "Name") %>%
full_join(d4, by = "Name") %>%
full_join(d5, by = "Name") %>%
full_join(d6, by = "Name") %>%
full_join(d7, by = "Name") %>%
full_join(d8, by = "Name") %>%
full_join(d9, by = "Name") %>%
full_join(d10, by = "Name") %>%
arrange(Name) %>%
replace(., is.na(.), "")
write.csv(df, paste0("nfdi_data_set",nfdi_edges_year,".csv"))
df
}
nfdi_data_set(2019)
Name | funded | group | cluster | degree.in | degree.out | degree.total | betweenness | closeness.in | closeness.out | closeness.total |
---|---|---|---|---|---|---|---|---|---|---|
Astro-NFDI | 0 | 5 | 1 | 2 | 3 | 5 | 5.975000 | 0.01408451 | 0.018518519 | 0.02083333 |
BERD\@NFDI | 0 | 3 | 2 | 2 | 3 | 5 | 2.000000 | 0.01250000 | 0.017543860 | 0.01923077 |
DAPHNE | 0 | 5 | 1 | 5 | 7 | 12 | 16.019048 | 0.01388889 | 0.022222222 | 0.02325581 |
DataPLANT | 0 | 2 | 3 | 2 | 3 | 5 | 1.416667 | 0.01333333 | 0.020000000 | 0.02127660 |
FAIRmat | 0 | 5 | 1 | 6 | 6 | 12 | 10.063889 | 0.01538462 | 0.021739130 | 0.02272727 |
ForumX | 0 | 3 | 2 | 3 | 5 | 8 | 11.720635 | 0.01333333 | 0.020000000 | 0.02173913 |
GHGA | 0 | 1 | 3 | 2 | 2 | 4 | 0.000000 | 0.01315789 | 0.018518519 | 0.01851852 |
KonsortSWD | 0 | 3 | 3 | 8 | 5 | 13 | 33.279762 | 0.01612903 | 0.021739130 | 0.02380952 |
MaRDI | 0 | 4 | 1 | 4 | 6 | 10 | 9.225000 | 0.01428571 | 0.021276596 | 0.02325581 |
NFDI4Agri | 0 | 2 | 3 | 5 | 5 | 10 | 8.885714 | 0.01492537 | 0.020833333 | 0.02222222 |
NFDI4BioDiversity | 0 | 2 | 3 | 8 | 8 | 16 | 57.990476 | 0.01754386 | 0.025000000 | 0.02857143 |
NFDI4Cat | 0 | 5 | 1 | 3 | 4 | 7 | 0.000000 | 0.01333333 | 0.020833333 | 0.02173913 |
NFDI4Chem | 0 | 5 | 1 | 9 | 7 | 16 | 75.065079 | 0.01724138 | 0.025641026 | 0.02777778 |
NFDI4Crime | 0 | 2 | 3 | 2 | 3 | 5 | 1.616667 | 0.01388889 | 0.020000000 | 0.02040816 |
NFDI4Culture | 0 | 3 | 2 | 4 | 3 | 7 | 7.630556 | 0.01492537 | 0.019607843 | 0.02222222 |
NFDI4Earth | 0 | 2 | 3 | 8 | 5 | 13 | 48.296429 | 0.01754386 | 0.023809524 | 0.02777778 |
NFDI4Health | 0 | 1 | 3 | 6 | 7 | 13 | 32.397222 | 0.01612903 | 0.024390244 | 0.02631579 |
NFDI4Ing | 0 | 4 | 1 | 11 | 9 | 20 | 123.969841 | 0.01851852 | 0.027027027 | 0.03030303 |
NFDI4Medicine | 0 | 1 | 3 | 6 | 7 | 13 | 54.310317 | 0.01666667 | 0.024390244 | 0.02631579 |
NFDI4MobilTech | 0 | 4 | 2 | 1 | 3 | 4 | 5.461905 | 0.01351351 | 0.020833333 | 0.02222222 |
NFDI4MSE | 0 | 5 | 1 | 4 | 5 | 9 | 2.880556 | 0.01428571 | 0.021276596 | 0.02222222 |
PAHN-PaN | 0 | 5 | 1 | 4 | 0 | 4 | 0.000000 | 0.02000000 | 0.001976285 | 0.02000000 |
Text+ | 0 | 3 | 2 | 6 | 5 | 11 | 32.795238 | 0.01612903 | 0.022727273 | 0.02631579 |
nfdi_data_set(2020)
Name | funded | group | cluster | degree.in | degree.out | degree.total | betweenness | closeness.in | closeness.out | closeness.total |
---|---|---|---|---|---|---|---|---|---|---|
BERD\@NFDI | 0 | 3 | 1 | 2 | 4 | 6 | 9.9523810 | 0.003663004 | 0.012500000 | 0.01923077 |
DAPHNE4NFDI | 0 | 5 | 2 | 3 | 8 | 11 | 9.7119048 | 0.003571429 | 0.014285714 | 0.02325581 |
DataPLANT | 1 | 2 | 3 | 6 | 0 | 6 | 0.0000000 | 0.004184100 | 0.001538462 | 0.02127660 |
FAIRmat | 0 | 5 | 2 | 5 | 10 | 15 | 14.0928571 | 0.003663004 | 0.014705882 | 0.02439024 |
GHGA | 1 | 1 | 3 | 5 | 0 | 5 | 0.0000000 | 0.004149378 | 0.001538462 | 0.02040816 |
KonsortSWD | 1 | 3 | 1 | 7 | 0 | 7 | 0.0000000 | 0.004255319 | 0.001538462 | 0.02325581 |
MaRDI | 0 | 4 | 2 | 7 | 8 | 15 | 77.0333333 | 0.003802281 | 0.014492754 | 0.02439024 |
NFDI4Agri | 0 | 2 | 3 | 4 | 7 | 11 | 28.5000000 | 0.003759398 | 0.012195122 | 0.02325581 |
NFDI4BioDiversity | 1 | 2 | 3 | 7 | 0 | 7 | 0.0000000 | 0.004255319 | 0.001538462 | 0.02325581 |
NFDI4Cat | 1 | 5 | 2 | 5 | 0 | 5 | 0.0000000 | 0.004201681 | 0.001538462 | 0.02173913 |
NFDI4Chem | 1 | 5 | 2 | 8 | 0 | 8 | 0.0000000 | 0.004273504 | 0.001538462 | 0.02380952 |
NFDI4Culture | 1 | 3 | 1 | 7 | 0 | 7 | 0.0000000 | 0.004237288 | 0.001538462 | 0.02272727 |
NFDI4DataScience | 0 | 4 | 2 | 5 | 11 | 16 | 66.3333333 | 0.003745318 | 0.015151515 | 0.02702703 |
NFDI4Earth | 0 | 2 | 3 | 6 | 11 | 17 | 51.9023810 | 0.003846154 | 0.012658228 | 0.02857143 |
NFDI4Health | 1 | 1 | 3 | 7 | 0 | 7 | 0.0000000 | 0.004219409 | 0.001538462 | 0.02222222 |
NFDI4Immuno | 0 | 1 | 3 | 2 | 4 | 6 | 0.3333333 | 0.003636364 | 0.011111111 | 0.01785714 |
NFDI4Ing | 1 | 4 | 2 | 11 | 0 | 11 | 0.0000000 | 0.004329004 | 0.001538462 | 0.02564103 |
NFDI4Memory | 0 | 3 | 1 | 4 | 6 | 10 | 29.0595238 | 0.003663004 | 0.013157895 | 0.02083333 |
NFDI4Microbiota | 0 | 2 | 3 | 4 | 9 | 13 | 46.4166667 | 0.003745318 | 0.013333333 | 0.02380952 |
NFDI4Objects | 0 | 3 | 1 | 5 | 7 | 12 | 41.5833333 | 0.003773585 | 0.013157895 | 0.02439024 |
NFDI4SD | 0 | 3 | 1 | 0 | 4 | 4 | 0.0000000 | 0.001538462 | 0.018867925 | 0.02000000 |
NFDI-MatWerk | 0 | 4 | 2 | 4 | 8 | 12 | 18.1428571 | 0.003717472 | 0.014084507 | 0.02272727 |
NFDI-Neuro | 0 | 1 | 3 | 1 | 8 | 9 | 11.0595238 | 0.003623188 | 0.012658228 | 0.02439024 |
NFDIxCS | 0 | 4 | 2 | 4 | 6 | 10 | 6.6166667 | 0.003663004 | 0.014084507 | 0.02325581 |
PUNCH4NFDI | 0 | 5 | 2 | 3 | 7 | 10 | 10.7023810 | 0.003636364 | 0.014084507 | 0.02272727 |
Text+ | 0 | 3 | 1 | 3 | 7 | 10 | 8.5595238 | 0.003649635 | 0.012658228 | 0.02325581 |
nfdi_count_edges_out <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
df <- as.data.frame(table(nfdi_edges$from))
df <- as.data.frame(df)
names(df)[1] <- "Name"
names(df)[2] <- "count"
rownames(df) <- 1:nrow(df)
df
}
#nfdi_count_edges_out(2019)
#nfdi_count_edges_out(2020)
wilcox.test(nfdi_count_edges_out(2019)$count,
nfdi_count_edges_out(2020)$count,
alternative="two.sided",
exact=F,
correct=T
)
Wilcoxon rank sum test with continuity correction data: nfdi_count_edges_out(2019)$count and nfdi_count_edges_out(2020)$count W = 80, p-value = 0.002314 alternative hypothesis: true location shift is not equal to 0
nfdi_count_LoI <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
sum(table(nfdi_count_edges_out(nfdi_edges_year)))
}
# nfdi_count_LoI(2019)
# nfdi_count_LoI(2020)
print(paste0(2019,": ",nfdi_count_LoI(2019)))
print(paste0(2020,": ",nfdi_count_LoI(2020)))
[1] "2019: 22" [1] "2020: 17"
Nodes
We can easily count all the nodes in a network
of a particular year by using the function gorder
.^[https://igraph.org/r/doc/gorder.html]
nfdi_count_nodes <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
gorder(nfdi_network_year)
}
#nfdi_count_nodes(2019)
#nfdi_count_nodes(2020)
print(paste0(2019,": ",nfdi_count_nodes(2019)))
print(paste0(2020,": ",nfdi_count_nodes(2020)))
[1] "2019: 23" [1] "2020: 26"
Edges
We can easily count all the nodes in a network of a particular year by
using the function gsize
.^[https://igraph.org/r/doc/gsize.html]
nfdi_count_edges <- function(nfdi_edges_year) {
nfdi_presettings(nfdi_edges_year,TRUE)
gsize(nfdi_network_year)
}
#nfdi_count_edges(2019)
#nfdi_count_edges(2020)
print(paste0(2019,": ",nfdi_count_edges(2019)))
print(paste0(2020,": ",nfdi_count_edges(2020)))
[1] "2019: 111" [1] "2020: 125"