From cee39e657077239aa8b67e724e6c52ccc19487b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Poisot?= Date: Fri, 30 Jun 2023 10:14:40 -0400 Subject: [PATCH 1/2] bug: fixes type promotion for mangal interaction strength Fixes #6 --- src/data/mangal.jl | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/data/mangal.jl b/src/data/mangal.jl index 9e7e305..84826eb 100644 --- a/src/data/mangal.jl +++ b/src/data/mangal.jl @@ -46,7 +46,8 @@ function mangalnetwork(MN::Mangal.MangalNetwork, query::Pair...; taxonlevel::Boo nodelist = convert(Vector{Mangal.MangalReferenceTaxon}, nodelist) end nodes = Unipartite(nodelist) - T = typeof(edgelist[1].strength) + int_str = [edge.strength for edge in edgelist] + T = eltype(promote(int_str...)) edges = Quantitative(zeros(T, size(nodes))) N = SpeciesInteractionNetwork(nodes, edges) for edge in edgelist @@ -61,4 +62,32 @@ function mangalnetwork(MN::Mangal.MangalNetwork, query::Pair...; taxonlevel::Boo end mangalnetwork(id::Integer, args...; kwargs...) = mangalnetwork(Mangal.network(id), args...; kwargs...) -mangalnetwork(name::String, args...; kwargs...) = mangalnetwork(Mangal.network(name), args...; kwargs...) \ No newline at end of file +mangalnetwork(name::String, args...; kwargs...) = mangalnetwork(Mangal.network(name), args...; kwargs...) + +@testitem "The type promotion works as expected" begin + import SpeciesInteractionNetworks.Mangal + dataset = only(Mangal.datasets("q" => "ponisio")) + problematic_network = Mangal.networks(dataset)[3] + @test eltype(mangalnetwork(problematic_network).edges) <: AbstractFloat +end + +@testitem "We can get a network by taxon" begin + import SpeciesInteractionNetworks.Mangal + network = first(Mangal.networks()) + N = mangalnetwork(network; taxonlevel=true) + @test typeof(N.nodes) == Mangal.MangalReferenceTaxon +end + +@testitem "We can get a network by name" begin + import SpeciesInteractionNetworks.Mangal + network = first(Mangal.networks()) + N = mangalnetwork(network.name; taxonlevel=true) + @test typeof(N.nodes) == Mangal.MangalReferenceTaxon +end + +@testitem "We can get a network by ID" begin + import SpeciesInteractionNetworks.Mangal + network = first(Mangal.networks()) + N = mangalnetwork(network.id; taxonlevel=true) + @test typeof(N.nodes) == Mangal.MangalReferenceTaxon +end \ No newline at end of file From bc35d8df65291e675a21d976af6da5d2e6d81b01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Poisot?= Date: Fri, 30 Jun 2023 10:15:30 -0400 Subject: [PATCH 2/2] test: fix bug in the tests --- src/data/mangal.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/data/mangal.jl b/src/data/mangal.jl index 84826eb..60cf9e4 100644 --- a/src/data/mangal.jl +++ b/src/data/mangal.jl @@ -71,23 +71,23 @@ mangalnetwork(name::String, args...; kwargs...) = mangalnetwork(Mangal.network(n @test eltype(mangalnetwork(problematic_network).edges) <: AbstractFloat end -@testitem "We can get a network by taxon" begin +@testitem "We can get a network to return reference taxon nodes" begin import SpeciesInteractionNetworks.Mangal network = first(Mangal.networks()) N = mangalnetwork(network; taxonlevel=true) - @test typeof(N.nodes) == Mangal.MangalReferenceTaxon + @test eltype(N.nodes) == Mangal.MangalReferenceTaxon end @testitem "We can get a network by name" begin import SpeciesInteractionNetworks.Mangal network = first(Mangal.networks()) N = mangalnetwork(network.name; taxonlevel=true) - @test typeof(N.nodes) == Mangal.MangalReferenceTaxon + @test eltype(N.nodes) == Mangal.MangalReferenceTaxon end @testitem "We can get a network by ID" begin import SpeciesInteractionNetworks.Mangal network = first(Mangal.networks()) N = mangalnetwork(network.id; taxonlevel=true) - @test typeof(N.nodes) == Mangal.MangalReferenceTaxon + @test eltype(N.nodes) == Mangal.MangalReferenceTaxon end \ No newline at end of file