SciML / SciML/DiffEqNoiseProcess.jl
noise processes don't appear to be reproducible
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 62
- Forks
- 32
- Avg merge
- 8h 38m
- Merged PRs (30d)
- 16
Description
Describe the bug 🐞
I cannot reproduce the solution to a noise process by setting the RNG.
Expected behavior
Passing the same RNG should reproduce exactly the same process
Minimal Reproducible Example 👇
using DiffEqNoiseProcess, SciMLBase, Random
mwe() = let
rng = Xoshiro(999)
W = RealWienerProcess(0.0, 0.0, 1.0; rng=rng)
prob = NoiseProblem(W, (0.0, 10.0), rng=rng)
SciMLBase.solve(prob; dt=0.01, rng=rng)
end
The result of this is always different, expect it to be the same on every call.
Environment (please complete the following information):
- Output of
using Pkg; Pkg.status()
Status `/tmp/jl_XrioLr/Project.toml`
[77a26b50] DiffEqNoiseProcess v5.26.0
[0bca4576] SciMLBase v2.134.0
[9a3f8284] Random v1.11.0
- Output of
using Pkg; Pkg.status(; mode = PKGMODE_MANIFEST)
Status `/tmp/jl_XrioLr/Manifest.toml`
[47edcb42] ADTypes v1.21.0
[7d9f7c33] Accessors v0.1.43
[79e6a3ab] Adapt v4.4.0
[66dad0bd] AliasTables v1.1.3
[4fba245c] ArrayInterface v7.22.0
[62783981] BitTwiddlingConvenienceFunctions v0.1.6
[70df07ce] BracketingNonlinearSolve v1.6.2
[2a0fbf3d] CPUSummary v0.2.7
[fb6a15b2] CloseOpenIntervals v0.1.13
[38540f10] CommonSolve v0.2.6
[f70d9fcc] CommonWorldInvalidations v1.0.0
[34da2185] Compat v4.18.1
[a33af91c] CompositionsBase v0.1.2
[2569d6c7] ConcreteStructs v0.2.3
[187b0558] ConstructionBase v1.6.0
[adafc99b] CpuId v0.3.1
[9a962f9c] DataAPI v1.16.0
[864edb3b] DataStructures v0.19.3
[2b5f629d] DiffEqBase v6.199.0
[77a26b50] DiffEqNoiseProcess v5.26.0
[a0c0ee7d] DifferentiationInterface v0.7.14
[31c24e10] Distributions v0.25.123
[ffbed154] DocStringExtensions v0.9.5
[4e289a0a] EnumX v1.0.6
[f151be2c] EnzymeCore v0.8.18
[e2ba6199] ExprTools v0.1.10
[55351af7] ExproniconLite v0.10.14
[7034ab61] FastBroadcast v0.3.5
[9aa1b823] FastClosures v0.3.2
[a4df4552] FastPower v1.3.0
[1a297f60] FillArrays v1.16.0
[069b7b12] FunctionWrappers v1.1.3
[77dc65aa] FunctionWrappersWrappers v0.1.3
[46192b85] GPUArraysCore v0.2.0
[34004b35] HypergeometricFunctions v0.3.28
[615f187c] IfElse v0.1.1
[3587e190] InverseFunctions v0.1.17
[92d709cd] IrrationalConstants v0.2.6
[82899510] IteratorInterfaceExtensions v1.0.0
[692b3bcd] JLLWrappers v1.7.1
[ae98c720] Jieko v0.2.1
[10f19ff3] LayoutPointers v0.1.17
[2ab3a3ac] LogExpFunctions v0.3.29
[e6f89c97] LoggingExtras v1.2.0
[1914dd2f] MacroTools v0.5.16
[d125e4d3] ManualMemory v0.1.8
[bb5d69b7] MaybeInplace v0.1.4
[e1d29d7a] Missings v1.2.0
[2e0e35c7] Moshi v0.3.7
[46d2c3a1] MuladdMacro v0.2.4
[be0214bd] NonlinearSolveBase v2.10.0
[bac558e1] OrderedCollections v1.8.1
[90014a1f] PDMats v0.11.37
[e409e4f3] PoissonRandom v0.4.7
[f517fe37] Polyester v0.7.18
[1d0040c9] PolyesterWeave v0.2.2
[d236fae5] PreallocationTools v1.0.0 [loaded: v0.4.34]
[aea7be01] PrecompileTools v1.3.3
[21216c6a] Preferences v1.5.1
[43287f4e] PtrArrays v1.3.0
[1fd47b50] QuadGK v2.11.2
[74087812] Random123 v1.7.1
[e6cf234a] RandomNumbers v1.6.0
[3cdcf5f2] RecipesBase v1.3.4
[731186ca] RecursiveArrayTools v3.45.1
[189a3867] Reexport v1.2.2
[ae029012] Requires v1.3.1
[ae5879a3] ResettableStacks v1.2.0
[79098fc4] Rmath v0.9.0
[7e49a35a] RuntimeGeneratedFunctions v0.5.16
[94e857df] SIMDTypes v0.1.0
[0bca4576] SciMLBase v2.134.0
[19f34311] SciMLJacobianOperators v0.1.12
[a6db7da4] SciMLLogging v1.8.0
[c0aeaf25] SciMLOperators v1.14.1
[431bcebd] SciMLPublic v1.0.1
[53ae85a6] SciMLStructures v1.10.0
[efcf1570] Setfield v1.1.2
[a2af1166] SortingAlgorithms v1.2.2
[276daf66] SpecialFunctions v2.6.1
[aedffcd0] Static v1.3.1
[0d7ed370] StaticArrayInterface v1.8.0
[90137ffa] StaticArrays v1.9.16
[1e83bf80] StaticArraysCore v1.4.4
[10745b16] Statistics v1.11.1
[82ae8749] StatsAPI v1.8.0
[2913bbd2] StatsBase v0.34.10
[4c63d2b9] StatsFuns v1.5.2
[7792a7ef] StrideArraysCore v0.5.8
[2efcf032] SymbolicIndexingInterface v0.3.46
[8290d209] ThreadingUtilities v0.5.5
[a759f4b9] TimerOutputs v0.5.29
[781d530d] TruncatedStacktraces v1.4.0
[efe28fd5] OpenSpecFun_jll v0.5.6+0
[f50d1b31] Rmath_jll v0.5.1+0
[56f22d72] Artifacts v1.11.0
[2a0f44e3] Base64 v1.11.0
[ade2ca70] Dates v1.11.0
[8ba89e20] Distributed v1.11.0
[9fa8497b] Future v1.11.0
[b77e0a4c] InteractiveUtils v1.11.0
[ac6e5ff7] JuliaSyntaxHighlighting v1.12.0
[8f399da3] Libdl v1.11.0
[37e2e46d] LinearAlgebra v1.12.0
[56ddb016] Logging v1.11.0
[d6f4376e] Markdown v1.11.0
[de0858da] Printf v1.11.0
[9a3f8284] Random v1.11.0
[ea8e919c] SHA v0.7.0
[9e88b42a] Serialization v1.11.0
[6462fe0b] Sockets v1.11.0
[2f01184e] SparseArrays v1.12.0
[f489334b] StyledStrings v1.11.0
[4607b0f0] SuiteSparse
[fa267f1f] TOML v1.0.3
[cf7118a7] UUIDs v1.11.0
[4ec0a83e] Unicode v1.11.0
[e66e0078] CompilerSupportLibraries_jll v1.3.0+1
[4536629a] OpenBLAS_jll v0.3.29+0
[05823500] OpenLibm_jll v0.8.7+0
[bea87d4a] SuiteSparse_jll v7.8.3+2
[8e850b90] libblastrampoline_jll v5.15.0+0
- Output of
versioninfo()
Julia Version 1.12.4
Commit 01a2eadb047 (2026-01-06 16:56 UTC)
Build Info:
Official https://julialang.org release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 16 × AMD Ryzen 7 3800X 8-Core Processor
WORD_SIZE: 64
LLVM: libLLVM-18.1.7 (ORCJIT, znver2)
GC: Built with stock GC
Threads: 16 default, 1 interactive, 16 GC (on 16 virtual cores)
Environment:
JULIA_EDITOR = nvim
JULIA_NUM_THREADS = auto
JULIA_PKG_USE_CLI_GIT = true
Additional context
Adding the line Random.seed!(999) to the start of mwe gives expected reproducible behavior. It seems the default RNG is being used somewhere even when I pass these arguments, but I'm not sure where.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the provided mwe entry point and trace how the RNG moves through RealWienerProcess, NoiseProblem, and SciMLBase.solve. Compare repeated calls with the passed RNG against the Random.seed!(999) behavior, then add a regression test if the repository’s existing test structure supports it. Done means identical processes are produced when the same RNG is passed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100