## helperFunctions
#
################################################################################
##-----------------------------------------------------------------------------
## .timeStamp
## add time stamp and file name as a unique signature of the
## output file @export .timeStamp
.timeStamp=function(filename) {
basename=basename(filename)
name=unlist(strsplit(basename, split="[.]"))
fileName=paste(name[1], "-", format(Sys.time(), "%Y%m%d_%H%M%S"),
sep="")
return(fileName)
}
##-----------------------------------------------------------------------------
## .valid
# validity check for dt less than track length (-1)
.valid=function(dt, track) {
# get track length of all tracks
tracklen=dim(track)[1]
if (dt > (tracklen - 1)) {
stop("\ntrack length:\t", dim(track)[1], "\ndt:\t\t", dt,
"\nTime interval (dt) greater than track length-1\n")
}
}
.valid=function(dt, track) {
# get track length of all tracks
tracklen=dim(track)[1]
if (dt > (tracklen - 1)) {
stop("\ntrack length:\t", dim(track)[1], "\ndt:\t\t", dt,
"\nTime interval (dt) greater than track length-1\n")
}
}
##-----------------------------------------------------------------------------
## tracks.msda2sjr
## @export tracks.msda2sjr
tracks.msda2sjr=function(file){
tracks.file=readMat(file)
# file.name=basename(file)
tracks.mat=tracks.file$tracks
trackl.sjr=lapply(tracks.mat, function(x){
x=data.frame(x)
x=x[,-1] # remove time column
x=x/0.107 # change micrometer to pixel
colnames(x)=c("x","y")
x$z=rep(1,times=dim(x)[1])
return(x)
})
trackll.sjr=list(trackl.sjr)
names(trackll.sjr)=basename(file)
return(trackll.sjr)
}
# convert msda to sojourner format not used in functions yet
##-----------------------------------------------------------------------------
## same.scale
same.scale=function(mixmdl.lst) {
scale=list()
length(scale)=length(mixmdl.lst)
names(scale)=names(mixmdl.lst)
for (i in seq_along(mixmdl.lst)) {
den=density(mixmdl.lst[[i]]$x)
scale.x=c(min=min(den$x), max=max(den$x))
scale.y=c(min=min(den$y), max=max(den$y))
scale[[i]]=data.frame(scale.x, scale.y)
}
scale.df=do.call(rbind.data.frame, scale)
scale.same=data.frame(apply(scale.df, 2, function(x) {
c(min=min(x), max=max(x))
}))
return(scale.same)
}
##-----------------------------------------------------------------------------
## seedIt
## @export seedIt
# seedIt=function(expr,seed){
# if (is.null(seed)){
# seed=sample(0:647,1)
# set.seed(seed)
# }else{set.seed(seed)}
#
# note <- paste("\nRandom number generation seed",seed,"\n")
# cat(note)
# structure(expr, seed=seed)
# }
# can't be used according to BiocCheck()
# WARNING: Remove set.seed usage in R code
# https://support.bioconductor.org/p/110439/
##------------------------------------------------------------------------------
## getStartFrame
## getStartFrame returns starting frame of a track/trajectory (using its
## name) at a given index for a track list
# PARAMETERS: track.list,named track list output
# Note: Last five characters of the original file name without extension (cannot
# contain '.')
# index, index of the track in the track list (track number)
## @export getStartFrame
getStartFrame=function(track.list, index) {
return(as.numeric(substr(names(track.list[index]),
gregexpr(pattern="\\.",
names(track.list[index]))[[1]][1] + 1, gregexpr(pattern="\\.",
names(track.list[index]))[[1]][2] - 1)))
}
##-----------------------------------------------------------------------------
## getTrackFileName
## getTrackFileName returns the shortened file name of the track
# PARAMETERS: track.list, named track list output
# Note: Last five characters of the original file name without extension (cannot
# contain '.')
## @export getTrackFileName
getTrackFileName=function(track.list) {
return(substr(names(track.list[1]), 1, gregexpr(pattern="\\.",
names(track.list[1]))[[1]][1] - 1))
}
##-----------------------------------------------------------------------------
## abTrack
## abTrack returns absolute corrdinates of a track (for plotting)
# PARAMETERS:
# PARAMETERS: track=track input to be transformed into absolute
# coordinates
## @export abTrack
abTrack=function(track) {
min.x=min(track$x)
min.y=min(track$y)
return(data.frame(x=track$x - min.x, y=track$y - min.y))
}
##-----------------------------------------------------------------------------
## removeFrameRecord
## removeFrameRecord remove frame record for backwards compatibility
#PARAMETERS:
# PARAMETERS: track.list=track list with frame record in the fourth
# column
## @export removeFrameRecord
removeFrameRecord=function(track.list) {
for (i in seq_along(track.list)) {
track.list[[i]] <- track.list[[i]][-c(4)]
}
return(track.list)
}
convert.abtrackll=function(trackll){
ab.trackll=list()
for(i in seq_along(trackll)){
segl=trackll[[i]]
segl=lapply(trackll[[i]], abTrack)
ab.trackll[[i]]=segl
}
names(ab.trackll)=names(trackll)
return (ab.trackll)
}
##-----------------------------------------------------------------------------
#TODO:
# add a one line description to all the helper functions, and maybe output a map
# of function for the helpers as well. it apears all the helpers has been
# exported, so maybe there is no need to sync this function between sojourner
# and sojourner.pro.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.