MATLAB script 

%plotting of EB3 tracks

 %for plotting EB3 tracks with equator of the spindle as (00)
 data=dir('*.csv')
 for i=1:length(data)
    EB=importdata(data(i).name)
    EB=EB.data
    
    measurement=EB(:,1);
    %values in pixels
    X_points=EB(:,2);
    Y_points=EB(:,3);
    
    X_pole1=EB(1,6);
    X_pole2=EB(2,6);
    
    Y_pole1=EB(1,7);
    Y_pole2=EB(2,7);
    
    %calculating position of spindle centre
    X_centar=(X_pole1+X_pole2)/2
    Y_centar=(Y_pole1+Y_pole2)/2
    
    %translation of poles
    %multiplication with pixel size to get values in microns
    
    X_pole1_transl=(X_pole1-X_centar)*0.1
    X_pole2_transl=(X_pole2-X_centar)*0.1
    
    Y_pole1_transl=(Y_pole1-Y_centar)*0.1
    Y_pole2_transl=(Y_pole2-Y_centar)*0.1
    
    %translation of EB3 coordinates
    X_points_transl=(X_points-X_centar)*0.1
    Y_points_transl=(Y_points-Y_centar)*0.1
    
    %starting points of trajectory of each comet
    track_start_X=X_points_transl(1,1)
    track_start_Y=Y_points_transl(1,1)
    
 
 figure (1)
 
 %plotting of spindle poles
    scatter(X_pole1_transl, Y_pole1_transl)
    hold on
    axis square  
    scatter(X_pole2_transl, Y_pole2_transl)
 %plotting of EB3 comet coordinates
    plot(X_points_transl, Y_points_transl,'-o')
  %plotting starting trajectories of each comet in black color
   plot(track_start_X, track_start_Y,'-o','MarkerSize',5,'MarkerEdgeColor','black', 'MarkerFaceColor',[0 0 0])
    
 end
 

%velocity of EB3 comets

for i=1:length(data)
    EB=importdata(data(i).name)
    EB=EB.data
    
    measurement=EB(:,1);
    X_coord=EB(:,2);
    Y_coord=EB(:,3);
    sp_length=EB(1,5)*0.1
    
    %corrdinates of starting points of EB3 tracks
    x1=EB(1,2);
    y1=EB(1,3);
    
    %corrdinates of ending points of EB3 tracks
    row=size(measurement,1);
    x2=EB(row,2);
    y2=EB(row,3);
    
    %calculation of Euclidian distance between starting and ending point of
    %each trajectory; multiplication with pixel size for value in microns
    path=sqrt((x2-x1)^2+(y2-y1)^2);
    path_micron=path*0.1
    
    %calculation of time in which EB3 comet is tracked  
    time_max=(row-1)*1.5 %1.5 s - time between aquisition of images  
    
    %calculation of velocity in microns per minute 
    velocity=(path_micron/time_max).*60
        
end

R script

#fit exp on PRC1 removal data

PRC1_removal <- data.frame(x=time_min[1:120], y=means[1:120])
plot(PRC1_removal$x, PRC1_removal$y, pch=19, xlab="Time (min)", ylab="Normalized PRC1 intensity (a.u.)")
exponential.model <- lm(log(PRC1_removal$y) ~ PRC1_removal$x)
summary(exponential.model)
nonlinear_model <- nls(y ~ (A * exp(-tau * x)), data=PRC1_removal, start=list(A=1, tau=coef(exponential.model)[2]))
coefficients_nonlinear_model <- coef(nonlinear_model)
y_function <- coefficients_nonlinear_model["A"] * (exp( -1 * coefficients_nonlinear_model["tau"] * PRC1_removal$x))
lines(PRC1_removal$x, y_function, col="red")

#fit exp on PRC1 return data

PRC1_return <- data.frame(x=time_min[121:length(means)]-time_min[121], y=means[121:length(means)])
plot(PRC1_return$x,PRC1_return$y, pch=19, xlab="Time (min)", ylab="Normalized PRC1 intensity (a.u.)")
log_model <- lm((PRC1_return$y) ~ PRC1_return$x)
nonlinear_model_offset <- nls(y ~ ((A * (exp(-tau * x))) + c), data=PRC1_return, start=list(A=-1, tau=coef(log_model)[2], c=1))
coefficients_nonlinear_model_offset <- coef(nonlinear_model_offset)
y_function_offset <- coefficients_nonlinear_model_offset["A"] * ( exp(-1 * coefficients_nonlinear_model_offset["tau"] * PRC1_return$x)) + coefficients_nonlinear_model_offset["c"]
lines(PRC1_return$x, y_function_offset, col="red")

#calculate dEQ, angleKC and dAX

for (i in 1:length(KC_coord_list)){
# xy positions of metaphase plate line
  x1 = as.numeric(as.character(KC_coord_list_main[[i]][1,1]))
  y1 = as.numeric(as.character(KC_coord_list_main[[i]][1,2]))
  x2 = as.numeric(as.character(KC_coord_list_main[[i]][2,1]))
  y2 = as.numeric(as.character(KC_coord_list_main[[i]][2,2]))
  
  m_main=(y2-y1)/(x2-x1) # metaphase plate
  m_perpendicular=-1/m_main # long axis
  
  midpoint_main_x=(x1+x2)/2
  midpoint_main_y=(y1+y2)/2
  
  for (j in 0:((((nrow(KC_only_coord_list[[i]]))/2)-1))){
    
    xa = as.numeric(as.character(KC_coord_list[[i]][2*j+1,1]))
    ya = as.numeric(as.character(KC_coord_list[[i]][2*j+1,2]))
    xb = as.numeric(as.character(KC_coord_list[[i]][2*j+2,1]))
    yb = as.numeric(as.character(KC_coord_list[[i]][2*j+2,2]))
    
    midpoint_kc_x=(xa+xb)/2
    midpoint_kc_y=(ya+yb)/2

    k=j+1

    distance_eq[k,i] <-  abs ((-m_main*midpoint_kc_x) + (1*midpoint_kc_y) + (m_main*x1 - y1))/sqrt((-m_main * -m_main) + ((1)*(1)))
    distance_ax[k,i] <-  abs ((-m_perpendicular*midpoint_kc_x) + (1*midpoint_kc_y) + (-m_perpendicular*midpoint_main_x - midpoint_main_y))/sqrt((-m_perpendicular * -m_perpendicular) + ((1)*(1)))
    m_KC=(yb-ya)/(xb-xa)
    angle[k,i] <-  57.2958*atan(abs((m_perpendicular-m_KC)/(1+m_perpendicular*m_KC)))
  }}

#fit circle on 5 points, first at pole, fifth at plus tip of k-fiber

curvature <- function(x,y){ 
  a = qr.solve(cbind(x,y,rep(1,length(x))),cbind(-(x^2+y^2))) 
  radius  =  sqrt((a[1]^2+a[2]^2)/4-a[3]) 
  curvature = (1/radius)
  output <- cbind(radius, curvature) 
  return(output)
  }

#calculate theta from ten tracked points, first and last in pole

for (i in 1:length(tracked_points_matrix)){
  x1 = matrix_x[5,i]-matrix_x[4,i]
  y1 = matrix_y[5,i]-matrix_y[4,i]
#point five is at plus tip of first k-fiber
  x2 = matrix_x[7,i]-matrix_x[6,i]
  y2 = matrix_y[7,i]-matrix_y[6,i]
#point 6 is at plus tip of second k-fiber
  m1 <-  y1/x1
  m2 <- y2/x2
  difference[i]  <-  atan(abs((m2-m1)/( 1+(m2*m1))))
}

theta <- abs(difference*180/3.14-180)

