59 lines
1.8 KiB
R
59 lines
1.8 KiB
R
InitializeParams <-
|
|
function(out){
|
|
ID1=which(out[,1]==1)
|
|
ID2=which(out[,1]==2)
|
|
ID3=which(out[,1]==3)
|
|
ID4=which(out[,1]==4)
|
|
|
|
# probability of a pause after a flight
|
|
ID1p1=ID1+1
|
|
if(length(ID1)>0 && ID1[length(ID1)]==nrow(out)){
|
|
ID1p1=ID1p1[-length(ID1p1)]
|
|
}
|
|
allts=apply(out,1,function(xx) mean(xx[c(4,7)]))
|
|
allxs=out[,2]
|
|
allys=out[,3]
|
|
ind11=ID1p1[which(out[ID1p1,1]==1)]
|
|
ind12=ID1p1[which(out[ID1p1,1]==2)]
|
|
l1=length(ind11)
|
|
l2=length(ind12)
|
|
if(l1+l2>0){
|
|
phatall=l2/(l1+l2)
|
|
}
|
|
if(l1+l2==0){phatall=length(ID2)/(length(ID1)+length(ID2))}
|
|
#flight distances
|
|
fd=apply(out[ID1,],1,function(xx) sqrt((xx[2]-xx[5])^2+(xx[3]-xx[6])^2))
|
|
|
|
# flight times: ft
|
|
ft=apply(out[ID1,],1,function(xx) (xx[7]-xx[4]))
|
|
fxs=out[ID1,2]
|
|
fys=out[ID1,3]
|
|
# flight angles range [0,2pi]: fa
|
|
#fa=apply(out[ID1,],1,function(xx) atan((xx[6]-xx[3])/(xx[5]-xx[2]))-((sign(xx[6]-xx[3])-1)/2)*pi)
|
|
fa=rep(0,length(ID1))
|
|
yvals=out[ID1,6]-out[ID1,3]
|
|
xvals=out[ID1,5]-out[ID1,2]
|
|
IDyg0=which(yvals>=0)
|
|
IDxg0=which(xvals>=0)
|
|
IDyl0=which(yvals<0)
|
|
IDxl0=which(xvals<0)
|
|
IDgg=intersect(IDyg0,IDxg0)
|
|
IDlg=intersect(IDyg0,IDxl0)
|
|
IDgl=intersect(IDyl0,IDxg0)
|
|
IDll=intersect(IDyl0,IDxl0)
|
|
fa[IDgg]=atan(yvals[IDgg]/xvals[IDgg])
|
|
fa[IDgl]=atan(yvals[IDgl]/xvals[IDgl])+2*pi
|
|
fa[IDlg]=atan(yvals[IDlg]/xvals[IDlg])+pi
|
|
fa[IDll]=atan(yvals[IDll]/xvals[IDll])+pi
|
|
# flight time stamps: fts
|
|
fts=out[ID1,4]
|
|
|
|
# pause times
|
|
pt=apply(matrix(out[ID2,],ncol=7),1,function(xx) xx[7]-xx[4])
|
|
pxs=out[ID2,2]
|
|
pys=out[ID2,3]
|
|
#pause time stamp: pts
|
|
pts=out[ID2,4]
|
|
return(list(ID1=ID1,ID2=ID2,ID3=ID3,ID4=ID4,ID1p1=ID1p1,allts=allts,ind11=ind11,ind12=ind12,phatall=phatall,fd=fd,ft=ft,fa=fa,fts=fts,pt=pt,pts=pts,fxs=fxs,fys=fys,pxs=pxs,pys=pys,allxs=allxs,allys=allys))
|
|
}
|