# Surrogate generation API

The JuliaSim software is available for preview only. Please contact us for access, by emailing info@juliacomputing.com, if you are interested in evaluating JuliaSim.

In this section, we provide a high-level overview of the API to present the core functionalities of JuliaSim.jl. To avoid inundating the reader with too many details, we refrain from describing the keyword arguments in certain cases. The functions and arguments below will hopefully help the reader to better understand the application examples. Of course, the complete JuliaSim.jl documentation contains all the necessary details.

`surrogatize`

function

The `generic`

surrogate contains only one function, `surrogatize`

, which takes the following positional arguments:

`setup`

: it has to be a type of`SimulationSetup`

.`surralg`

: the surrogate algorithm to be used.`n_sample_pts`

: the number of sets to be sampled from the parameter space.

`simulate`

function

The `simulate`

function takes the following positional arguments:

`setup`

: it has to be a type of`SimulationSetup`

.`p`

: simulation parameters.`u0`

: the initial condition.

`simulate_ensemble`

function

The `simulate_ensemble`

function takes the following positional arguments:

`setup`

: it has to be a type of`SimulationSetup`

.`param_space`

: the parameter space.`n_sample_pts`

: the number of sets to be sampled from the parameter space.

## Simulators

Currently, four simulators are available:

`deproblem`

`cellml`

`FMUSimSetup`

`SurrogatizeNgSpice`

`deproblem`

simulator

As the name suggests, the `deproblem`

simulator is used for solving differential equations. The constructor `DEProblemSimulation`

takes the following arguments:

`prob`

: a differential equation problem; has to be specified by the user.`alg`

: solver algorithm. Default:`Rosenbrock23()`

.`ensemblearg`

: ensemble solver algorithm. Default:`EnsembleDistributed()`

.`solver_kwargs`

: solver-specific keyword arguments.

`cellml`

simulator

The `cellml`

simulator can be used to create biomedical models.

## Surrogates

`LPCTESN`

surrogate

The abbreviation `LPCTESN`

stands for 'Linear Projection Continuous-Time Echo State Network'.

`reservoir_options`

The `reservoir_options`

are specified via the `LPCTESN`

constructor. The only positional argument is `reservoir_size`

.

The list of available options for the customization of the reservoir is given below:

`reservoir_size`

: size (type:`Int`

) of the reservoir ODE system.`weight_initializer`

: Default:`erdos_renyi`

.`activation_function`

: Default:`tanh`

.`radial_function`

: Default:`linearRadial`

.`output_function`

: an output function that takes in (state, time) and returns

desired output from the system. Default: `(u, t) -> identity(u)`

.

`reservoir_sim_solver`

: Default:`Tsit5()`

.`hybridp`

: Parameters of a single solution. Default:`nothing`

.`reservoir_sim_kwargs`

`NPCTESN`

surrogate

The abbreviation `NPCTESN`

stands for 'Nonlinear Projection Continuous-Time Echo State Network'. The constructor is virtually the same as that for its linear counterpart (the only difference lies in some default values).