actel v1.1.0


Monthly downloads



Acoustic Telemetry Data Analysis

Designed for studies where fish tagged with acoustic tags are expected to move through receiver arrays. This package combines the advantages of automatic sorting and checking of fish movements with the possibility for user intervention on tags that deviate from expected behaviour. The three analysis functions (explore(), migration() and residency()) allow the users to analyse their data in a systematic way, making it easy to compare results from different studies. CJS calculations are based on Perry et al. (2012) <>.


Jump to installation instructions


R-CMD-check Travis Build Status CRAN\_Status\_Badge CRAN RStudio mirror downloads

codecov of non-interactive code*

Read the latest news here!


If you are using acoustic telemetry to track animals as they move inside a study area or as they migrate somewhere, actel is the package for you. By bringing together the study area configuration and the recorded detections, actel provides a systematic way of analysing fish migration and residency data.


Main functions:

1. explore()

explore() allows you to quickly get a summary of your data. You can use explore() to get a general feel for the study results, and check if the input files are behaving as expected. It is also a good candidate if you just want to validate your detections for later use in other analyses.

2. migration()

The migration() analysis runs the same initial checks as explore(), but on top of it, it analyses the fish behaviour. By selecting the arrays that lead to success, you can define whether or not your fish survived the migration. Additional plots help you find out if some fish has been acting odd. Multiple options allow you to tweak the analysis to fit your study perfectly.

3. residency()

The residency() analysis runs the same initial checks as explore(), but, similarly to migration, explores particular points of the fish behaviour. If you want to know where your fish were in each day of the study, how many fish were in each section each day, and other residency-focused variables, this is the analysis you are looking for!

Unlock actel's full potential

To truly learn how to operate actel, you must read the package vignettes. These have been arranged so that you can prepare your analysis as you learn; quite soon you will get your first results!

Here are some examples:

Movement tables:

Array Detections First station Last station First time Last time Time travelling Time on array
River1 14 St.1 St.2 2019-05-15 10:30:00 2019-05-15 13:00:00 NA 3:30
River2 3 St.4 St.4 2019-05-15 13:50:00 2019-05-15 14:40:00 0:50 0:50
River3 8 St.5 St.6 2019-05-15 16:00:00 2019-05-15 16:20:00 1:20 0:20
Fjord2 21 St.10 St.11 2019-05-16 15:10:00 2019-05-16 18:00:00 22:50 2:50
Sea1 1 St.18 St.18 2019-05-18 09:45:00 2019-05-18 09:45:00 15:45 0:00

Detection graphics

drawing drawing

Times of arrival and summary information

drawing drawing

Array efficiency and fish progression


Individual residency


Global residency


Installing actel

CRAN version: 1.0.0

actel is available on CRAN. To install the latest stable version, simply run:


Development version

If you would like to install the latest updates (which have not been integrated to CRAN yet), you can run the line below. Note that you need to have the package remotes installed!

remotes::install_github("hugomflavio/actel", build_opts = c("--no-resave-data", "--no-manual"), build_vignettes = TRUE)

Have a look at the manual:

After installing, you should read the package vignettes (i.e. the manual), which can be found by running:



  1. If the vignettes are not showing up with the command above, you can download them directly here:
  2. If you are getting "pandoc document conversion" errors during the package installation, try installing the newest version of pandoc, restarting R and trying again.

* interactive code (i.e. code that expects user input) cannot be tested automatically using codecov and, as such, was excluded from the codecov scope.

Functions in actel

Name Description
assembleGroupCJS Assembles CJS tables for all groups
advEfficiency Calculate beta estimations for efficiency
assembleResidency Collect summary information for the residency analysis
assembleSectionOverview Create section.overview
assembleMatrices Assemble detection matrices
assembleOutput Create status.df
assembleArrayCJS Combine the individual CJS's of each array into a single table
appendTo Append to ...
actel actel: Acoustic Telemetry Data Analysis
actel-deprecated Deprecated functions in package actel.
checkDeploymentTimes Confirm that receivers were not re-deployed before being retrieved
checkDetectionsBeforeRelease Check if there are detections for the target tags before release.
checkLinearity Check that the fish linearly moved along the sections
checkMinimumN Check that the fish have enough detections to be valid
checkArguments Check argument quality
checkInactiveness Find if a fish is standing still in an array
checkSpeeds check fish speeds against defined thresholds (in m/s)
checkSMovesN Verify number of detections in section movements
blameArrays Find which arrays to blame for a jump in movement events
checkDeploymentStations Confirm that the station names in the deployments table match those listed in the spatial file
breakMatricesByArray Break the detection matrices per array
countBackMoves Count backwards movements
collectStrays Collect summary information on the tags detected but that are not part of the study.
cjs_args CJS.R arguments
countArrayFailures Find and list arrays which failed during the movements of the fish
dailyRatios calculate daily ratios per fish
combine Combine a list of vectors
checkJumpDistance Check if fish are jumping over arrays
circularSection Draw a section on the outside of the circle
check_args check.R arguments
checkUnknownReceivers Find detections from unknown receivers
dailyRatiosIndOut compile output of dailyRatios
completeMatrix Complete a Distances Matrix
efficiencyMatrix Compile inter-array detection matrix
checkUpstream Check for movements upstream of the release site.
compileDetections Combine ALS detections
example.deployments Example deployment data
copyOfCirclePlotRad circular:::circlePlotRad
assembleSplitCJS Assembles CJS tables for all group x release site combinations
example.detections Example detection data
emergencyBreak Standard procedure when aborting
checkDupSignals Check if there are duplicated signals in the detected tags.
deleteHelpers Delete temporary files
checkDupDetections Check if there are duplicated detection in the input data
combineCJS Combine multiple CJS models
getDualMatrices Prepare intra-array matrices for selected arrays
getResidency Assemble residency tables per fish
checkNoDetections Check if there are detections matching the target tags.
fact nearsq helper
assembleTimetable Create the timetable
dataToList Import RData in a list format
convertCodes Convert code spaces
checkImpassables Find out if a fish moved in an impossible direction
checkGUI Check if the dependencies required to open a GUI are installed, and if opening a GUI does not throw an error. Some code adapted from RGtk2's .onLoad function.
emptyMatrix Create a Template Distances Matrix
decimalTime Convert hh:mm:ss time to hh.hhh
convertTimes Convert Times
findDirectChains Find all arrays linked to an array in a given direction
includeUnknownReceiver Temporarily include missing receivers in the spatial object
example.biometrics Example biometric data
checkTagsInUnknownReceivers Check for target data in the unknown receivers
createWorkspace Create a Default Workspace
createUniqueSerials Include the deployment in the serial number of the receive
checkReport Check report compatibility
copyOfRosediagRad circular:::RosediagRad
createStandards Standardize serial numbers, stations and arrays in the detections
dailyPositions Find the location where the fish spent most time per day
extractCodeSpaces Extract Code Spaces from transmitter names
discardFirst Discard early detections
checkToken Verify that the source data has been compiled using actel's preload function
dotMatrix Create numerical distances between dot elements
invalidateEvents Allow the user to determine a given movement event invalid
extractSignals Extract signals from transmitter names
movementSpeeds Calculate time and speed
minuteTime Convert numeric time to HH:MM
movementTimes Calculate movement times
myRoseDiag Edited rose diagram function
printCircular Print circular graphics for each array
printDot Print DOT diagram
printProgression Print progression diagram
printMigrationRmd Print Rmd report
dualArrayCJS Calculate estimated last-array efficiency
explore Explorative Analysis
loadBio Load Biometrics file
distancesMatrix Calculate Distances Matrix
simpleCJS Analytical CJS model
getSpeeds Extract speeds from the analysis results.
dotList Break the dot data frame into a list
ringsRel Draw rings at relative points
excludeTags Collect summary information on the tags detected but that are not part of the study.
roseMean Draw mean value in the axis margin
simplifyMovements Removes invalid events
dualMatrix Compile detection matrix for last array
example.results Example migration results
dotPaths Find arrays valid for efficiency calculation
example.distances Example distances matrix
example.spatial Example spatial data
loadShape Load shapefile and convert to a raster object.
loadDetections Load ALS detections
loadDot Load
gg_colour_hue Generate default ggplot colours
globalRatios Calculate number/percentage of fish at each location for each day
loadDistances Load distances matrix
findShortestChains Find the shortest paths between arrays
exampleWorkspace Deploy Example Data
loadDeployments Load deployments file and Check the structure
findPeers Find efficiency peers for each array
findSecondsPerSection Calculate number of seconds at each location per day
firstArrayFailure Determine if the first array after release has failed
matchl TRUE/FALSE wrapper for match
graphicalInvalidate Opens a new window that allows the user to determine movement event invalidity
mbGroupCJS Calculate CJS for each group for each array
getTimes Extract timestamps from the analysis results.
includeMissing Include fish that were never detected
includeIntraArrayEstimates Incorporate intra-array estimates in the overall CJS object
loadSpatial Load Spatial File
oneWayMoves Trim movements table to contain only uni-directional movements
loadStudyData Load, structure and check the inputs
stripCodeSpaces-deprecated Remove Code Spaces from transmitter names Consider NA's as FALSE
groupMovements Group movements
substrRight Subset a character string counting from the right end
printSectionTimes Print arrival and departure times per section
printResidencyRmd Print Rmd report
mbSplitCJS Calculate CJS for each group.release combination
plotMoves Plot detections for a single tag
migration Migration Analysis
preload Load a dataset before running an analysis
preloadDetections Run quality checks on preloaded detections
plotTimes Print circular graphics for time series.
printDotplots Print dotplots
printIndividuals Print individual graphics
printIndividualResidency print the individual locations per day
printSensorData Print sensor data for each individual tag
printSurvivalGraphic Print survival graphic
res_efficiency Calculate array efficiency for residency analysis
residency Residency Analysis
speedReleaseToFirst Calculate time and speed since release.
overrideValidityChecks Skips all validity checks for a fish and allows the user to freely invalidate events
validateDetections Compare original detections with the valid movements and exclude invalid detections
userInput Wrap frequently used code to handle user input
printGlobalRatios print the distribution of fish per location
processStandardFile Standard detections file created for actel
printExploreRmd Print Rmd report
processThelmaOldFile Thelma old export files
processThelmaNewFile Thelma new export files
printEfficiency Print efficiency fragment
splitDetections Split detections by tag
nearsq Find optimum plotting grid
tableInteraction Handler for table interaction events
printArrayOverview print Rmd fragment for inclusion in the report
timesToCircular Convert a data frame with timestamps into a list of circular objects
readDot Read dot file or string
printLastArray Print a simple barplot with the number of fish last seen at each section
printLastSection Print a simple barplot with the number of fish last seen at each section
printBiometrics Print biometric graphics
vectorsIntoTables Transform vectors into data frames with specific columns
roundDown Forcefully round a number down
res_assembleOutput Create status.df
storeStrays Store summary information on the stray tags detected in a permanent file.
roundUp Forcefully round a number up
stopAndReport stop function but paste error to the report too
stationName Find original station name
sectionMovements Compress array-movements into section-movements
setSpatialStandards Create Standard Names for spatial elements
processVemcoFile Vemco files
transferValidity Transfer validity updates from valid movements to all movements
std.error.circular Calculate the standard error of the mean for circular data
transformSpatial Process spatial elements
transitionLayer Calculate Transition Layer
updateValidity update array-movement validity based on the section-movements
No Results!

Vignettes of actel

No Results!

Last month downloads


License GPL-3
Encoding UTF-8
LazyData true
RoxygenNote 7.1.1
Language en-GB
VignetteBuilder knitr
NeedsCompilation no
Packaged 2020-08-01 10:40:56 UTC; hdmfla
Repository CRAN
Date/Publication 2020-08-01 11:10:11 UTC

Include our badge in your README