rapids/src/features/location_barnett/InitializeParams.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))
}