Page 1 of 1

### record from one cell of a matrix to a vector

Posted: Mon Dec 22, 2014 9:38 am
Hello,
how do I record a single cell of a matrix with python?

I know that if I want to record a Vector I can use the following code:

Code: Select all

``````Vvec = h.Vector()
Vvec.record(y0._ref_x[0])``````
But how do I record from a Matrix, as this does not work

Code: Select all

``````Vvec = h.Vector()
Vvec.record(c._ref_x[0][0])``````

### Re: record from one cell of a matrix to a vector

Posted: Tue Dec 23, 2014 11:59 pm
oren wrote:how do I record a single cell of a matrix with python?
I'm not sure what you're asking. A matrix is an array of numbers. A model cell is not a number, so the phrase "a single cell of a matrix" has no meaning. Also, a cell is not a variable that changes with time, so what could it mean to "record" a cell? Are you saying that you created a bunch of cells that you are managing with array notation? That is, the name of any particular cell will be of the form
arrayname[j]?
I know that if I want to record a Vector I can use the following code:

Code: Select all

``````Vvec = h.Vector()
Vvec.record(y0._ref_x[0])``````
Close, but not quite right. Given a section called dend, the membrane potential at the 0.3 location of dend is called dend(0.3).v, and the way to record this voltage to a vector called Vvec is
Vvec.record(dend(0.3)._ref_v)
If some cell whose name is c[1][2] has a section called dend, then the way to record the voltage at c[1][2].dend(0.3) is
Vvec.record(c[1][2].dend(0.3)._ref_v)

### Re: record from one cell of a matrix to a vector

Posted: Wed Dec 24, 2014 8:45 am
Hello Ted,
Thank You for the respond.

Sorry for the confusion, I meant a single index in a hoc language matrix.

I want to record the values in a specific index in a matrix, as you can see here:
http://www.neuron.yale.edu/neuron/stati ... inmod.html

Code: Select all

``````...
nlm = h.LinearMechanism(callback, cmat, gmat, y, y0, b)

dummy = h.Section()
trajec = h.Vector()
tvec = h.Vector()
trajec.record(y._ref_x[0]) // here we record the values in the vector y
tvec.record(h._ref_t)
...
``````
trajec Vector will record the values of the vector y.
But I want to know how to record values of an index in a matrix. ( specifically cmat in the LinearMechanism above... )

The problem is that this code:

Code: Select all

``````trajec.record(cmat._ref_x[0][0])
``````
is not valid in python...

Thank You.
Oren.

### Re: record from one cell of a matrix to a vector

Posted: Wed Dec 24, 2014 4:36 pm
A limitation of the NEURON2PYthon interface is that element access of a hoc matrix from python cannot be done with the straightforward syntax, matrix.x[j] and one is forced to use
matrix.getval(i, j) and matrix.setval(i, j, val). An unfortunate consequence is that matrix._ref_x[j] is not a possibility.
The only work around I can think of for this case is to do the Vector.record from within hoc via a hoc wrapper function. i.e I think the following is sound
though I have not executed it so there may be typos.

Code: Select all

``````h('''
proc matrix_element_record() {
\$o1.record(&\$o2.x[\$3][\$4])
}
''')

m = h.Matrix(3,3)
v = h.Vector()
h.matrix_element_record(v, m, 1, 2)
``````
So some testing to make sure it works.

### Re: record from one cell of a matrix to a vector

Posted: Thu Dec 25, 2014 5:39 am
So there is not secret syntax to get the reference of a index in a matrix.. :-)

Thank you,
Oren.