-
Notifications
You must be signed in to change notification settings - Fork 0
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
Node and connection parametrization #4
Comments
The intentions described here were already described in this issue: nest#352. I've closed that in favor of this one. |
Another source of information is nest#488 |
Hi, looked at @jougs comment above. I think it looks good in terms of proposed syntax. I would like functionality to compute distance along a chosen axis ( |
I am in favor of the suggestion in #8 (comment) by @heplesser to use a single Likewise, I propose to have a single As outlined by @jougs,
I further envision more flexibility in combining parameters with spatial dependency and drawn from a distribution. For example, a noisy distance-dependent delay:
I also consider it useful to prescribe the total number of connections for spatial connections:
and to specify a distribution of indegrees:
|
I like the idea of python library in nest for generating parameters for nodes and connections However, I tested the performance of the creating nodes with generating numbers for one parameter in two different codes. I computed the first example of jougs in iPython with larger number of nodes (
The only difference between the lines is that I compare number generator of nest and numpy. Please correct me if I am wrong. |
I am currently rewriting the whole random number generation framework in NEST to be based on C++11 features. The idea would then also be to not draw numbers on the Python level but just push the description down to C++ and draw numbers there. I guess that benchmarking only really makes sense when the code is in place. I'll replace back here once there is more progress. |
Travis-CI logparser: set build return code
After a discussion with @heplesser, we decided that when connecting spatially distributed populations, mask specification can only be one of the shapes defined in NEST (rectangular, circular, etc.). It is possible to achieve the same functionality using parameters in the probability specification, but using masks of pre-defined simple shapes is more efficient. Specifying a mask will therefore only be for efficiency's sake. |
Hi @jougs @jhnnsnk @heplesser @espenhgn @babsey ! Me and @hakonsbm have started working on the spatial version of n.CreateSpatial(
’sinusoidal_poisson_generator’,
n=400,
position=nest.random.sobol(),
params={
’rate’: 100.0,
’amplitude’: 100.0,
’frequency’: 10.0,
’phase’: 180.0 ∗ nest.node.pos.x
}
) We have encountered a problem though, and hopefully you have some good solutions. How can we determine how many dimensions we want when we send in a Parameter as position? |
Fixed in the nest-3 branch! If new ideas or problems pop up, the best thing to do might be to open a new issue on the nest-simulator page. |
This issue describes the planned work towards supporting probabilistic parameters for nodes similar to what
NewConnect
gave us for connection setup.1. Develop a prototype starting from the Python level
Starting on the Python level makes prototyping fast and gives us the opportunity to get first experiences and user feedback quickly. We can push things to the Cython/C++ level if profiling shows that it is required or if it makes certain parts easier or more reusable.
One problem with this approach might be that users will have full freedom for the specification of parameters, i.e. they can (and probably will) use arbitrary Python expressions to define parameters.
The main challenge then is to provide continued support for these expressions also once we decide to move the code to a lower level. Code generation and Python-callbacks based on Cython, CTypes, Numexpr, SWIG, or Numba would allow this. In most situations this will bring the natural restrictions coming with the global interpreter lock.
2. Use cases
Create 10 neurons with uniformly distributed
V_m
Create 3 neurons with
V_m
taken from an iterableCreate 10 neurons with
tau_m
drawn from a Gaussian distribution; values below 0.5 ms are rejected and replaced by newly drawn valuesCreate 10 neurons with
V_m
drawn from an exponential distribution p(V ) = Θ(V+80)e−0.1(V+80)Connect two populations with negative weights drawn from a lognormal distribution.
Create a population of 400 Poisson generators with sinusoidally modulated rate, spread in a [-1, 1] x [-2, 2] box using a Sobol quasirandom number sequence. The phase of each sinusioid is determined by the x-coordinate of the generator.
Connect two spatially distributed populations using a distance-dependent probabilistic rule with probability p(d) = e -0.2d and no connections for d > 0.5.
3. Implementation
In order to support the use cases outlined above, we require a general
Parameter
class. This class can be used in all places where a parameter (either a concrete value, a random number drawn from a distribution, or a value obtained from calling back into Python) is needed.The implementation should use a
Parameter
base class in the kernel with a derived class in PyNEST, which can use implement the callback logic for executing arbitrary functions in Python to draw parameters, read out arrays, etc.The text was updated successfully, but these errors were encountered: