RossDwyer / VTrack

V-Track: software for analysing and visualising animal movement from acoustic telemetry detections
https://cran.r-project.org/web/packages/VTrack/index.html
13 stars 5 forks source link

Error in ResidenceExtractId1(i) : task 5 failed - "argument is of length zero #26

Open AGREEN941 opened 1 year ago

AGREEN941 commented 1 year ago

I keep having my code error at ResidenceExtractId:

VTrack - All data

use Raw2022_TRUE file

Install packages

install.packages("VTrack") library(VTrack)

1st:Analyse data sheet (Raw2020_True)

see data frame

head(Raw2020_TRUE)

need to combine receiver type and receiver

Raw2020_TRUE$test3 <- cbind(Raw2020_TRUE$Receiver_Type,Raw2020_TRUE$receiver_sn, by="-") Raw2020_TRUE$test3 <- paste(Raw2020_TRUE$Receiver_Type, "-", Raw2020_TRUE$receiver_sn)

see data frame

head(Raw2020_TRUE)

sorting out files for Vtrack compatibility - change column names

colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="test3"] <- "Receiver.Name" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="receiver_sn"] <- "Receiver.S.N" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="detection_timestamp_utc"] <- "Date.Time" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="transmitter_id"] <- "ID"

see data frame

head(Raw2020_TRUE)

Remove unnecessary columns

Raw2020_TRUE$Freq<-NULL Raw2020_TRUE$Code<-NULL Raw2020_TRUE$CodeSpace<-NULL Raw2020_TRUE$Longitude<-NULL Raw2020_TRUE$Latitude<-NULL Raw2020_TRUE$Station.Name<-NULL Raw2020_TRUE$station_no<-NULL Raw2020_TRUE$release_longitude<-NULL Raw2020_TRUE$release_latitude<-NULL

look at data frame

head(Raw2020_TRUE)

sorting out files for Vtrack compatibility - change column names

colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="deploy_lat"] <- "Station.Latitude" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="deploy_long"] <- "Station.Longitude" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="transmitter_codespace"] <- "Code.Space" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="Signal"] <- "ID" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="station"] <- "Station.Name" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="glatos_tag_recovered"] <- "Sensor.2" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="Sensor_value"] <- "Sensor.1" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="Sensor_unit"] <- "Units.1" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="sex"] <- "Units.2" colnames(Raw2020_TRUE)[colnames(Raw2020_TRUE)=="tag_serial_number"] <- "Transmitter.S.N"

look at data frame

head(Raw2020_TRUE)

Put into VTrack column order

Raw2020_TRUE <- Raw2020_TRUE[, c("Date.Time","Code.Space","ID", "Sensor.1","Units.1", "Sensor.2","Units.2","Transmitter.Name","Transmitter.S.N","Receiver.Name","Receiver.S.N","Station.Name","Station.Latitude","Station.Longitude")]

Extracts single or dual sensor data from a raw VEMCO

data2020<-ReadInputData(Raw2020_TRUE, iHoursToAdd=0, fIMOSATF=FALSE, fVemcoDualSensor=FALSE, dateformat = NULL, sVemcoFormat='1.0')

need full transmitter ID

data2020$test3 <- cbind(Raw2020_TRUE$Code.Space,data2020$TRANSMITTERID, by="-") data2020$test3 <- paste(Raw2020_TRUE$Code.Space,"-",data2020$TRANSMITTERID)

data2020$TRANSMITTERID<-NULL

colnames(data2020)[colnames(data2020)=="test3"] <- "TRANSMITTERID"

data2020 <- data2020[, c("DATETIME","TRANSMITTERID","SENSOR1","UNITS1","RECEIVERID","STATIONNAME")]

str(data2020)

make sure you remove the spaces between the transmitter ID as this might cause issues

data2020$TRANSMITTERID<-gsub(" ", "",data2020$TRANSMITTERID)

data2020$TRANSMITTERID<-as.character(data2020$TRANSMITTERID) data2020$SENSOR1<-as.numeric(data2020$SENSOR1) data2020$UNITS1<-as.character(data2020$UNITS1) data2020$RECEIVERID<-as.character(data2020$RECEIVERID) data2020$STATIONNAME<-as.character(data2020$STATIONNAME)

need to input MATRIXdata

Set working directory

setwd("/Volumes/Ph.D/Raw Files/2020")

load in data file

MATRIX<- read.csv("/Volumes/Ph.D/Raw Files/2020/MATRIX.csv")

colnames(MATRIX)[colnames(MATRIX)=="Location"] <- "LOCATION" colnames(MATRIX)[colnames(MATRIX)=="Latitude"] <- "LATITUDE" colnames(MATRIX)[colnames(MATRIX)=="Longitude"] <- "LONGITUDE" colnames(MATRIX)[colnames(MATRIX)=="Radius"] <- "RADIUS" MATRIX$LOCATION<-as.integer(as.character(MATRIX$LOCATION))

Make the matrix

MATRIX <- na.omit(MATRIX)

MATRIX_2020 <- GenerateDirectDistance(MATRIX)

rownames(MATRIX_2020) <- MATRIX_2020[,1]

MATRIX_2020$DM<-NULL

Extract Residence and Nonresidence Events Within the Acoustic Detection Database- THIS CAN TAKE HOURS

THE NUMBER OF PINGS WE EXPECT TO BE COUNTED AS NOT FALSE ARE 2

data2020$TRANSMITTERID<-as.factor(data2020$TRANSMITTERID) data2020$RECEIVERID<-as.factor(data2020$RECEIVERID)

run all above fish subsets (need to change data frame and title for each)

Vtrack2020<-RunResidenceExtraction(data2020,"RECEIVERID",1,840, sDistanceMatrix = MATRIX_2020, iCores = 4)

This code is taking at least 12 hours and then errors saying: Error in ResidenceExtractId1(i) : task 5 failed - "argument is of length zero"

Literally don't know how to solve this!!!