## Figures 1, 2 and 3

This is the current form of these figures:

>> fig_pap_presentacion_03(1,[0 0 0])
>> fig_pap_elegans_13(2,zeros(100))
>> fig_pap_bayes_05(3,zeros(100))

## New Figure 3 (Bayes)

Apart of the other changes, I have added (relative to opt.) to the y-axis of boxes c, d and e.

>> fig_pap_bayes_04(1,zeros(100))
expectedvalue_pot =
0.4885
sd_pot =
0.0662
expectedvalue_logalfa =
-1.1067
sd_logalfa =
0.0887
expectedvalue_logbeta =
-0.9375
sd_logbeta =
0.1261

## New Figure 3 (Bayes) for the paper

Feb 25, 2009

fig_pap_bayes_02(1,zeros(100))

Tests of different deformations of the colormap (changing variable exponent in the program):

>> fig_pap_bayes_02(1,zeros(100))

Normal colormap:

Deformed with the square root:

Deformed with x^.2

Current version, and calculation of expected values and standard deviations for alfa, beta and the exponent:

>> fig_pap_bayes_02(1,zeros(100))
expectedvalue_pot =
0.4885
sd_pot =
0.0662
expectedvalue_logalfa =
-1.1067
sd_logalfa =
0.0887
expectedvalue_logbeta =
-0.9375
sd_logbeta =
0.1261

Feb 26, 2009

>> fig_pap_bayes_03(1,zeros(100))
expectedvalue_pot =
0.4885
sd_pot =
0.0662
expectedvalue_logalfa =
-1.1067
sd_logalfa =
0.0887
expectedvalue_logbeta =
-0.9375
sd_logbeta =
0.1261

Cost for three example neurons:

fig_pap_bayes_01(1,[0 0])

:

Figure with most of the boxes that may be necessary

## Comparison of costs and probabilities for different exponents

>> alfa=10^-1.1; beta=10^-.9;
>> analizaBayes(todas.A,todas.M,todas.S,todas.f,todas.pos_real,[.5 1],alfa,beta,infoarchivos,[],[],prob)
Computing global optimum…Done.
Computing cost matrices…Done. 0.186333 seconds elapsed.
ind_lambda =
2
ind_mu =
8
ind_tipo =
4
ind_lambda =
12
ind_mu =
9
ind_tipo =
3
tipo =
2.2000 1.0000
2.1000 2.0000
lambda =
2.9126 0.8483
mu =
0.4771 0.0856
Mostrando neurona 1,??? Operation terminated by user during ==> analizaBayes at 138

## Bayes and “Center-of-mass” calculations with neurons fixed in their actual positions vs fixed in their optimal positions

From yesterday: CURRENT POINT: coste2graficamolona AND coste2pos_num_ruido ARE NOT USING THE SAME COST FOR NEURON 37. THERE MUST BE SOME MISTAKE THERE.

This is because the optimizer does not really converge, but in the end oscillates between two states of similar cost. So when we compute the cost from one of these states we get a different cost surface that leads to the other.

Caca.

## Generalized omega

16 Feb 09

We use a new “generalized omega” defined as the distance between the optimum and the furthest point for which the cost has increased less than x%. For x=10%, we get this shit (good prediction is all points above the line):

>> alfa=10^-1.1; beta=10^-.9; pot=.5;
>> [pos_cm,omega_general]=coste2pos_restofijas(todas.A*alfa,todas.M*beta+todas.S,todas.f,todas.pos_real,pot,.1);
>> plot(abs(todas.pos_real-pos_cm),omega_general,’.’)
>> hold on
>> plot([0 .7],[0 .7],’k’)
>> xlabel(‘Deviation’)
>> ylabel(‘Predicted maximum deviation (10%)’)

for c=1:279

text(abs(todas.pos_real(c)-pos_cm(c)),omega_general(c),num2str(c))

end

Some points below the line still make some sense, for example neuron 157:

Others not even that (neuron 209):

All the above is WRONG. The mistake is that we normalize each neuron separately. We must define omega generalized as the maximum distance to a point where the cost has increased less than a certain threshold, but that threshold must be the same for all neurons. Doing it correctly (threshold 20%), we get

What happens with the above neurons is that the scale is not in context. Neurons 7, 157 and 209:

subplot(1,3,1)
>> miracostes(todas.A,todas.M,todas.S,todas.f,todas.pos_real,.5,alfa,beta,pos_cm,7)
Computing cost matrices…Done. 0.190727 seconds elapsed.
Mostrando neurona 7,
>> subplot(1,3,2)
>> miracostes(todas.A,todas.M,todas.S,todas.f,todas.pos_real,.5,alfa,beta,pos_cm,157)
Computing cost matrices…Done. 0.194888 seconds elapsed.
Mostrando neurona 157,
>> axis([0 1 0 4])
>> subplot(1,3,3)
>> miracostes(todas.A,todas.M,todas.S,todas.f,todas.pos_real,.5,alfa,beta,pos_cm,209)
Computing cost matrices…Done. 0.192309 seconds elapsed.
Mostrando neurona 209,
>> axis([0 1 0 4])

We plot the cost for each neuron, in the same way as in coli:

matriz=coste2graficamolona(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,todas.pos_real,0);
>> xlabel(‘Deviation’)

Values in the colorscale are (cost increment)/(cost of actual configuration).

Rescaling the colorbar, so that small values are highlighted:
>> caxis([0 .015])

17 Feb 09

I change the way neurons are sorted, so that the right-hand contour is smooth.

matriz=coste2graficamolona(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,todas.pos_real,[.005],0);

The same thing, without the contour and with rescaled caxis:

matriz=coste2graficamolona(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,todas.pos_real,[.005],0);
>> caxis([0 .01])

Answer to first comment by Gonzalo:

potencias=[.1 .25 .5 .75 1 1.5 2 2.5 3 3.5 4 5 6 7 8 9 10];
alfa=1/29; beta=1/29;
for c_pot=1:length(potencias)
pos_cm(1:279,c_pot)=coste2pos_restofijas(todas.A*alfa,todas.M*beta+todas.S,todas.f,todas.pos_real,potencias(c_pot));
end
>> error=mean(abs(pos_cm-repmat(todas.pos_real,[1 length(potencias)])));
>> close all
>> plot(potencias,error,’.-‘)

I do it with the alfa and beta given by Bayes:

potencias=[.1 .25 .5 .75 1 1.5 2 2.5 3 3.5 4 5 6 7 8 9 10];
alfa=10^-1.1; beta=10^-.9;
for c_pot=1:length(potencias)
pos_cm(1:279,c_pot)=coste2pos_restofijas(todas.A*alfa,todas.M*beta+todas.S,todas.f,todas.pos_real,potencias(c_pot));
end
error=mean(abs(pos_cm-repmat(todas.pos_real,[1 length(potencias)])));
close all
plot(potencias,error,’.-‘)
xlabel(‘Cost exponent’)
ylabel(‘Mean error’)

CURRENT POINT: coste2graficamolona AND coste2pos_num_ruido ARE NOT USING THE SAME COST FOR NEURON 37. THERE MUST BE SOME MISTAKE THERE.

## Estudio de los costes para cada neurona, con exponentes 0.5 y 2. Comparación del óptimo global con el que se obtiene fijando todas las demás neuronas en sus posiciones reales.

>> [alfa beta]
ans =
0.0794 0.1259

Se ven sobre todo dos cosas:
1. Sobre todo para exponente 0.5, la posición óptima global (línea negra) suele estar bastante lejos de la posición de mínimo coste con el resto de las neuronas fijas en su posición experimental. Y la posición real (línea roja) suele estar más cerca del mínimo del coste con el resto fijas que del óptimo global.

2. Que algunas neuronas tienen posiciones reales clavadas en mínimos locales.

Pruebo encontrando el óptimo para cada neurona, con las demás fijas en sus posiciones reales.

pos_cm=coste2pos_restofijas(todas.A*alfa,todas.M*beta+todas.S,todas.f,todas.pos_real,.5);
>> mean(abs(todas.pos_real-pos_cm))
ans =
0.0911
pos_cm2=coste2pos_restofijas(todas.A*alfa,todas.M*beta+todas.S,todas.f,todas.pos_real,2);
>> mean(abs(todas.pos_real-pos_cm2))
ans =
0.0926
ans =
0.0976
>> mean(abs(todas.pos_real-pos_opt(:,ind_min)))
ans =
0.1321

Así que calcular el óptimo con el resto fijas apenas mejora el resultado con coste cuadrático, pero lo mejora muchísimo con coste 0.5. Tanto, que pasa a ser mejor que el cuadrático.

Ahora, gráfica omega-desv para el exponente 0.5 y los alfa y beta que dio Bayes. Un truñaco.

plot(abs(todas.pos_real-pos_cm),omega,’.’)

>> xlabel(‘Deviation’)
>> ylabel(‘\omega’)
>> hold on
>> axis(axis)
>> plot(abs(todas.pos_real-pos_cm),omega,’.’)
>> plot(x,7./x.^.5,’k’)
>> plot(x,5./x.^.5,’k’)
>> plot(x,2./x.^.5,’k’)

Miramos el coste de AVAL, que se va mucho en la gráfica:

Para calmar a cierto insidioso supervisor mío, añado omega-desv para el caso sintético con alfa y beta del pnas y exponente 0.5.

plot(abs(pos_opt{1}-pos{1}),omega_pnas,’.’)
>> xlabel(‘Deviation’)
>> ylabel(‘\omega’)

Y aquí viene lo acojonante. ¿Quiénes son esos dos puntitos desviados?

SOSPECHA: ¿Puede ser que Bayes se esté limitando a escoger el que más se acerca con el cálculo de fijar el resto en posiciones reales? (que ya sé que hace mucho más, pero a lo mejor se obtiene el mismo resultado con este otro método mucho más simple).

Pues parece que en el caso de los alfa y beta del PNAS sí es lo que hace:

ans =
0.0879
>> pos_lin_pnas=coste2pos_num_ruido(todas.A*.05,todas.M*1.5+todas.S,todas.f,1,0,1,1);
>> mean(abs(todas.pos_real-pos_lin_pnas))
ans =
0.0946
>> pos_cm2_pnas=coste2pos_restofijas(todas.A*.05,todas.M*1.5+todas.S,todas.f,todas.pos_real,2);
>> mean(abs(todas.pos_real-pos_cm2_pnas))
ans =
0.0844
>> pos_cm1_pnas=coste2pos_restofijas(todas.A*.05,todas.M*1.5+todas.S,todas.f,todas.pos_real,1);
>> mean(abs(todas.pos_real-pos_cm1_pnas))
ans =
0.0828

En realidad no sé si esto importa mucho, porque:

1. Casi es normal que el que mejor cuadra con las desviaciones también tenga un error medio menor (aunque no tenga que ser cierto en general, es lo más probable).
2. Seguimos teniendo un patrón 1/x en la gráfica omega-desv para los alfa y beta del pnas, que indica que las desviaciones también son más consistentes con lineal.

## Study on the effect of removing AVAL and AVAR from the calculations

It seems that AVAL and AVAR may be critical for the good results of exponent 0.5, see previous post. Let’s see what happens when we remove them.

A coarse Bayes yields the same result, stored in posreal_sinavalavar.

>> prob=infoarchivos2prob(infoarchivos,[1 2 3]);
>> subplot(1,2,1)
>> plot(infoarchivos.pot,sum(sum(prob,2),3))
>> subplot(1,2,2)
>> imagesc(log10(infoarchivos.beta),log10(infoarchivos.alfa),squeeze(sum(prob,1)))

The metric is still very significant.

buenas=true(279,1);
>> find(strcmpi(‘aval’,todas.nombres))
ans =
54
>> find(strcmpi(‘avar’,todas.nombres))
ans =
55
>> buenas([54 55])=false;
[m,coste_real,coste_perm]=metrica_pot(todas.A(buenas,buenas)*alfa,todas.M(buenas,:)*beta+todas.S(buenas,:),todas.f,todas.pos_real(buenas),pot,10000,pos_opt(buenas,ind_min));
Calculando coste de permutaciones…1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,Hecho.
>> m
m =
0
>> clf
>> hist(coste_perm,100)
>> hold on
>> ejes=axis;
>> plot(coste_real*[1 1],ejes(3:4),’k’)

The omega-desv plot looks horrible.

omega_restr=sum([todas.A(buenas,buenas)*alfa todas.M(buenas,:)*beta+todas.S(buenas,:)],2);
plot(abs(todas.pos_real(buenas)-pos_opt(buenas,ind_min)),omega_restr,’.’)

## Análisis del estado que predice Bayes (II)

Repito los cálculos de ayer, pero con los resultados definitivos del Bayes en remotón. Estos resultados son:

Pot=0.5, alfa=10^-1.1, beta=10^-0.9.

alfa=10^-1.1; beta=10^-.9; pot=.5;
>> pos_opt=coste2pos_num_ruido(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,0,1,1);
for c=1:100
pos_opt=[pos_opt coste2pos_num_ruido(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,0,1,1)];
end
figure
>> hold on
>> pos_opt=coste2pos_num_ruido(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,0,1,1);
for c=1:100
pos_opt=[pos_opt coste2pos_num_ruido(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,0,1,1)];
end
for c=1:101
costes(c)=pos2coste(todas.A*alfa,todas.M*beta+todas.S,todas.f,pos_opt(:,c),pot);
end
>> for c=1:101
error(c)=mean(abs(pos_opt(:,c)-todas.pos_real));
end
plot(costes,error,’.’)
>> xlabel(‘Coste’)
>> ylabel(‘Error medio’)
>> [r,p]=corrcoef(costes,error)
r =
1.0000 -0.0127
-0.0127 1.0000
p =
1.0000 0.8997
0.8997 1.0000

[m,ind_min]=min(costes)
omega=sum([todas.A*alfa todas.M*beta+todas.S],2);
plot(abs(todas.pos_real-pos_opt(:,ind_min)),omega,’.’)
>> xlabel(‘Deviation’)
>> ylabel(‘\omega’)

for c=1:279
text(abs(todas.pos_real(c)-pos_opt(c,ind_min)),omega(c),todas.nombres{c})
end

[matriz,binsx,binsy,contornos]=elegans_sintetico2graficaomega(todas.pos_real,pos_opt(:,ind_min),omega,20,20,[],1);
??? Subscripted assignment dimension mismatch.
Error in ==> elegans_sintetico2graficaomega at 35
matriz(c_vacios,:)=mean([matriz(c_vacios-1,:) ; matriz(c_vacios+1,:)]);

[m,coste_real,coste_perm]=metrica_pot(todas.A*alfa,todas.M*beta+todas.S,todas.f,todas.pos_real,pot,10000,pos_opt(:,ind_min));
Calculando coste de permutaciones…1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,Hecho.
>> m
m =
0
>> clf
>> hist(coste_perm,100)
>> hold on
>> ejes=axis;
>> plot(coste_real*[1 1],ejes(3:4),’k’)