Excitation of neurons connected to “the nose”

>> V0=zeros(279,1);
>> V0(sensoriales_nariz)=1;
>> solucion=matrizsistema2solucion(M,V0);
>> V=solucion2voltajes(solucion,0:.001:.5);
>> [s,orden]=sort(todas.pos_real);
>> imagesc(V(orden,:))

Note that neurons do not have the usual order. They are ordered by position in the worm.

>> imagesc(log10(abs(V(orden,:))))

Longer times:

>> V=solucion2voltajes(solucion,0:.005:2);

I do not see any propagation…


First results for the dynamics of C elegans

Eigenvectors and eigenvalues MUST be complex. Still, real solution for the voltage is possible (each eigenvector/value has another one which is complex conjugate. If the modulus of the coefficient of both is the same, the final linear combination is real).

With no membrane conductance:

>> M=conectividad2matrizsistema(todas.A_chem’,todas.A_ej,todas.GABA,1,1,0);
>> V0=zeros(279,1);
>> solucion=matrizsistema2solucion(M,V0);
>> plot(solucion.autovalores,’.’)

This figure matches with Figure 8 of Mitya’s paper (y axis is imaginary part)

We see that there are positive eigenvalues. This has two consequences:
– Diverging voltage.
– Apparently some computations are not performed correctly. I get non-negligible imaginary parts in the voltages.

I see that I need about 30 in the membrane conductance to get all eigenvalues negative:

>> M=conectividad2matrizsistema(todas.A_chem’,todas.A_ej,todas.GABA,1,1,30);
>> solucion=matrizsistema2solucion(M,V0);
>> plot(solucion.autovalores,’.’)


FIRST EXAMPLE: Excitation of neuron 1.

>> V0=zeros(279,1);
>> V0(1)=1;
>> solucion=matrizsistema2solucion(M,V0);
>> V=solucion2voltajes(solucion,0:.001:.5);
>> plot(V(1,:))

>> plot(V(2,:))

And so on…

SECOND EXAMPLE: Random excitation

>> V0=rand(279,1);
>> solucion=matrizsistema2solucion(M,V0);
>> V=solucion2voltajes(solucion,0:.001:.5);
>> imagesc(V)

What are those ‘rough’ zones?

>> plot(V(149,:))

What the…?

Modelling reaction times with two overlapping processes

It turns out that the sum of normally distributed and exponentially distributed random numbers gives rise to Carpenter’s distribution:

>> t=.2+.02*randn(1,10000) + exprnd(.05,[1 10000]);
>> hist(t,30)

>> hist(1./t,30)

>> t_reaccion2histog_carpenter(t,20,’r.-‘);

Model for reaction times with distractions

First, with all distractions having the same duration:

>> estimulo=generaestimulo(10000,[1 2]);
>> [t_reaccion,mom_despistes,t_reaccion_intrinseco]=estimulo2reaccion(estimulo,[.2 .03],[3 .2]);
>> hist(t_reaccion,30)

>> hist(1./t_reaccion,30)

>> t_reaccion2histog_carpenter(t_reaccion,20,’r.-‘);

The problem is that distractions produce a plateau which is not very natural. Let’s see a very clear case:

>> [t_reaccion,mom_despistes,t_reaccion_intrinseco]=estimulo2reaccion(estimulo,[.2 .03],[1 .2]);
>> hist(t_reaccion,30)

A more natural situation is that in which distractions have different durations:

Addition of GABA-ergic neurons to the C elegans data

I use the data given by Varshney et al. in http://mit.edu/lrv/www/elegans/

>> load(‘C:\Hipertec\ablationelegans\datos\Datos_VarshneyEtAl\ConnOrdered_040903(2).mat’)
for c=1:279
>> todas.GABA=logical(GABAergic(ind));
>> todas.nombres(todas.GABA)
ans =

I check in the original reference, McIntire SL, Jorgensen E, Kaplan J, Horvitz HR (1993) The GABAergic nervous system of Caenorhabditis elegans. Nature 364:337–341. doi:10.1038/364337a0, that these are indeed the 26 identified neurons that belong to the GABAergic system in C elegans.


>> save datos_celegans_paradinamica todas

New compilation of C elegans data from the original Excel files

The old data (stored in datos_celegans_struct) have a symmetrical connectivity matrix. I repeat the extraction from the original Excel files, with a new program:

>> todas=cogedatos_celegans_paradinamica(‘NeuronConnect.xls’,’NeuronFixedPoints.xls’,’NeuronType.xls’)

Importando datos desde archivos de Excel…Terminado
Nombres y posiciones extraidos: 279 neuronas encontradas

Extrayendo matriz de conectividad neurona-neurona (A)…
1000 entradas leidas
2000 entradas leidas
3000 entradas leidas
4000 entradas leidas
5000 entradas leidas
6000 entradas leidas
Neurona VC06 no encontrada. Conecta con NMJ.
Finalizado: 6417 entradas leidas. Matriz A generada.
Comprobación de simetría de A_ej: Correcto.
Comprobación de sinapsis químicas enviadas = sinapsis químicas recibidas: Correcto.
Conexiones eléctricas: 1777.
Conexiones químicas únicas: 2430.
Conexiones químicas múltiples: 3964.
Uniones neuromusculares: 1409.

Extrayendo matrices de conectividad neurona-organo (S y M)…
Hay más uniones neuromusculares en NeuronConnect que conexiones neurona-músculo en NeuronFixedPoints para las siguientes neuronas:
ans =

NOTA: El 6 de junio de 2009 comprobé que esto se da para las neuronas PLNL, VA09 y VB10 en
los archivos de Excel originales. Para estas neuronas, no es un error del programa de extacción.
Finalizado: 650 entradas leidas. Matrices S y M generadas, con 108 órganos.
Conexiones a sensores: 86.
Conexiones a músculos: 1865.1.

todas =
nombres: {279×1 cell}
pos_real: [279×1 double]
ganglios: [279×1 double]
nombres_ganglios: {1×10 cell}
ambiguity: {279×1 cell}
cod_amb: [279×1 double]
cod_amb2ambiguity: {‘None’ ‘MB’ ‘MTS’ ‘MAS’ ‘MD’ ‘MAD’ ‘MS’ ‘RDI’ ‘RDM’ ‘RVI’}
A_ej: [279×279 double]
A_chem: [279×279 double]
S: [279×108 double]
M: [279×108 double]
f: [1×108 double]
nombres_organos: {1×108 cell}


NOTE: The argument factor_poly was 1 by default. Therefore, no distinction is made between single chemical synapses and multiple chemical synapses.

– Chemical synapses were repeated, to symmetrize.
– Electrical synapses were divided by two, in order to count them only once (maybe not so good idea, because the equation for the cost already takes this into account?). Here, I keep them as they are.

Experiments with Marta

Notes during the experiment:

– Marta sugiere mirar primer punto después de cada descanso.
– Marta dice que es más rápida con el índice (que indica izqda.) que con el corazón (que indica dcha.). Por eso hacemos un control con sólo 100 trials cambiando 20%-80% por 80%-20%.


>> load(‘c:\hipertec\decisionmaking\Resultados\marta1.mat’)
>> [correctos,procesados]=salida2procesados(Marta_con_fb);

>> corr_filt=correctos2correctos_filtrado(correctos,.05,[0 Inf]);

Reaction times histograms:

>> [histog,bins]=hist_norm(corr_filt.t_reaccion(corr_filt.dcha,1),15);
>> plot(bins,histog)
>> hold on
>> [histog,bins]=hist_norm(corr_filt.t_reaccion(~corr_filt.dcha,1),20);
>> plot(bins,histog,’r’)
>> legend(‘Right’,’Left’)
>> xlabel(‘Reaction time’)
>> xlabel(‘Reaction time (s)’)

Carpenter plots:





>> load(‘c:\hipertec\decisionmaking\Resultados\Marta2.mat’)
>> [correctos,procesados]=salida2procesados(Marta_con_fb_inv);

>> corr_filt=correctos2correctos_filtrado(correctos,.05,[0 .8]);
>> clf
>> [histog,bins]=hist_norm(corr_filt.t_reaccion(corr_filt.dcha,1),10);
hold on
xlabel(‘Reaction time’)
xlabel(‘Reaction time (s)’)


>> aprendizaje=correctos2aprendizaje(corr_filt,10,1);

Probably the second experiment was too short for Marta to learn the prior.

Effect of rotation in the correlation between R and Q

Pentacam Data:

(I change the program, for c_cuadros=5:5, remove the part with the cut in the R-axis, and keep the auto axis)

>> fig_pap_correlpentacam_03(1,0)

Correlaciones en los datos de Pentacam, ojo de Carlos, ant:

     Ajuste simétrico, con rotación: r=0.725902, p=8.02013e-007, n=35

Correlaciones en los datos de Pentacam, ojo de Carlos, back:

     Ajuste simétrico, con rotación: r=0.855795, p=5.70824e-011, n=35

Correlaciones en los datos de Pentacam, ojo de Laura, ant:

     Ajuste simétrico, con rotación: r=0.517015, p=0.00206421, n=33

Correlaciones en los datos de Pentacam, ojo de Laura, back:

     Ajuste simétrico, con rotación: r=0.676093, p=1.57179e-005, n=33

Correlaciones en los datos de Pentacam, ojo de Alfonso, ant:

     Ajuste simétrico, con rotación: r=0.769216, p=1.78949e-005, n=23

Correlaciones en los datos de Pentacam, ojo de Alfonso, back:

     Ajuste simétrico, con rotación: r=0.570154, p=0.00450418, n=23


Atlas data:

(I change the program, adding _rot after quadric)

>> fig_pap_correlplacido_04(1,[0 0])

n_medidas_Laura =


r =

1.0000 0.5592

0.5592 1.0000
p =

1.0000 0.0000

0.0000 1.0000

n_medidas_al =


r =

1.0000 -0.4358

-0.4358 1.0000

p =

1.0000 0.0548

0.0548 1.0000

Second experiment with fixed time

Subject: Alfonso

More statistics (1000 trials) and better focused in the relevant region.

>> salida=estimulo_tiempofijo(1000,.5,[.05 .3],.05,’Sujeto:Alfonso. Ordenador: Alfonso’);
>> save APE_1000_01jun09_1524
>> cd ..
>> [atiempo,todos]=salida_tiempofijo2procesados(salida);
>> [prob,bins]=atiempo2probcorrecto(atiempo,20,1);


– Rests are needed.
– The relevant region seems to be b/w 0.15 and 0.3.
– Looks nice, but in order to see the form of the function, MUCH MORE data are needed.

There are two possible ways of modelling this:

1. One can only identify the side when the decision signal reaches the threshold on time. Thus, I would think that the curve above should be related to the cumulative distribution of latency times.
2. One guesses the side from the available information. So the curve that we get is something closely related to the decision signal.

From my experience, I would say that number 1 is more likely. When I have to guess, I use more the information of previous trials (I tend to repeat if I got it right, and to change if I missed it).

And this brings the following idea: It seems to me that estimation of the prior (right/left) is made in real time, rather than realizing that stimuli are independent on each other (at least for this case, that is 50%-50%). I feel inevitable to think that if a choice failed in the previous trial, I should change my guess (and also, but weaker, that if a choice has been successful for a while, it is time to change). Does anybody take this into account? Maybe we could try develop a “dynamic prior” model.

First experiment with fixed time

Experiment design: The subject must press the button at a fixed time (indicated by the moment a bar reaches a mark). Some time before (uniformly random between 0.05 and 0.3 seconds), a circle appears either on the right or on the left. The subject must indicate the side at which the circle appeared, at the fixed time. If the subject fails to press some button at the right moment with an interval of (0,05 seconds), the measurement is rejected. Then, we count how many times the subject guessed correctly the position of the circle, as a function of the time between the aparison of the circle and the key pulsation.

First experiment, subject Alfonso:

>> load(‘c:\hipertec\decisionmaking\Resultados_tiempofijo\APE_01jun09_1243.mat’)
>> cd ..
>> [atiempo,todos]=salida_tiempofijo2procesados(salida);
>> [prob,bins]=atiempo2probcorrecto(atiempo,10,1);