本文整理汇总了Python中brian2.NeuronGroup.active方法的典型用法代码示例。如果您正苦于以下问题:Python NeuronGroup.active方法的具体用法?Python NeuronGroup.active怎么用?Python NeuronGroup.active使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类brian2.NeuronGroup
的用法示例。
在下文中一共展示了NeuronGroup.active方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: run_cpp_standalone
# 需要导入模块: from brian2 import NeuronGroup [as 别名]
# 或者: from brian2.NeuronGroup import active [as 别名]
#.........这里部分代码省略.........
//if (0 == status) status = DftiSetValue(hand, DFTI_THREAD_LIMIT, {mkl_threads});
DftiCommitDescriptor(hand); //if (0 != status) cout << "ERROR, status = " << status << "\\n";
return hand;
}} '''.format(mkl_threads=mkl_threads, )
f.write(sense_code)
# device_get_array_name will be the function get_array_name() and what it does is getting
# the string names of brian objects
device_get_array_name = CurrentDeviceProxy.__getattr__(device, 'get_array_name')
# instert_code is a function which is used to insert code into the main()
# function
insert_code = CurrentDeviceProxy.__getattr__(device, 'insert_code')
### Computing the kernel (Owen changed it to a gaussian kernel now)
# Owen uses a trick here which is he creates a NeuronGroup which doesn't
# really do anything in the Simulation. It's just a dummy NeuronGroup
# to hold an array to which he would like to have access to during runtime.
if params["sigma_s"] == np.infty:
k = np.ones(N)/N
elif params["sigma_s"] < 1e-3:
k = np.zeros(N)
k[0] = 1
else:
intercell = params["x_NI"]
length = intercell*N
d = np.linspace(intercell-length/2, length/2, N)
d = np.roll(d, int(N/2+1))
k = np.exp(-np.abs(d)/params["sigma_s"])
k /= k.sum()
rate_vars = '''k : 1
r_hat : 1
r_hat_single : 1'''
kg = NeuronGroup(N, model=rate_vars, name='kernel_rates')
kg.active = False
kg.k = k #kernel in the spatial domain
network_objs["dummygroup"] = kg
main_code = '''
hand = init_dfti();
DftiComputeForward(hand, brian::{k}, k_cmplx);
'''.format(k=device_get_array_name(kg.variables['k']))
insert_code('main', main_code) # DftiComp.. writes its result into k_cmplx
K = rfft(k)
# Variable A is a spike counter
# memset resets the array to zero (memset is defined to take voidpointers)
# also the star before *brian tells it to not compute the size of the
# pointer, but what the pointer points to
# the _num_ thing is that whenever there's an array in brian,
# it automatically creates an integer of the same name with _num_
# in front of it (and that is the size)
custom_code = '''
double spatial_filter(int)
{{
DftiComputeForward(hand, brian::{A}+{Noffset}, in_cmplx);
vzMul(N_CMPLX, in_cmplx, k_cmplx, out_cmplx);
DftiComputeBackward(hand, out_cmplx, brian::{r_hat});
memset(brian::{A}, 0, brian::_num_{A}*sizeof(*brian::{A}));
return 0;
}}
'''.format(A=device_get_array_name(neurons.variables['A']),
r_hat=device_get_array_name(kg.variables['r_hat']),
Noffset=Noffset)
@implementation('cpp', custom_code)