View source: R/sim-detect_transmissions.r
| detect_transmissions | R Documentation |
Simulates detection of transmitter signals in a receiver network based on detection range curve (detection probability as a function of distance), location of transmitter, and location of receivers.
detect_transmissions(trnsLoc = NA, recLoc = NA, detRngFun = NA, EPSG = 3175, sp_out = TRUE, show_progress = TRUE)
trnsLoc |
A three-column data frame with locations (numeric columns named 'x' and 'y') and timestamps (numeric or POSIXct column named 'et') where signals were transmitted. |
recLoc |
A two-column data frame with receiver locations (numeric columns named 'x' and 'y') |
detRngFun |
A function that defines detection range curve; must accept a numeric vector of distances and return a numeric vector of detection probabilities at each distance. |
EPSG |
Numeric EPSG code of the coordinate system used for simulations. Default is 3175, a projected coordinate system for the North American Great Lakes Basin and St. Lawrence River system. http://spatialreference.org/ref/epsg/nad83-great-lakes-and-st-lawrence-albers/ |
sp_out |
Logical. If TRUE (default) then output is a SpatialPointsDataFrame object. If FALSE, then output is a data.frame. |
show_progress |
Logical. Progress bar and status messages will be shown if TRUE (default) and not shown if FALSE. |
Distances between each signal transmission location and receiver are
calculated using pythagorean theorem in CRS specified by EPSG. The
probability of detecting each signal on each receiver is determined from the
detection range curve. Detection of each signal on each receiver is
determined stochastically by draws from a Bernoulli distribution with
probability p (detection prob).
This function was written to be used along with
transmit_along_path.
A SpatialPointsDataFrame comprised of (1) a spatial component with
the coordinates of receivers that recorded each detection and (2) a data
frame component with the following columns:
trns_id |
Unique signal transmission ID |
recv_id |
Unique receiver ID |
recv_x |
Receiver x coordinate |
recv_y |
Receiver y coordinate |
trns_x |
Transmitter x coordinate at time of transmission |
trns_y |
Transmitter y coordinate at time of transmission |
etime |
Elapsed time |
Only the data frame component is returned when sp_out = FALSE.
C. Holbrook (cholbrook@usgs.gov)
transmit_along_path to simulate transmissions along a
path (i.e., create trnsLoc).
library(sp) #for plot methods for spatial objects
#make a simple path in polygon
mypath <- crw_in_polygon(data.frame(x = c(0, 0, 1000, 1000),
y = c(0, 1000, 1000, 0)), stepLen=100, nsteps=50)
plot(mypath,type='l',xlim=c(0,1000),ylim=c(0,1000)) #view path
#add receivers
recs <- expand.grid(c(250,750),c(250,750))
names(recs) <- c("x","y") #needed by detect_transmissions
points(recs, pch=15, col="blue")
#simulate tag transmissions
mytrns <- transmit_along_path(mypath,vel=2.0,delayRng=c(60,180),burstDur=5.0)
points(mytrns,pch=21) #add to plot
#Define detection range function (to pass as detRngFun)
# that returns detection probability for given distance
# assume logistic form of detection range curve where
# dm = distance in meters
# b = intercept and slope
pdrf <- function(dm, b=c(0.5, -1/120)){
p <- 1/(1+exp(-(b[1]+b[2]*dm)))
return(p)
}
pdrf(c(100,200,300,400,500)) #view detection probs. at some distances
#simulate detection
mydtc <- detect_transmissions(trnsLoc=mytrns, recLoc=recs, detRngFun=pdrf)
#view transmissions that were detected
points(trns_y~trns_x, data=mydtc,pch=21, bg="red")
#link transmitter and receiver locations for each detection
with(mydtc@data, segments(x0 = trns_x, y0 = trns_y,
x1 = recv_x, y1 = recv_y,
col = "red"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.