1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
#required packages
library(plyr)
library(lattice)
library(stats)
library(MSDtracking)
library(ggplot2)
library(ggpol)

#input variables
framerate <- 1/52 #1/200 #1/ms
n <- 4 #number of timepoints taken into account for MSD fit
fitzero <- TRUE #should fit go through origin (0,0)

min_length <- 6 #minimum length track
#pixelsize <- c(1000,1000,1000) #nm
pixelsize = 1000
fitMSD <- T
offset <- 4*(0.01)^2 #experimentally determined
max_tracks <- 500 #maximum number of tracks per frame else exclude tracks from dataset, avoids mislinking of tracks
dim <- 2 #number of dimensions of tracking

directory <- "E:/track_mask/"
condition_list <- list.dirs(directory,full.names = F,recursive = F)
#condition_list <- condition_list[c(1,2)]


msd_analyze_data_mosaic_mask(directory,condition_list,framerate,n,fitzero,min_length,pixelsize,fitMSD,offset,max_tracks,dim=dim)


load(file.path(directory,"msd_fit_all_  .Rdata"))
#load(file.path(directory,"track_stats_all.Rdata"))
load(file.path(directory,"segments_all_  .Rdata"))

#msd_histogram(msd_fit_all,directory,threshold = 0.05)

ggplot(data = msd_fit_all$`dDBD HU`,aes(x=D,y=..density..,color=inMask)) +
  geom_histogram(position="identity",fill="white",alpha=0.1) + scale_x_log10(limits=c(0.00005,2))


#angle
ML_load()

segments_all[1] <- llply(segments_all[1],function(x) {ddply(x,.variables = c("cellID","track"),function(x){
  if(nrow(x)>5){
    if(any(x$inMask==TRUE)){
      x$trackInMask <-TRUE
    } else {
      x$trackInMask <-FALSE

    }

    if(x$inMask[1]==0){
      currState <- "0"
    } else {
      currState <- "1"
    }
    stateSeq <- ""
    lengthState <- ""
    lengthCurState <- 1
    for(i in 1:(nrow(x)-1)){
      if(x$inMask[i]==x$inMask[i+1]){
        lengthCurState <- lengthCurState+1
      } else {
        lengthState <- paste0(lengthState, ".",lengthCurState)
        lengthCurState <- 1
        stateSeq <- paste0(stateSeq,currState)
        if(x$inMask[i+1]==0){
          currState <- "0"
        } else {
          currState <- "1"
        }
      }
    }
    if(x$inMask[i]==x$inMask[i+1]){
      lengthState <- paste0(lengthState, ".",lengthCurState)
      stateSeq <- paste0(stateSeq,currState)
    } else {
      lengthState <- paste0(lengthState, ".",1)
      stateSeq <- paste0(stateSeq,x$inMask[i+1])
    }
    x$stateLength <- substring(lengthState, 2)
    x$stateSeq <- stateSeq
    return(x)
  }
})})

#ML_segment_tracks(subset(segments_all$`dCTD HU`,cellID=="Traj_190316exp3_53bp1_GFP_B2dCTDA2_HU_50ms_100_f488int_0001__Ch1_preprocessed_tracks_mask.csv"))

segments_all <- llply(segments_all,function(x){
  ML_segment_tracks(x,directory=directory)
}
)

segs <- subset(segments_all$`dCTD MMC`,segments_all$`dCTD MMC`$cellID==segments_all$`dCTD MMC`$cellID[1])

save(segments_all,file=file.path(directory,"segments_all_ML.Rdata"))

name <- 'WT MMC'

segments_all[[name]]$displacement <- sqrt(segments_all[[name]]$step_x^2+segments_all[[name]]$step_y^2)
inputdata <- subset(segments_all[[name]],displacement>0.2&angle>0&inMask==F&state<2)


angles <- hist(c(inputdata$angle,abs(360-inputdata$angle)),breaks = seq(0,360,15),plot=F)

angles <- data.frame('mids'=angles$mids,'density'=angles$density)

ggplot(angles,aes(x = mids,y=density,fill=density))+geom_bar(stat='identity',width=16) +ylim(c(0,.01))+scale_x_continuous(breaks=seq(0, 350, 45))+coord_polar(start = 0.5*pi,direction = 1)+
  theme(legend.position = "none",text = element_text(size=15))
angles
==