`BSTModelKit.BSTModel`

— Type`mutable struct BSTModel <: AbstractBSTModel`

Mutable holding structure for the BST model object. This object is used to store all the data that is needed to simulate the model. The object is passed to the `evaluate`

function to simulate the model. A `BSTModel`

object is created using the `build`

function.

**Fields**

`number_of_dynamic_states::Int64`

: The number of dynamic states in the model.`number_of_static_states::Int64`

: The number of static states in the model.`list_of_dynamic_species::Array{String,1}`

: A list of the dynamic species in the model.`list_of_static_species::Array{String,1}`

: A list of the static species in the model.`list_of_reactions::Array{String,1}`

: A list of the reactions in the model.`total_species_list::Array{String,1}`

: A list of all the species in the model.`static_factors_array::Array{Float64,1}`

: A list of the static factors in the model.`initial_condition_array::Array{Float64,1}`

: A list of the initial conditions for the dynamic states.`S::Array{Float64,2}`

: The stoichiometry matrix.`G::Array{Float64,2}`

: The exponent matrix.`α::Array{Float64,1}`

: The rate constant vector.

**Metadata fields**

`author::String`

: The author of the model.`version::String`

: The version of the model.`date::String`

: The date the model was created.`description::String`

: A description of the model.

`BSTModelKit.build`

— Method`build(path::String) -> BSTModel`

This function is used to build a `BSTModel`

object from a model file. The model file can be in one of the following formats: `bst, txt, jld2, dat, net, toml`

. The function will parse the file and build the model object.

**Arguments**

`path::String`

: The path to the model file.

**Returns**

- A
`BSTModel`

object. See the`BSTModel`

documentation for more information on the fields of the model object.

`BSTModelKit.evaluate`

— Method```
evaluate(model::BSTModel; tspan::Tuple{Float64,Float64} = (0.0,20.0), Δt::Float64 = 0.01,
input::Union{Nothing,Function} = nothing) -> Tuple{Array{Float64,1}, Array{Float64,2}}
```

This function is used to evaluate the model object that has been built using the `build`

function. The `evaluate`

function will return a tuple with two elements: a vector of time points and a matrix of state values.

**Arguments**

`model::BSTModel`

: A model object that has been built using the`build`

function.`tspan::Tuple{Float64,Float64}`

: A tuple that defines the time span for the simulation. The default is`(0.0,20.0)`

.`Δt::Float64`

: The time step for the simulation. The default is`0.01`

.`input::Union{Nothing,Function}`

: An optional input function that can be used to drive the simulation. The default is`nothing`

.

**Returns**

- A tuple with two elements:
`Array{Float64,1}`

: A vector of time points.`Array{Float64,2}`

: A matrix of state values.

`BSTModelKit.morris`

— Method```
morris(performance::Function, L::Array{Float64,1}, U::Array{Float64,1};
number_of_samples::Int64 = 1000) -> Array{Float64,2}
```

The `morris`

function is a wrapper around the `gsa`

function that uses the Morris method to perform a global sensitivity analysis.

**Arguments**

`performance::Function`

: a function that takes a vector of parameters and returns a scalar performance metric.`L::Array{Float64,1}`

: a vector of lower bounds for the parameters.`U::Array{Float64,1}`

: a vector of upper bounds for the parameters.`number_of_samples::Int64`

: the number of samples to use in the analysis.

**Returns**

- a matrix of results where the first column is the mean and the second column is the variance of the sensitivity analysis.

`BSTModelKit.sobol`

— Method```
sobol(performance::Function, L::Array{Float64,1}, U::Array{Float64,1};
number_of_samples::Int64 = 1000, orders::Array{Int64,1} = [0, 1, 2])
```

The `sobol`

function is a wrapper around the `gsa`

function that uses the Sobol method to perform a global sensitivity analysis.

**Arguments**

`performance::Function`

: a function that takes a vector of parameters and returns a scalar performance metric.`L::Array{Float64,1}`

: a vector of lower bounds for the parameters.`U::Array{Float64,1}`

: a vector of upper bounds for the parameters.`number_of_samples::Int64`

: the number of samples to use in the analysis.`orders::Array{Int64,1}`

: the orders of sensitivity to compute.

**Returns**

- a
`SobolResult`

object.

`BSTModelKit.steadystate`

— Method`steadystate(model::BSTModel; tspan::Tuple{Float64,Float64} = (0.0,20.0), Δt::Float64 = 0.01, input::Union{Nothing,Function} = nothing) -> Array{Float64,1}`

The `steadystate`

function is used to evaluate the steady state of the model object that has been built using the `build`

function.

**Arguments**

`model::BSTModel`

: A model object that has been built using the`build`

function.`tspan::Tuple{Float64,Float64}`

: A tuple that defines the time span for the simulation. The default is`(0.0,20.0)`

.`Δt::Float64`

: The time step for the simulation. The default is`0.01`

.`input::Union{Nothing,Function}`

: An optional input function that can be used to drive the simulation. The default is`nothing`

.

**Returns**

- A vector of state values that represent the steady state of the system.

`Base.indexin`

— Method```
indexin(dd::Dict{String,Any},species_symbol::String;
key="total_species_list")::Union{Nothing,Int}
```

The `indexin`

function is a utility function that returns the index of a species in the total species list of a model.

**Arguments**

`dd::Dict{String,Any}`

: a dictionary that contains the model data.`species_symbol::String`

: the symbol of the species to find.`key::String`

: the key in the dictionary that contains the total species list.

**Returns**

- an integer that represents the index of the species in the total species list, or
`nothing`

if the species is not found.