Transporte Axonal, Neurodesarrollo y Neurodegeneración

El laboratorio se centra en dilucidar la función del transporte axonal y las proteínas motoras en la regulación de los procesos de migracion, guia axonal y neurodegeneracion. Nos enfocamos priincipalmente en comprender como los defectos del transporte axonal pueden derivar en alteraciones de comunicacion neurona-neurona que induscan posteriormente patologias que deriven en la manifestacion de fenotipos de neurodegeneracion asociados al Parkinson o al Alzheimer. A través del diseño y utilización de cargas fluorescentes proponemos describir las propiedades de transporte de diferentes receptores, vesículas y organelas a lo largo del axón. Estas propiedades de movimiento junto con la utilización de técnicas de bioquímica y caracterización patológica de mutantes de proteínas motoras son utilizadas para identificar el rol de las proteínas motoras en crecimiento y guia axonal y la progresión de patologías que se generan por defectos del transporte axonal. El objetivo a futuro de mi laboratorio es generar un modelo neuronal humano a partir de la diferenciación de células madre humanas para poder estudiar las propiedades de transporte axonal en condiciones normales y en modelos de enfermedad.

  • Director

    Dr. Tomás Falzone

     

    Investigador Adjunto (CONICET)

    Jefe de Trabajos Prácticos, UBA.

    tfalzone@fmed.uba.ar

     

  • Integrantes

     

    Dra. Trinidad Saez, Bióloga, Facultad de Ciencias Exactas y Naturales, UBA.

    Post-doc CONICET. trinidad.mm.saez@gmail.com

    Sol Rodriguez, Estudiante, Facultad de Ciencias Exactas y Naturales, UBA.

    solr343@gmail.com

Tema Central de Estudio

La gran estructura que poseen las neuronas depende de un correcto sistema de transporte axonal que asegura la distribución de proteínas y organelas para el normal desarrollo y funcionamiento neuronal. Fallas en la distribución y transporte de receptores y vesiculas ha sido sugerido y observado en un numero variado de alteraciones del desarrollo y en la manifestacion de neurodegeneracion. El objetivo de mi laboratorio se centra en dilucidar la función de las proteínas motoras en la regulación del transporte axonal y comprender como los defectos del transporte axonal pueden derivar alteraciones de migracion, guia axonal y supervivenvia neuronal que puedan inducir la manifestacion futura de enfermedades neurodegenerativas. A través del diseño y utilización de cargas fluorescentes proponemos describir las propiedades de transporte de diferentes receptores, vesículas y organelas a lo largo del axón. Estas propiedades de movimiento junto con la utilización de técnicas de bioquímica y caracterización patológica de mutantes de proteínas motoras son utilizadas para identificar el rol de las proteínas motoras en la iniciación y progresión de patologías que se generan por defectos del transporte axonal. El objetivo a futuro de mi laboratorio, que estamos poniendo a punto con gran esfuerzo, es el de generar un modelo neuronal humano a partir de la diferenciación de células madre humanas para poder estudiar las propiedades de transporte axonal en condiciones normales y en modelos de enfermedad.

 

Tesis Dirigidas

  • Ph.D, Lucas Cromberg,. Doctorado. Abril, 2017.

  • Ph.D, Maria Gabriela Otero,. Doctorado. Marzo, 2016.

  • Lic., Matias Alloatti, Licenciatura, Mayo 2014. "Transporte axonal del proteasoma: Nuevos regímenes de movimiento revelados a partir del análisis cuantitativo de imágenes de microscopía de fluorescencia. Mayo, 2014"

  • Lic., Lucas Cromberg, Licenciatura, Marzo 2011. "Regulación del transporte axonal mediado por la kinasa de estrés JNK. Marzo, 2011"

 

Subsidios Actuales

PICT 2013-0402. Subsidio del FONCYT, Agencia Nacional de Promoción de la Ciencia

y Tecnología. Argentina.

UBACyT 2014-2017. Subsidio Universidad de Buenos Aires.

2016 PROLAB (IBRO-LARC). Cooperación internacional Argentina-Brasil

 

Publicaciones

- Pozo Devoto V & Falzone T.“α-Synuclein and mitochondria biodynamics in Parkinson’s Disease”. Disease Mechanism and Models, Review, Under revision, 2017.

- Pozo Devoto V, Dimopoulous N, Alloatti M, Cromberg L, Otero M, Saez T, Pardi, B, Marin-Burgin, Schinder A, Scassa M, Sevlever G & Falzone T.“αSynuclein control of mitochondrial homeostasis in human-derived neurons is disrupted by mutations associated with Parkinson’s Disease”. Under revision, 2017.

- Lacovich V, Espindola S, Alloatti M, Pozo Devoto M, Cromberg L, Čarná M, Forte G, Gallo J, Bruno L, Stokin G, Avale M & Falzone T. “Tau isoforms imbalance impairs the axonal transport of the amyloid precursor protein (APP) in human neurons”, Journal of Neuroscience. Jan 4;37(1):58-69., 2017.

- Medina C; Biris O, Falzone T, Zhang X, Zimmerman A, Bearer E.“Hippocampal to basal forebrain transport of Mn2+ is impaired by deletion of KLC1, a subunit of the conventional kinesin microtubule-based motor”. Neuroimage, Jan 15;145:44-57 2017.

- LaSpina F, Molina L, Romarowski A, Vitale A, Falzone T, Krapf D, Hirohashi N, Buffone M. “Mouse sperm begin to undergo acrosomal exocytosis in the upper isthmus of the oviduct”. Developmental Biology. Feb 10; Mar 15;411(2):172-82, 2016.

- Otero G, Alloatti M, Cromberg L, Almenar-Queralt A, Encalada S, Pozo Devoto V, Goldstein L, Falzone T.“Fast axonal transport of the proteasome complex depends on membrane interaction and molecular motor function”. Journal of Cell Science,April 1;127, 1537-49, 2014.

- Almenar-Queralt A, Falzone T, Shen Z, Arreola A, Niederst E, Kim S, Briggs S, Williams S, Goldstein L. “UV Accelerates Amyloid Precursor Protein (APP) Processing and Disrupts APP Axonal Transport”. Journal of Neuroscience,Feb 26;34(9):3320-39, 2014.

- Falzone T & Stokin G. "Imaging amyloid precursor protein in vivo: an axonal transport assay". Methods in Molecular Biology, 846:295-303, 2012.

- Falzone T, Gunawardena S, McCleary D, Reis G, Goldstein L. “Kinesin-1 transport reductions enhance human tau hyperphosphorylation, aggregation and neurodegeneration in animal models of tauopathies.”. Human Molecular Genetics, Nov 15;19(22):4399-408, 2010.

- Falzone T, Stokin G, Lillo C, Rodrigues E, Westerman E, Williams D, Goldstein L. “Axonal Stress Kinase Activation and Tau Misbehavior Induced by Kinesin-1 Transport Defects”. Journal of Neuroscience. 29(18):5758-67. May 6, 2009.

- Stokin G, Lillo C, Falzone T, Brusch R, Rockenstein E, Mount S, Raman R, Davies P, Masliah E, Williams D, Goldstein L. “Axonopathy and transport deficits early in the pathogenesis of Alzheimer's disease”. Science, 307(5713):1282-8, Feb 25, 2005.

- Falzone T, Gelman D, Young J, Grandy D, Low M and Rubinstein M. “Absence of DopamineD4 Receptors Results in Enhanced Reactivity to Unconditioned, But not Conditioned, Fear”.European Journal of Neuroscience, (1):158-164. Jan 15, 2002.

- Rubinstein M, Phillips T, Bunzow J, Falzone T, Dziewczapolski G, Zhang G, Fang Y, Larson J, McDougall J, Chester J, Saez C, Pugsley T, Gershanik O, Low M and Grandy D. “Mice Lacking Dopamine D4 Receptors Are Supersensitivite to Ethanol, Cocaine, and Methamphetamine”. Cell, Vol. 90:991-1001, Sep 19, 1997.

 

Premios y eventos destacados

- Invitación a simposio IBRO-LATAM 2016, “Synuclein in the way of motchodrial transport and morphology”, Buenos Aires. Oct. 2016.

- 2016 PROLAB Program. Premio de IBRO-LARC para desarrollo de colaboraciones en Latinoamérica. (2015).

- Invitación a simposio Investigador Jóven, 16st TWAS-ROLAC. Young Scientist Conference. “hESC Derived Neurons to Understand intracellular disease mechanisms”. 16th TWAS-ROLAC.Rio, Brazil 24-25 Nov, 2014.

- Miembro comité regional de evaluación del programa de becas “Pew Latin American Fellows Program” (2014-2016).

- Elegido Vocal de la Sociedad Argentina de Neurociencias, SAN 2013-2017.

- Invitación a simposio ICRC-. “Using hESC Derived Neurons to Answer Parkinson’s Disease Mechanisms”. Stem Cells from the bench to the bedside. Brno, Czech Republic, May, 2014.

- Canada-Latin America and the Caribbean Exchange Grant (LACREG).Alzheimer y Diabetes, Transporte axonal y señalización mediada por RAGE. International Development Research Center (IDRC). (2012-2014).

- Invitación a simposioAAICAD 2012.“Coordinated proteasome and lysosome retrograde axonal transport is regulated by kinesin-1 clustering at projection ends”. Int. Conference on Alzheimer Disease 2012. Vancouver, Canada 14-19 July, 2012.

- Travel Award, International Conference on Alzheimer Disease. AAICAD 2011. Paris, Julio 2011.

- Invitación simposio investigador joven.“Abnormal endo-lysosomal membrane dynamics and retrograde axonal transport defects induced by proteasome inhibition”. Sociedad Argentina de Neurociencias, Argentina. 20-23 Oct. 2011.

- New Investigator of the Alzheimer Association. Subsidio internacional. Proyecto de investigación: “New Models to Study the Role of Ubiquitin-Proteasome Axonal Transport in AD”. Institución: IBCN (2010-2012)

- Invitación a simposio del Spring Brain Conference (SBC). “How Transport Defects Leads to Disease: A Model to Study Axonal Trafficking in Mice and Men”. Palm Spring, EEUU. March 2009.

- Beca de Reinserción. Otorgada por el CONICET. Mayo - Octubre 2009.

- American Parkinson Disease Association. Beca Postdoctoral(APDA-USA). (2004-2005).

- PEW Fellow in Latin American Program. Otorgada por la PEW Charitable Trust (USA). Junio 2002 - Junio 2004.

 

Methods for Quantitative Analysis of Axonal Cargo Transport

% Tracking_Script.m

% --------------------------------------------------------
% Single Particle Tracking Script
% --------------------------------------------------------
% Datatips must be generated over the trajectory from the bottom to the top of the kymograph

clear all; clc; close all; % commands that clear uneeded variables, clear command window and close all graphics

CalibP=1;           % pixel size (can be adjusted, but we recommend leaving it in 1 and adjusting size in spreadshit when analysing data)
CalibT=1;           % frame duration (same as above)
dx=2;                % pixels considered horizontally to search for the particle  (can be increased if the kymographs are clean)

fname =input('Filename: ','s');          % loads image (kymograph)
kymo=imread(fname);                     % saves kymograph image in variable kymo
kymo=double(kymo);                      

g=figure(1);                                       % loads into figure
imagesc(kymo); colormap('gray');        % displays image in gray
h = uicontrol('Position',[5 10 150 30],'String','Continue','Callback','uiresume(gcbf)');    % places a button to continue to analysis once datatips information is exported
h = uicontrol('Position',[205 10 150 30],'String','Export','Callback','cursor_info=getCursorInfo(dcm_g);');       % places a button to export cursor info
datacursormode(g);                      
dcm_g = datacursormode(g);
set(dcm_g,'UpdateFcn',@accesory1);     % clears strings from datatips
uiwait(gcf);                                        % waits untill continue button is pressed

for j=1:length(cursor_info)
    xin(j)=cursor_info(j).Position(2);
    yin(j)=cursor_info(j).Position(1);
end

xi=[xin(1):1:xin(end)];                 
yi = interp1(xin,yin,xi,'linear');         
            
for i=1:length(xi)
    x=kymo(xi(i),yi(i)-dx:yi(i)+dx);
    x=x';
    p1=1:length(x);
    ts=x;p=p1;
    grado=1;
    net=newgrnn(p,ts',grado);
    pp=[1:0.005:length(p1)];
    y=sim(net,pp);
    x_m=pp(find(y==max(y)));
    x_max(i)=x_m+yi(i)-dx-1;
    fluorescence(i)=max(y);
end

figure(1); subplot(2,1,1); imagesc(kymo); hold on;  plot(x_max,xi,'*k'); plot(yin,xin,'om');
figure(1); subplot(2,1,2); plot(x_max,xi);

time=xi;
distance=x_max;

fname=input('save as:    ','s');                % ask for filename for particle
save(fname,'distance','time');                 % saves tracked particle

again=input('Track another particle(y/n): ','s');         % loads image (kymograph)

if again=='y'                                        % ask for repetition
    tracking_script;                                % reruns script
else
end

% Accessory1.m

% --------------------------------------------------------
% Eliminates text from datatips, what eases datatip placement while tracking
% --------------------------------------------------------
% Must be in the same folder as Tracking_Script.m

function output_txt = myfunction(obj,event_obj)    
% obj          % Currently not used (empty)
% event_obj    % Handle to event object
% output_txt   % This are the strings displayed, must remain empty
pos = get(event_obj,'Position');
output_txt = {[]};

% MSD_Script.m

% --------------------------------------------------------
% Calculates Mean Square Displacement (MSD)
% --------------------------------------------------------
% INPUT:
% *.mat file with x(t) of each trajectory correctly enumerated (x1,x2,...)
% --------------------------------------------------------
% OUTPUT:
% m2d_i: matrix containing tau (time interval) and msd of trajectory i
% --------------------------------------------------------

clc; %close all                          % close all graphics and cleans command window
ndata=input('Number of trackings:  ');   % it asks for number of trackings
dt=input('Exposure time used while imaging or duration of frames(in seconds): '); % exposure time (duration of frames)
pixsize=input('Pixel size (in um): ');   % pixel size in um
for k=1:ndata                                  % loops for all tracks
    eval(['x=x',int2str(k),';']);             % creates x from x(k)
    t=[0:dt:dt*(length(x)-1)];             % creates timescale
    N=length(x);                                % total length of trajectory
    clear  m2d a ddx tau                     % clears temporal variables
    NN=floor(N/10);                            % it takes the first 10% of the data
    i=1;                                            % creates a counter "i" for tau sizes (begins as 1 tau)
    for n=1:N                                    % index for time lag (tau); goes through the trajectory total length
        clear a                                    % clears temporal variable a
        a=x(n+1:N)-x(1:N-n);              % calculates the displacement in tau
        ddx(i)=mean(a.^2);                % calculates mean of the square of the displacement (transforming the unit to píxel^2)
        tau(i)=n*dt;                            % transformates unit of tau to segundos (multiplying pixels (n) by frame duration(dt))
        i=i+1;                                     % amplifies tau size in 1 dt
    end                                            
    m2d(:,1)=tau;                             % saves time lag (tau) in first column from m2d
    m2d(:,2)=ddx*pixsize;                 % saves Mean Square Displacement or MSD (ddx) in 2da column of m2d (in um)
    eval(['m2d_',int2str(k),'=m2d;'])    % saves m2d_(k) --> MSD of the track as a new variable
end                                      
        
clearvars -except x* m2d_* ndata
fname=input('save MSD data as:    ','s');                % ask filename for MSD data
save(fname);                                   % saves entire workspace 
  

% Trajectory_Types.m

% --------------------------------------------------------
% Separates trajectories in Confined Motion (confined), Normal Diffusion

% (diffusive) and Active Transport (active)
% --------------------------------------------------------

ca=1;           % counter for active
cc=1;           % counter for confined
cd=1;           % counter for diffusive
ndata=input('Number of trackings:  ');      % asks for number of data
for i=1:ndata                                         % loops through all data
    eval(['m=m2d_',int2str(i),';'])              % creates temporal variable m
    m=m(:,2);                              
    %if m(1)1pixel^2
    M=(m(1:10)-m(1))/(m(10)-m(1));
    if (max(M)        active(ca,1)=i;
        figure(1); plot(M, 'b'); hold on; title('active')
        ca=ca+1;
    end
    if (max(M)0.6)            % Criterion to consider confined: M(tau=6)>0.6
    confined(cc,1)=i;
    figure(2);plot(M,'r'); hold on; title('confined')
    cc=cc+1;
    end
    if (max(M)0.15) %Criteria to consider diffusive: in the middle of the other conditions
    diffusive(cd,1)=i;
    figure(3);  plot(M,'k'); hold on; title('normal')
    cd=cd+1;
    end
end
% end

if exist('confined')==0
    confined=[];
end
if exist('diffusive')==0
    diffusive=[];
end
if exist('active')==0
    active=[];
end
    
clearvars -except x* m2d_* ndata active confined diffusive      % eliminates temporal and auxiliar variables

str=['There is/are ', num2str(length(confined)), ' confined trajectory/ies.'];
disp(str);
if isempty(confined)==0
    str=['They are the trajectories: ', num2str(confined')];
    disp(str);
end
str=['There is/are ', num2str(length(diffusive)), ' diffusive trajectory/ies.'];
disp(str);
if isempty(diffusive)==0
    str=['They are the trajectories: ', num2str(diffusive')];
    disp(str);
end
str=['There is/are ', num2str(length(active)), ' active trajectory/ies.'];
disp(str);
if isempty(active)==0
    str=['They are the trajectories: ', num2str(active')];
    disp(str);
end
clear str


% Segmental_Velocities.m

% ------------------------------------------------------------
% Calculates segmental velocoties
% ------------------------------------------------------------
% It is considered that cell body is always to the left, so positive
% velocities correspond to anterograde transport and negative velocities to
% retrograde.
% ------------------------------------------------------------
% Parameters to modify:
% npoints: define number of points that constitu each segment to analyze
% tole: tolerance for R squared of regression
% dt=temporal step
% ------------------------------------------------------------
% INPUT:
% *.mat file with x(t) of active trajectories correctly enumerated (x1,x2,...)
% ------------------------------------------------------------
% OUTPUT:
% vk: vector with anterograde velocities filtered according to criterion Rsq > tole
% vd: vector with retrograde velocities filtered according to criterion Rsq > tole
% ------------------------------------------------------------

tole=0.75;          % tolerance for R squared

ndata=input('Number of trackings:  ');      % it asks for number of trackings
dt=input('Exposure time used while imaging or duration of frames(in seconds), type 1 to use frames:  '); % exposure time (duration of frames)/temporal step
pixsize=input('Pixel size (in um), type 1 to use pixels:  ');     % pixel size in um
npoints=input('Length of segments:  ');     % length of segment - 1 (for 20 frames use 19)
cmenos=1;   % counter of velocities
cmas=1;     %

if size(x1,2)>size(x1,1)
    for l=1:ndata
        eval(['x',int2str(l),'=transpose(x',int2str(l),');']);
    end
end  
    
for k=1:ndata                               % loops through all the data
    eval(['x=x',int2str(k),';'])            % creates temporal variable
    t=[0:dt:dt*(length(x)-1)];              %
%     clear dd tau;
%     Ants_MSD;
%     m2d(:,1)=tau;
%     m2d(:,2)=dd;
    
    for i=1:npoints:length(x)-npoints       
        tf=t(i:i+npoints);
        xf=x(i:i+npoints);
        clear recta f res Serr Stot R_sq vt vx vy
        recta=polyfit(tf',xf,1); %recta(1)=velocidad
        f = polyval(recta,tf);
       % figure (1); hold on; plot(tf,f,'r')     
        res=xf-f';
        Serr=sum(res.^2);
        Stot=sum((xf-mean(xf)).^2);
        Rsq=1-Serr/Stot;                
         
        if (Rsq>tole)   
       %     figure (1); hold on; plot(tf,f,'g')
            if recta(1)>0
            vk(cmas)=(recta(1));
            cmas=cmas+1;
            else
            vd(cmenos)=(recta(1));
            cmenos=cmenos+1;    
            end
        end
    end
end

fname=input('save velocities as:    ','s');     % asks filename for velocities
save(fname,'vd','vk')                           % saves them

% DISTRIBUTION GRAPH

%  bin_k=3.49*std((vk))/length(vk)^(1/3);
%  bin_d=3.49*std((vd))/length(vd)^(1/3);
%  vbin_k=0:bin_k:max(vk);
%  vbin_d=0:bin_d:max(abs(vd));
 
%  clear aa bb
%  [aa bb]=hist(abs(vd),vbin_d);
%  figure(3); plot(bb,aa/max(aa)); xlabel('retrograde velocity');
%  hold on;
%  clear aa bb;
%  [aa bb]=hist(abs(vk),vbin_k);
%  figure(2); plot(bb,aa/max(aa),'r'); xlabel('anterograde velocity');

% RunLengths_Pauses.m

clearvars -except x*;                % clears unnecesary variables
ndata=input('Number of trackings:  ');      % it asks for number of trajectories
cont=1;                              % counter for rows of "runs" matrix

for jj=1:ndata;                             % loops through all data
    clearvars -except x* v* jj cont runs;   % clears all unnecesary variables
    eval(['x=x',int2str(jj),';']);  % temporal variable x
    accesory2;                      % executes script to obtain runlengths
    runs(cont:cont+i-1,1)=v(:,1);   % VELOCITY OF RUN
    runs(cont:cont+i-1,2)=v(:,2);   % FRAMES OF RUN
    runs(cont:cont+i-1,4)=jj;       % run's trajectory of origin
    runs(cont:cont+i-1,5)=r1(1:end-1)'; % run's point of origin
    cont=cont+i;                    % adds the ammount of runlenghts obtained to the counter
    eval(['v',int2str(jj),'=v;'])   % creates variable v(i) that contains the runlenghts of trajectory x(i)
end
sizeruns=size(runs);                % variable that meassures the length of runs

for h=1:sizeruns(1);                % through size:    
    runs(h,3)=runs(h,1)*runs(h,2);  % creates columna DISTANCES (3rd)
    if runs(h,2)==0                 % if detects a run of 0 frames of duration:
        runs(h,:)=[0 0 0 0 0];      % puts 0 in that row
    elseif abs(runs(h,1))<0.05;     % CRITERION OF DISCARD FOR SMALL VELOCITIES
        pauses(h,:)=runs(h,:);      % it incorporates it to pauses     
    elseif abs(runs(h,3))<1;        % CRITERION OF DISCARD FOR SMALL DISTANCES     
        pauses(h,:)=runs(h,:);      % it incorporates it to pauses
    else
        pauses(h,:)=[0 0 0 0 0];    % if it doesn't discards, puts a 0 in pauses
    end
end

trueruns=runs-pauses;           % new matrix of runs without pauses
nextruns=trueruns;              % new matrix with short runs integrated to the next ones
truepauses=pauses;              % new matrix that will contain pauses unified
sizepausa=size(truepauses)-1;   %
contrev=1;

for h=1:sizepausa(1);                                          % UNIFYING PAUSES
    if (truepauses(h,4)~=0) && (truepauses(h+1,4)==truepauses(h,4));          % if 2 consecutive pauses are not 0
       truepauses(h+1,2)=truepauses(h+1,2)+truepauses(h,2);    % adds frames
       truepauses(h+1,3)=truepauses(h+1,3)+truepauses(h,3);    % adds distaces
       truepauses(h+1,1)=truepauses(h+1,3)/truepauses(h+1,2);  % calculates velocity
       truepauses(h+1,5)=truepauses(h,5);
       truepauses(h,:)=[0 0 0 0 0];                            % clears row
    end
end

for h=1:sizepausa(1);                               % puts back very short pauses
    if (truepauses(h,4)~=0) && (truepauses(h,2)<5); % if there's a pause and it's less than 5 frames
        nextruns(h,:)=runs(h,:);                    % it incorporates it in nextruns from runs
        truepauses(h,:)=[0 0 0 0 0];                % clears row from truepauses          
    end
end

for h=1:sizepausa(1);                                   % UNIFYING RUNS
    if (nextruns(h,4)~=0) && (nextruns(h+1,4)==(nextruns(h,4))) && sign(nextruns(h+1,1))==sign(nextruns(h,1))          % if 2 consecutive nextruns are not 0 and of same sign
       nextruns(h+1,2)=nextruns(h+1,2)+nextruns(h,2);   % adds frames
       nextruns(h+1,3)=nextruns(h+1,3)+nextruns(h,3);   % adds distaces
       nextruns(h+1,1)=nextruns(h+1,3)/nextruns(h+1,2); % calculates velocity
       nextruns(h+1,5)=nextruns(h,5);
       nextruns(h,:)=[0 0 0 0 0];                       % clears row
    end
end

for h=1:sizeruns(1)-1;                                         % DISCARDS FOR SHORT TIME       
    if nextruns(h,2)
        nextruns(h+1,2)=nextruns(h+1,2)+nextruns(h,2);         % adds frames
        nextruns(h+1,3)=nextruns(h+1,3)+nextruns(h,3);         % adds distaces
        nextruns(h+1,1)=nextruns(h+1,3)/nextruns(h+1,2);       % calculates total velocity
        nextruns(h,:)=[0 0 0 0 0];                             % clears row
    end
end

for h=1:sizepausa(1);                                          % 2nd UNIFYING PAUSES
    if (truepauses(h,4)~=0) && (truepauses(h+1,4)==truepauses(h,4));          % if 2 consecutive pauses are not 0:
       truepauses(h+1,2)=truepauses(h+1,2)+truepauses(h,2);    % adds frames
       truepauses(h+1,3)=truepauses(h+1,3)+truepauses(h,3);    % adds distaces
       truepauses(h+1,1)=truepauses(h+1,3)/truepauses(h+1,2);  % calculates velocity
       truepauses(h+1,5)=truepauses(h,5);
       truepauses(h,:)=[0 0 0 0 0];                            % clears row
    end
end

contpauses=1;                                       % counter for pauses
contruns=1;                                         % counter for runs

for h=1:sizeruns(1);                                % ELIMINATES EMPTY ROWS
    if truepauses(h,4)~=0;                          % if row have something (pauses)
        nextpauses(contpauses,:)=truepauses(h,:);   % transfers it to new matrix
        contpauses=contpauses+1;                    % adds 1 to counter
    end
    if nextruns(h,2)~=0;                            % if row have something (runs)
        finalruns(contruns,:)=nextruns(h,:);        % it transfers it to new matrix
        contruns=contruns+1;                        % adds 1 to counter
    end
end

sizefinal=size(finalruns);

for h=1:sizefinal(1)-1;
    if (finalruns(h,4)~=0) && (finalruns(h+1,4)==(finalruns(h,4))) && sign(finalruns(h,1))~=sign(finalruns(h+1,1))          % if 2 consecutive nextruns are not 0 and of same sign:
       reversion(contrev,1)=finalruns(h,4);              % reversion's particle of origin
       reversion(contrev,2)=finalruns(h+1,5);            % reversion's point of origin
       reversion(contrev,3)=sign(finalruns(h,1));        % sign of trajectory h (previous to reversion)
       reversion(contrev,4)=sign(finalruns(h+1,1));      % sign of trajectory h+1 (subsequent to reversion)
       contrev=contrev+1;                                % adds 1 to counter
    end
end

contant=1;                      % anterograde's counter
contret=1;                      % retrograde's counter
for h=1:sizefinal(1);                       % SEPARATES IN ANTEROGRADE AND RETROGRADE
    if finalruns(h,1)>0;                    % anterograde velocities
        velante(contant,:)=finalruns(h,:);  % it transfers them to new matrix
        contant=contant+1;                  % adds 1 to anterograde's counter
    else                                    % retrograde velocities
        velretro(contret,:)=finalruns(h,:); % it transfers them to new matrix
        contret=contret+1;                  % adds 1 to retrograde's counter
    end
end

%plot(finalruns(:,5),x(finalruns(:,5)),'*r',finalruns(1:end,5)+finalruns(1:end,2),x(finalruns(1:end,5)+finalruns(1:end,2)),'ok')

clear x;
clearvars -except x* finalruns nextpauses nextruns pauses runs truepauses trueruns vel* reversion contrev;   %borra variables innecesarias
shg

fname=input('save data as:    ','s');     % asks filename for data
save(fname,'velante','velretro','reversion','nextpauses')   

 

% Accesory2.m

% Complementary Script to obtain runlengths

x=x';           % generates X transposed
dt=1;           % exposure time
p1=1:length(x); % p1-->length of trajectory (in frames)
ts=x';p=p1;     % generates non transposed X (ts) and a new variable that contains the length of the trajectory(p)

limder=0.2;                 % límit to consider 0 (parameter that can be modified)
grado=3;                    % smoothing of the curve
net=newgrnn(p,ts',grado);   %

pp=[1:1:length(p1)];    %
y=sim(net,pp);          %

% figure; hold on
% plot(p,ts,pp,y);
% figure;
deriv=diff(y); % calculates the derivative for each point in the smoothed trajectory
% plot(deriv,'o')

r1(1)=1;    %  
rr=1;       %  
cc=2;       % counter for break points

%r1(cc)=find(abs(deriv)<0.01, 1 );%r1(cc)=min(find(abs(deriv)<0.01));
rr=find(abs(deriv)<limder, 1 );     
 
if isempty(rr)==0
r1(cc)=rr;
 
while r1(cc)<length(deriv)
  cc=cc+1;
  % rr=min(find(abs(deriv(r1(cc-1):end))>0.01));
  rr=find(abs(deriv(r1(cc-1):end))>limder, 1 );
  if isempty(rr), break, end
  r1(cc)=r1(cc-1)+rr;
  cc=cc+1;
  %  rr=min(find(abs(deriv(r1(cc-1):end))<0.01));
  rr=find(abs(deriv(r1(cc-1):end))<limder, 1 );
  if isempty(rr), break, end
  r1(cc)=r1(cc-1)+rr;
end
    r1(cc)=length(y);
else
    r1(cc)=length(y);
end
plot(p,ts,pp,y); hold on
for i=1:length(r1)
     plot(r1(i),y(r1(i)),'*r')          % plots red dots
end

clear v
for i=1:length(r1)-1;
    v(i,1)=(y(r1(i+1))-y(r1(i)))/(dt*(r1(i+1)-r1(i))); % velocity
    v(i,2)=dt*(r1(i+1)-r1(i));                         % time
end 

 

Todos los scripts mencionados en la publicación Alloatti et al., 2018 (doi: 10.1007/978-1-4939-7571-6_16) están disponibles en: https://github.com/FalzoneLab/Scripts-For-Axonal-Transport

 

 

Laboratorios
BOOM |