The colonytrack_metrics object contains features/metrics calculated from the tracking data. The data are segmented by day (technically by ‘window’; see the following section) and processed in parallel to extract a range of metrics describing the activity of the subjects and their interactions with each other. Details of the resulting colonytrack_metrics object are given below.

## Calculation of the metrics

### Time windows

The metrics are calculated for blocks of time, referred to as ‘windows’. In the current version of the software, these windows default to a 12-hour period during the dark phase (ZT12–ZT24). Support for calculation of light phase metrics (and limited support for customised window intervals) will be added to an upcoming version. An additional parameter trim allows for hours to be trimmed off the start and end of the metrics calculation period. This makes it possible to remove the first and last hours of data in the situation that the light cycle is not strictly maintained for example. This feature could also enable the user to focus on a particular period of interest—although it is recommended to perform such trimming during later analysis of the metrics results. The trim parameter will only accept integer values (rounded hours) and care should be taken in interpreting the results if this feature is used. The windows are described in the windows section of the info component and consist of an ID (by default the date in YYYY-MM-DD format) and a start and end time as UNIX timestamps.

### Cage layout

The cage layout is described in the cage.layout section of the info component as a list of igraph objects (see the data object description for additional background). This list, with one cage layout per day, allows for the flexibility to include modifications of the cage layout during an experiment. The igraph objects are passed through from the colonytrack_data object and contain the same information.

## Components of the metrics object

### Features vs. individual metrics/variables

The calculate_metrics function generates a list of 109 variables, many of which are derivatives (e.g. mean, median, variance) of the same information (see the detailed description below for a list of all metrics that are calculated). All of these values describe the underlying data in subtly different ways and are thus useful for certain applications such as machine learning. Reflecting this intended purpose, these variables are referred to in the metrics object as ‘features’. A list of the feature names can also be obtained computationally by querying a colonytrack_metrics object and inspecting the metrics$info$feature.names component.

For general use, however, the large collection of partially redundant variables is not helpful, so a select subset is returned in the individual component of the metrics object. The names of the individual metrics can be recalled from the metrics$info$var.names component of a colonytrack_metrics object. These individual metrics are accessible for plotting by the plot_metric function. For a detailed description of each of the individual metrics, please refer to the separate metrics details vignette).

### Cage use

The cage.use component holds a list for each day of tracking which is further subdivided into each cage; where the proportion of time spent in each cage by each subject is recorded. Thus the values for the first subject over all cages in one day should sum to 1. This enables the time spent in a cage of interest (e.g. a cage with water access) to be easily calculated and can provide the basis for a customised analysis of your cage set-up.

### Ethogram

The ethogram is calculated hourly and is used as the basis for the built-in plot_ethogram function. The ethogram uses 3 summary metrics to encapsulate the ‘activity’, ‘exploration’ and ‘sociality’ dimensions of the subjects behaviour. Although this does not make use of the full multi-parametric power of ColonyTrack, it provides a rapid and intuitive overview (for users with full colour vision) of the behavioural patterns for very many subjects over long periods of time. The ethogram component makes the numeric data underlying the ethogram plot accessible to users—for example to enable custom plots to be generated. Split into a list by day, the three dimensions (‘activity’, ‘exploration’ and ‘sociality’) are available as a numeric matrix with 12 columns (one for each hour of the day) and a row for each subject. Users can, for example, build a custom one-colour heatmap for each dimension separately using an appropriate palette to provide colourblind-friendly output.

### Clustering

The group-housing nature of the ColonyRack enables interactions between subjects to be recorded. Different to the individual metrics, these social interactions are reported as a subject x subject matrix. The group metrics that are calculated are interaction.time (the amount of time that each pair of subjects spend in the same cage), social.distance (the average number of cages separating each pair of subjects; technically, the mean shortest path in the cage network between the two subjects over the course of the day) and chasing(the number of times one subject [columns] chases another [rows]; see the section on ‘chasing’ below). With the exception of chasing, these interaction matrices are symmetrical (in graph theory parlance, they are undirected networks). The chasing network, on the other hand, is directed—the subject doing the chasing (the ‘aggressor’) is in the rows with the subject being chased (the ‘victim’) in the columns1.

### Chasing and dominance calculation

A chase event is defined as two subjects through the same tunnel in the same direction in rapid (less than 1 second delay) succession. The second subject passing through the tunnel is taken to be pursuing the first (this interpretation has been initially confirmed using video observation of the cage system). The directed nature of this interaction means that a hierarchy can be calculated by summing the ‘wins’ (the number of times a subject was the chaser) for each pair of subjects. A subject with more ‘wins’ over another is taken to be dominant in the social hierarchy. The results are presented using this terminology for practical convenience—the actual dominance relationships identified by this method admittedly require some further investigation. The dominance score for each subject is pre-calculated for convenience from the chase network for each day. It is provided as a raw sum of ‘wins’ and ‘losses’ and can be converted to ranks by the user if desired2.

## Structure of the metrics object

Below is an overview of the hierarchy of the colonytrack_metrics object together with the names and classes of each component. Where the class is not part of the R base package, it is given in square brackets after the class name.

metrics : colonytrack_metrics [ColonyTrack]
info : list
windows : colonytrack_windows [ColonyTrack]
id : character
start : numeric
end : numeric
subjects : character
subject.info : data.frame
SubjectID : character
Tag : character
feature.names : character
var.names : character
cage.layout : list
(window) : igraph [igraph]
processed : POSIXct
version : character
features : list
(subject) : data.frame
path.length : numeric
max.time.in.cage : numeric
mean.time.in.cage : numeric
min.time.in.cage : numeric
sd.time.in.cage : numeric
upper.time.in.cage : numeric
median.time.in.cage : numeric
lower.time.in.cage : numeric
time.high.activity : numeric
time.sustained.activity : numeric
time.active : numeric
time.inactive : numeric
total.activity.burst.time : numeric
max.activity.burst.length : numeric
max.activity.burst.time : numeric
max.cage.use : numeric
mean.cage.use : numeric
min.cage.use : numeric
sd.cage.use : numeric
upper.cage.use : numeric
median.cage.use : numeric
lower.cage.use : numeric
cage.time.entropy : numeric
max.cage.transitions : numeric
mean.cage.transitions : numeric
min.cage.transitions : numeric
sd.cage.transitions : numeric
upper.cage.transitions : numeric
median.cage.transitions : numeric
lower.cage.transitions : numeric
cage.location.entropy : numeric
max.revisit.time : numeric
mean.revisit.time : numeric
min.revisit.time : numeric
sd.revisit.time : numeric
upper.revisit.time : numeric
median.revisit.time : numeric
lower.revisit.time : numeric
max.revisit.length : numeric
mean.revisit.length : numeric
min.revisit.length : numeric
sd.revisit.length : numeric
upper.revisit.length : numeric
median.revisit.length : numeric
lower.revisit.length : numeric
peak.inactive.timepoint : numeric
peak.active.timepoint : numeric
number.activity.blocks : numeric
max.cage.sharing : numeric
mean.cage.sharing : numeric
upper.cage.sharing : numeric
median.cage.sharing : numeric
lower.cage.sharing : numeric
time.alone : numeric
max.social.interaction.time : numeric
mean.social.interaction.time : numeric
min.social.interaction.time : numeric
sd.social.interaction.time : numeric
upper.social.interaction.time : numeric
median.social.interaction.time: numeric
lower.social.interaction.time : numeric
social.exposure : numeric
max.distance.from.all : numeric
mean.distance.from.all : numeric
min.distance.from.all : numeric
sd.distance.from.all : numeric
upper.distance.from.all : numeric
median.distance.from.all : numeric
lower.distance.from.all : numeric
max.distance.from.each : numeric
min.distance.from.each : numeric
sd.distance.from.each : numeric
upper.distance.from.each : numeric
median.distance.from.each : numeric
lower.distance.from.each : numeric
max.sharing.change : numeric
mean.sharing.change : numeric
min.sharing.change : numeric
sd.sharing.change : numeric
upper.sharing.change : numeric
median.sharing.change : numeric
lower.sharing.change : numeric
max.influence : numeric
mean.influence : numeric
min.influence : numeric
sd.influence : numeric
upper.influence : numeric
median.influence : numeric
lower.influence : numeric
number.chase.events : numeric
sd.chase.events : numeric
mean.chase.wins : numeric
sd.chase.wins : numeric
chase.sds : numeric
individual : list
(subject) : data.frame
distance.moved : numeric
time.per.cage : numeric
high.activity : numeric
sustained.activity : numeric
cage.variability : numeric
cage.time.entropy : numeric
cage.location.entropy : numeric
revisit.time : numeric
revisit.length : numeric
peak.inactive : numeric
peak.active : numeric
activity.blocks : numeric
cage.sharing : numeric
time.alone : numeric
social.interaction : numeric
social.distance : numeric
social.influence : numeric
chase.events : numeric
chase.dominance : numeric
cage.use : list
(window) : data.frame
(cage) : numeric
ethogram : list
(window) : list
activity : numeric
exploration : numeric
sociality : numeric
clustering : list
interaction.time : list
(window) : numeric matrix
social.distance : list
(window) : numeric matrix
chasing : list
(window) : numeric matrix
dominance : list
(window) : numeric
chase.events : list
(window) : list
(subject) : list
(subject) : data.frame
Timestamp : numeric
Transition : character
development : list
elapsed.time : numeric
elapsed.time : numeric
2. Other scores, such as the commonly-used David’s score, can be calculated from the chasing tables in the clustering component. Future versions of ColonyTrack may offer multiple variants of the dominance score.↩︎