Page **1** of **1**

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

Posted: **Mon Dec 22, 2014 9:38 am**

by **oren**

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**

by **ted**

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**

by **oren**

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:

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**

by **hines**

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**

by **oren**

So there is not secret syntax to get the reference of a index in a matrix.. :-)

Thank you,

Oren.