Title: | Analyse Biological Time-Series Data |
---|---|
Description: | Compiles functions to trim, bin, visualise, and analyse activity/sleep time-series data collected from the Drosophila Activity Monitor (DAM) system (Trikinetics, USA). The following methods were used to compute periodograms - Chi-square periodogram: Sokolove and Bushell (1978) <doi:10.1016/0022-5193(78)90022-X>, Lomb-Scargle periodogram: Lomb (1976) <doi:10.1007/BF00648343>, Scargle (1982) <doi:10.1086/160554> and Ruf (1999) <doi:10.1076/brhm.30.2.178.1422>, and Autocorrelation: Eijzenbach et al. (1986) <doi:10.1111/j.1440-1681.1986.tb00943.x>. Identification of activity peaks is done after using a Savitzky-Golay filter (Savitzky and Golay (1964) <doi:10.1021/ac60214a047>) to smooth raw activity data. Three methods to estimate anticipation of activity are used based on the following papers - Slope method: Fernandez et al. (2020) <doi:10.1016/j.cub.2020.04.025>, Harrisingh method: Harrisingh et al. (2007) <doi:10.1523/JNEUROSCI.3680-07.2007>, and Stoleru method: Stoleru et al. (2004) <doi:10.1038/nature02926>. Rose plots and circular analysis are based on methods from - Batschelet (1981) <ISBN:0120810506> and Zar (2010) <ISBN:0321656865>. |
Authors: | Lakshman Abhilash [aut, cre] |
Maintainer: | Lakshman Abhilash <[email protected]> |
License: | MIT + file LICENSE |
Version: | 1.2.9 |
Built: | 2024-11-01 11:51:01 UTC |
Source: | CRAN |
This function generates a composite figure with actograms for all flies in a DAM scanned monitor file. Input for this function must be an output from the binData() function. The output of this function is a large plotly object. This function requires the packages "plotly" and "zoo".
allActograms(data, bin = 30, t.cycle = 24, color = rgb(0, 0, 0, 1))
allActograms(data, bin = 30, t.cycle = 24, color = rgb(0, 0, 0, 1))
data |
Input data file. The input for this function must be the output of the function binData(). See ??binData(). |
bin |
Intervals in which data are saved (in minutes). This defaults to 30. |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
color |
Color of actograms in rgb format. The input for this must be a vector with 4 values, i.e., r,g,b,transparency. The values for r,g,b can only be between 0 and 1. 0,0,0 would be black and 1,1,1 would be white. Transparency values can also go from 0 to 1, 0 being fully transparent and 1 being fully opaque. |
A plotly
htmlwidget
with 32 actograms in a 4-by-8 array.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 3, bin = 1, t.cycle = 24) bd <- binData(data = td) actograms <- allActograms(data = bd)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 3, bin = 1, t.cycle = 24) bd <- binData(data = td) actograms <- allActograms(data = bd)
This function generates a composite figure with periodogram plots for all flies in a DAM scanned monitor file. Input for this function must be an output from the trimData() function. The output of this function is a list with two components - (a) large plotly object with periodogram plots for all flies, and (b) a table which has channel wise information of significant period and adjusted power values, from the chosen time-series analysis method. This function requires the packages "plotly" and "zeitgebr".
allPeriodogramsAct( data, bin = 1, method = "ChiSquare", low.per = 16, high.per = 32, alpha = 0.05, time.res = 20 )
allPeriodogramsAct( data, bin = 1, method = "ChiSquare", low.per = 16, high.per = 32, alpha = 0.05, time.res = 20 )
data |
Input data file. If the method for analysis is "ChiSquare", then the input for this function must be the output of the function trimData(). See ??trimData(). Otherwise, the input for this function must be the output of the function binData(). See ??binData(). |
bin |
Intervals in which input data are sampled (in minutes). This defaults to 1. This must be changed appropriately depending on method of analysis and the input data set. |
method |
Choose the method for performing time-series analysis. Currently, three methods are implemented for analysis - "ChiSquare", "Autocorrelation", and "LombScargle". This defaults to "ChiSquare". |
low.per |
Choose the lowest period (in hours) for analysis. This defaults to 16. |
high.per |
Choose the highest period (in hours) for analysis. This defaults to 32. |
alpha |
Choose the significance level for periodogram analysis. This defaults to 0.05. |
time.res |
Resolution of periods (in minutes) to analyse while using the "ChiSquare" periodogram. For instance, if users wish to scan periods from low.per to high.per in the following manner: 16, 16.5, 17, 17.5, and so on, then time.res must be 30. This defaults to 20. |
A list
with two items:
A plotly
htmlwidget
with all periodograms in a 4-by-8 array.
A matrix
array
with 32 rows (one for each fly) and 2 columns (Period and Adjusted Power).
## Not run: td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 5, bin = 1, t.cycle = 24) all.periodograms.act <- allPeriodogramsAct(data = td[,1:15]) ## End(Not run)
## Not run: td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 5, bin = 1, t.cycle = 24) all.periodograms.act <- allPeriodogramsAct(data = td[,1:15]) ## End(Not run)
This function generates a composite figure with periodogram plots for all flies in a DAM scanned monitor file. Input for this function must be an output from the sleepData() function. The output of this function is a list with two components - (a) large plotly object with periodogram plots for all flies, and (b) a table which has channel wise information of significant period and adjusted power values, from the chosen time-series analysis method. This function requires the packages "plotly" and "zeitgebr".
allPeriodogramsSleep( data, bin = 30, method = "ChiSquare", low.per = 16, high.per = 32, alpha = 0.05, time.res = 20 )
allPeriodogramsSleep( data, bin = 30, method = "ChiSquare", low.per = 16, high.per = 32, alpha = 0.05, time.res = 20 )
data |
Input data file. The input for this function must be an output from one of either sleepData(). See ??sleepData(). |
bin |
Intervals in which input data is saved (in minutes). This defaults to 30. |
method |
Choose the method for performing time-series analysis. Currently, three methods are implemented for analysis - "ChiSquare", "Autocorrelation", and "LombScargle". This defaults to "ChiSquare". |
low.per |
Choose the lowest period (in hours) for analysis. This defaults to 16. |
high.per |
Choose the highest period (in hours) for analysis. This defaults to 32. |
alpha |
Choose the significance level for periodogram analysis. This defaults to 0.05. |
time.res |
Resolution of periods (in minutes) to analyse while using the ChiSquare periodogram. For instance, if users wish to scan periods from low.per to high.per in the following manner: 16, 16.5, 17, 17.5, and so on, then time.res must be 30. This defaults to 20. |
A list
with two items:
A plotly
htmlwidget
with all periodograms in a 4-by-8 array.
A matrix
array
with 32 rows (one for each fly) and 2 columns (Period and Adjusted Power).
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 5, bin = 1, t.cycle = 24) sd <- sleepData(td) all.periodograms.sleep <- allPeriodogramsSleep(data = sd[,1:6])
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 5, bin = 1, t.cycle = 24) sd <- sleepData(td) all.periodograms.sleep <- allPeriodogramsSleep(data = sd[,1:6])
This function generates a composite figure with actograms (referred to as somnograms, here) for all flies in a DAM scanned monitor file. Input for this function must be an output from the trimData() function. The output of this function is a large plotly object. This function requires the packages "plotly" and "zoo". In a particular bin, sleep is calculated as the total minutes of inactivity equal to or greater than the defined threshold (sleep.def; typically, 5-minutes).
allSomnograms( data, sleep.def = c(5), bin = 30, t.cycle = 24, color = rgb(0, 0, 0, 1) )
allSomnograms( data, sleep.def = c(5), bin = 30, t.cycle = 24, color = rgb(0, 0, 0, 1) )
data |
Input data file. The input for this function must be the output of the function trimData(). See ??trimData(). |
sleep.def |
Definition of sleep. Traditionally, a single bout of sleep is defined as any duration of inactivity that is equal to or greater than 5-minutes. However, sometimes it may be of interest to examine longer bouts of sleep or specific bout durations; sleep.def allows users to change the definition of sleep. The default input is a single value vector of value 5. If users wish to analyse sleep only between 5 to 20 mins, the input must be c(5,20). |
bin |
Intervals in which data are saved (in minutes). This defaults to 30. The value of bin cannot be lower than that of sleep.def. |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
color |
Color of somnograms in rgb format. The input for this must be a vector with 4 values, i.e., r,g,b,transparency. The values for r,g,b can only be between 0 and 1. 0,0,0 would be black and 1,1,1 would be white. Transparency values can also go from 0 to 1, 0 being fully transparent and 1 being fully opaque. |
A plotly
htmlwidget
with 32 somnograms in a 4-by-8 array.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 3, bin = 1, t.cycle = 24) somnograms <- allSomnograms(data = td[,1:15])
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 3, bin = 1, t.cycle = 24) somnograms <- allSomnograms(data = td[,1:15])
This function calculates anticipation of activity in user-defined windows. The input for this function must be the output of the trimData() function. There are three choices for the estimation of anticipation. The "Slope" method simply finds best-fitting lines to activity data in the defined windows (by using linear regressions). The slope of this line, for each fly, is used as a measure of anticipation. The "Stoleru" method is based on the estimates used in the paper by Stoleru et al., 2004 (https://doi.org/10.1038/nature02926). The authors estimate progressive increase in activity before environmental transitions, scaled by the startle response (immediately post-transition). The "Harrisingh" method is based on the method used by Harrisingh et al., 2007 (10.1523/JNEUROSCI.3680-07.2007). In this method, the authors simply examine activity in a 3-hour interval before environmental transitions, scaled by activity in the 6-hour interval before the transitions. Only if method = "Slope", the output of this function is a list with three elements, i.e., plots of the regression line along with the activity in the morning window, plots of the regression line along with the activity in the evening window, and a table with the morning and evening anticipation values. In the other two cases, the output of this function is only a table with the morning and evening anticipation values. No plots will be generated.
anticipationAct( data, method = "Slope", t.cycle = 24, morn.win.start, eve.win.start, eve.win.end, rm.channels = c(), max.y.morn = "auto", max.y.eve = "auto" )
anticipationAct( data, method = "Slope", t.cycle = 24, morn.win.start, eve.win.start, eve.win.end, rm.channels = c(), max.y.morn = "auto", max.y.eve = "auto" )
data |
Input data file. The input for this function must be the output of the function trimData(). See ??trimData(). |
method |
Choose the method for estimating anticipation. The three possible choices are, (i) "Slope", (ii) "Stoleru" and (iii) "Harrisingh". This defaults to "Slope". See Description for more details on these methods. |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
morn.win.start |
Define the start of morning window in ZT. ZT00 is the onset of zeitgeber; in case of light/dark cycles, ZT00 is the time at which lights turn ON. The end of the morning window is considered as ZT00. |
eve.win.start |
Define the start of evening window in ZT. |
eve.win.end |
Define the end of evening window. |
rm.channels |
A vector of channels from a DAM monitor that must be discarded from analysis. If channels 1 to 5 must be removed, type in c(1:5). If channels 1 to 5 and 10 to 13 and 15 and 17 must be removed, type in c(1:5,10:13,15,17). Default is to include all individuals. |
max.y.morn |
Set the upper limit of the y-axis in the plot for morning window. |
max.y.eve |
Set the upper limit of the y-axis in the plot for evening window. |
If method = "Slope", a list
with two items, else a matrix
array
with 32 rows (one for each fly) and 3 columns (Channel/Fly identity, Morning anticipation index and Evening anticipation index).
If method = "Slope":
A plotly
htmlwidget
with the anticipation estimates for the morning window.
A plotly
htmlwidget
with the anticipation estimates for the evening window.
A matrix
array
with 32 rows (one for each fly) and 3 columns (Channel/Fly identity, Morning anticipation index and Evening anticipation index).
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) anticip <- anticipationAct(data = td, method = "Stoleru", t.cycle = 24, morn.win.start = 21, eve.win.start = 9, eve.win.end = 12, rm.channels = c())
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) anticip <- anticipationAct(data = td, method = "Stoleru", t.cycle = 24, morn.win.start = 21, eve.win.start = 9, eve.win.end = 12, rm.channels = c())
Allows users to bin data sets into intervals of time different from the data collection interval. The input for this function must be the output of the trimData() function. The output of this function is a data frame. The first column of which stores Zeitgeber Time values (assuming that the start.time in the trimData() function was set at Zeitgeber Time 00). All subsequent columns have binned activity data for each fly.
binData(data, input.bin = 1, output.bin = 30, t.cycle = 24)
binData(data, input.bin = 1, output.bin = 30, t.cycle = 24)
data |
Input data file. The input for this function must be the output of the function trimData(). See ??trimData(). |
input.bin |
Define the bin size (in minutes) in the input file. This defaults to 1. |
output.bin |
Define the desired output bin size (in minutes). This defaults to 30. |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
A matrix
array
with 33 columns (number of rows depends on number of days, and the input parameters of this function):
ZT values starting at ZT00 (time at which light turns ON).
Columns of binned locomotor activity data (each column represents a single fly).
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) bd <- binData(data = td) bd <- binData(data = td, input.bin = 1, output.bin = 15, t.cycle = 24)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) bd <- binData(data = td) bd <- binData(data = td, input.bin = 1, output.bin = 15, t.cycle = 24)
This function calculates phase of center of mass of either activity or sleep data, and generates polar plots. The function also computes consolidation of activity or sleep in the defined windows of time. The output of this function is a list, the elements of which are a polar plot with the phases in each window for each fly, depicted, and a table which has the window specific times in ZT units and the consolidation values. For this function to work as expected, users must start the analysis at ZT00.
CoM( input, data = "Activity", bin = 30, t.cycle = 24, window = list(c(21, 3), c(9, 15)), rm.channels = c() )
CoM( input, data = "Activity", bin = 30, t.cycle = 24, window = list(c(21, 3), c(9, 15)), rm.channels = c() )
input |
Input data file. The input for this function must be the output of the function binData(), sleepData() or ??wakeData(). See ??binData(), ??sleepData() and ??wakeData(). |
data |
If the input for this function is the output of binData() or sleepData(), then this must be "Activity" or "Sleep", respectively. |
bin |
Intervals in which input data are saved (in minutes). This defaults to 30. |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
window |
A list of vectors, each defining the start and end ZT values of the window of interest. For instance, if users want to define the morning window as ZT21 to ZT03 and evening window as ZT09 to ZT15, then this should be list(c(21,3), c(9,15)). This defaults to list(c(18,6), c(6,18)). For the purposes of the polar plot, data from only the first two windows are used. But, for the data table, users can define as many windows as they like, and the function should work as expected. |
rm.channels |
A vector of channels from a DAM monitor that must be discarded from analysis. If channels 1 to 5 must be removed, type in c(1:5). If channels 1 to 5 and 10 to 13 and 15 and 17 must be removed, type in c(1:5,10:13,15,17). Default is to include all individuals. |
A list
with two items:
A plotly
htmlwidget
with the center of mass plotted and averages plotted for each window.
A data.frame
with 32 rows (one for each fly) and 1 + (number of user defined windows * 2) columns (First column contains channel/fly identity and the remaining columns contain the fly-wise consolidation and center of mass values.)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) bd <- binData(td) phase <- CoM(input = bd)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) bd <- binData(td) phase <- CoM(input = bd)
A sample data.frame
which has beam crossing data was collected every minute to facilitate activity and sleep analysis. Data is collected for wildtype flies under LD 12:12 and DD at 25 degree Celsius using the Drosophila Activity Monitoring (DAM) system, Trikinetics.
df
df
A data.frame
containing 28234 rows and 42 variables:
Several columns of information generated by DAMScan. Only two columns here are of interest to us. Column V2 which has date information and column V3 which has time of day information.
Activity counts for each of the 32 flies recorded in a single activity monitor.
Allows users to generate individual actograms. The input for this function must be the output of the binData() function. The output of this function is a plotly object.
indActogram( data, bin = 30, t.cycle = 24, ind = 1, key.acto = 1, color = rgb(0, 0, 0, 1) )
indActogram( data, bin = 30, t.cycle = 24, ind = 1, key.acto = 1, color = rgb(0, 0, 0, 1) )
data |
Input data file. The input for this function must be the output of the function binData(). See ??binData(). |
bin |
Define the bin size (in minutes) in which input data is saved. |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
ind |
The channel number (or individual) whose actogram must be plotted. |
key.acto |
Key for reactive input tables in the shiny app. |
color |
Color of actograms in rgb format. The input for this must be a vector with 4 values, i.e., r,g,b,transparency. The values for r,g,b can only be between 0 and 1. 0,0,0 would be black and 1,1,1 would be white. Transparency values can also go from 0 to 1, 0 being fully transparent and 1 being fully opaque. |
A plotly
htmlwidget
with the actogram of a user defined fly.
## Not run: td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) bd <- binData(td) ind.actogram <- indActogram(data = bd, bin = 30, ind = 2) ## End(Not run)
## Not run: td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) bd <- binData(td) ind.actogram <- indActogram(data = bd, bin = 30, ind = 2) ## End(Not run)
This function generates a periodogram for the activity data of a single fly. Input for this function must be an output from the trimData() function. The output of this function is a plotly object.
indPeriodogramAct( data, bin = 1, method = "ChiSquare", low.per = 16, high.per = 32, alpha = 0.05, time.res = 20, ind = 1 )
indPeriodogramAct( data, bin = 1, method = "ChiSquare", low.per = 16, high.per = 32, alpha = 0.05, time.res = 20, ind = 1 )
data |
Input data file. If the method for analysis is "ChiSquare", then the input for this function must be the output of the function trimData(). See ??trimData(). Otherwise, the input for this function must be the output of the function binData(). See ??binData(). |
bin |
Intervals in which data are sampled (in minutes). This defaults to 1. This must be changed appropriately depending on method of analysis and the input data set. |
method |
Choose the method for performing time-series analysis. Currently, three methods are implemented for analysis - "ChiSquare", "Autocorrelation", and "LombScargle". This defaults to "ChiSquare". |
low.per |
Choose the lowest period (in hours) for analysis. This defaults to 16. |
high.per |
Choose the highest period (in hours) for analysis. This defaults to 32. |
alpha |
Choose the significance level for periodogram analysis. This defaults to 0.05. |
time.res |
Resolution of periods (in minutes) to analyse while using the ChiSquare periodogram. For instance, if users wish to scan periods from low.per to high.per in the following manner: 16, 16.5, 17, 17.5, and so on, then time.res must be 30. This defaults to 20. |
ind |
The channel number (or individual) whose periodogram must be plotted. |
A plotly
htmlwidget
with the individual periodogram of a user defined fly.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) ind.periodogram.act <- indPeriodogramAct(data = td, ind = 13)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) ind.periodogram.act <- indPeriodogramAct(data = td, ind = 13)
This function generates a periodogram for the sleep data of a single fly. The output of this function is a plotly object.
indPeriodogramSleep( data, bin = 30, method = "ChiSquare", low.per = 16, high.per = 32, alpha = 0.05, time.res = 20, ind = 1 )
indPeriodogramSleep( data, bin = 30, method = "ChiSquare", low.per = 16, high.per = 32, alpha = 0.05, time.res = 20, ind = 1 )
data |
Input data file. The input for this function must be an output from one of either sleepData(), deepSleepData() or lightSleepData() functions. See ??sleepData(), ??deepSleepData() and/or ??lightSleepData(). |
bin |
Intervals in which input data is saved (in minutes). This defaults to 30. |
method |
Choose the method for performing time-series analysis. Currently, three methods are implemented for analysis - "ChiSquare", "Autocorrelation", and "LombScargle". This defaults to "ChiSquare". |
low.per |
Choose the lowest period (in hours) for analysis. This defaults to 16. |
high.per |
Choose the highest period (in hours) for analysis. This defaults to 32. |
alpha |
Choose the significance level for periodogram analysis. This defaults to 0.05. |
time.res |
Resolution of periods (in minutes) to analyse while using the ChiSquare periodogram. For instance, if users wish to scan periods from low.per to high.per in the following manner: 16, 16.5, 17, 17.5, and so on, then time.res must be 30. This defaults to 20. |
ind |
The channel number (or individual) whose periodogram must be plotted. |
A plotly
htmlwidget
with the individual periodogram of a user defined fly.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 3, bin = 1, t.cycle = 24) sd <- sleepData(td) ind.periodogram.sleep <- indPeriodogramSleep(data = sd, ind = 10)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 3, bin = 1, t.cycle = 24) sd <- sleepData(td) ind.periodogram.sleep <- indPeriodogramSleep(data = sd, ind = 10)
This function generates a somnogram for a single fly. Input for this function must be an output from the trimData() function. The output of this function is a plotly object. In a particular bin, sleep is calculated as the total minutes of inactivity equal to or greater than the defined threshold (sleep.def; typically, 5-minutes).
indSomnogram( data, sleep.def = c(5), bin = 30, t.cycle = 24, ind = 1, key.somno = 1, color = rgb(0, 0, 0, 1) )
indSomnogram( data, sleep.def = c(5), bin = 30, t.cycle = 24, ind = 1, key.somno = 1, color = rgb(0, 0, 0, 1) )
data |
Input data file. The input for this function must be the output of the function trimData(). See ??trimData(). |
sleep.def |
Definition of sleep. Traditionally, a single bout of sleep is defined as any duration of inactivity that is equal to or greater than 5-minutes. However, sometimes it may be of interest to examine longer bouts of sleep; sleep.def allows users to change the definition of sleep. This defaults to 5. |
bin |
Intervals in which data are saved (in minutes). This defaults to 30. The value of bin cannot be lower than that of sleep.def. |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
ind |
The channel number (or individual) whose periodogram must be plotted. |
key.somno |
Key for reactive input tables in the shiny app. |
color |
Color of somnograms in rgb format. The input for this must be a vector with 4 values, i.e., r,g,b,transparency. The values for r,g,b can only be between 0 and 1. 0,0,0 would be black and 1,1,1 would be white. Transparency values can also go from 0 to 1, 0 being fully transparent and 1 being fully opaque. |
A plotly
htmlwidget
with the somnogram of a user defined fly.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) somnogram <- indSomnogram(data = td, ind = 21)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) somnogram <- indSomnogram(data = td, ind = 21)
This function generates a list of outputs. The first element is a plot of raw activity along with the smoothed data and objectively estimated phases of peak of activity data. Smoothing of activity is done using a Savitzky-Golay filter. The input of this function must be the output of the trimData function. This function requires the packages "plotly", "pracma" and "signal". As of now, this function works only for 24-hour T-cycles.
peakIdentifier( data, filt.order = 3, filt.length = 51, min.peak.dist = 100, peak.ht.scal = 0.5, ZT = c(0, 12), rm.channels = c() )
peakIdentifier( data, filt.order = 3, filt.length = 51, min.peak.dist = 100, peak.ht.scal = 0.5, ZT = c(0, 12), rm.channels = c() )
data |
Input data file. The input for this function must be the output of the function trimData(). See ??trimData(). This assumes that the output from trimData has data binned in 1-min intervals. |
filt.order |
The filter order. This defaults to 3. |
filt.length |
The length of filter in indices. This defaults to 51. |
min.peak.dist |
The minimum distance between peaks to be picked (in indices). This defaults to 100. |
peak.ht.scal |
A scaling factor to identify peaks. This defaults to 0.5. A value of 0.5 will only find peaks that are at least half as tall as that of the tallest peak. |
ZT |
A vector defining the regions around which the algorithm must looks for peaks. This defaults to c(0,12). The first value in this vector is always assumed to be the morning peak. |
rm.channels |
All the channels that users want to remove from their averaging. This must be a vector, i.e., channels must be separated by commas. For instance, if users choose to remove channels 1 to 5, 25 and 32, then the input should be either c(1,2,3,4,5,25,32) or c(1:5,25,32). This defaults to an empty vector, meaning no individuals are removed from analysis. |
A list
with two items:
A plotly
htmlwidget
with all the averaged activity overlayed with the smoothed data and markers to point out identified peaks in a 4-by-8 array.
A matrix
array
with 32 rows (one for each fly) and 9 columns (Channel/Fly identity, Phases of morning peak onset, maxima and offset, Morning peak height, Phases of evening peak onset, maxima and offset, and Evening peak height (all phases are measured in ZT)).
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 3, bin = 1, t.cycle = 24) pks <- peakIdentifier(data = td)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 3, bin = 1, t.cycle = 24) pks <- peakIdentifier(data = td)
Users can compute average profiles and visualise the same. Averages can be performed either over Flies, Days, Both or None. Except in the case of "None" the output of this function will be a list with two elements. One is the generated plot and the other is a table with the activity values and corresponding standard errors of the mean.
profilesAct( data, bin = 30, t.cycle = 24, average.type = "Both", rm.channels = c() )
profilesAct( data, bin = 30, t.cycle = 24, average.type = "Both", rm.channels = c() )
data |
Input data file. The input for this function must be the output of the function binData(). See ??binData(). |
bin |
Intervals in which data are saved (in minutes). This defaults to 30. This value must be the same as that for binData(). |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. This value must be the same as that for binData(). |
average.type |
Define how the averaging must be done for computing profiles. There are 4 choices; i) "Flies": This will average over all the flies for the number of days of data that there are, and produce an averaged time-series, ii) "Days": This will average activity over all the days but for each fly and provide 32 averaged plots, iii) "Both": This will average over both flies and days and provide one composite average profile, iv) "None": This will not average and produce any plots; the output will be the same as the input file. This defaults to "Both". |
rm.channels |
All the channels that users want to remove from their averaging. This must be a vector, i.e., channels must be separated by commas. For instance, if users choose to remove channels 1 to 5, 25 and 32, then the input should be either c(1,2,3,4,5,25,32) or c(1:5,25,32). This defaults to an empty vector, meaning no individuals are removed from analysis. |
Except when average.type = "None", a list
with two items. When average.type = "None", input file is returned.
If average.type = "Days":
Column with ZT values.
Data averaged over days for each of 32 flies.
Column with ZT values.
SEM (across days) for each of 32 flies.
A plotly
htmlwidget
with the activity profiles in a 4-by-8 array.
If average.type = "Flies":
Column with ZT values.
Data averaged over all 32 flies for the entire duration of chosen days.
SEM (across flies).
A plotly
htmlwidget
with the activity time-series.
If average.type = "Both":
Column with ZT values.
Data averaged over all days and all 32 flies.
SEM (across flies).
A plotly
htmlwidget
with the activity profile.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) bd <- binData(td) pro <- profilesAct(data = bd) pro <- profilesAct(data = bd, bin = 60, t.cycle = 32, average.type = "Days", rm.channels = c(1:5,25,32))
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) bd <- binData(td) pro <- profilesAct(data = bd) pro <- profilesAct(data = bd, bin = 60, t.cycle = 32, average.type = "Days", rm.channels = c(1:5,25,32))
Users can compute average profiles and visualise the same. Averages can be performed either over Flies, Days, Both or None. Except in the case of "None" the output of this function will be a list with two elements. One is the generated plot and the other is a table with the activity values and corresponding standard errors of the mean.
profilesSleep( data, bin = 30, t.cycle = 24, average.type = "Both", rm.channels = c() )
profilesSleep( data, bin = 30, t.cycle = 24, average.type = "Both", rm.channels = c() )
data |
Input data file. The input for this function must be the output of the function sleepData(). See ??sleepData(). |
bin |
Intervals in which data are saved (in minutes). This defaults to 30. This value must be the same as that for sleepData(). |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. This value must be the same as that for sleepData(). |
average.type |
Define how the averaging must be done for computing profiles. There are 4 choices; i) "Flies": This will average over all the flies for the number of days of data that there are, and produce an averaged time-series, ii) "Days": This will average activity over all the days but for each fly and provide 32 averaged plots, iii) "Both": This will average over both flies and days and provide one composite average profile, iv) "None": This will not average and produce any plots; the output will be the same as the input file. This defaults to "Both". |
rm.channels |
All the channels that users want to remove from their averaging. This must be a vector, i.e., channels must be separated by commas. For instance, if users choose to remove channels 1 to 5, 25 and 32, then the input should be either c(1,2,3,4,5,25,32) or c(1:5,25,32). This defaults to an empty vector, meaning no individuals are removed from analysis. |
Except when average.type = "None", a list
with two items. When average.type = "None", input file is returned.
If average.type = "Days":
Column with ZT values.
Data averaged over days for each of 32 flies.
Column with ZT values.
SEM (across days) for each of 32 flies.
A plotly
htmlwidget
with the sleep profiles in a 4-by-8 array.
If average.type = "Flies":
Column with ZT values.
Data averaged over all 32 flies for the entire duration of chosen days.
SEM (across flies).
A plotly
htmlwidget
with the sleep time-series.
If average.type = "Both":
Column with ZT values.
Data averaged over all days and all 32 flies.
SEM (across flies).
A plotly
htmlwidget
with the sleep profile.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 3, bin = 1, t.cycle = 24) sd <- sleepData(td) pro <- profilesSleep(data = sd)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 3, bin = 1, t.cycle = 24) sd <- sleepData(td) pro <- profilesSleep(data = sd)
Users can generate rose plots for the averaged activity data. The input for this function must be output from binData(). The output of this function is a plotly object. By default the averaging of profiles is done over all flies and days.
rosePlotsAct(data, bin = 30, t.cycle = 24, rm.channels = c())
rosePlotsAct(data, bin = 30, t.cycle = 24, rm.channels = c())
data |
Input data file. The input for this function must be the output of the function binData(). See ??binData(). |
bin |
Intervals in which data are saved (in minutes). This defaults to 30. This value must be the same as that for binData(). |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. This value must be the same as that for binData(). |
rm.channels |
All the channels that users want to remove from their averaging. This must be a vector, i.e., channels must be separated by commas. For instance, if users choose to remove channels 1 to 5, 25 and 32, then the input should be either c(1,2,3,4,5,25,32) or c(1:5,25,32). This defaults to an empty vector, meaning no individuals are removed from analysis. |
A plotly
htmlwidget with rose plots for locomotor activity.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) bd <- binData(td) r.plot <- rosePlotsAct(data = bd)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) bd <- binData(td) r.plot <- rosePlotsAct(data = bd)
Users can generate rose plots for the averaged sleep data. The input for this function must be output from sleepData(). The output of this function is a plotly object. By default the averaging of profiles is done over all flies and days.
rosePlotsSleep(data, bin = 30, t.cycle = 24, rm.channels = c())
rosePlotsSleep(data, bin = 30, t.cycle = 24, rm.channels = c())
data |
Input data file. The input for this function must be the output of the function sleepData(). See ??sleepData(). |
bin |
Intervals in which data are saved (in minutes). This defaults to 30. This value must be the same as that for sleepData(). |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. This value must be the same as that for sleepData(). |
rm.channels |
All the channels that users want to remove from their averaging. This must be a vector, i.e., channels must be separated by commas. For instance, if users choose to remove channels 1 to 5, 25 and 32, then the input should be either c(1,2,3,4,5,25,32) or c(1:5,25,32). This defaults to an empty vector, meaning no individuals are removed from analysis. |
#' @return A plotly
htmlwidget with rose plots for sleep data.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 1, bin = 1, t.cycle = 24) sd <- sleepData(td) r.plot <- rosePlotsSleep(data = sd)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 1, bin = 1, t.cycle = 24) sd <- sleepData(td) r.plot <- rosePlotsSleep(data = sd)
Allows users to bin data sets into intervals of time different from the data collection interval. The input for this function must be the output of the trimData() function. The output of this function is a data frame. The first column of which stores Zeitgeber Time values (assuming that the start.time in the trimData() function was set at Zeitgeber Time 00). All subsequent columns have binned sleep data for each fly. In a particular bin, sleep is calculated as the total minutes of inactivity equal to or greater than the defined threshold (sleep.def; typically, 5-minutes).
sleepData(data, sleep.def = c(5), bin = 30, t.cycle = 24)
sleepData(data, sleep.def = c(5), bin = 30, t.cycle = 24)
data |
Input data file. The input for this function must be the output of the function trimData(). See ??trimData(). |
sleep.def |
Definition of sleep. Traditionally, a single bout of sleep is defined as any duration of inactivity that is equal to or greater than 5-minutes. However, sometimes it may be of interest to examine longer bouts of sleep or specific bout durations; sleep.def allows users to change the definition of sleep. The default input is a single value vector of value 5. If users wish to analyse sleep only between 5 to 20 mins, the input must be c(5,20). |
bin |
Intervals in which data are saved (in minutes). This defaults to 30. The value of bin cannot be lower than that of sleep.def. |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
A data.frame
with 33 columns (number of rows depends on number of days, and the input parameters of this function):
ZT values starting at ZT00 (time at which light turns ON).
Columns of binned sleep data (each column represents a single fly).
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 4, bin = 1, t.cycle = 24) sd <- sleepData(data = td[,1:15])
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 4, bin = 1, t.cycle = 24) sd <- sleepData(data = td[,1:15])
This function allows users to compute day-time and night-time onset of sleep bouts and their respective bout lengths. Also generates a plot to visualise and compare within and across day and night-time windows. The input for this function must be the output from the trimData() function. Number of days to analyse must be at least 2 days. If the number of days is more than 2 days, the function will compute statistics for the first day only. The output of this function is a list with three elements, i.e., "Daytime.Data" is a data frame which has the onset of sleep bout (minutes since the start of the day window) and the length of that bout (in minutes) for each fly, "Nighttime.Data" which is the same as "Daytime.Data" but for the night window, and "Plots" which allows the visualisation of the two data sets.
sleepOnsetBoutLength(data, sleep.def = c(5), t.cycle = 24, photoperiod = 12)
sleepOnsetBoutLength(data, sleep.def = c(5), t.cycle = 24, photoperiod = 12)
data |
Input data file. The input for this function must be the output of the function trimData(). See ??trimData(). |
sleep.def |
Definition of sleep. Traditionally, a single bout of sleep is defined as any duration of inactivity that is equal to or greater than 5-minutes. However, sometimes it may be of interest to examine longer bouts of sleep or specific bout durations; sleep.def allows users to change the definition of sleep. The default input is a single value vector of value 5. If users wish to analyse sleep only between 5 to 20 mins, the input must be c(5,20). |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
photoperiod |
Duration (in hours) of what can be considered day-phase. This defaults to 12. |
A list
with three items:
Fly identity.
Onset of sleep bout (in minutes since the start of day window)
Length of the sleep bout (in minutes)
Fly identity.
Onset of sleep bout (in minutes since the start of night window)
Length of the sleep bout (in minutes)
td <- trimData(data = df, start.date = "28 Dec 20", start.time = "21:00", n.days = 2, bin = 1, t.cycle = 24) bout.onset.vs.length <- sleepOnsetBoutLength(data = td)
td <- trimData(data = df, start.date = "28 Dec 20", start.time = "21:00", n.days = 2, bin = 1, t.cycle = 24) bout.onset.vs.length <- sleepOnsetBoutLength(data = td)
Allows users to generate individual plots of sleep stages in flies. Sleep stages are defined as follows: 5 to 30-min as short sleep (light blue), 30 to 60-min as intermediate sleep (medium blue) and 60 to 720-min as deep sleep (dark blue). Activity is plotted in red. The input for this function must be the output of the trimData() function. The output of this function is a plot. Note: At this moment, this works accurately only for 24-h days.
sleepStages(data, n.days, channel = 1, photoperiod = 12)
sleepStages(data, n.days, channel = 1, photoperiod = 12)
data |
Input data file. The input for this function must be the output of the function trimData(). See ??trimData(). |
n.days |
The number of cycles for which sleep stages must be visualized. |
channel |
The channel number of the fly to be visualized. |
photoperiod |
This value determines the duration of photo-phase and scoto-phase of the 24-h day. Defaults to 12. |
A plot
with the day-time and night-time sleep stages of a user defined fly for the number of cycles provided by the user.
## Not run: td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 2, bin = 1, t.cycle = 24) sleepStages(data = td, n.days = 1) ## End(Not run)
## Not run: td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 2, bin = 1, t.cycle = 24) sleepStages(data = td, n.days = 1) ## End(Not run)
This function allows users to estimate day-time and night-time average sleep bout duration, number and latency. Sleep bout latency is defined as the time taken (in minutes) for the occurrence of the first sleep bout since respective transitions. The input for this function must be the output from the trimData() function. The output of this function is a matrix which contains fly-wise (each row) data.
sleepStat(data, sleep.def = c(5), t.cycle = 24, photoperiod = 12)
sleepStat(data, sleep.def = c(5), t.cycle = 24, photoperiod = 12)
data |
Input data file. The input for this function must be the output of the function trimData(). See ??trimData(). |
sleep.def |
Definition of sleep. Traditionally, a single bout of sleep is defined as any duration of inactivity that is equal to or greater than 5-minutes. However, sometimes it may be of interest to examine longer bouts of sleep or specific bout durations; sleep.def allows users to change the definition of sleep. The default input is a single value vector of value 5. If users wish to analyse sleep only between 5 to 20 mins, the input must be c(5,20). |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
photoperiod |
Duration (in hours) of what can be considered day-phase. This defaults to 12. |
A matrix
array
matrix with 32 rows (one for each fly) and 9 columns:
Fly identity.
Number of sleep bouts in the user defined day time.
Mean sleep duration in the user defined day time.
Median sleep duration in the user defined day time.
Time taken for the first sleep bout to occur in the user defined day time.
Total minutes of daytime sleep.
Number of sleep bouts in the user defined night time.
Mean sleep duration in the user defined night time.
Median sleep duration in the user defined night time.
Time taken for the first sleep bout to occur in the user defined night time.
Total minutes of nighttime sleep.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) slp.stat <- sleepStat(data = td)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24) slp.stat <- sleepStat(data = td)
This function generates a sankey plot enabling the visualization of percentage of times transtions from various states of activity and sleep occur. This function also generates a data table to download individual values of these transition percentages. Sleep stages are defined as follows: 5 to 30-min as short sleep (light blue), 30 to 60-min as intermediate sleep (medium blue) and 60 to 720-min as deep sleep (dark blue). Activity is defined as the standard number of beam crosses. The input for this function must be the output of the trimData() function. The output of this function is a list. Note: At this moment, this works accurately only for 24-h days.
transitionProbs(data, n.days, photoperiod = 12)
transitionProbs(data, n.days, photoperiod = 12)
data |
Input data file. The input for this function must be the output of the function trimData(). See ??trimData(). |
n.days |
The number of cycles for which sleep stages must be visualized. |
photoperiod |
This value determines the duration of photo-phase and scoto-phase of the 24-h day. Defaults to 12. |
A list
with two items:
A plotly
htmlwidget
with the Sankey diagram (representing the average transition percentages).
A matrix
array
with individual wise transition percentages.
## Not run: td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 2, bin = 1, t.cycle = 24) tp <- transitionProbs(data = td, n.days = 1) ## End(Not run)
## Not run: td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 2, bin = 1, t.cycle = 24) tp <- transitionProbs(data = td, n.days = 1) ## End(Not run)
trimData() allows users to define start date, start time and number of days for analysing data sets.
trimData(data, start.date, start.time, n.days, bin = 1, t.cycle = 24)
trimData(data, start.date, start.time, n.days, bin = 1, t.cycle = 24)
data |
Input data file. This must be DAM scanned monitor files, saved in 1-min intervals starting at time 00:00. |
start.date |
Define starting date for analysis. Date inputs must be in this form: "DD Mon YY"; August 6, 2020 must be input as "6 Aug 20". Any other form will result in computation errors. |
start.time |
Define start time for analysis. Times must be input in the 24-h format and in the following form: "HH:MM"; 10 AM must be "10:00" and 10 PM must be "22:00". |
n.days |
Number of days to analyse. |
bin |
Intervals in which data are sampled (in minutes). This defaults to 1. |
t.cycle |
Define the period of the environmental cycle or a single day in hours. This defaults to 24. |
A data.frame
containing trimmed data.
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24)
td <- trimData(data = df, start.date = "19 Dec 20", start.time = "21:00", n.days = 10, bin = 1, t.cycle = 24)