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’)

June 27, 2012

Change of acclimatizer’s temperature

Filed under: Experiments — alperezescudero @ 4:56 pm

The acclimatizer has been the last days showing T=26.8ºC all the time. I find that strange, so I restart it. Nothing changes. I set temperature at 26.5ºC (before it was 27.5ºC), to see what happens.

Photos of transitions setup

Filed under: Experiments — alperezescudero @ 4:35 pm

I use roberts setup, with julians cover (with holes). The setup is elevated using plastic vases. But i also elevate the white background using crystal square containers, so the background is at about 2 cm from the setup. The black zones are made of metacrilato, and placed on the background.

image

image

Test of transition videos

Filed under: Experiments — alperezescudero @ 4:21 pm

I use the alevines that I used for etanol and for personalities. One has died (the skinny one that behaved weird), so there are 6 left. I still call them Alevines7 for historical reasons.

I also use the three remaining Adultos4. They are 3 fish because one died during the personalities experiments. But I still call them Adultos4.

I take the fish from the animalario, and adapt them to the setup.

T=26.8ºC, according to the acclimatizer.

I will first record the alevines, and then the adults.

I will record one 20-min video with all the setup open to see the transitions, and then another 20-min video only in the central portion, for references.

>> camara=videoinput(‘dcam’,1,’F7_Y8_1280x1024′);
camaraint=camara.Source;
camaraint.Gain=150;
preview_util(camara)
>> camara2roi(camara)
Warning: ROIPosition values need to be configured in certain pixel unit intervals.
The ROIPosition property was adjusted to a compatible configuration.
>> camara.ROIPosition
ans =
156 57 936 941

Video for alevines:

>> datestr(now,30), grabavideos_logmanual(camara,’D:\Transitions\20122706\Alevines7\Transitions\Alev7Trans’,20*60)
ans =
20120627T153305

One of the fish goes out of the setup when I release them. I leave it like that, to start fast. SO THERE ARE ONLY 5 FISH IN THIS VIDEO.

I stay in the lab during the video, but I sit all the time so that the fish do not see me.

>> datestr(now,30), grabavideos_logmanual(camara,’D:\Transitions\20122706\Alevines7\VideoRefs\Alev7Refs’,20*60)
ans =
20120627T155737

Video for Adultos:

One of the fish (the thin one) is very dark, and behaves in a strange way. It is probably ill.

>> preview_util(camara)

>> datestr(now,30), grabavideos_logmanual(camara,’D:\Transitions\20122706\Adultos4\Transitions\Adul4Trans’,20*60)
ans =
20120627T163028
>> preview_util(camara)
>> datestr(now,30), grabavideos_logmanual(camara,’D:\Transitions\20122706\Adultos4\Videorefs\Adul4Refs’,20*60)
ans =
20120627T165531

After finishing the videos, I return the fish to the animalario.

 

June 26, 2012

Analysis of the free-swimming-personalities zebrafish videos: Other parameters

Filed under: Dynamics — alperezescudero @ 6:57 pm

Name of this file: Cuaderno20120626T195131.m

Load data

load(‘F:\Hipertec_pesados\datos_freeswimperson.mat’)

Compute other parameters

clear vel_med velrel_med velmed_rel distancias distmed distmin distmed_med distmin_med nframes_lejos distmed_med_rap distmin_med_rap nframes_lejos_rap normavel
for c_grupos=1:size(datos.videos,2)
for c_videos=1:size(datos.videos,1)
tray=datos.videos(c_videos,c_grupos).tray;
n_peces=size(tray,2);
tray=tray(1:25000,:,:); % Para que todas midan lo mismo (las de las referencias son más cortas)
vel=diff(tray,1);
normavel{c_grupos}=sqrt(sum(vel.^2,3));
normavel_rel=normavel{c_grupos}./repmat(nanmean(normavel{c_grupos},2),[1 n_peces]);
vel_med{c_grupos}(1:n_peces,c_videos)=nanmean(normavel{c_grupos});
velrel_med{c_grupos}(1:n_peces,c_videos)=nanmean(normavel_rel);
velmed_rel{c_grupos}(1:n_peces,c_videos)=vel_med{c_grupos}(:,c_videos)/mean(vel_med{c_grupos}(:,c_videos));
tray=trayectorias2trayectorias_interp(tray); % Interpolo para las distancias
distancias{c_grupos}=[];
for c1_peces=1:n_peces
for c2_peces=1:n_peces
if c1_peces~=c2_peces
distancias{c_grupos}(1:size(tray,1),c1_peces,c2_peces)=sqrt(sum((tray(:,c1_peces,:)-tray(:,c2_peces,:)).^2,3));
else
distancias{c_grupos}(1:size(tray,1),c1_peces,c2_peces)=NaN;
end
end % c1_peces
end % c2_peces
distmed{c_grupos}=nanmean(distancias{c_grupos},3);
distmin{c_grupos}=nanmin(distancias{c_grupos},[],3);
figure
plot(nanmean(distmin{c_grupos},2))
distmed_med{c_grupos}(1:n_peces,c_videos)=nanmean(distmed{c_grupos});
distmin_med{c_grupos}(1:n_peces,c_videos)=nanmean(distmin{c_grupos});
nframes_lejos{c_grupos}(1:n_peces,c_videos)=sum(distmin{c_grupos}>300)/size(tray,1);
% Ahora sólo para los frames en los que va rápido
lento=normavel{c_grupos}<=2;
distmed{c_grupos}(lento)=NaN;
distmin{c_grupos}(lento)=NaN;
distmed_med_rap{c_grupos}(1:n_peces,c_videos)=nanmean(distmed{c_grupos});
distmin_med_rap{c_grupos}(1:n_peces,c_videos)=nanmean(distmin{c_grupos});
nframes_lejos_rap{c_grupos}(1:n_peces,c_videos)=sum(distmin{c_grupos}>300)/size(tray,1);
% caca
end % c_videos
end % c_grupos

 

 

 

 

 

 

 

 

 

 

 

 

Show data

cosas={‘vel_med’,’velrel_med’,’velmed_rel’,’distmed_med’,’distmin_med’,’nframes_lejos’};
modos={”,’_rap’};
dosmodos=[0 0 0 1 1 1];
for c_grupos=1:size(datos.videos,2)
for c_cosas=1:length(cosas)
figure
if dosmodos(c_cosas)
n_modos=length(modos);
else
n_modos=1;
end
for c_modos=1:n_modos
subplot(1,n_modos,c_modos)
eval([‘plot(‘ cosas{c_cosas} modos{c_modos} ‘{c_grupos},”.-”)’])
title([‘Grupo ‘ num2str(c_grupos) ‘. ‘ cosas{c_cosas} modos{c_modos}],’Interpreter’,’none’)
end
end
end % c_grupos

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Psé…

Analysis of the free-swimming-personalities zebrafish videos: Forwardness

Filed under: Dynamics — alperezescudero @ 6:54 pm

Name of this file: Cuaderno20120626T113624.m

Load data

load(‘F:\Hipertec_pesados\datos_freeswimperson.mat’)

Compute forwardness

clear n_validos n_delante
for c_grupos=1:size(datos.videos,2)
for c_videos=1:size(datos.videos,1)
trayectorias=datos.videos(c_videos,c_grupos).tray;
% trayectorias=trayectorias(1:5000,:,:);
n_peces=size(trayectorias,2);
correl=trayectorias2correlacion(trayectorias,0);
vel=diff(trayectorias,1,1);
normavel=sqrt(sum(vel.^2,3));
velnorm=vel./repmat(normavel,[1 1 2]);
% Exijo que los dos peces vayan rápido
vel_min=2;
for c1_peces=1:n_peces
for c2_peces=1:n_peces
correl(:,c1_peces,c2_peces)=correl(:,c1_peces,c2_peces).*(normavel(:,c1_peces)>vel_min).*(normavel(:,c2_peces)>vel_min);
end % c2_peces
end % c1_peces
correl(end,:,:)=0;
% A cholón, simplemente cuento frames con alta correlación en los que uno está delante del otro
n_validos{c_grupos}(1:n_peces,1:n_peces,c_videos)=NaN;
n_delante{c_grupos}(1:n_peces,1:n_peces,c_videos)=NaN;
for c1_peces=1:n_peces
for c2_peces=1:n_peces
if c1_peces~=c2_peces
buenos=correl(:,c1_peces,c2_peces)>.9;
velmed=sum(velnorm(buenos,[c1_peces c2_peces],:),2);
velmed=velmed./repmat(sqrt(sum(velmed.^2,3)),[1 1 2]);
centromasas=mean(trayectorias(buenos,[c1_peces c2_peces],:),2);
pos_rel=trayectorias(buenos,[c1_peces c2_peces],:)-repmat(centromasas,[1 2]);
posrel_parallel=sum(pos_rel.*repmat(velmed,[1 2]),3);
n_validos{c_grupos}(c1_peces,c2_peces,c_videos)=sum(buenos);
n_delante{c_grupos}(c1_peces,c2_peces,c_videos)=sum(posrel_parallel(:,1)>posrel_parallel(:,2));
end
end % c2_peces
end % c1_peces
figure
imagesc(n_delante{c_grupos}(:,:,c_videos)./n_validos{c_grupos}(:,:,c_videos))
caxis([0 1])
title([‘Grupo ‘ num2str(c_grupos) ‘, video ‘ num2str(c_videos)])
end % c_videos
end % c_grupos

 

 

 

 

 

 

 

 

 

 

 

 

Show correlations

for c_grupos=1:size(datos.videos,2)
for c1=1:size(datos.videos,1)
for c2=c1+1:size(datos.videos,1)
figure
m1=n_delante{c_grupos}(:,:,c1)./n_validos{c_grupos}(:,:,c1);
m2=n_delante{c_grupos}(:,:,c2)./n_validos{c_grupos}(:,:,c2);
plot(m1,m2,’.’)
[r,p]=corrcoef(m1(~isnan(m1) & ~isnan(m2)),m2(~isnan(m1) & ~isnan(m2)));
r_todos(c1,c2)=r(1,2);
p_todos(c1,c2)=p(1,2);
xlabel([‘Matrix elements for video ‘ num2str(c1)’])
ylabel([‘Matrix elements for video ‘ num2str(c2)’])
title([‘Group ‘ num2str(c_grupos)’])
figure
plot(nanmean(n_delante{c_grupos}(:,:,c1)./n_validos{c_grupos}(:,:,c1),2),nanmean(n_delante{c_grupos}(:,:,c2)./n_validos{c_grupos}(:,:,c2),2),’.’)
xlabel([‘Average matrix elements for video ‘ num2str(c1)’])
ylabel([‘Average matrix elements for video ‘ num2str(c2)’])
title([‘Group ‘ num2str(c_grupos)’])
[r,p]=corrcoef(nanmean(n_delante{c_grupos}(:,:,c1)./n_validos{c_grupos}(:,:,c1),2),nanmean(n_delante{c_grupos}(:,:,c2)./n_validos{c_grupos}(:,:,c2),2));
r_medias(c1,c2)=r(1,2);
p_medias(c1,c2)=p(1,2);
end
end
r_todos
p_todos
end % c_grupos

r_todos =
0 0.3087 0.4706 -0.8281
0 0 0.5173 0.0933
0 0 0 -0.1879
p_todos =
0 0.0467 0.0017 0.0000
0 0 0.0005 0.5568
0 0 0 0.2333
r_todos =
0 -0.1017 0.9408 0.2995
0 0 0.2268 0.9159
0 0 0 0.5828
p_todos =
0 0.8480 0.0052 0.5642
0 0 0.6656 0.0103
0 0 0 0.2248
r_todos =
0 0.9030 0.6054 0.2000
0 0 0.7469 0.4267
0 0 0 0.9009
p_todos =
0 0.0136 0.2028 0.7039
0 0 0.0880 0.3987
0 0 0 0.0142

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tracking of day 4 of zebrafish free-swim videos to see personalities

Filed under: Dynamics, Experiments, Tracking — alperezescudero @ 9:37 am

Name of this file: Cuaderno20120622T173003.m

The other 3 days have similar scripts

roi =[ 5.2907 4.8123;
926.8814 943.6519];
% try
% trayectorias=identitracking(‘L:\Zebrafish\20120622\Alevines7′,’Alevines7_20120622T153142_’,[],7,.85,1,roi,0);
% catch
% disp(‘Fallo en 1’)
% matlabpool close
% end
% try
% trayectorias=identitracking(‘L:\Zebrafish\20120622\Adultos3′,’Adultos3_20120622T160009_’,[],3,.85,0,roi,0);
% catch
% disp(‘Fallo en 2’)
% matlabpool close
% end
% try
% trayectorias=identitracking(‘L:\Zebrafish\20120622\Adultos4′,’Adultos4_20120622T162805_’,[],3,.85,0,roi,0);
% catch
% disp(‘Fallo en 3’)
% matlabpool close
% end

Relations of references for the zebrafish-free-swim-personalities videos

Filed under: Dynamics, Experiments, Tracking — alperezescudero @ 9:36 am

Name of this file: Cuaderno20120622T100414.m

Prepare

addpath(‘F:\Hipertec\CollectiveBehavior\Dinamica’)

Extract trajectories

datos=directorio2datosfreeswimperson(‘L:\Zebrafish’);
save f:\hipertec_pesados\datos_freeswimpersonsinreordenar datos
save L:\Zebrafish\datos_freeswimpersonsinreordenar datos

ans =
1 1
ans =
1 2
ans =
1 3
ans =
2 1
ans =
2 2
ans =
2 3
ans =
3 1
ans =
3 2
ans =
3 3
ans =
4 1
ans =
4 2
ans =
4 3

Compute relations between references

% for c_grupos=1:size(datos.videos,2)
% for c1_trials=1:size(datos.videos,1)
% if ~isempty(datos.videos(c1_trials,c_grupos).datosegm)
% dir1=datos.videos(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:size(datos.videos,1)
% if c1_trials~=c2_trials
% if ~isempty(datos.videos(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.videos(c2_trials,c_grupos).datosegm.directorio;
% % dir2(1)=’G’;
% load([dir2 ‘referencias.mat’])
% refs2=referencias;
% clear referencias
% if length(refs2)>=length(refs1) % Para que no intente asignar cuando no todos los peces están en refs2 (en el video Adultos4 murió un pez después del primer vídeo)
% [relacion_act,proberror_relacion_act,identificaciones_act,menores{c1_trials,c2_trials,c_grupos}]=referencias2validacion(refs1,refs2,[],200);
% end
% end
% end % if hay trayectoria
% end % if no son el mismo vídeo
% end % c2_trials
% end % if hay trayectoria
% end % c1_trials
% end % c_grupos

Save data

save L:\Zebrafish\datos_relacionreferencias_3dias menores

Check self-consistency

for c_grupos=1: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.

%First compute all relations:
clear relacion probasignacion asignaciones
for c_grupos=1: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:size(menores,3)
nombres{c_grupos}=NaN(size(menores,2),size(datos.videos(1,c_grupos).tray,2));
nombres{c_grupos}(1,:)=1:size(datos.videos(1,c_grupos).tray,2); % El primer vídeo es la referencia
for c_trials=2:size(menores,2)
relacion_act=relacion{c_trials,1,c_grupos};
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 % c_trials
end % c_grupos
% Now check all pairwise relations
for c_grupos=1: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),size(menores,2),(c1_trials-1)*size(menores,2)+c2_trials)
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

 

 

 

OK, taking into account that fish 1 in the last group died after day 1.

Sort trajectories, and put them into datos

for c_grupos=1:size(datos.videos,2)
for c_trials=1:size(datos.videos,1)
dir_act=datos.videos(c_trials,c_grupos).datosegm.directorio;
% dir_act(1)=’G’;
load([dir_act ‘trayectorias.mat’])
tray=NaN(size(trayectorias));
tray(:,nombres{c_grupos}(c_trials,1:size(trayectorias,2)),:)=trayectorias;
datos.videos(c_trials,c_grupos).tray_nosort=trayectorias;
datos.videos(c_trials,c_grupos).tray=tray;
end % c_trials
end % c_grupos

Save datos

save f:\hipertec_pesados\datos_freeswimperson datos
save L:\Zebrafish\datos_freeswimperson datos

June 22, 2012

Zebrafish free-swimming videos to test personalities. Day 4

Filed under: Experiments — alperezescudero @ 3:58 pm

T (according to acclimatizer) 26.8ºC

>> camara=videoinput(‘dcam’,1,’F7_Y8_1280x1024′);
camaraint=camara.Source;
camaraint.Gain=150;
preview_util(camara)
>> camara2roi(camara)
??? Error using ==> ginput at 124
Interrupted by figure deletion
Error in ==> camara2roi at 14
[x,y]=ginput(2);
>> preview_util(camara)
>> camara2roi(camara)
Warning: ROIPosition values need to be configured in certain pixel unit intervals.
The ROIPosition property was adjusted to a compatible configuration.
>> camara.ROIPosition
ans =
136 48 1132 945
>> datestr(now,30), grabavideos_logmanual(camara,’D:\Zebrafish\20120622\Alevines7\Alevines7′,20*60)
ans =
20120622T153141

No todos los peces vuelven bien a casa. Para los dos últimos tengo que quitar la tapa y cazarlos en el setup. Se mueve un poco el setup, y lo realineo.

>> preview_util(camara)
>> datestr(now,30), grabavideos_logmanual(camara,’D:\Zebrafish\20120622\Adultos3\Adultos3′,20*60)
ans =
20120622T160008
>> datestr(now,30), grabavideos_logmanual(camara,’D:\Zebrafish\20120622\Adultos4\Adultos4′,20*60)
ans =
20120622T162804

June 21, 2012

Zebrafish free-swimming videos to test personalities. Day 3

Filed under: Experiments — alperezescudero @ 5:02 pm

La tapa del setup estaba combada. Uso otra de las que teníamos preparadas (la que estaba arriba sobre el banco de bricolaje)

T=26.8ºC (según climatizador).

>> camara=videoinput(‘dcam’,1,’F7_Y8_1280x1024′);
camaraint=camara.Source;
camaraint.Gain=150;
preview_util(camara)
>> camara2roi(camara)
Warning: ROIPosition values need to be configured in certain pixel unit intervals.
The ROIPosition property was adjusted to a compatible configuration.
>> camara.ROIPosition
ans =
140 72 1132 932

Vídeo 1 (Alevines7):

>> datestr(now,30), grabavideos_logmanual(camara,’D:\Zebrafish\20120621\Alevines7\Alevines7′,20*60)
ans =
20120621T155922

Vídeo 2 (Adultos3):

>> datestr(now,30), grabavideos_logmanual(camara,’D:\Zebrafish\20120621\Adultos3\Adultos3′,20*60)
ans =
20120621T163349

Vuelvo antes de que termine el vídeo (como unos 5 minutos antes, porque confundo un mensaje con el timer). Me quedo sentado junto al setup hasta que termina.

 

Vídeo 3 (Adultos4):

>> datestr(now,30), grabavideos_logmanual(camara,’D:\Zebrafish\20120621\Adultos4\Adultos4′,20*60)
ans =
20120621T165703

All fish go back home easily, so I catch them without problems.

Older Posts »

Create a free website or blog at WordPress.com.