{"id":32155206,"url":"https://github.com/sciml/jumpprocesses.jl","last_synced_at":"2026-03-01T23:08:02.146Z","repository":{"id":36996039,"uuid":"80893293","full_name":"SciML/JumpProcesses.jl","owner":"SciML","description":"Build and simulate jump equations like Gillespie simulations and jump diffusions with constant and state-dependent rates and mix with differential equations and scientific machine learning (SciML)","archived":false,"fork":false,"pushed_at":"2026-03-01T19:34:24.000Z","size":2173203,"stargazers_count":148,"open_issues_count":82,"forks_count":38,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-03-01T19:50:18.922Z","etag":null,"topics":["differential-equations","gillespie","hybrid-differential-equation","jump-diffusion","neural-differential-equations","neural-ode","ode","scientific-ai","scientific-machine-learning","scientific-ml","sciml","sde","ssa","stochastic","stochastic-jump-equations"],"latest_commit_sha":null,"homepage":"https://docs.sciml.ai/JumpProcesses/stable/","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SciML.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"SciML"}},"created_at":"2017-02-04T04:27:57.000Z","updated_at":"2026-03-01T19:34:28.000Z","dependencies_parsed_at":"2025-11-27T12:04:59.417Z","dependency_job_id":null,"html_url":"https://github.com/SciML/JumpProcesses.jl","commit_stats":{"total_commits":1210,"total_committers":42,"mean_commits":28.80952380952381,"dds":0.6206611570247934,"last_synced_commit":"f83228cf75365794ddcf946599ae5c943ed0eb2c"},"previous_names":["sciml/diffeqjump.jl"],"tags_count":160,"template":false,"template_full_name":null,"purl":"pkg:github/SciML/JumpProcesses.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciML%2FJumpProcesses.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciML%2FJumpProcesses.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciML%2FJumpProcesses.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciML%2FJumpProcesses.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SciML","download_url":"https://codeload.github.com/SciML/JumpProcesses.jl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciML%2FJumpProcesses.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29987656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T22:42:38.399Z","status":"ssl_error","status_checked_at":"2026-03-01T22:41:51.863Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["differential-equations","gillespie","hybrid-differential-equation","jump-diffusion","neural-differential-equations","neural-ode","ode","scientific-ai","scientific-machine-learning","scientific-ml","sciml","sde","ssa","stochastic","stochastic-jump-equations"],"created_at":"2025-10-21T12:01:29.838Z","updated_at":"2026-03-01T23:08:02.141Z","avatar_url":"https://github.com/SciML.png","language":"Julia","funding_links":["https://github.com/sponsors/SciML"],"categories":[],"sub_categories":[],"readme":"# JumpProcesses.jl\n\n[![Stable Release Docs](https://img.shields.io/badge/Stable%20Release%20Docs-SciML-blue)](https://docs.sciml.ai/JumpProcesses/stable/)\n[![Master Branch Docs](https://img.shields.io/badge/Master%20Branch%20Docs-SciML-blue)](https://docs.sciml.ai/JumpProcesses/dev/)\n[![DOI](https://zenodo.org/badge/80893293.svg)](https://zenodo.org/doi/10.5281/zenodo.10869721)\n\n\u003c!-- [![Coverage Status](https://coveralls.io/repos/github/SciML/JumpProcesses.jl/badge.svg?branch=master)](https://coveralls.io/github/SciML/JumpProcesses.jl?branch=master)\n[![codecov](https://codecov.io/gh/SciML/JumpProcesses.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/SciML/JumpProcesses.jl) --\u003e\n\u003c!-- [![Join the chat at https://julialang.zulipchat.com #sciml-bridged](https://img.shields.io/static/v1?label=Zulip\u0026message=chat\u0026color=9558b2\u0026labelColor=389826)](https://julialang.zulipchat.com/#narrow/stream/279055-sciml-bridged) --\u003e\n[![Build Status](https://github.com/SciML/JumpProcesses.jl/workflows/CI/badge.svg)](https://github.com/SciML/JumpProcesses.jl/actions?query=workflow%3ACI)\n[![ColPrac: Contributor's Guide on Collaborative Practices for Community Packages](https://img.shields.io/badge/ColPrac-Contributor%27s%20Guide-blueviolet)](https://github.com/SciML/ColPrac)\n[![SciML Code Style](https://img.shields.io/static/v1?label=code%20style\u0026message=SciML\u0026color=9558b2\u0026labelColor=389826)](https://github.com/SciML/SciMLStyle)\n\nJumpProcesses.jl provides methods for simulating jump processes, known as\nstochastic simulation algorithms (SSAs), Doob's method, Gillespie methods, or\nKinetic Monte Carlo methods across different fields of science. It also enables the\nincorporation of jump processes into hybrid jump-ODE and jump-SDE models,\nincluding piecewise deterministic Markov processes (PDMPs) and jump diffusions.\n\nJumpProcesses is a component package in the [SciML](https://sciml.ai/) ecosystem,\nand one of the core solver libraries included in\n[DifferentialEquations.jl](https://github.com/JuliaDiffEq/DifferentialEquations.jl).\n\nFor information on using the package,\n[see the stable documentation](https://docs.sciml.ai/JumpProcesses/stable/). Use the\n[in-development documentation](https://docs.sciml.ai/JumpProcesses/dev/) for the version of\nthe documentation which contains unreleased features.\n\nThe documentation includes\n\n  - [a tutorial on simulating basic Poisson processes](https://docs.sciml.ai/JumpProcesses/stable/tutorials/simple_poisson_process/)\n  - [a tutorial and details on using JumpProcesses to simulate jump processes via SSAs (i.e. Gillespie methods)](https://docs.sciml.ai/JumpProcesses/stable/tutorials/discrete_stochastic_example/),\n  - [a tutorial on simulating jump-diffusion processes](https://docs.sciml.ai/JumpProcesses/stable/tutorials/jump_diffusion/),\n  - [a reference on the types of jumps and available simulation methods](https://docs.sciml.ai/JumpProcesses/stable/jump_types/),\n  - [a reference on jump time stepping methods](https://docs.sciml.ai/JumpProcesses/stable/jump_solve/),\n  - [a FAQ](https://docs.sciml.ai/JumpProcesses/stable/faq) with information on changing parameters between simulations and using callbacks,\n  - [the JumpProcesses.jl API documentation](https://docs.sciml.ai/JumpProcesses/stable/api/).\n\n## Contributions welcomed!\n\n\nContact us in sciml-bridged on Slack to discuss where to get started, the [`Help wanted`](https://github.com/SciML/JumpProcesses.jl/issues/431) issue, or just open a PR to address an open issue or add new functionality. Contributions, no matter how small, are always welcome and appreciated,\nincluding documentation editing/writing. See also the [contribution section](#contributing-and-getting-help).\n\n## Installation\n\nThere are two ways to install `JumpProcesses.jl`. First, users may install the meta\n`DifferentialEquations.jl` package, which installs and wraps `OrdinaryDiffEq.jl`\nfor solving ODEs, `StochasticDiffEq.jl` for solving SDEs, and `JumpProcesses.jl`,\nalong with a number of other useful packages for solving models involving ODEs,\nSDEs and/or jump process. This single install will provide the user with all of\nthe facilities for developing and solving Jump problems.\n\nTo install the `DifferentialEquations.jl` package, refer to the following link\nfor complete [installation\ndetails](https://docs.sciml.ai/DiffEqDocs/stable/).\n\nIf the user wishes to separately install the `JumpProcesses.jl` library, which is a\nlighter dependency than `DifferentialEquations.jl`, then the following code will\ninstall `JumpProcesses.jl` using the Julia package manager:\n\n```julia\nusing Pkg\nPkg.add(\"JumpProcesses\")\n```\n\n## Examples\n\n### Stochastic Chemical Kinetics SIR Model\n\nHere we consider the stochastic chemical kinetics jump process model for the\nbasic SIR model, involving three species, $(S,I,R)$, that can undergo the\nreactions $S + I \\to 2I$ and $I \\to R$ (each represented as a jump process)\n\n```julia\nusing JumpProcesses, Plots\n\n# here we order S = 1, I = 2, and R = 3\n# substrate stoichiometry:\nsubstoich = [[1 =\u003e 1, 2 =\u003e 1],    # 1*S + 1*I\n    [2 =\u003e 1]]                     # 1*I\n# net change by each jump type\nnetstoich = [[1 =\u003e -1, 2 =\u003e 1],   # S -\u003e S-1, I -\u003e I+1\n    [2 =\u003e -1, 3 =\u003e 1]]            # I -\u003e I-1, R -\u003e R+1\n# rate constants for each jump\np = (0.1 / 1000, 0.01)\n\n# p[1] is rate for S+I --\u003e 2I, p[2] for I --\u003e R\npidxs = [1, 2]\n\nmaj = MassActionJump(substoich, netstoich; param_idxs = pidxs)\n\nu₀ = [999, 1, 0]       #[S(0),I(0),R(0)]\ntspan = (0.0, 250.0)\ndprob = DiscreteProblem(u₀, tspan, p)\n\n# use the Direct method to simulate\njprob = JumpProblem(dprob, maj)\n\n# solve as a pure jump process, i.e. using SSAStepper\nsol = solve(jprob)\nplot(sol)\n```\n\n![SIR Model](docs/src/assets/SIR.png)\n\nInstead of `MassActionJump`, we could have used the less efficient, but more\nflexible, `ConstantRateJump` type\n\n```julia\nrate1(u, p, t) = p[1] * u[1] * u[2]  # p[1]*S*I\nfunction affect1!(integrator)\n    integrator.u[1] -= 1         # S -\u003e S - 1\n    integrator.u[2] += 1         # I -\u003e I + 1\nend\njump = ConstantRateJump(rate1, affect1!)\n\nrate2(u, p, t) = p[2] * u[2]      # p[2]*I\nfunction affect2!(integrator)\n    integrator.u[2] -= 1        # I -\u003e I - 1\n    integrator.u[3] += 1        # R -\u003e R + 1\nend\njump2 = ConstantRateJump(rate2, affect2!)\njprob = JumpProblem(dprob, jump, jump2)\nsol = solve(jprob)\n```\n\n### Jump-ODE Example\n\nLet's solve an ODE for exponential growth, but coupled to a constant rate jump\n(Poisson) process that halves the solution each time it fires\n\n```julia\nusing DifferentialEquations, Plots\n\n# du/dt = u is the ODE part\nfunction f(du, u, p, t)\n    du[1] = u[1]\nend\nu₀ = [0.2]\ntspan = (0.0, 10.0)\nprob = ODEProblem(f, u₀, tspan)\n\n# jump part\n\n# fires with a constant intensity of 2\nrate(u, p, t) = 2\n\n# halve the solution when firing\naffect!(integrator) = (integrator.u[1] = integrator.u[1] / 2)\njump = ConstantRateJump(rate, affect!)\n\n# use the Direct method to handle simulating the jumps\njump_prob = JumpProblem(prob, Direct(), jump)\n\n# now couple to the ODE, solving the ODE with the Tsit5 method\nsol = solve(jump_prob, Tsit5())\nplot(sol)\n```\n\n![constant_rate_jump](docs/src/assets/constant_rate_jump.png)\n\n## Contributing and Getting Help\n\n  - Please refer to the\n    [SciML ColPrac: Contributor's Guide on Collaborative Practices for Community Packages](https://github.com/SciML/ColPrac/blob/master/README.md)\n    for guidance on PRs, issues, and other matters relating to contributing to SciML.\n\n  - See the [SciML Style Guide](https://github.com/SciML/SciMLStyle) for common coding practices and other style decisions.\n  - There are a few community forums for getting help and asking questions:\n    \n      + The #diffeq-bridged and #sciml-bridged channels in the\n        [Julia Slack](https://julialang.org/slack/)\n      + The #diffeq-bridged and #sciml-bridged channels in the\n        [Julia Zulip](https://julialang.zulipchat.com/#narrow/stream/279055-sciml-bridged)\n      + The [Julia Discourse forums](https://discourse.julialang.org)\n      + See also the [SciML Community page](https://sciml.ai/community/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsciml%2Fjumpprocesses.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsciml%2Fjumpprocesses.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsciml%2Fjumpprocesses.jl/lists"}