Skip to content

Commit

Permalink
Merge pull request #224 from isaacsas/doc-updates
Browse files Browse the repository at this point in the history
doc and figure tweaks
  • Loading branch information
isaacsas committed Jul 19, 2020
2 parents 3b797ed + ef79527 commit 4feb634
Show file tree
Hide file tree
Showing 6 changed files with 256 additions and 224 deletions.
64 changes: 40 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,36 +20,52 @@ bifurcation functionality has not yet been updated to the new system. If you
rely on this functionality please do not update at this time, or consider using
[BifurcationKit.jl](https://github.com/rveltz/BifurcationKit.jl).*

Catalyst.jl is a domain specific language (DSL) for high performance
simulation and modeling of chemical reaction networks. Catalyst utilizes
Catalyst.jl is a domain specific language (DSL) for high performance simulation
and modeling of chemical reaction networks. Catalyst utilizes
[ModelingToolkit](https://github.com/SciML/ModelingToolkit.jl)
`ReactionSystem`s for auto-vectorization and parallelism in the
generated networks, enabling large-scale simulations. This system
can generate ModelingToolkit-based systems of ODEs, SDEs, jump processes
and more. This allows for the easy simulation and parameter estimation
of mass action ODE models, Chemical Langevin SDE models,
stochastic chemical kinetics jump process models, and more.
The generated models can then be used with solvers throughout the broader
[SciML](https://sciml.ai) ecosystem, including higher level SciML
packages (e.g. for sensitivity analysis, parameter estimation,
machine learning applications, etc).
`ReactionSystem`s, leveraging ModelingToolkit to enable large-scale simulations
through auto-vectorization and parallelism. `ReactionSystems`s can be used to
generate ModelingToolkit-based models, allowing the easy simulation and
parameter estimation of mass action ODE models, Chemical Langevin SDE models,
stochastic chemical kinetics jump process models, and more. Generated models can
be used with solvers throughout the broader [SciML](https://sciml.ai) ecosystem,
including higher level SciML packages (e.g. for sensitivity analysis, parameter
estimation, machine learning applications, etc).

## Tutorials and Documentation

For information on using the package,
[see the stable documentation](https://catalyst.sciml.ai/stable/). Use the
[in-development documentation](https://catalyst.sciml.ai/dev/) for the version of
the documentation which contains the unreleased features.
For information on using the package, [see the stable
documentation](https://catalyst.sciml.ai/stable/). The [in-development
documentation](https://catalyst.sciml.ai/dev/) describes unreleased features in
the current master branch.

## Features
- DSL provides a simple and readable format for manually specifying chemical
reactions.
- The [Catalyst.jl API](http://catalyst.sciml.ai/dev/api/catalyst_api) provides
functionality for extending networks, building networks programmatically, and
for composing multiple networks together.
- `ReactionSystem`s generated by the DSL can be converted to a variety of
`ModelingToolkit.AbstractSystem`s, including ODE, SDE and jump process
representations.
- By leveraging ModelingToolkit, users have a variety of options for generating
optimized system representations to use in solvers. These include construction
of dense or sparse Jacobians, multithreading or parallelization of generated
derivative functions, automatic classification of reactions into optimized
jump types for Gillespie type simulations, automatic construction of
dependency graphs for jump systems, and more.
- Generated systems can be solved using any
[DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl)
ODE/SDE/jump solver, and can be used within `EnsembleProblem`s for carrying
out GPU-parallelized parameter sweeps and statistical sampling. Plot recipes
are available for visualizing the solutions.
- Julia `Expr`s can be obtained for all rate laws and functions determining the
deterministic and stochastic terms within resulting ODE, SDE or jump models.
- [`Latexify`](https://github.com/korsbo/Latexify.jl) can be used to generate
LaTeX expressions corresponding to generated mathematical models.

- DSL provides a simple and readable format for manually specifying chemical reactions.
- The [Catalyst.jl API](@ref) provides functionality for extending networks, building networks programmatically, and for composing multiple networks together.
- `ReactionSystem`s generated by the DSL can be converted to a variety of `ModelingToolkit.AbstractSystem`s, including ODE, SDE and jump process representations.
- By leveraging ModelingToolkit, users have a variety of options for generating optimized system representations to use in solvers. These include construction of dense or sparse Jacobians, multithreading or parallelization of generated derivative functions, automatic classification of reactions into optimized jump types for Gillespie type simulations, automatic construction of dependency graphs for jump systems, and more.
- Generated systems can be solved using any [DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl) ODE/SDE/jump solver, and can be used within `EnsembleProblem`s for carrying out GPU-parallelized parameter sweeps and statistical sampling. Plot recipes are available for visualizing the solutions.

## Gillespie Simulations of Michaelis-Menten Enzyme Kinetics
## Illustrative Examples
#### Gillespie Simulations of Michaelis-Menten Enzyme Kinetics

```julia
rs = @reaction_network begin
Expand All @@ -70,7 +86,7 @@ plot(jsol,lw=2,title="Gillespie: Michaelis-Menten Enzyme Kinetics")

![](https://user-images.githubusercontent.com/1814174/87864114-3bf9dd00-c932-11ea-83a0-58f38aee8bfb.png)

## Adaptive SDEs for A Birth-Death Process
#### Adaptive SDEs for A Birth-Death Process

```julia
using Catalyst, Plots, StochasticDiffEq, DiffEqJump
Expand Down
76 changes: 38 additions & 38 deletions docs/src/assets/SIR.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
64 changes: 32 additions & 32 deletions docs/src/assets/models1.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
216 changes: 108 additions & 108 deletions docs/src/assets/models2.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
56 changes: 36 additions & 20 deletions docs/src/index.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,51 @@
# Catalyst.jl for Reaction Models

Catalyst.jl is a domain specific language (DSL) for high performance
simulation and modeling of chemical reaction networks. Catalyst utilizes
[`ModelingToolkit.ReactionSystem`](@ref)s for auto-vectorization and
parallelism in the generated networks, enabling large-scale simulations.
This system can generate ModelingToolkit-based systems of ODEs, SDEs,
jump processes and more. This allows for the easy simulation and
parameter estimation of mass action ODE models, Chemical Langevin SDE
models, stochastic chemical kinetics jump process models, and more.
The generated models can then be used with solvers throughout the broader
[SciML](https://sciml.ai) ecosystem, including higher level SciML
packages (e.g. for sensitivity analysis, parameter estimation,
machine learning applications, etc).
Catalyst.jl is a domain specific language (DSL) for high performance simulation
and modeling of chemical reaction networks. Catalyst utilizes
[ModelingToolkit](https://github.com/SciML/ModelingToolkit.jl)
`ReactionSystem`s, leveraging ModelingToolkit to enable large-scale simulations
through auto-vectorization and parallelism. `ReactionSystems`s can be used to
generate ModelingToolkit-based models, allowing the easy simulation and
parameter estimation of mass action ODE models, Chemical Langevin SDE models,
stochastic chemical kinetics jump process models, and more. Generated models can
be used with solvers throughout the broader [SciML](https://sciml.ai) ecosystem,
including higher level SciML packages (e.g. for sensitivity analysis, parameter
estimation, machine learning applications, etc).

## Features
- DSL provides a simple and readable format for manually specifying chemical reactions.
- [Catalyst.jl API](@ref) provides functionality for extending networks, building networks programmatically, and for composing multiple networks together.
- `ReactionSystem`s generated by the DSL can be converted to a variety of `ModelingToolkit.AbstractSystem`s, including ODE, SDE and jump process representations.
- By leveraging ModelingToolkit, users have a variety of options for generating optimized system representations to use in solvers. These include construction of dense or sparse Jacobians, multithreading or parallelization of generated derivative functions, automatic classification of reactions into optimized jump types for Gillespie type simulations, automatic construction of dependency graphs for jump systems, and more.
- Generated systems can be solved using any [DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl) ODE/SDE/jump solver, and can be used within `EnsembleProblem`s for carrying out GPU-parallelized parameter sweeps and statistical sampling. Plot recipes are available for visualizing the solutions.
- DSL provides a simple and readable format for manually specifying chemical
reactions.
- The [Catalyst.jl API](http://catalyst.sciml.ai/dev/api/catalyst_api) provides
functionality for extending networks, building networks programmatically, and
for composing multiple networks together.
- `ReactionSystem`s generated by the DSL can be converted to a variety of
`ModelingToolkit.AbstractSystem`s, including ODE, SDE and jump process
representations.
- By leveraging ModelingToolkit, users have a variety of options for generating
optimized system representations to use in solvers. These include construction
of dense or sparse Jacobians, multithreading or parallelization of generated
derivative functions, automatic classification of reactions into optimized
jump types for Gillespie type simulations, automatic construction of
dependency graphs for jump systems, and more.
- Generated systems can be solved using any
[DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl)
ODE/SDE/jump solver, and can be used within `EnsembleProblem`s for carrying
out GPU-parallelized parameter sweeps and statistical sampling. Plot recipes
are available for visualizing the solutions.
- Julia `Expr`s can be obtained for all rate laws and functions determining the
deterministic and stochastic terms within resulting ODE, SDE or jump models.
- [`Latexify`](https://github.com/korsbo/Latexify.jl) can be used to generate
LaTeX expressions corresponding to generated mathematical models.

## Installation

Catalyst can be installed through the Julia package manager:

```julia
]add Catalyst
using Catalyst
```

## An Illustrative Example
## Illustrative Example
Here is a simple example of generating and solving an SIR ODE model:

```julia
Expand All @@ -47,6 +63,6 @@ sol = solve(op, Tsit5()) # use Tsit5 ODE solver
which we can plot as
```julia
using Plots
plot(sol)
plot(sol, lw=2)
```
![SIR Solution](assets/SIR.svg)
4 changes: 2 additions & 2 deletions docs/src/tutorials/models.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ to be provided.
We can then plot the solution using the solution plotting receipe:
```julia
using Plots
plot(sol)
plot(sol, lw=2)
```
![models1](../assets/models1.svg)

Expand Down Expand Up @@ -80,7 +80,7 @@ sol = solve(jump_prob, SSAStepper())
Here we used Gillespie's `Direct` method as the underlying stochastic simulation
algorithm. We get
```julia
plot(sol)
plot(sol, lw=2)
```
![models2](../assets/models2.svg)

Expand Down

0 comments on commit 4feb634

Please sign in to comment.