diff --git a/Project.toml b/Project.toml index b81323b111..a3846c6ee9 100644 --- a/Project.toml +++ b/Project.toml @@ -33,12 +33,15 @@ CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" GraphMakie = "1ecd5474-83a3-4783-bb4f-06765db800d2" HomotopyContinuation = "f213a82b-91d6-5c5d-acf7-10f1c761b327" NetworkLayout = "46757867-2c16-5918-afeb-47bfcb05e46a" +StructuralIdentifiability = "220ca800-aa68-49bb-acd8-6037fa93a544" + [extensions] CatalystBifurcationKitExtension = "BifurcationKit" CatalystCairoMakieExtension = "CairoMakie" CatalystGraphMakieExtension = ["GraphMakie", "NetworkLayout"] CatalystHomotopyContinuationExtension = "HomotopyContinuation" +CatalystStructuralIdentifiabilityExtension = "StructuralIdentifiability" [compat] BifurcationKit = "0.4.4" @@ -64,6 +67,7 @@ Requires = "1.0" RuntimeGeneratedFunctions = "0.5.12" SciMLBase = "2.57.2" Setfield = "1" +StructuralIdentifiability = "0.5.11" SymbolicUtils = "3.8.1" Symbolics = "6.22" Unitful = "1.12.4" diff --git a/docs/Project.toml b/docs/Project.toml index b4ef01b543..9affe0ea77 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -42,6 +42,7 @@ SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" SteadyStateDiffEq = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f" StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0" +StructuralIdentifiability = "220ca800-aa68-49bb-acd8-6037fa93a544" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" [compat] @@ -87,4 +88,5 @@ SpecialFunctions = "2.4" StaticArrays = "1.9" SteadyStateDiffEq = "2.2" StochasticDiffEq = "6.65" +StructuralIdentifiability = "0.5.11" Symbolics = "6.22" diff --git a/docs/pages.jl b/docs/pages.jl index bbc977797c..b5fbb7bec1 100644 --- a/docs/pages.jl +++ b/docs/pages.jl @@ -48,7 +48,7 @@ pages = Any[ "inverse_problems/petab_ode_param_fitting.md", "inverse_problems/optimization_ode_param_fitting.md", "inverse_problems/behaviour_optimisation.md", - # "inverse_problems/structural_identifiability.md", + "inverse_problems/structural_identifiability.md", "inverse_problems/global_sensitivity_analysis.md", "Examples" => Any[ "inverse_problems/examples/ode_fitting_oscillation.md" diff --git a/docs/unpublished/structural_identifiability.md b/docs/src/steady_state_functionality/structural_identifiability.md similarity index 100% rename from docs/unpublished/structural_identifiability.md rename to docs/src/steady_state_functionality/structural_identifiability.md diff --git a/ext/CatalystStructuralIdentifiabilityExtension.jl b/ext/CatalystStructuralIdentifiabilityExtension.jl index b1ce7566a0..318b1ad59a 100644 --- a/ext/CatalystStructuralIdentifiabilityExtension.jl +++ b/ext/CatalystStructuralIdentifiabilityExtension.jl @@ -5,6 +5,10 @@ using Catalyst import DataStructures.OrderedDict import StructuralIdentifiability as SI +@static if VERSION < v"1.11.3" + @warn "CatalystStructuralIdentifiabilityExtension.jl is only tested with Julia v1.11.2 or later due to https://github.com/SciML/StructuralIdentifiability.jl/issues/360. Its use is not recommended on earlier Julia versions." +end + # Creates and exports make_si_ode function. include("CatalystStructuralIdentifiabilityExtension/structural_identifiability_extension.jl") diff --git a/test/extensions/Project.toml b/test/extensions/Project.toml index 416164f8ba..6e7773c76d 100644 --- a/test/extensions/Project.toml +++ b/test/extensions/Project.toml @@ -10,4 +10,4 @@ ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" OrdinaryDiffEqDefault = "50262376-6c5a-4cf5-baba-aaf4f84d72d7" OrdinaryDiffEqTsit5 = "b1df2697-797e-41e3-8120-5422d3b24e4a" SteadyStateDiffEq = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f" -# StructuralIdentifiability = "220ca800-aa68-49bb-acd8-6037fa93a544" \ No newline at end of file +StructuralIdentifiability = "220ca800-aa68-49bb-acd8-6037fa93a544" \ No newline at end of file diff --git a/test/runtests.jl b/test/runtests.jl index 29c2d0ca74..f8a4d9b593 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -81,8 +81,10 @@ end @time @safetestset "BifurcationKit Extension" begin include("extensions/bifurcation_kit.jl") end @time @safetestset "HomotopyContinuation Extension" begin include("extensions/homotopy_continuation.jl") end - # BROKEN - # @time @safetestset "Structural Identifiability Extension" begin include("extensions/structural_identifiability.jl") end + # BROKEN on 1.10 and earlier 1.11 releases + if VERSION >= v"1.11.3" + @time @safetestset "Structural Identifiability Extension" begin include("extensions/structural_identifiability.jl") end + end # Tests stability computation (but requires the HomotopyContinuation extension). #@time @safetestset "Steady State Stability Computations" begin include("extensions/stability_computation.jl") end