File: threshold.pyx

package info (click to toggle)
brian 2.9.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,872 kB
  • sloc: python: 51,820; cpp: 2,033; makefile: 108; sh: 72
file content (39 lines) | stat: -rw-r--r-- 1,176 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{# USES_VARIABLES { N } #}
{% extends 'common_group.pyx' %}

{% block maincode %}
    {# t, not_refractory and lastspike are added as needed_variables in the
       Thresholder class, we cannot use the USES_VARIABLE mechanism
       conditionally #}

    # scalar code
    _vectorisation_idx = 1
    {{ scalar_code | autoindent }}

    cdef size_t _cpp_numevents = 0

    {#  Get the name of the array that stores these events (e.g. the spikespace array) #}
    {% set _eventspace = get_array_name(eventspace_variable) %}

    for _idx in range(N):
        
        # vector code
        _vectorisation_idx = _idx
        {{ vector_code | autoindent }}

        if _cond:
            {{_eventspace}}[_cpp_numevents] = _idx
            _cpp_numevents += 1
            {% if _uses_refractory %}
            {{not_refractory}}[_idx] = False
            {{lastspike}}[_idx] = {{t}}
            {% endif %}
            
    {{_eventspace}}[N] = _cpp_numevents
    
{% endblock %}

{% block after_code %}
    {% set _eventspace = get_array_name(eventspace_variable) %}
    {{_eventspace}}[N] = 0  # Note that this is not an off-by-1-error: the array has N+1 elements
{% endblock %}