-
Notifications
You must be signed in to change notification settings - Fork 384
Add Ornstein–Uhlenbeck noise generator #3541
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the contribution!
I have a minor change for the docs, and a question if there is a good use case we can use an example for this generator?
models/ou_noise_generator.h
Outdated
.. admonition:: Recording the generated current | ||
|
||
You can use a :doc:`multimeter <multimeter>` to record the average current sent to all targets for each time step if | ||
simulating on a single thread; multiple MPI processes with one thread each also work. In this case, the recording |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
simulating on a single thread; multiple MPI processes with one thread each also work. In this case, the recording | |
simulating on a single thread; multiple MPI processes with one thread each also work. In this case, the recording |
models/ou_noise_generator.h
Outdated
|
||
You can use a :doc:`multimeter <multimeter>` to record the average current sent to all targets for each time step if | ||
simulating on a single thread; multiple MPI processes with one thread each also work. In this case, the recording | ||
interval of the multimeter should be equal to the `dt` of the generator to avoid aliasing effects. In multi-threaded |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
interval of the multimeter should be equal to the `dt` of the generator to avoid aliasing effects. In multi-threaded | |
interval of the multimeter should be equal to the `dt` of the generator to avoid aliasing effects. In multi-threaded |
models/ou_noise_generator.h
Outdated
You can use a :doc:`multimeter <multimeter>` to record the average current sent to all targets for each time step if | ||
simulating on a single thread; multiple MPI processes with one thread each also work. In this case, the recording | ||
interval of the multimeter should be equal to the `dt` of the generator to avoid aliasing effects. In multi-threaded | ||
mode, recording of noise currents is prohibited for technical reasons. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
mode, recording of noise currents is prohibited for technical reasons. | |
mode, recording of noise currents is prohibited for technical reasons. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The entire paragraph needs to be indented to be included in the admonition
Add Ornstein–Uhlenbeck Noise Generator
This pull request adds a new
ou_noise_generator
device and corresponding pytest-based tests. The device generates temporally correlated current following an Ornstein–Uhlenbeck (OU). The tests verify both parameter handling and statistical properties.Model Implementation
Files added
models/ou_noise_generator.h
models/ou_noise_generator.cpp
pytests/sli2py_stimulating/test_ou_noise_generator.py
Process equation
The state variable (x) evolves as
where
($\mu$ ) (
mean
parameter) is the long-term mean of the process,($\sigma$ ) (
std
parameter) its stationary standard deviation,($\tau$ ) (
tau
parameter) is the time constant,dt
is the internal integration step.Integration and output
dt
.Tests (
test_ou_noise_generator.py
)Parameter setting and defaults
set()
andSetDefaults()
both correctly configure all parameters (mean
,std
,tau
,dt
).Error conditions
dt
not divisible bynest.resolution
raisesStepMultipleRequired
.Mean and variance
Autocorrelation
Cross-correlation