Lab book for Zebrafish experiments

June 29, 2012

Relations of refereneces for all learning videos (incomplete, only 2 groups)

Filed under: Dynamics, Tracking — alperezescudero @ 11:35 am

Name of this file: Cuaderno20120621T120846.m

In Toulouse, with my laptop. I only have full relations for the 2 first groups. I prepare sorted trajectories for them.

Load data

unidad=pwd;
unidad=unidad(1);
addpath([unidad ‘:\Hipertec\CollectiveBehavior\Dinamica’])
% datos=directorio2datoslearning(‘G:\LEARNING’);
% save g:\learning\datoslearning.mat datos
load([unidad ‘:\Hipertec_pesados\datoslearning_sinreordenar’])
load([unidad ‘:\Hipertec_pesados\relacioneslearning.mat’])

% for c_grupos=1:4
% for c1_trials=1:26
% if ~isempty(datos.learn(c1_trials,c_grupos).datosegm)
% dir1=datos.learn(c1_trials,c_grupos).datosegm.directorio;
% dir1(1)=’G’;
% load([dir1 ‘referencias.mat’])
% refs1=referencias;
% clear referencias
% for c_peces=1:length(refs1)
% refs1{c_peces}=refs1{c_peces}(:,:,:,equiespaciados(200,size(refs1{c_peces},4)));
% end % c_peces
% for c2_trials=1:26
% if c1_trials~=c2_trials
% if ~isempty(datos.learn(c2_trials,c_grupos).datosegm)
% [c_grupos c1_trials c2_trials]
% [t1,t2,t3]=size(menores);
% if any([t1 t2 t3]<[c1_trials c2_trials c_grupos]) || isempty(menores{c1_trials,c2_trials,c_grupos}) % Para que reutilice
% dir2=datos.learn(c2_trials,c_grupos).datosegm.directorio;
% dir2(1)=’G’;
% load([dir2 ‘referencias.mat’])
% refs2=referencias;
% clear referencias
% [relacion_act,proberror_relacion_act,identificaciones_act,menores{c1_trials,c2_trials,c_grupos}]=referencias2validacion(refs1,refs2,[],200);
% end
% end % if hay trayectoria
% end % if no son el mismo vídeo
% save g:\learning\relacioneslearning.mat menores
% end % c2_trials
% end % if hay trayectoria
% end % c1_trials
% end % c_grupos
% caca

Check self-consistency

for c_grupos=1:2%size(menores,3)
for c1_trials=1:size(menores,1)
for c2_trials=c1_trials+1:size(menores,2)
if ~isempty(menores{c1_trials,c2_trials,c_grupos}) && ~isempty(menores{c1_trials,c2_trials,c_grupos})
[relacion,prob_error,relaciones_opciones,prob_opciones,probasignacion,asignaciones,logprobid]=menores2relaciones(menores{c1_trials,c2_trials,c_grupos});
[relacion2,prob_error,relaciones_opciones,prob_opciones,probasignacion,asignaciones,logprobid]=menores2relaciones(menores{c2_trials,c1_trials,c_grupos});
[s,orden]=sort(relacion2);
if any(relacion-orden~=0)
disp(‘¡Error!’)
[c_grupos c1_trials c2_trials]
end
end
end % c2_trials
end % c1_trials
end % c_grupos

Good.

Check consistency across days

I always use the first video as reference. I will assign identities with respect to the first video for all other days, and then I will check that all pairwise relations are consistent with those assignments.

primertrial=14;
%First compute all relations:
clear relacion probasignacion asignaciones
for c_grupos=1:2%size(menores,3)
for c1_trials=1:size(menores,1)
for c2_trials=1:size(menores,2)
if ~isempty(menores{c1_trials,c2_trials,c_grupos})
[relacion{c1_trials,c2_trials,c_grupos},prob_error,relaciones_opciones,prob_opciones,probasignacion{c1_trials,c2_trials,c_grupos},asignaciones{c1_trials,c2_trials,c_grupos},logprobid]=menores2relaciones(menores{c1_trials,c2_trials,c_grupos});
end
end % c2_trials
end % c1_trials
end % c_grupos
% Now assign using the first video as referenece I use backward relations,
% that have been built for all pairs.
for c_grupos=1:2%size(menores,3)
nombres{c_grupos}=NaN(size(menores,2),size(datos.learn(primertrial,c_grupos).tray,2));
nombres{c_grupos}(primertrial,:)=1:size(datos.learn(primertrial,c_grupos).tray,2); % El primer vídeo es la referencia
for c_trials=primertrial+1:size(menores,2)
relacion_act=relacion{c_trials,primertrial,c_grupos};
if ~isempty(relacion_act)
nombres{c_grupos}(c_trials,1:length(relacion_act))=relacion_act;
% % Si hace falta, añadimos al final los elementos que no tiene.
% if length(relacion_act)<size(reordenador{c_grupos},2)
% relacion_act=[relacion_act setdiff(1:size(reordenador{c_grupos},2),relacion_act)];
% end
% [s,orden]=sort(relacion_act);
% reordenador{c_grupos}(c_trials,:)=orden;
end % if hay relación
end % c_trials
end % c_grupos
% Now check all pairwise relations
for c_grupos=1:2%size(menores,3)
figure;
for c1_trials=1:size(menores,1)
for c2_trials=1:size(menores,2)
if ~isempty(relacion{c1_trials,c2_trials,c_grupos})
subplot_fill(size(menores,1)-primertrial+1,size(menores,2)-primertrial+1,(c1_trials-primertrial)*(size(menores,2)-primertrial+1)+c2_trials-primertrial+1)
asignaciones_act=asignaciones{c1_trials,c2_trials,c_grupos};
l=size(asignaciones_act,1);
asignaciones_act(nombres{c_grupos}(c1_trials,1:l),:)=asignaciones_act;
l=size(asignaciones_act,2);
asignaciones_act(:,nombres{c_grupos}(c2_trials,1:l))=asignaciones_act;
imagesc(asignaciones_act)
end
end % c2_trials
end % c1_trials
end % c_grupos

 

 

Good.

Sort trajectories

for c_grupos=1:2%size(datos.learn,2)
for c_trials=1:size(datos.learn,1)
if ~isempty(datos.learn(c_trials,c_grupos).tray)
datos.learn(c_trials,c_grupos).tray_nosort=datos.learn(c_trials,c_grupos).tray;
probtray=datos.learn(c_trials,c_grupos).probtray;
datos.learn(c_trials,c_grupos).tray(:)=NaN;
datos.learn(c_trials,c_grupos).tray(:,nombres{c_grupos}(c_trials,1:size(datos.learn(c_trials,c_grupos).tray,2)),:)=datos.learn(c_trials,c_grupos).tray_nosort;
datos.learn(c_trials,c_grupos).probtray(:,nombres{c_grupos}(c_trials,1:size(datos.learn(c_trials,c_grupos).tray,2)),:)=datos.learn(c_trials,c_grupos).probtray;
end % if hay trayectoria
end % c_trials
end % c_grupos
save([unidad ‘:\Hipertec_pesados\datoslearning’],’datos’)

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Blog at WordPress.com.