Page 1 of 1

Problem with setdata on NEURON+Python

Posted: Fri Apr 08, 2016 2:30 pm
by vgoudar
Hi,

Im trying to instantiate a distributed mechanism that continuously injects random noise into an IAF cell. To generate a random sample for the noise, Im passing in a random object from python. In the mod file for the noise mechanism, this is handled identically to the random variable in netstim.mod.

Code: Select all

FUNCTION randGen() {
VERBATIM
	if (_p_randObjPtr) {
		/*
		:Supports separate independent but reproducible streams for
		: each instance. However, the corresponding hoc Random
		: distribution MUST be set to Random.uniform(0,1)
		*/
		_lrandGen = nrn_random_pick(_p_randObjPtr);
	}else{
		hoc_execerror("Random object ref not set correctly for randObjPtr"," only via hoc Random");
	}
ENDVERBATIM
}

PROCEDURE setRandObjRef() {
VERBATIM
	void** pv = (void**)(&_p_randObjPtr);
	if (ifarg(1)) {
		*pv = nrn_random_arg(1);
	}else{
		*pv = (void*)0;
	}
ENDVERBATIM
}
Whereas netstim is an artifical cell, my noise mechanism is declared as SUFFIX. So, when passing random object into the noise mechanism, I need to call setdata_NOISE first as in hoc.

Code: Select all

self.soma.insert('NOISE')
self.noiseRandObj.uniform(0,1)
self.soma.setdata_NOISE(0.5)
self.soma.setRandObjRef_NOISE(self.noiseRandObj)

However, Im unable to gain access to any of the noise mechanisms custom procedures in python:

Code: Select all

File "cells.py", line 77, in biophys
    self.soma.setdata_NOISE(0.5)
AttributeError: 'nrn.Section' object has no attribute 'setdata_NOISE'
Any suggestions will be highly appreciated.

Thanks!

Re: Problem with setdata on NEURON+Python

Posted: Tue Apr 12, 2016 11:24 am
by ted
Im trying to instantiate a distributed mechanism that continuously injects random noise into an IAF cell.
. . .
Whereas netstim is an artifical cell, my noise mechanism is declared as SUFFIX.
The strategy for achieving your goal depends on exactly what you're trying to do, but key aspects of that are mostly implicit in your post. Here's my initial guess at the important implicit information:
(1) Your "IAF cell" is a "biophysical model cell" i.e. it actually has one or more sections with membrane capacitance.
(2) It may have more than one compartment.
(3) You want each of its compartments to be perturbed by "noise."
(4) You intend this "noise" to be current noise
Are these guesses correct?

Re: Problem with setdata on NEURON+Python

Posted: Tue Apr 12, 2016 11:59 am
by vgoudar
Hi Ted,

Yes, you're absolutely right. FYI, IAF has a single compartment.

Thanks.

Re: Problem with setdata on NEURON+Python

Posted: Fri Apr 15, 2016 10:53 pm
by ted
At long last, I have some code that may be useful for your purpose. Pick up
https://www.neuron.yale.edu/ftp/ted/neuron/idriven.zip
expand it, compile the mod files, then use NEURON to execute initr123.hoc

Your particular application only requires one "noise current source" per model cell, but this implementation allows adding independently fluctuating current to as many compartments in a multicompartment model as one wishes.

Be sure to read the readme.txt file and the hoc files. The mod files are interesting, but not essential to understand; if you're tempted to modify them, be very cautious and test to make sure you didn't break anything. When it comes to principled generation and use of pseudorandom sequences, proper initialization and reproducibility are of paramount importance.