From 789c42940a6365809d14c0688b01a66d499d3845 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Thu, 23 Nov 2023 21:46:47 +0000 Subject: [PATCH] build based on 9d910f2 --- previews/PR249/.documenter-siteinfo.json | 2 +- previews/PR249/assets/Manifest.toml | 16 ++++++++-------- previews/PR249/export/export/index.html | 2 +- .../identifiability/identifiability/index.html | 8 ++++---- previews/PR249/index.html | 12 ++++++------ previews/PR249/input/input/index.html | 2 +- .../PR249/ioequations/ioequations/index.html | 2 +- previews/PR249/tutorials/creating_ode/index.html | 2 +- .../PR249/tutorials/discrete_time/index.html | 2 +- .../PR249/tutorials/identifiability/index.html | 2 +- .../tutorials/identifiable_functions/index.html | 2 +- previews/PR249/utils/elimination/index.html | 2 +- .../utils/global_identifiability/index.html | 2 +- .../PR249/utils/local_identifiability/index.html | 2 +- previews/PR249/utils/ode/index.html | 6 +++--- .../PR249/utils/power_series_utils/index.html | 2 +- previews/PR249/utils/primality/index.html | 2 +- .../PR249/utils/reparametrization/index.html | 2 +- previews/PR249/utils/util/index.html | 4 ++-- previews/PR249/utils/wronskian/index.html | 2 +- 20 files changed, 38 insertions(+), 38 deletions(-) diff --git a/previews/PR249/.documenter-siteinfo.json b/previews/PR249/.documenter-siteinfo.json index fbb26e49f..ae2ec97dc 100644 --- a/previews/PR249/.documenter-siteinfo.json +++ b/previews/PR249/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2023-11-22T21:07:47","documenter_version":"1.1.2"}} \ No newline at end of file +{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2023-11-23T21:46:35","documenter_version":"1.1.2"}} \ No newline at end of file diff --git a/previews/PR249/assets/Manifest.toml b/previews/PR249/assets/Manifest.toml index aa8154d9c..a1e1ee424 100644 --- a/previews/PR249/assets/Manifest.toml +++ b/previews/PR249/assets/Manifest.toml @@ -267,9 +267,9 @@ version = "1.9.1" [[deps.DiffEqBase]] deps = ["ArrayInterface", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces"] -git-tree-sha1 = "35dadcc236b38661368d5a9d5e2dfabeee112c54" +git-tree-sha1 = "309efb205c30d43b595466283bbecf2769283e22" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.140.1" +version = "6.141.0" [deps.DiffEqBase.extensions] DiffEqBaseChainRulesCoreExt = "ChainRulesCore" @@ -878,9 +878,9 @@ version = "0.2.4" [[deps.MultivariatePolynomials]] deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] -git-tree-sha1 = "6c2e970692b6f4fed2508865c43a0f67f3820cf4" +git-tree-sha1 = "6ffb234d6d7c866a75c1879d2099049d3a35a83a" uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" -version = "0.5.2" +version = "0.5.3" [[deps.MutableArithmetics]] deps = ["LinearAlgebra", "SparseArrays", "Test"] @@ -961,9 +961,9 @@ uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" version = "0.5.5+0" [[deps.OrderedCollections]] -git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.2" +version = "1.6.3" [[deps.OrdinaryDiffEq]] deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "IfElse", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "LoopVectorization", "MacroTools", "MuladdMacro", "NLsolve", "NonlinearSolve", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLNLSolve", "SciMLOperators", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "SparseDiffTools", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] @@ -1192,9 +1192,9 @@ version = "0.6.42" [[deps.SciMLBase]] deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FillArrays", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "QuasiMonteCarlo", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces"] -git-tree-sha1 = "b8518e0f02940d0d8275632921cc408c99fb5157" +git-tree-sha1 = "164773badb9ee8c62af2ff1a7778fd4867142a07" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.8.2" +version = "2.9.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" diff --git a/previews/PR249/export/export/index.html b/previews/PR249/export/export/index.html index 2f4a33d3b..abf34d7de 100644 --- a/previews/PR249/export/export/index.html +++ b/previews/PR249/export/export/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-90474609-3', {'page_path': location.pathname + location.search + location.hash}); -

Exporting to Other Systems

Here we put some helpful utilities to export your code to other identifiability software.

StructuralIdentifiability.print_for_mapleFunction
print_for_maple(ode, package)

Prints the ODE in the format accepted by maple packages

  • SIAN (https://github.com/pogudingleb/SIAN) if package=:SIAN
  • DifferentialAlgebra if package=:DifferentialAlgebra
  • DifferentialThomas if package=:DifferentialThomas
source
+

Exporting to Other Systems

Here we put some helpful utilities to export your code to other identifiability software.

StructuralIdentifiability.print_for_mapleFunction
print_for_maple(ode, package)

Prints the ODE in the format accepted by maple packages

  • SIAN (https://github.com/pogudingleb/SIAN) if package=:SIAN
  • DifferentialAlgebra if package=:DifferentialAlgebra
  • DifferentialThomas if package=:DifferentialThomas
source
diff --git a/previews/PR249/identifiability/identifiability/index.html b/previews/PR249/identifiability/identifiability/index.html index 8b11cb504..ecb09e4ca 100644 --- a/previews/PR249/identifiability/identifiability/index.html +++ b/previews/PR249/identifiability/identifiability/index.html @@ -3,12 +3,12 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-90474609-3', {'page_path': location.pathname + location.search + location.hash}); -

Functions to Assess Identifiability

Assessing All Types of Identifiability

StructuralIdentifiability.assess_identifiabilityFunction
assess_identifiability(ode; funcs_to_check = [], p=0.99, loglevel=Logging.Info)

Input:

  • ode - the ODE model
  • funcs_to_check - list of functions to check identifiability for; if empty, all parameters and states are taken
  • p - probability of correctness.
  • loglevel - the minimal level of log messages to display (Logging.Info by default)

Assesses identifiability of a given ODE model. The result is guaranteed to be correct with the probability at least p. The function returns an (ordered) dictionary from the functions to check to their identifiability properties (one of :nonidentifiable, :locally, :globally).

source
assess_identifiability(ode::ModelingToolkit.ODESystem; measured_quantities=Array{ModelingToolkit.Equation}[], funcs_to_check=[], p = 0.99, loglevel=Logging.Info)

Input:

  • ode - the ModelingToolkit.ODESystem object that defines the model
  • measured_quantities - the output functions of the model
  • funcs_to_check - functions of parameters for which to check the identifiability
  • p - probability of correctness.
  • loglevel - the minimal level of log messages to display (Logging.Info by default)

Assesses identifiability (both local and global) of a given ODE model (parameters detected automatically). The result is guaranteed to be correct with the probability at least p.

source

Assessing Local Identifiability

StructuralIdentifiability.assess_local_identifiabilityFunction
function assess_local_identifiability(ode::ModelingToolkit.ODESystem; measured_quantities=Array{ModelingToolkit.Equation}[], funcs_to_check=Array{}[], p::Float64=0.99, type=:SE, loglevel=Logging.Info)

Input:

  • ode - the ODESystem object from ModelingToolkit
  • measured_quantities - the measurable outputs of the model
  • funcs_to_check - functions of parameters for which to check identifiability
  • p - probability of correctness
  • type - identifiability type (:SE for single-experiment, :ME for multi-experiment)
  • loglevel - the minimal level of log messages to display (Logging.Info by default)

Output:

  • for type=:SE, the result is an (ordered) dictionary from each parameter to boolean;
  • for type=:ME, the result is a tuple with the dictionary as in :SE case and array of number of experiments.

The function determines local identifiability of parameters in funcs_to_check or all possible parameters if funcs_to_check is empty

The result is correct with probability at least p.

type can be either :SE (single-experiment identifiability) or :ME (multi-experiment identifiability). The return value is a tuple consisting of the array of bools and the number of experiments to be performed.

source
assess_local_identifiability(ode::ODE{P}; funcs_to_check::Array{<: Any, 1}, p::Float64=0.99, type=:SE, loglevel=Logging.Info) where P <: MPolyElem{Nemo.fmpq}

Checks the local identifiability/observability of the functions in funcs_to_check. The result is correct with probability at least p.

Call this function if you have a specific collection of parameters of which you would like to check local identifiability.

type can be either :SE (single-experiment identifiability) or :ME (multi-experiment identifiability). If the type is :ME, states are not allowed to appear in the funcs_to_check.

source
function assess_local_identifiability(
+

Functions to Assess Identifiability

Assessing All Types of Identifiability

StructuralIdentifiability.assess_identifiabilityFunction
assess_identifiability(ode; funcs_to_check = [], p=0.99, loglevel=Logging.Info)

Input:

  • ode - the ODE model
  • funcs_to_check - list of functions to check identifiability for; if empty, all parameters and states are taken
  • p - probability of correctness.
  • loglevel - the minimal level of log messages to display (Logging.Info by default)

Assesses identifiability of a given ODE model. The result is guaranteed to be correct with the probability at least p. The function returns an (ordered) dictionary from the functions to check to their identifiability properties (one of :nonidentifiable, :locally, :globally).

source
assess_identifiability(ode::ModelingToolkit.ODESystem; measured_quantities=Array{ModelingToolkit.Equation}[], funcs_to_check=[], p = 0.99, loglevel=Logging.Info)

Input:

  • ode - the ModelingToolkit.ODESystem object that defines the model
  • measured_quantities - the output functions of the model
  • funcs_to_check - functions of parameters for which to check the identifiability
  • p - probability of correctness.
  • loglevel - the minimal level of log messages to display (Logging.Info by default)

Assesses identifiability (both local and global) of a given ODE model (parameters detected automatically). The result is guaranteed to be correct with the probability at least p.

source

Assessing Local Identifiability

StructuralIdentifiability.assess_local_identifiabilityFunction
function assess_local_identifiability(ode::ModelingToolkit.ODESystem; measured_quantities=Array{ModelingToolkit.Equation}[], funcs_to_check=Array{}[], p::Float64=0.99, type=:SE, loglevel=Logging.Info)

Input:

  • ode - the ODESystem object from ModelingToolkit
  • measured_quantities - the measurable outputs of the model
  • funcs_to_check - functions of parameters for which to check identifiability
  • p - probability of correctness
  • type - identifiability type (:SE for single-experiment, :ME for multi-experiment)
  • loglevel - the minimal level of log messages to display (Logging.Info by default)

Output:

  • for type=:SE, the result is an (ordered) dictionary from each parameter to boolean;
  • for type=:ME, the result is a tuple with the dictionary as in :SE case and array of number of experiments.

The function determines local identifiability of parameters in funcs_to_check or all possible parameters if funcs_to_check is empty

The result is correct with probability at least p.

type can be either :SE (single-experiment identifiability) or :ME (multi-experiment identifiability). The return value is a tuple consisting of the array of bools and the number of experiments to be performed.

source
assess_local_identifiability(ode::ODE{P}; funcs_to_check::Array{<: Any, 1}, p::Float64=0.99, type=:SE, loglevel=Logging.Info) where P <: MPolyElem{Nemo.fmpq}

Checks the local identifiability/observability of the functions in funcs_to_check. The result is correct with probability at least p.

Call this function if you have a specific collection of parameters of which you would like to check local identifiability.

type can be either :SE (single-experiment identifiability) or :ME (multi-experiment identifiability). If the type is :ME, states are not allowed to appear in the funcs_to_check.

source
function assess_local_identifiability(
     dds::ModelingToolkit.DiscreteSystem; 
     measured_quantities=Array{ModelingToolkit.Equation}[], 
     funcs_to_check=Array{}[], 
     known_ic=Array{}[],
-    p::Float64=0.99)

Input:

  • dds - the DiscreteSystem object from ModelingToolkit (with difference operator in the right-hand side)
  • measured_quantities - the measurable outputs of the model
  • funcs_to_check - functions of parameters for which to check identifiability (all parameters and states if not specified)
  • known_ic - functions (of states and parameter) whose initial conditions are assumed to be known
  • p - probability of correctness

Output:

  • the result is an (ordered) dictionary from each function to to boolean;

The result is correct with probability at least p.

source

Finding Identifiable Functions

StructuralIdentifiability.find_identifiable_functionsFunction
find_identifiable_functions(ode::ODE; options...)

Finds all functions of parameters/states that are identifiable in the given ODE system.

Options

This functions takes the following optional arguments:

  • with_states: When true, also reports the identifiabile functions in the ODE states. Default is false.
  • simplify: The extent to which the output functions are simplified. Stronger simplification may require more time. Possible options are:
    • :standard: Default simplification.
    • :weak: Weak simplification. This option is the fastest, but the output functions can be quite complex.
    • :strong: Strong simplification. This option is the slowest, but the output
    functions are nice and simple.
    • :absent: No simplification.
  • p: A float in the range from 0 to 1, the probability of correctness. Default is 0.99.
  • seed: The rng seed. Default value is 42.
  • loglevel - the minimal level of log messages to display (Logging.Info by default)

Example

using StructuralIdentifiability
+    p::Float64=0.99)

Input:

  • dds - the DiscreteSystem object from ModelingToolkit (with difference operator in the right-hand side)
  • measured_quantities - the measurable outputs of the model
  • funcs_to_check - functions of parameters for which to check identifiability (all parameters and states if not specified)
  • known_ic - functions (of states and parameter) whose initial conditions are assumed to be known
  • p - probability of correctness

Output:

  • the result is an (ordered) dictionary from each function to to boolean;

The result is correct with probability at least p.

source

Finding Identifiable Functions

StructuralIdentifiability.find_identifiable_functionsFunction
find_identifiable_functions(ode::ODE; options...)

Finds all functions of parameters/states that are identifiable in the given ODE system.

Options

This functions takes the following optional arguments:

  • with_states: When true, also reports the identifiabile functions in the ODE states. Default is false.
  • simplify: The extent to which the output functions are simplified. Stronger simplification may require more time. Possible options are:
    • :standard: Default simplification.
    • :weak: Weak simplification. This option is the fastest, but the output functions can be quite complex.
    • :strong: Strong simplification. This option is the slowest, but the output
    functions are nice and simple.
    • :absent: No simplification.
  • p: A float in the range from 0 to 1, the probability of correctness. Default is 0.99.
  • seed: The rng seed. Default value is 42.
  • loglevel - the minimal level of log messages to display (Logging.Info by default)

Example

using StructuralIdentifiability
 
 ode = @ODEmodel(
     x0'(t) = -(a01 + a21) * x0(t) + a12 * x1(t),
@@ -21,7 +21,7 @@
 # prints
 3-element Vector{AbstractAlgebra.Generic.Frac{Nemo.fmpq_mpoly}}:
  a12 + a01 + a21
- a12*a01
source
find_identifiable_functions(ode::ModelingToolkit.ODESystem; measured_quantities=[], options...)

Finds all functions of parameters/states that are identifiable in the given ODE system.

Options

This functions takes the following optional arguments:

  • measured_quantities - the output functions of the model.
  • loglevel - the verbosity of the logging (can be Logging.Error, Logging.Warn, Logging.Info, Logging.Debug)

Example

using StructuralIdentifiability
+ a12*a01
source
find_identifiable_functions(ode::ModelingToolkit.ODESystem; measured_quantities=[], options...)

Finds all functions of parameters/states that are identifiable in the given ODE system.

Options

This functions takes the following optional arguments:

  • measured_quantities - the output functions of the model.
  • loglevel - the verbosity of the logging (can be Logging.Error, Logging.Warn, Logging.Info, Logging.Debug)

Example

using StructuralIdentifiability
 using ModelingToolkit
 
 @parameters a01 a21 a12
@@ -39,4 +39,4 @@
 # prints
 2-element Vector{Num}:
          a01*a12
- a01 + a12 + a21
source
+ a01 + a12 + a21
source
diff --git a/previews/PR249/index.html b/previews/PR249/index.html index 65b9a0607..68708a2a6 100644 --- a/previews/PR249/index.html +++ b/previews/PR249/index.html @@ -59,7 +59,7 @@ [864edb3b] DataStructures v0.18.15 [e2d170a0] DataValueInterfaces v1.0.0 [8bb1440f] DelimitedFiles v1.9.1 - [2b5f629d] DiffEqBase v6.140.1 + [2b5f629d] DiffEqBase v6.141.0 [459566f4] DiffEqCallbacks v2.34.0 [163ba53b] DiffResults v1.1.0 [b552c78f] DiffRules v1.15.1 @@ -126,15 +126,15 @@ [e1d29d7a] Missings v1.1.0 [961ee093] ModelingToolkit v8.73.1 [46d2c3a1] MuladdMacro v0.2.4 - [102ac46a] MultivariatePolynomials v0.5.2 + [102ac46a] MultivariatePolynomials v0.5.3 [d8a4904e] MutableArithmetics v1.3.3 [d41bc354] NLSolversBase v7.8.3 [2774e3e8] NLsolve v4.5.1 [77ba4419] NaNMath v1.0.2 - [2edaba10] Nemo v0.37.5 +⌅ [2edaba10] Nemo v0.37.5 [8913a72c] NonlinearSolve v2.8.2 [6fe1bfb0] OffsetArrays v1.12.10 - [bac558e1] OrderedCollections v1.6.2 + [bac558e1] OrderedCollections v1.6.3 [1dea7af3] OrdinaryDiffEq v6.59.2 [90014a1f] PDMats v0.11.30 [65ce6f38] PackageExtensionCompat v1.0.2 @@ -164,7 +164,7 @@ [fdea26ae] SIMD v3.4.6 [94e857df] SIMDTypes v0.1.0 [476501e8] SLEEFPirates v0.6.42 - [0bca4576] SciMLBase v2.8.2 + [0bca4576] SciMLBase v2.9.0 [e9a6253c] SciMLNLSolve v0.1.9 [c0aeaf25] SciMLOperators v0.3.7 [efcf1570] Setfield v1.1.1 @@ -264,4 +264,4 @@ [3f19e933] p7zip_jll v17.4.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m`You can also download the manifest file and the -project file. +project file. diff --git a/previews/PR249/input/input/index.html b/previews/PR249/input/input/index.html index ceb79a11e..0ccea5627 100644 --- a/previews/PR249/input/input/index.html +++ b/previews/PR249/input/input/index.html @@ -9,4 +9,4 @@ x1'(t) = a * x1(t) + u(t), x2'(t) = b * x2(t) + c*x1(t)*x2(t), y(t) = x1(t) -)

Here,

source
StructuralIdentifiability.ODEType

The main structure that represents input ODE system.

Stores information about states (x_vars), outputs (y_vars), inputs (u_vars), parameters (parameters) and the equations.

This structure is constructed via @ODEmodel macro.

source
StructuralIdentifiability.set_parameter_valuesFunction
set_parameter_values(ode, param_values)

Input:

  • ode - an ODE as above
  • param_values - values for (possibly, some of) the parameters as dictionary parameter => value

Output:

  • new ode with the parameters in param_values plugged with the given numbers
source

Create Compartmental Model

StructuralIdentifiability.linear_compartment_modelFunction
linear_compartment_model(graph, inputs, outputs, leaks)

Input: defines a linear compartment model with nodes numbered from 1 to n by

  • graph - and array of integer arrays representing the adjacency lists of the graph
  • inputs - array of input nodes
  • outputs - array of output nodes
  • leaks - array of sink nodes

Output:

  • the corresponding ODE system in the notation of https://doi.org/10.1007/s11538-015-0098-0
source
+)

Here,

source
StructuralIdentifiability.ODEType

The main structure that represents input ODE system.

Stores information about states (x_vars), outputs (y_vars), inputs (u_vars), parameters (parameters) and the equations.

This structure is constructed via @ODEmodel macro.

source
StructuralIdentifiability.set_parameter_valuesFunction
set_parameter_values(ode, param_values)

Input:

  • ode - an ODE as above
  • param_values - values for (possibly, some of) the parameters as dictionary parameter => value

Output:

  • new ode with the parameters in param_values plugged with the given numbers
source

Create Compartmental Model

StructuralIdentifiability.linear_compartment_modelFunction
linear_compartment_model(graph, inputs, outputs, leaks)

Input: defines a linear compartment model with nodes numbered from 1 to n by

  • graph - and array of integer arrays representing the adjacency lists of the graph
  • inputs - array of input nodes
  • outputs - array of output nodes
  • leaks - array of sink nodes

Output:

  • the corresponding ODE system in the notation of https://doi.org/10.1007/s11538-015-0098-0
source
diff --git a/previews/PR249/ioequations/ioequations/index.html b/previews/PR249/ioequations/ioequations/index.html index 1537c4d3a..b7be1c7e6 100644 --- a/previews/PR249/ioequations/ioequations/index.html +++ b/previews/PR249/ioequations/ioequations/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-90474609-3', {'page_path': location.pathname + location.search + location.hash}); -

Finding Input-Output Equations

StructuralIdentifiability.find_ioequationsFunction
find_ioequations(ode, [var_change_policy=:default])

Finds the input-output equations of an ODE system Input:

  • ode - the ODE system
  • var_change_policy - whether to perform automatic variable change, can be one of :default, :yes, :no
  • loglevel - logging level (default: Logging.Info)

Output:

  • a dictionary from “leaders” to the corresponding input-output equations; if an extra projection is needed, it will be the value corresponding to rand_proj_var
source

Reducing with respect to Input-Output Equations

StructuralIdentifiability.PBRepresentationType

The structure for storing a projection-based representation of differential ideal (see Section 2.3 https://arxiv.org/abs/2111.00991). Contains the following fields:

  • y_names - the names of the variables with finite order in the profile (typically, outputs)
  • u_names - the names of the variables with infinite order in the profile (typically, inputs)
  • param_names - the names of the parameters
  • profile - the profile of the PB-representation (see Definition 2.13) as a dict from y_names with finite orders to the orders
  • projections - the corresponding projections (see Definition 2.15) as a dict from y_names to the projections
source
StructuralIdentifiability.pseudodivisionFunction
pseudodivision(f, g, x)

Computes the result of pseudodivision of f by g as univariate polynomials in x Input:

  • f - the polynomial to be divided
  • g - the polynomial to divide by
  • x - the variable for the division

Output: the pseudoremainder of f divided by g w.r.t. x

source
StructuralIdentifiability.diffreduceFunction
diffreduce(diffpoly, pbr)

Computes the result of differential reduction of a differential polynomial diffpoly with respect to the charset defined by a PB-representation pbr Input:

  • diffpoly - a polynomial representing a differential polynomial to be reduced
  • pbr - a projection-based representation

Output: the result of differential reduction of diffpoly by pbr considered as a characteristic set (see Remark 2.20 in the paper)

source
+

Finding Input-Output Equations

StructuralIdentifiability.find_ioequationsFunction
find_ioequations(ode, [var_change_policy=:default])

Finds the input-output equations of an ODE system Input:

  • ode - the ODE system
  • var_change_policy - whether to perform automatic variable change, can be one of :default, :yes, :no
  • loglevel - logging level (default: Logging.Info)

Output:

  • a dictionary from “leaders” to the corresponding input-output equations; if an extra projection is needed, it will be the value corresponding to rand_proj_var
source

Reducing with respect to Input-Output Equations

StructuralIdentifiability.PBRepresentationType

The structure for storing a projection-based representation of differential ideal (see Section 2.3 https://arxiv.org/abs/2111.00991). Contains the following fields:

  • y_names - the names of the variables with finite order in the profile (typically, outputs)
  • u_names - the names of the variables with infinite order in the profile (typically, inputs)
  • param_names - the names of the parameters
  • profile - the profile of the PB-representation (see Definition 2.13) as a dict from y_names with finite orders to the orders
  • projections - the corresponding projections (see Definition 2.15) as a dict from y_names to the projections
source
StructuralIdentifiability.pseudodivisionFunction
pseudodivision(f, g, x)

Computes the result of pseudodivision of f by g as univariate polynomials in x Input:

  • f - the polynomial to be divided
  • g - the polynomial to divide by
  • x - the variable for the division

Output: the pseudoremainder of f divided by g w.r.t. x

source
StructuralIdentifiability.diffreduceFunction
diffreduce(diffpoly, pbr)

Computes the result of differential reduction of a differential polynomial diffpoly with respect to the charset defined by a PB-representation pbr Input:

  • diffpoly - a polynomial representing a differential polynomial to be reduced
  • pbr - a projection-based representation

Output: the result of differential reduction of diffpoly by pbr considered as a characteristic set (see Remark 2.20 in the paper)

source
diff --git a/previews/PR249/tutorials/creating_ode/index.html b/previews/PR249/tutorials/creating_ode/index.html index 7816b44d9..1e82a472f 100644 --- a/previews/PR249/tutorials/creating_ode/index.html +++ b/previews/PR249/tutorials/creating_ode/index.html @@ -57,4 +57,4 @@ c2 => :nonidentifiable chi2 => :globally r2 => :globally - beta2 => :globally
+ beta2 => :globally
diff --git a/previews/PR249/tutorials/discrete_time/index.html b/previews/PR249/tutorials/discrete_time/index.html index fd53452b6..64ba78331 100644 --- a/previews/PR249/tutorials/discrete_time/index.html +++ b/previews/PR249/tutorials/discrete_time/index.html @@ -35,4 +35,4 @@ R(t) => 0 β => 1 α => 1

The assess_local_identifiability function has three important keyword arguments:

assess_local_identifiability(sir; measured_quantities = [I], funcs_to_check = [β * S])
OrderedCollections.OrderedDict{Symbolics.Num, Bool} with 1 entry:
-  S(t)*β => 1

As other main functions in the package, assess_local_identifiability accepts an optional parameter loglevel (default: Logging.Info) to adjust the verbosity of logging.

The implementation is based on a version of the observability rank criterion and will be described in a forthcoming paper.

+ S(t)*β => 1

As other main functions in the package, assess_local_identifiability accepts an optional parameter loglevel (default: Logging.Info) to adjust the verbosity of logging.

The implementation is based on a version of the observability rank criterion and will be described in a forthcoming paper.

diff --git a/previews/PR249/tutorials/identifiability/index.html b/previews/PR249/tutorials/identifiability/index.html index 870f4f687..31f0257a9 100644 --- a/previews/PR249/tutorials/identifiability/index.html +++ b/previews/PR249/tutorials/identifiability/index.html @@ -48,4 +48,4 @@ gama => :nonidentifiable sigma => :globally

As a result, each parameter/state is assigned one of the labels :globally (globally identifiable), :locally (locally but not globally identifiable), or :nonidentifiable (not identifiable, even locally). The algorithm behind this computation follows [4].

Similarly to assess_local_identifiability, this function has optional parameters:

Using funcs_to_check parameter, one can further inverstigate the nature of the lack of identifiability in the model at hand. For example, for the Goodwin oscillator, we can check if beta + delta and beta * delta are identifiable:

assess_identifiability(ode, funcs_to_check = [beta + delta, beta * delta])
OrderedCollections.OrderedDict{Any, Symbol} with 2 entries:
   beta + delta => :globally
-  beta*delta   => :globally

And we see that they indeed are. This means, in particular, that the reason why beta and delta are not identifiable is because their values can be exchanged. One may wonder how could we guess these functions beta + delta, beta * delta. In fact, they can be just computed using find_identifiable_functions function as we will explain in the next tutorial. Stay tuned!

+ beta*delta => :globally

And we see that they indeed are. This means, in particular, that the reason why beta and delta are not identifiable is because their values can be exchanged. One may wonder how could we guess these functions beta + delta, beta * delta. In fact, they can be just computed using find_identifiable_functions function as we will explain in the next tutorial. Stay tuned!

diff --git a/previews/PR249/tutorials/identifiable_functions/index.html b/previews/PR249/tutorials/identifiable_functions/index.html index 391de1e85..80480daa7 100644 --- a/previews/PR249/tutorials/identifiable_functions/index.html +++ b/previews/PR249/tutorials/identifiable_functions/index.html @@ -22,4 +22,4 @@ p1*p3 p1 + p3 x1(t)*p4 + x2(t)*p2 - (-p1 + p3)//(x1(t)*p4 - x2(t)*p2)

By default, find_identifiable_functions tries to simplify the output functions as much as possible, and it has simplify keyword responsible for the degree of simplification. The default value is :standard but one could use :strong to try to simplify further (at the expense of heavier computation) or use :weak to simplify less (but compute faster).

As assess_identifiability and assess_local_identifiability, find_identifiable_functions accepts an optional parameter loglevel (default: Logging.Info) to adjust the verbosity of logging.

+ (-p1 + p3)//(x1(t)*p4 - x2(t)*p2)

By default, find_identifiable_functions tries to simplify the output functions as much as possible, and it has simplify keyword responsible for the degree of simplification. The default value is :standard but one could use :strong to try to simplify further (at the expense of heavier computation) or use :weak to simplify less (but compute faster).

As assess_identifiability and assess_local_identifiability, find_identifiable_functions accepts an optional parameter loglevel (default: Logging.Info) to adjust the verbosity of logging.

diff --git a/previews/PR249/utils/elimination/index.html b/previews/PR249/utils/elimination/index.html index 7acfd52ad..c4841e22b 100644 --- a/previews/PR249/utils/elimination/index.html +++ b/previews/PR249/utils/elimination/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-90474609-3', {'page_path': location.pathname + location.search + location.hash}); -

Elimination

StructuralIdentifiability.Bezout_matrixMethod
Bezout_matrix(f, g, var_elim)

Compute the Bezout matrix of two polynomials f, g with respect to var_elim

Inputs:

  • f - first polynomial
  • g - second polynomial
  • var_elim - variable, of which f and g are considered as polynomials

Output:

  • M::MatrixElem - The Bezout matrix
source
StructuralIdentifiability.Sylvester_matrixMethod
Sylvester_matrix(f, g, var_elim)

Compute the Sylvester matrix of two polynomials f, g with respect to var_elim Inputs:

  • f - first polynomial
  • g - second polynomial
  • var_elim - variable, of which f and g are considered as polynomials

Output:

  • M::MatrixElem - The Sylvester matrix
source
StructuralIdentifiability.chooseMethod
choose(polys, generic_point_generator)

Input:

  • polys - an array of distinct irreducible polynomials in the same ring
  • generic_point_generator - a generic point generator as described above for one of polys

Output:

  • the polynomial that vanishes at the generic_point_generator
source
StructuralIdentifiability.eliminate_varMethod
eliminate_var(f, g, var_elim, generic_point_generator)

Eliminate a variable from a pair of polynomials

Input:

  • f and g - polynomials
  • var_elim - variable to be eliminated
  • generic_point_generator - a generic point generator object for the factor of the resultant of f and g of interest

Output:

  • polynomial - the desired factor of the resultant of f and g
source
StructuralIdentifiability.simplify_matrixMethod
simplify_matrix(M)

Eliminate GCD of entries of every row and column

Input:

  • M::MatrixElem - matrix to be simplified

Output:

  • M::MatrixElem - Simplified matrix
  • extra_factors::Vector{AbstractAlgebra.MPolyElem} - array of GCDs eliminated from M.
source
+

Elimination

StructuralIdentifiability.Bezout_matrixMethod
Bezout_matrix(f, g, var_elim)

Compute the Bezout matrix of two polynomials f, g with respect to var_elim

Inputs:

  • f - first polynomial
  • g - second polynomial
  • var_elim - variable, of which f and g are considered as polynomials

Output:

  • M::MatrixElem - The Bezout matrix
source
StructuralIdentifiability.Sylvester_matrixMethod
Sylvester_matrix(f, g, var_elim)

Compute the Sylvester matrix of two polynomials f, g with respect to var_elim Inputs:

  • f - first polynomial
  • g - second polynomial
  • var_elim - variable, of which f and g are considered as polynomials

Output:

  • M::MatrixElem - The Sylvester matrix
source
StructuralIdentifiability.chooseMethod
choose(polys, generic_point_generator)

Input:

  • polys - an array of distinct irreducible polynomials in the same ring
  • generic_point_generator - a generic point generator as described above for one of polys

Output:

  • the polynomial that vanishes at the generic_point_generator
source
StructuralIdentifiability.eliminate_varMethod
eliminate_var(f, g, var_elim, generic_point_generator)

Eliminate a variable from a pair of polynomials

Input:

  • f and g - polynomials
  • var_elim - variable to be eliminated
  • generic_point_generator - a generic point generator object for the factor of the resultant of f and g of interest

Output:

  • polynomial - the desired factor of the resultant of f and g
source
StructuralIdentifiability.simplify_matrixMethod
simplify_matrix(M)

Eliminate GCD of entries of every row and column

Input:

  • M::MatrixElem - matrix to be simplified

Output:

  • M::MatrixElem - Simplified matrix
  • extra_factors::Vector{AbstractAlgebra.MPolyElem} - array of GCDs eliminated from M.
source
diff --git a/previews/PR249/utils/global_identifiability/index.html b/previews/PR249/utils/global_identifiability/index.html index 220a76dbb..eb0c271d7 100644 --- a/previews/PR249/utils/global_identifiability/index.html +++ b/previews/PR249/utils/global_identifiability/index.html @@ -12,4 +12,4 @@ rff = RationalFunctionField([x // y, y // z]) # Constructs a subfield generated by y / x, 1 / x, z / y -rff = RationalFunctionField([[x, y, R(1)], [y, z]])source
StructuralIdentifiability.field_containsFunction
field_contains(field, ratfuncs, p)

Checks whether given rational function field field contains given rational functions ratfuncs (represented as a list of lists). The result is correct with probability at least p

Inputs:

  • field - a rational function field
  • ratfuncs - a list of lists of polynomials. Each of the lists, say, [f1, ..., fn], defines generators f2/f1, ..., fn/f1.
  • p real number from (0, 1)

Output:

  • a list L[i] of bools of length length(rat_funcs) such that L[i] is true iff the i-th function belongs to field
source
StructuralIdentifiability.get_degree_and_coeffsizeFunction
get_degree_and_coeffsize(f)

for f being a polynomial/rational function over rationals (QQ) returns a tuple (degree, max_coef_size)

source
+rff = RationalFunctionField([[x, y, R(1)], [y, z]])source
StructuralIdentifiability.field_containsFunction
field_contains(field, ratfuncs, p)

Checks whether given rational function field field contains given rational functions ratfuncs (represented as a list of lists). The result is correct with probability at least p

Inputs:

  • field - a rational function field
  • ratfuncs - a list of lists of polynomials. Each of the lists, say, [f1, ..., fn], defines generators f2/f1, ..., fn/f1.
  • p real number from (0, 1)

Output:

  • a list L[i] of bools of length length(rat_funcs) such that L[i] is true iff the i-th function belongs to field
source
StructuralIdentifiability.get_degree_and_coeffsizeFunction
get_degree_and_coeffsize(f)

for f being a polynomial/rational function over rationals (QQ) returns a tuple (degree, max_coef_size)

source
diff --git a/previews/PR249/utils/local_identifiability/index.html b/previews/PR249/utils/local_identifiability/index.html index f22c406ec..c8704b43d 100644 --- a/previews/PR249/utils/local_identifiability/index.html +++ b/previews/PR249/utils/local_identifiability/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-90474609-3', {'page_path': location.pathname + location.search + location.hash}); -

Local Identifiability Tools

StructuralIdentifiability.differentiate_solutionFunction
differentiate_solution(ode, params, ic, inputs, prec)

Input:

  • the same as for power_series_solutions

Output:

  • a tuple consisting of the power series solution and a dictionary of the form (u, v) => power series, where u is a state variable v is a state or parameter, and the power series is the partial derivative of the function u w.r.t. v evaluated at the solution
source
StructuralIdentifiability.differentiate_outputFunction
differentiate_output(ode, params, ic, inputs, prec)

Similar to differentiate_solution but computes partial derivatives of prescribed outputs returns a dictionary of the form y_function => Dict(var => dy/dvar) where dy/dvar is the derivative of y_function with respect to var.

source
+

Local Identifiability Tools

StructuralIdentifiability.differentiate_solutionFunction
differentiate_solution(ode, params, ic, inputs, prec)

Input:

  • the same as for power_series_solutions

Output:

  • a tuple consisting of the power series solution and a dictionary of the form (u, v) => power series, where u is a state variable v is a state or parameter, and the power series is the partial derivative of the function u w.r.t. v evaluated at the solution
source
StructuralIdentifiability.differentiate_outputFunction
differentiate_output(ode, params, ic, inputs, prec)

Similar to differentiate_solution but computes partial derivatives of prescribed outputs returns a dictionary of the form y_function => Dict(var => dy/dvar) where dy/dvar is the derivative of y_function with respect to var.

source
diff --git a/previews/PR249/utils/ode/index.html b/previews/PR249/utils/ode/index.html index d430affee..af74ebd36 100644 --- a/previews/PR249/utils/ode/index.html +++ b/previews/PR249/utils/ode/index.html @@ -3,8 +3,8 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-90474609-3', {'page_path': location.pathname + location.search + location.hash}); -

Functions to work with the ODE structure

StructuralIdentifiability.__mtk_to_siMethod
function __mtk_to_si(de::ModelingToolkit.AbstractTimeDependentSystem, measured_quantities::Array{Tuple{String, SymbolicUtils.BasicSymbolic}})

Input:

  • de - ModelingToolkit.AbstractTimeDependentSystem, a system for identifiability query
  • measured_quantities - array of input function in the form (name, expression)

Output:

  • ODE object containing required data for identifiability assessment
  • conversion dictionary from the symbols in the input MTK model to the variable involved in the produced ODE object
source
StructuralIdentifiability.mtk_to_siMethod
function mtk_to_si(de::ModelingToolkit.AbstractTimeDependentSystem, measured_quantities::Array{ModelingToolkit.Equation})
-function mtk_to_si(de::ModelingToolkit.AbstractTimeDependentSystem, measured_quantities::Array{SymbolicUtils.BasicSymbolic})

Input:

  • de - ModelingToolkit.AbstractTimeDependentSystem, a system for identifiability query
  • measured_quantities - array of output functions (as equations of just functions)

Output:

  • ODE object containing required data for identifiability assessment
  • conversion dictionary from the symbols in the input MTK model to the variable involved in the produced ODE object
source
StructuralIdentifiability.power_series_solutionMethod
power_series_solution(ode, param_values, initial_conditions, input_values, prec)

Input:

  • ode - an ode to solve
  • param_values - parameter values, must be a dictionary mapping parameter to a value
  • initial_conditions - initial conditions of ode, must be a dictionary mapping state variable to a value
  • input_values - power series for the inputs presented as a dictionary variable => list of coefficients
  • prec - the precision of solutions

Output:

  • computes a power series solution with precision prec presented as a dictionary variable => corresponding coordinate of the solution
source
StructuralIdentifiability.set_parameter_valuesMethod
set_parameter_values(ode, param_values)

Input:

  • ode - an ODE as above
  • param_values - values for (possibly, some of) the parameters as dictionary parameter => value

Output:

  • new ode with the parameters in param_values plugged with the given numbers
source
StructuralIdentifiability.find_submodelsMethod
find_submodels(ode)

The function calculates and returns all valid submodels given a system of ODEs.

Input:

  • ode - an ODEs system to be studied

Output:

  • A list of submodels represented as ode objects

Example:

>ode = @ODEmodel(x1'(t) = x1(t)^2, 
+

Functions to work with the ODE structure

StructuralIdentifiability.__mtk_to_siMethod
function __mtk_to_si(de::ModelingToolkit.AbstractTimeDependentSystem, measured_quantities::Array{Tuple{String, SymbolicUtils.BasicSymbolic}})

Input:

  • de - ModelingToolkit.AbstractTimeDependentSystem, a system for identifiability query
  • measured_quantities - array of input function in the form (name, expression)

Output:

  • ODE object containing required data for identifiability assessment
  • conversion dictionary from the symbols in the input MTK model to the variable involved in the produced ODE object
source
StructuralIdentifiability.mtk_to_siMethod
function mtk_to_si(de::ModelingToolkit.AbstractTimeDependentSystem, measured_quantities::Array{ModelingToolkit.Equation})
+function mtk_to_si(de::ModelingToolkit.AbstractTimeDependentSystem, measured_quantities::Array{SymbolicUtils.BasicSymbolic})

Input:

  • de - ModelingToolkit.AbstractTimeDependentSystem, a system for identifiability query
  • measured_quantities - array of output functions (as equations of just functions)

Output:

  • ODE object containing required data for identifiability assessment
  • conversion dictionary from the symbols in the input MTK model to the variable involved in the produced ODE object
source
StructuralIdentifiability.power_series_solutionMethod
power_series_solution(ode, param_values, initial_conditions, input_values, prec)

Input:

  • ode - an ode to solve
  • param_values - parameter values, must be a dictionary mapping parameter to a value
  • initial_conditions - initial conditions of ode, must be a dictionary mapping state variable to a value
  • input_values - power series for the inputs presented as a dictionary variable => list of coefficients
  • prec - the precision of solutions

Output:

  • computes a power series solution with precision prec presented as a dictionary variable => corresponding coordinate of the solution
source
StructuralIdentifiability.set_parameter_valuesMethod
set_parameter_values(ode, param_values)

Input:

  • ode - an ODE as above
  • param_values - values for (possibly, some of) the parameters as dictionary parameter => value

Output:

  • new ode with the parameters in param_values plugged with the given numbers
source
StructuralIdentifiability.find_submodelsMethod
find_submodels(ode)

The function calculates and returns all valid submodels given a system of ODEs.

Input:

  • ode - an ODEs system to be studied

Output:

  • A list of submodels represented as ode objects

Example:

>ode = @ODEmodel(x1'(t) = x1(t)^2, 
                  x2'(t) = x1(t) * x2(t), 
                  y1(t) = x1(t), 
                  y2(t) = x2(t))
@@ -13,4 +13,4 @@
         
         x1'(t) = a(t)*x2(t)^2 + x1(t)
         y1(t) = x1(t)
-    ]
source
+ ]
source
diff --git a/previews/PR249/utils/power_series_utils/index.html b/previews/PR249/utils/power_series_utils/index.html index b21e3528d..681b4cb31 100644 --- a/previews/PR249/utils/power_series_utils/index.html +++ b/previews/PR249/utils/power_series_utils/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-90474609-3', {'page_path': location.pathname + location.search + location.hash}); -

Power Series Utilities

StructuralIdentifiability.ps_matrix_homlinear_deMethod
ps_matrix_homlinear_de(A, Y0, prec)

Input:

  • A - a square matrix with entries in a univariate power series ring
  • Y0 - a square invertible matrix over the base field

Output:

  • matrix Y such that Y' = AY up to precision of A - 1 and Y(0) = Y0
source
StructuralIdentifiability.ps_matrix_invFunction
ps_matrix_inv(M, prec)

Input:

  • M - a square matrix with entries in a univariate power series ring it is assumed that M(0) is invertible and all entries having the same precision
  • prec - an integer, precision, if -1 then defaults to precision of M

Output:

  • the inverse of M computed up to prec
source
StructuralIdentifiability.ps_matrix_linear_deMethod
ps_matrix_linear_de(A, B, Y0, prec)

Input:

  • A, B - square matrices with entries in a univariate power series ring
  • Y0 - a matrix over the base field with the rows number the same as A

Output:

  • matrix Y such that Y' = AY + B up to precision of A - 1 and Y(0) = Y0
source
StructuralIdentifiability.ps_ode_solutionMethod
ps_ode_solution(equations, ic, inputs, prec)

Input:

  • equations - a system of the form $A(x, u, mu)x' - B(x, u, mu) = 0$, where A is a generically nonsingular square matrix. Assumption: A is nonzero at zero
  • ic - initial conditions for x's (dictionary)
  • inputs - power series for inputs represented as arrays (dictionary)
  • prec - precision of the solution

Output:

  • power series solution of the system
source
+

Power Series Utilities

StructuralIdentifiability.ps_matrix_homlinear_deMethod
ps_matrix_homlinear_de(A, Y0, prec)

Input:

  • A - a square matrix with entries in a univariate power series ring
  • Y0 - a square invertible matrix over the base field

Output:

  • matrix Y such that Y' = AY up to precision of A - 1 and Y(0) = Y0
source
StructuralIdentifiability.ps_matrix_invFunction
ps_matrix_inv(M, prec)

Input:

  • M - a square matrix with entries in a univariate power series ring it is assumed that M(0) is invertible and all entries having the same precision
  • prec - an integer, precision, if -1 then defaults to precision of M

Output:

  • the inverse of M computed up to prec
source
StructuralIdentifiability.ps_matrix_linear_deMethod
ps_matrix_linear_de(A, B, Y0, prec)

Input:

  • A, B - square matrices with entries in a univariate power series ring
  • Y0 - a matrix over the base field with the rows number the same as A

Output:

  • matrix Y such that Y' = AY + B up to precision of A - 1 and Y(0) = Y0
source
StructuralIdentifiability.ps_ode_solutionMethod
ps_ode_solution(equations, ic, inputs, prec)

Input:

  • equations - a system of the form $A(x, u, mu)x' - B(x, u, mu) = 0$, where A is a generically nonsingular square matrix. Assumption: A is nonzero at zero
  • ic - initial conditions for x's (dictionary)
  • inputs - power series for inputs represented as arrays (dictionary)
  • prec - precision of the solution

Output:

  • power series solution of the system
source
diff --git a/previews/PR249/utils/primality/index.html b/previews/PR249/utils/primality/index.html index ab2f4b095..955bc87cd 100644 --- a/previews/PR249/utils/primality/index.html +++ b/previews/PR249/utils/primality/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-90474609-3', {'page_path': location.pathname + location.search + location.hash}); -

Primality Checks

StructuralIdentifiability.check_primalityFunction
check_primality(polys::Dict{fmpq_mpoly, fmpq_mpoly}, extra_relations::Array{fmpq_mpoly, 1})

The function checks if the ideal generated by the polynomials and saturated at the leading coefficient with respect to the corresponding variables is prime over rationals.

The extra_relations allows adding more polynomials to the generators (not affecting the saturation).

source
check_primality(polys::Dict{fmpq_mpoly, fmpq_mpoly})

The function checks if the ideal generated by the polynomials and saturated at the leading coefficient with respect to the corresponding variables is prime over rationals.

source
+

Primality Checks

StructuralIdentifiability.check_primalityFunction
check_primality(polys::Dict{fmpq_mpoly, fmpq_mpoly}, extra_relations::Array{fmpq_mpoly, 1})

The function checks if the ideal generated by the polynomials and saturated at the leading coefficient with respect to the corresponding variables is prime over rationals.

The extra_relations allows adding more polynomials to the generators (not affecting the saturation).

source
check_primality(polys::Dict{fmpq_mpoly, fmpq_mpoly})

The function checks if the ideal generated by the polynomials and saturated at the leading coefficient with respect to the corresponding variables is prime over rationals.

source
diff --git a/previews/PR249/utils/reparametrization/index.html b/previews/PR249/utils/reparametrization/index.html index aa56082e2..fec38b42d 100644 --- a/previews/PR249/utils/reparametrization/index.html +++ b/previews/PR249/utils/reparametrization/index.html @@ -23,4 +23,4 @@ X1 => x1 a2 => d a3 => a - a1 => c

Notice that the new_ode is fully identifiabile, and has 1 less parameter compared to the original one.

source + a1 => c

Notice that the new_ode is fully identifiabile, and has 1 less parameter compared to the original one.

source diff --git a/previews/PR249/utils/util/index.html b/previews/PR249/utils/util/index.html index ab96c44fa..3e915c5f7 100644 --- a/previews/PR249/utils/util/index.html +++ b/previews/PR249/utils/util/index.html @@ -3,5 +3,5 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-90474609-3', {'page_path': location.pathname + location.search + location.hash}); -

Other Helpful Functions

StructuralIdentifiability.dennums_to_fractionsMethod
dennums_to_fractions(dennums)

Returns the field generators represented by fractions.

Input: an array of arrays of polynomials, as in [[f1, f2, f3, ...], [g1, g2, g3, ...], ...]

Output: an array of fractions [f2/f1, f3/f1, ..., g2/g1, g3/g1, ...]

source
StructuralIdentifiability.extract_coefficientsMethod
extract_coefficients(poly, variables)

Input:

  • poly - multivariate polynomial
  • variables - a list of variables from the generators of the ring of p

Output:

  • dictionary with keys being tuples of length lenght(variables) and values being polynomials in the variables other than those which are the coefficients at the corresponding monomials (in a smaller polynomial ring)
source
StructuralIdentifiability.fractions_to_dennumsMethod
fractions_to_dennums(fractions)

Returns the field generators represented by lists of denominators and numerators.

Input: an array of fractions, as in [f2/f1, f3/f1, ..., g2/g1, g3/g1, ...]

Output: an array of arrays of polynomials, [[f1, f2, f3, ...], [g1, g2, g3, ...], ...]

source
StructuralIdentifiability.gen_tag_nameFunction
gen_tag_name(base; stop_words)
-gen_tag_names(n, base; stop_words)

Generates a string which will not collide with the words in stop_words.

Arguments

  • n: Generates a sequence of unique strings of length n
  • base: A string or a vector of strings, the base for the generated sequence
  • stop_words: A vector of strings, stop words
source
StructuralIdentifiability.make_substitutionMethod
make_substitution(f, var_sub, val_numer, val_denom)

Substitute a variable in a polynomial with an expression

Input:

  • f - the polynomial
  • var_sub - the variable to be substituted
  • var_numer - numerator of the substitution expression
  • var_denom - denominator of the substitution expression

Output:

  • polynomial - result of substitution
source
StructuralIdentifiability.parent_ring_changeMethod
parent_ring_change(poly, new_ring)

Converts a polynomial to a different polynomial ring Input

  • poly - a polynomial to be converted
  • new_ring - a polynomial ring such that every variable name appearing in poly appears among the generators

Output:

  • a polynomial in new_ring “equal” to poly
source
StructuralIdentifiability.replace_with_icMethod
replace_with_ic(ode::ODE, funcs)

Takes an ode and a list of functions in the states and parameters and makes a change of variable names x(t) -> x(0). Function is used to prepare the output for the case of known initial conditions

source
StructuralIdentifiability.uncertain_factorizationMethod
uncertain_factorization(f)

Input:

  • f - polynomial with rational coefficients

Output:

  • list of pairs (div, certainty) where
    • div's are divisors of f such that f is their product with certain powers
    • if certainty is true, div is $Q$-irreducible
source
+

Other Helpful Functions

StructuralIdentifiability.dennums_to_fractionsMethod
dennums_to_fractions(dennums)

Returns the field generators represented by fractions.

Input: an array of arrays of polynomials, as in [[f1, f2, f3, ...], [g1, g2, g3, ...], ...]

Output: an array of fractions [f2/f1, f3/f1, ..., g2/g1, g3/g1, ...]

source
StructuralIdentifiability.extract_coefficientsMethod
extract_coefficients(poly, variables)

Input:

  • poly - multivariate polynomial
  • variables - a list of variables from the generators of the ring of p

Output:

  • dictionary with keys being tuples of length lenght(variables) and values being polynomials in the variables other than those which are the coefficients at the corresponding monomials (in a smaller polynomial ring)
source
StructuralIdentifiability.fractions_to_dennumsMethod
fractions_to_dennums(fractions)

Returns the field generators represented by lists of denominators and numerators.

Input: an array of fractions, as in [f2/f1, f3/f1, ..., g2/g1, g3/g1, ...]

Output: an array of arrays of polynomials, [[f1, f2, f3, ...], [g1, g2, g3, ...], ...]

source
StructuralIdentifiability.gen_tag_nameFunction
gen_tag_name(base; stop_words)
+gen_tag_names(n, base; stop_words)

Generates a string which will not collide with the words in stop_words.

Arguments

  • n: Generates a sequence of unique strings of length n
  • base: A string or a vector of strings, the base for the generated sequence
  • stop_words: A vector of strings, stop words
source
StructuralIdentifiability.make_substitutionMethod
make_substitution(f, var_sub, val_numer, val_denom)

Substitute a variable in a polynomial with an expression

Input:

  • f - the polynomial
  • var_sub - the variable to be substituted
  • var_numer - numerator of the substitution expression
  • var_denom - denominator of the substitution expression

Output:

  • polynomial - result of substitution
source
StructuralIdentifiability.parent_ring_changeMethod
parent_ring_change(poly, new_ring)

Converts a polynomial to a different polynomial ring Input

  • poly - a polynomial to be converted
  • new_ring - a polynomial ring such that every variable name appearing in poly appears among the generators

Output:

  • a polynomial in new_ring “equal” to poly
source
StructuralIdentifiability.replace_with_icMethod
replace_with_ic(ode::ODE, funcs)

Takes an ode and a list of functions in the states and parameters and makes a change of variable names x(t) -> x(0). Function is used to prepare the output for the case of known initial conditions

source
StructuralIdentifiability.uncertain_factorizationMethod
uncertain_factorization(f)

Input:

  • f - polynomial with rational coefficients

Output:

  • list of pairs (div, certainty) where
    • div's are divisors of f such that f is their product with certain powers
    • if certainty is true, div is $Q$-irreducible
source
diff --git a/previews/PR249/utils/wronskian/index.html b/previews/PR249/utils/wronskian/index.html index baca37156..5fd0ed090 100644 --- a/previews/PR249/utils/wronskian/index.html +++ b/previews/PR249/utils/wronskian/index.html @@ -3,4 +3,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-90474609-3', {'page_path': location.pathname + location.search + location.hash}); -

Wronskian Tools

StructuralIdentifiability.get_max_belowMethod
get_max_below(t, vect)

Input:

  • t - a trie with exponent vectors
  • vect - yet another exponent vector

Output:

  • a pair (d, v) where v is a vector in the trie which is componentwise ≤ vect and the difference d is as small as possible
source
StructuralIdentifiability.massive_evalMethod
massive_eval(polys, eval_dict)

Input:

  • polys - a list of polynomials
  • eval_dict - dictionary from variables to the values. Missing values are treated as zeroes

Output:

  • a list of values of the polynomials

Evaluates a list of polynomials at a point. Assumes that multiplications are relatively expensive (like in truncated power series) so all the monomials are precomputed first and the values of monomials of lower degree are cached and used to compute the values of the monomials of higher degree

source
StructuralIdentifiability.monomial_compressMethod
monomial_compress(io_equation, ode)

Compresses an input-output equation for the rank computation Input:

  • io_equation - input-output equation
  • ode - the corresponding ODE model

Output:

  • pair (coeffs, terms) such that:
    • sum of coeffs[i] * terms[i] = io_equation
    • coeffs involve only parameters, terms involve only inputs and outputs
    • length of the representation is the smallest possible
source
StructuralIdentifiability.wronskianMethod
wronskian(io_equations, ode)

Input:

  • io_equations - a set of io-equations in the form of the Dict as returned by find_ioequations
  • ode - the ODE object

Output:

  • a list of Wronskians evaluated at a point modulo prime

Computes the Wronskians of io_equations

source
+

Wronskian Tools

StructuralIdentifiability.get_max_belowMethod
get_max_below(t, vect)

Input:

  • t - a trie with exponent vectors
  • vect - yet another exponent vector

Output:

  • a pair (d, v) where v is a vector in the trie which is componentwise ≤ vect and the difference d is as small as possible
source
StructuralIdentifiability.massive_evalMethod
massive_eval(polys, eval_dict)

Input:

  • polys - a list of polynomials
  • eval_dict - dictionary from variables to the values. Missing values are treated as zeroes

Output:

  • a list of values of the polynomials

Evaluates a list of polynomials at a point. Assumes that multiplications are relatively expensive (like in truncated power series) so all the monomials are precomputed first and the values of monomials of lower degree are cached and used to compute the values of the monomials of higher degree

source
StructuralIdentifiability.monomial_compressMethod
monomial_compress(io_equation, ode)

Compresses an input-output equation for the rank computation Input:

  • io_equation - input-output equation
  • ode - the corresponding ODE model

Output:

  • pair (coeffs, terms) such that:
    • sum of coeffs[i] * terms[i] = io_equation
    • coeffs involve only parameters, terms involve only inputs and outputs
    • length of the representation is the smallest possible
source
StructuralIdentifiability.wronskianMethod
wronskian(io_equations, ode)

Input:

  • io_equations - a set of io-equations in the form of the Dict as returned by find_ioequations
  • ode - the ODE object

Output:

  • a list of Wronskians evaluated at a point modulo prime

Computes the Wronskians of io_equations

source