SciML / SciML/JumpProcesses.jl

Support for marked point processes

Open
#63 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Julia
Stars
150
Forks
41
Avg merge
1d 9h
Merged PRs (30d)
28

Description

Following the discussion at https://discourse.julialang.org/t/differentialequations-jl-marked-point-processes-or-storing-user-data/19453, I suggest adding support for marked point processes. Specifically, for simulating the process alongside an SDE affected by it, and retrieving times and marks from the solution.

As a suggested interface (slightly different than the one I suggested in the discourse thread above), the constructors for VariableRateJump and ConstantRateJump can have an additional optional (keyword?) argument mark specifying a mark sampling function. The affect! function would then take an additional argument for the mark.

total_rate(u,p,t) = ...
sample_mark(u,p,t) = ...
affect!(du,u,p,t,y) = ...
mpp = VariableRateJump( total_rate, affect!, mark=sample_mark )
prob = JumpProblem( ode_or_sde, mpp )
sol = solve(prob)
times, marks = get_point_events(sol)

which would mean something like

function _affect!(du,u,p,t)
    y = sample_mark(u,p,t)
    store_time_and_mark_somewhere!(t,y,somewhere)
    affect!(du,u,p,t,y)
end
jump = VariableRateJump( total_rate, _affect! )
prob = JumpProblem( ode_or_sde, jump )

Mathematically, this is enough to support equations of the form
du_t=<drift and diffusion terms> +∫_y h(u_t,p,t,y)N(dt,dy)
where N is a MPP with an intensity kernel of the form λₜ(dy)=λ(u_t,p,t,dy) (total_rate is ∫λₜ(dy), sample_mark samples y from λₜ(dy)/∫λₜ(dy))

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names VariableRateJump, ConstantRateJump, JumpProblem, solve, and get_point_events but gives no repository file or test path. Start by tracing those constructors and solution event handling; done means marked sampling reaches affect! and times and marks can be retrieved for ODE/SDE jump simulations.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.