Measuring centrality
Centrality
In this example, we will...
using SpeciesInteractionNetworks
nodes = Unipartite([:Wyeomyia, :Metriocnemus, :Fletcherimyia, :Habrotrocha, :Protozoa, :Sarraceniopus, :Bacteria, :Insects])
edges = Binary(zeros(Bool, (richness(nodes), richness(nodes))))
N = SpeciesInteractionNetwork(nodes, edges)
N[:Metriocnemus, :Insects] = true
N[:Fletcherimyia, :Insects] = true
N[:Bacteria, :Insects] = true
N[:Sarraceniopus, :Bacteria] = true
N[:Habrotrocha, :Bacteria] = true
N[:Protozoa, :Bacteria] = true
N[:Protozoa, :Habrotrocha] = true
N[:Wyeomyia, :Habrotrocha] = true
N[:Wyeomyia, :Protozoa] = true
N[:Wyeomyia, :Bacteria] = true
interactions(N)
10-element Vector{Tuple{Symbol, Symbol, Bool}}:
(:Wyeomyia, :Habrotrocha, 1)
(:Wyeomyia, :Protozoa, 1)
(:Wyeomyia, :Bacteria, 1)
(:Metriocnemus, :Insects, 1)
(:Fletcherimyia, :Insects, 1)
(:Habrotrocha, :Bacteria, 1)
(:Protozoa, :Habrotrocha, 1)
(:Protozoa, :Bacteria, 1)
(:Sarraceniopus, :Bacteria, 1)
(:Bacteria, :Insects, 1)
Change α
attenuation = 10.0.^LinRange(-1, 0, 20)
c_insect = zeros(length(attenuation))
c_bacteria = zeros(length(attenuation))
c_protozoa = zeros(length(attenuation))
for (i,α) in enumerate(attenuation)
ci = centrality(KatzCentrality, N; α=α)
c_insect[i] = ci[:Insects]
c_bacteria[i] = ci[:Bacteria]
c_protozoa[i] = ci[:Protozoa]
end
Make a plot
import CairoMakie
f = CairoMakie.Figure(backgroundcolor = :transparent, resolution = (800, 300))
ax = CairoMakie.Axis(f[1,1], xlabel="Attenuation", ylabel = "Centrality", xscale=log10)
CairoMakie.lines!(ax, attenuation, c_insect, color=(:black, 0.5), label="Insect")
CairoMakie.lines!(ax, attenuation, c_bacteria, color=(:green, 0.5), label="Bacteria")
CairoMakie.lines!(ax, attenuation, c_protozoa, color=(:orange, 0.5), label="Protozoa")
CairoMakie.tightlimits!(ax)
CairoMakie.axislegend(position=:lb)
CairoMakie.current_figure()
same with closeness centrality
attenuation = 10.0.^LinRange(-1, 0, 20)
c_insect = zeros(length(attenuation))
c_bacteria = zeros(length(attenuation))
c_protozoa = zeros(length(attenuation))
for (i,α) in enumerate(attenuation)
ci = centrality(GeneralizedClosenessCentrality, N; α=α)
c_insect[i] = ci[:Insects]
c_bacteria[i] = ci[:Bacteria]
c_protozoa[i] = ci[:Protozoa]
end
Make a plot
import CairoMakie
f = CairoMakie.Figure(backgroundcolor = :transparent, resolution = (800, 300))
ax = CairoMakie.Axis(f[1,1], xlabel="Attenuation", ylabel = "Centrality", xscale=log10)
CairoMakie.lines!(ax, attenuation, c_insect, color=(:black, 0.5), label="Insect")
CairoMakie.lines!(ax, attenuation, c_bacteria, color=(:green, 0.5), label="Bacteria")
CairoMakie.lines!(ax, attenuation, c_protozoa, color=(:orange, 0.5), label="Protozoa")
CairoMakie.tightlimits!(ax)
CairoMakie.axislegend(position=:lb)
CairoMakie.current_figure()