Skip to content

Commit

Permalink
Update readme
Browse files Browse the repository at this point in the history
Former-commit-id: 24db5f9972fc13d805d4c889b90b11ef59008b20 [formerly 04c851112f6cbb11eb298b4bbe09a0bcb588536d] [formerly e44a30b3466b5d6ad962d9d6974370056c0b58c8 [formerly 146e25e9c2abe429b88bcf37c0f3a1de0153a1b2]] [formerly 146e25e9c2abe429b88bcf37c0f3a1de0153a1b2 [formerly fb0530e]]
Former-commit-id: 24db5f9972fc13d805d4c889b90b11ef59008b20 [formerly 04c851112f6cbb11eb298b4bbe09a0bcb588536d] [formerly e44a30b3466b5d6ad962d9d6974370056c0b58c8 [formerly 146e25e9c2abe429b88bcf37c0f3a1de0153a1b2]]
Former-commit-id: 9be0e6dff6a45a69c62ecfd87e821bf1356f3923
Former-commit-id: 60e92c10bc38da82ee21a9d1b58a153be8cebcd3 [formerly 5df9f496c2b3fcab52b214f5347cfbb6e2651bac]
Former-commit-id: f2c4caa
  • Loading branch information
brendanjohnharris committed Nov 26, 2024
1 parent ec726e5 commit 621a2b7
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# NonstationaryProcesses.jl
Generate nonstationary time series by varying the parameters of otherwise stationary processes

A Julia package for simulating and analyzing non-stationary dynamical systems, providing tools to model processes with time-varying parameters.

Expand Down Expand Up @@ -40,6 +39,7 @@ end
## Parameter profiles
They key functionality beyond `DifferentialEquations` is a library of parameter profiles, functions that describe the time course of a parameter across time.
These include discontinuous profiles represented by a custom `Discontinuous` type, which track the time points of discontinuities and force solvers to evaluate either side of these points for accuracy.
Parameter profiles can also be provided as arbitrary functions of time.
Below are some of the pre-defined parameter profiles:

|Profile|Description|
Expand Down Expand Up @@ -115,3 +115,25 @@ To collect the time series of this simulation, we use:
```julia
NonstationaryProcesses.timeseries(lorenzSim) # A `TimeseriesTools` `AbstractTimeSeries`
```

## Simulation parameters
The `Process` syntax has some shorthand for specifying the various options for simulating a nonstationary system:

| option | description|
|---|---|
|`process`| A `Function` with a method for Process types that performs a particular simulation|
|`parameter_profile`| A tuple of `Function`s that describe how each parameter of a system evolves over time. These can be functions, or curried functions of parameters given in `:parameter_profile_parameters`|
|`parameter_profile_parameters`| A tuple of parameters (which may also be tuples) for each `:parameter_profile`|
|`X0`| The initial conditions, given as a vector equal in length to number of variables in the system|
|`t0`| The initial time of the simulation, at which the system has the state `:X0`|
|`transient_t0`| The length of time to simulate the system, from the initial conditions `:X0` at `:t0`, that is discarded when retrieving the timeseries|
|`dt`| The time step of the simulation and solver|
|`savedt`| The sampling period of the solution's timeseries, which must be a multiple of `:dt`|
|`tmax`| The final time point of the simulation. The duration of the simulation is then `:tmax` - `:transient_t0`, and the duration of the returned time series is `:tmax` - `:t0`. See times|
|`alg`| The algorithm used to solve `DifferentialEquations.jl` processes. See e.g. the list of [ODE solvers](https://diffeq.sciml.ai/stable/solvers/ode_solve/)|
|`solver_opts`| A dictionary of additional options passed to the `:alg`. This can include solver tolerances, adaptive timesteps, or the maximum number of iterations. See the common solver options|
|`solver_rng`| An integer seed for the random number generator, set to a random number by default|
|`id`| A unique integer ID for a given `Process`|
|`date`| The date at which the `Process` was created|
|`solution`| The solution of the simulation in its native format (e.g. an ODE solution)|
|`varnames`| Dummy names for the variables of a Process, defaulting to `[:x, :y, :z, ...]`|

0 comments on commit 621a2b7

Please sign in to comment.