Part 6:
Add DFA functionality #839 (credits: Ian Meneghel Danilevicz and Victor Barreto Mesquita)
Add fragmentation metrics, same function as in part 5 but now applied at recording level #839
Circadian rhythm analysis now ignore invalid nights controlled with new parameter "includecrit.part6".
Circadian rhythm analysis now provides consistent results for both regardless of whether time series are stored with or without valid windows with parameter save_ms5raw_without_invalid.
Part 2 + 6: Revised and simplified IV and IS calculation which now ignores invalid timestamps and also comes with phi statistic (credits: Ian Meneghel Danilevicz). In part 2 we used to have 2 calculation, which is now replaced by just one and applied to all valid data points in the recordings. In part 6 this is repeated by for the time window as specified with parameter part6Window. Further, IVIS now uses argument threshold.lig as threshold to distinguish inactivity from active.
Part 2: Increase sensitivity clipping detection from 80% to 30% of a window. If the long epoch has more than 30% of its values close to the dynamic range of the sensor then it will be labelled as clipping.
Part 4: Now also has copy of part 5 variable ACC_spt_mg.
Part 5:
Moving LXMX from part 5 to part 6 as these are circadian rhythm analysis.
Omitted fragmentation metrics for spt window as not meaningful given that part 5 only focusses on valid daytime behaviours.
includenightcrit.part5 added to allow for controlling inclusion of windows in part 5 based on their amount of valid data during spt window. Default remains the same.
Fix incorrect usage of part 5 inclusion criteria testing, which used fraction as percentage.
Part 5:
Add parameters require_complete_lastnight_part5 to control whether last window is included if last night is incomplete. #1196
Handle sleeplog times beyond the end of the recording. #1206
Fixed minor bug in g.part5.addfirstwake causing the first wake is not correctly added when no SIBs are detected in between the start of the recorded and the algorithm or diary based estimate of wakeup time. #1198
Revise MM window definition in daylight saving time days, as it assumed fixed day duration of 24 hours #1211
General: GGIR version look-up in .onattach() no longer crashes when computer is offline, fixes #1203.
Reports: The calendar_date and filename columns in csv reports have been standardized, as %Y-%m-%d and the input accelerometer file name, respectively. #1197
Part 1: Reverse default value for nonwear_range_threshold as changed in 3.1-3 back to 150 as more research needed to support the change. #1172
Part 1: Tidied up code in internal function detect_nonwear_clipping.R to ease future reviews. #1212
Part 4: Undo changes to 3 line in g.part4 function from commit 3b9e2b7 (in between 3.1-1 and 3.1-2 release in June 2024) which broke functionality for handling sleep that starts before the double DST hour in the autumn and ends inside it. #1221
Part 3: Update threshold used for HorAngle to 60 degree, and auto-setting HASPT.ignore.invalid to NA when NotWorn guider is used. #1186
Part 4:
Fixed issue with merging sleeplog advanced format and acc data starting at midnight, #1188
When sleeplog column name is accidentally left empty generate error message, #1138.
Improved logging of what guider was used when using NotWorn and optional backup guider, #1156
Skip night in part 4 csv report if guider was NotWorn, #1156
Part 5: Fixed bug in g.part5.wakesleepwindows causing the first SPT window in a recording incorrectly to be defined from the first timestamp in the recording. For details see: #1192
Report part 4 and 5:
Part 5: Data dictionary generates error when no valid days are seen dictionary, fixed #1176
Part 5: Fix bug in addition of first wake-up time if not present #1179
Part 2: Correctly skip MXLX calculation when it cannot be calculated, which caused error when trying to use the output. Fixes #1180
Part 1: Add parameter nonwear_range_threshold to control range threshold for nonwear detection, this used to be a constant. And default changed to 50mg. #1172
Part 4: Improved error message when a sleeplog timestamp is not in expected format. #1184
Part 1:
Parts 2-5: Give more informative error when folders with expected milestone files are empty. #1144
Part 3: Fix handling of recordings with only 1 midnight that start before 4am. #1160
Part 3 and 4:
Revise NotWorn algorithm to work with both count and raw data with varying degrees of nonwear. Further, when parameter HASPT.algo is set to NotWorn then a second guider can now optionally be specified in case the accelerometer unexpectedly worn by the participant. #1089
Fix bug in detection of waking up after noon, referred to as daysleeper. #1165
Report part 5:
Vignette: Migrated many sections from main CRAN vignette to wadpac.github.io/GGIR/
Visualreport: Improve handling of recordings where the accelerometer was not worn.
Part 2: Corrected calculation of LXhr and MXhr which had one hour offset when timing was after midnight, #1117
Part 1: Fixes reversion of reading .csv.gz
files #1131.
Loading GGIR: Stops interactive calling of chooseCRANmirror
on .onAttach
if interactive and CRAN mirror not set #1141.
Part 4:
Part 5: Fix incorrect calendar date when window starts 5 seconds before midnight, #1082
Part 3: Improved handling of DST, #1225
Part 2: Code revisions in preparation for expansion of functionality to better facilitate external function produced event data. #653 and #1228
Minor issue fixes introduced in 3.0-10 related to handling nights without sustained inactivity bouts, handling recordings without midnight and storage of GGIR version in the part 4 output when there are no valid nights.
Part 5 report: Add option to filter part 5 windows based on parameter includedaycrit originally used in part 2, for details see documentation of parameter includedaycrit and #1113
Part 1: Fix bug in identifying and naming the vector magnitude column #1122
Part 1:
Part 1-6: GGIR release number now stored in each milestone data file and in each report to ease tracing what release was used per recording and per GGIR part, see #1101.
Part 3: Revert change to HDCZA in 3.0-7, see issue #1102
Part 4: Fixes issue #1095 introduced in 3.0-7 that causes GGIR part 4 to stop when processing data without non-default sleep algorithms.
Part 2 and 5:
Part 5 and 6: Correct algorithm for coefficient of variance (CoV) in g.fragmentation, #1105
Part 5: Temperature (if available) added to time series output #1085.
Part 5: Fix minor bug in merging night level sleep variables into part 5 report, this does not affect the main part 5 estimates such as time spent in intensity ranges #1086.
Part 4: Allow handling sleeplog with only one record #1083
General: simplify installation for typical use cases by moving GGIRread, ActCR and read.gt3x to imports.
Part 1: In the handling of externally derived epoch data, the code and algorithm for nonwear detection is now simplified to better match expected behaviour #1080.
Part 2: Fixed issue where g.convert.part2.long() was throwing an error when attempting to process data where every day had insufficient number of valid hours #1070.
Part 5: Fix bug introduced with 3.0-7 causing WW window to not handle well scenario of zero windows #1078.
Part 1:
Fix bug introduced with release 3.0-6 affecting the use of external function embedding #1065
Need to specify rmc.firstrow.acc when working with ad-hoc csv file format now better documented and read.myacc.csv now produces an error when used directly and user forgets to specify rmc.firstrow.acc #1034.
Improve g.calibrate to better handle scenario when no non-movement periods are found in the entire recording #1032
Part 3: Algorithm HDCZA simplified by replacing time series specific threshold in step 6 of the description in the 2018 paper by a constant threshold that can be set by the user. This means that we have a new parameter HDCZA_threshold and parameter constrain2range is now deprecated #1062.
Part 3: Added option for HSPT.ignore.invalid = NA, which would consider invalid time segments as no movement for the Sleep Period Time definition.
Part 5: Fix bug in MM = timewindow part specific to when first night(s) are not available in part 4 results. #1039.
Part 2, 4, 5: Add parameter dec_reports and dec_config to ease tailoring GGIR to non-default UK/US machines #1048.
Part 2, 4, 5: Force language to "C" (UK/US English) to avoid issues on computer configured differently #1047.
Part 5: Behaviour parameter includedaycrit.part5 changed for values above 1, these are now interpreted as minimum number of valid waking hours during waking horus of a day. If you prefer to keep old functionality then divide your old value by 24 #1050.
Part 1:
Improved readability and maintainability of the code #1027
Improved processing speed for Axivity .cwa, GENEActiv .bin, and Movisens files
Made sure that g.readaccfile() reads timestamps in the correct timezone, configtz, for all monitor types
Note: there will be small differences in both metalong and metashort metrics calculated by this GGIR version, compared to prior versions. This is due to small improvements in the management of timestamps, calibration coefficients, and input data block boundaries.
Fix handling of ad hoc csv file header in g.inspectfile() #1057
Improved g.calibrate to better handle scenario when no non-movement periods are found in the entire recording #1032
Improved documentation for the need to specify rmc.firstrow.acc when working with ad-hoc csv file format and read.myacc.csv now produces an error when used directly while user forgets to specify rmc.firstrow.acc #1034.
Part 5: Fix bug in functionality for Sensewear data (externally derived epoch data) #1030
Part 1: For externally derived epoch data in dataFormat actiwatch_csv, actiwatch_awd, actigraph_csv, and sensewear_xls the non-wear detection is no longer done based on a hard-coded 60 minute rolling window but the window length is now modifiable with the third value of argument windowsizes (in seconds) as also used for raw data. #1026
Part 5: Fix issue with defining days specific to when timewindow is MM, recordings starts at midnight and both first and last days are incomplete #1029
Part 5: Improved handling of inconsistent number of columns in part 5 milestone data #1002
Part 3: Revised NotWorn option for argument HASPT.algo as used for count data #1011
Visualreport: Now able to handle recordings with no valid days in combination with argument visualreport_without_invalid = TRUE, fixes bug #1016
Part 2 and 5: Timing of LX is now expressed on scale between 12 and 36 to allow for meaningful person level summary of this value, fixes #1012
Facilitate handling of Sensewear xls file format with externally derived epoch data #974
Part 3: If argument sensor.location is set to hip then use longitudinal axis detected in part 2 instead of estimating it again with a different algorithm #1024
Part 5: If argument sensor.location is set to hip then store and use longitudinal angle and possible other angles in part 5 time series instead of anglez #1024.
Part 2: Fix bug where data_quality_report.csv contained incorrect filehealth[...] values whenever some of these values were supposed to be blank #1003
Part 1: Fix bug where on machines with GMT timezone and R >= 4.3.0, for GENEActiv .bin files, the starting timestamps of M$metalong and M$metashort were truncated to midninght #1000
Part 5: Fix bug where part5 output showed duplicate rows when argument dayborder is set to nondefault value #1006
Part 2: Fix bug that caused part 2 to struggle with corrupt ActiGraph .gt3x files #972
Part 2: Redefine horizontal axis of plots_to_check_data_quality #983
Documentation: Expanded documentation on desiredtz, configtz, and time stamp format in part 5 time series #966
Part 1: Now also able to handle some more variations in Actigraph csv count file format #978, and automatically aggregates to lower resolution if short epoch size is longer than observed epoch size in actigraph count csv.
Part 5: Reverting decision to prohibit segmentDAYSPTcrit.part5 to be c(0, 0). The default remains unchanged and documentation now only emphasizes the downside of using c(0, 0). #980
Argument documentation: Fixing series of typos (thanks to Pieter-Jan Marent for pointing them out)
Part 5: Fix bug in recently added functionality for studying overlap between sibs and self-reported behaviours #989.
Part 1:Enable use of temperature data in adhoc-csv format throughout GGIR #991
Part 1: Fix bug that caused a mismatch between IDs and filenames in part 1 when movisens participant folders did not contain the acc.bin file #994.
Part 2: Added parameters study_dates_file and study_dateformat to specify csv file with start and end date when accelerometer is expected to be worn #943
Part 5: Now stores dictionary for variable names in part 5 reports #938
Part 2: Bug fix in csv report generation when appending part 2 milestone data with differing number of columns #951
Part 1: Bug fix in gt3x data reading by avoiding duplication of first second when appending chunks of data #952
Part 1 + 2: Log information regarding number of time gaps and total time imputed with function g.imputeTimeGaps for ad-hoc csv and ActiGraph data in line with previously added similar functionality for Axivity cwa #571
Part 6: Added new part 6 with for now only Household co-analysis and Cosinor analysis.
Part 1 and 2: Change default value for nonwear_approach to "2023" which labels the entire window as nonwear if conditions are met. This instead of only the middle 15 minutes as is the case for "2013" setting. Further, setting "2023" now uses a 5 Hertz version of the signals for non-wear detection, for clipping detection the code uses the original signal.
Part 2: Move cosinor analysis code to its own function in order to ease re-using it in both part 2 and part 6.
Part2: Expand cosinor analysis with R2
Part 2: Arguments hrs.del.start and hrs.del.end when combined with strategy = 3 and strategy = 5 now count relative to start and end of the most active time window as identified. #905
Part 5: Change default for segmentDAYSPTcrit.part5 from c(0,0) to c(0, 0.9) and now prohibiting the use of c(0, 0) as it gives biased estimates. We knew this, but some users started using the default without attempting to understand it, by which it seems necessary to force a sensible default. #940
Add contributing guidelines for github.io documentation #923
Part 5: Added optioned "OO" to argument timewindow, which defines windows from sleep Onset to sleep Onset #931
Part 4: Now better able to handle nights without sustained inactivity bouts (rest) #911
Part 5: Function g.fragmentation code cleaned up, TP formulas revised following feedback Ian Danilevicz, and code now also produces sleep fragmentation #817
Part 1: Fixed issue #914 relating to specifying timezone for processing ad-hoc csv format raw data.
Part 1: Improved recognition of ActiGraph csv that occassionally confused for Axivity csv #918
Part 1: Added argument rmc.scalefactor.acc to be used by read.myacc.csv #887
Vignette: Expanded with paragraph on minimum recording duration #835
Part 4: More informative error message when advanced sleep log has duplicate or missing dates #925
Fix recently introduced bug where GGIR environment was not exported to cluster in GGIR part 1, 2, 3, and 5 #910
Part 1: Fixed minor bug in ismovisens that failed when datadir started with "./" #897
Part 5: Now able to assess overlap between self-reported naps and nonwear with sustained inactivity bouts in order to facilitate research on nap detection. Fixes #687
Part 5: Time series now also exported if recording only includes one night, even though this is not sufficient for the main part 5 analyses. #894 Further, the time series now also come with lightpeak (LUX).
Visualreport: Bug fixed extracting the numeric value of the days to exclude in g.plot5 #879
Part 1: Fixed minor bug to keep calibration data in the data quality report after re-running parts 1 and 2 with overwrite = TRUE and backup.cal.coef = "retrieve" #896
Part 5: Fix minor bug by which GGIR skipped the last day if measurement finishes before midnight and timewindow = MM #891
Part 4: Added parameter sleepefficiency.metric to decide if in-bed time (denominator) should be guider_spt or acc_spt + latency #811
Part 1: Revision to readability of code (credits: Lena Kushleyeva)
Part 1: Improved handling of corrupted .gt3x files #873
Part 1 + 2: Bug fixed in logging file health of Axivity data
Part 2: Addresses confusing error message for some users #888
Part 1 + 2: File health log captured by dependency GGIRread::readAxivity and incorporated in data_quality_report #866
Part 1: Fix ID extraction for externally generated epoch files #869
Sleep log: Argument nnigths is now deprecated and number of nights are detected automatically in sleep logs #856
Sleep log: Minor fixed related to misplaced parenthesis in g.loadlog and automatic extension of sleeplog matrix if needed to avoid error #867
General: When recording starts after midnight and before 4am, then the wake time for this first day is now derived in parts 3-4 and used in part 5 #859
Part 1: Fix major bug to .gt3x data autocalibration (only ActiGraph), where autocalibration was done but not applied to the data #864
Refactored code for functions g.analyse.perfile and various functions which name starts with "g.part5"
Part 1: Fix .gt3x file serial number and firmware extraction #850
Part 5: Now able to segment days based on qwindow #815
Part 5: Fix minor bug related to the definition of the MM window (it was biased by 1 epoch) #838
Part 5: Now g.part5.lux_persegment is able to handle timestamp in iso8601 format #848
Part 5: Fix minor bug by which GGIR skipped the last day if measurement starts at midnight and timewindow = MM #852
Activity log: Fix minor bug that appeared when seconds in the activity log are not compatible with the epoch length used in GGIR #844
Config file: Fix minor bug by ignoring the local function getExt from the config file #846
Update authors' information in DESCRIPTION and CITATION files
Added structure for github.io documentation page
Part 4: Now able to handle first night without any sustained inactivity bout detected #812
Vignettes: Buchan et al. 2023 cut-points for adults included in the cut-points vignette #804
Part 4: Identification of column names in advanced sleeplog is now case insensitive #812
Part 1: Functionality to append recordings with the same ID, see argument maxRecordingInterval #972
Part 1: Handling of external derived epoch data now able to handle empty lines, user can now specify format of the timestamps with argument extEpochData_timeformat, and ActiGraph count data also facilitated.
Part 1: Deprecate functionality for file formats .wav (Axivity Ltd) .bin (Unilever Discover) as keeping this code up to date with newer R versions took a lot of time. If you are interestedin re-inserting this functionality and contributing to its ongoing maintenance then please contact us.
Part 1: Fully deprecate function g.cwaread as it migrated to GGIRread a year ago.
Address #834 by using POSIXct where possible and avoiding use of POSIXlt in data.frame.
Open-Source Software License for GGIR changed to Apache 2.0
General: included functionality to allow the user select the separator in the csv files written by GGIR: reports in part 2, part 4 and part 5, data_quality_report.csv, and config.csv #770.
General: increased flexibility to read csv files related to sleeplog, activity log, data cleaning file, and csv containing calibration coefficients, by automatically detecting any separator argument from the set of [,\t |;] with function data.table::fread #770.
Part 4: Bug fixed in the determination of SPT when daysleeper #802
General: automatic detection of missing suggested packages such as GGIRread when code recognises that they will be needed #786.
Vignettes: instruction expanded about when to install additional R packages #786.
Part 2: minor bug fixed in strategy = 3 and strategy = 5 (now they consider the first ndaywindow which is equal to the max activity level) #796
Visualreport: Argument visualreport_without_invalid added #780
Adding keyword internal to many of the GGIR functions that are not intended for direct used by the user to reduce size of package pdf documentation and to ease navigation for the user #679
Vignette and documentation: Adding motivation for not using term sedentary behaviour and warning that visualreport has not been optimised for quality checking the GGIR results.
Visualreport: now it flags non-wear in the plot based on the part 2 milestone data.
Part 1: function and new algorithm for non-wear time detection which flags the full ws3 window as non-wear #645.
Part 1: Can now handle ActiGraph csv where first timegap occurs not in the first day of the recording #784 and #790
Vignettes: expansion of the cut-point vignette with information on activity counts-based cut-points #771.
Reports: Part 5 rows now ordered numerically again #769.
General: warnings added to inform user that rmc.desiredtz and rmc.configtz will be deprecated #765.
Part 1: Function g.calibrate now able to handle zero variation in temperature data #785.
Part 1: Facilitate working with epoch level data produced by external software #756
Part 2: strategy = 5 implemented as a variation of strategy 3 (it allows to select most active X calendar days) #768.
Part 2: fixed bug in strategy = 3 and now it selects the acc.metric of interest #768.
Part 3 + 4: Update date handling in SleepRegularityIndex to be compatible with latest R version #782.
Part 5: minor bug #775 fixed in the separation of the first and second day when more than one set of thresholds is defined and both MM and WW timewindows are extracted.
Part 5: intensity gradient is now also calculated for full window in part 5 and column names now indicate the window over the intensity gradient is calculated (i.e., "day" or "day_spt") #763.
Sleep log: fixed bug related to reading last day in advanced sleeplog.
Reports: nights in part 4 reports are now correctly ordered.
Documentation: improved documentation for the use of acceleration metrics
Part 2: Functionality for storefolderstructure now consistent with part 5
Part 1: Deprecating dependency on GENEAread package, from now onward only GGIRread is used for reading GENEActiv binary data #627
Part 2: Argument nonWearEdgeCorrection added to control whether this part of the nonwear detection algorithm is used #749.
Minor edits to make GGIR code backward compatible with R version 3.3 again.
Reports: GGIR now skips the csv and visualreport generation if required milestone data is not available.
Part 5: Speed improvements to functions g.part5.addsib and g.part5.wakesleepwindow
Part 5: Bug fixed in relation to long recordings with many days with non-wear data in part 5 #727
Now able to handle OS Windows-friendly double backward slash filepaths for datadir, outputdir, qwindow, loglocation and data_cleaning_file arguments #570.
verbose argument added to allow for turning off console message #652
Relevant for GGIR developers only: GGIR can now be tested from source without GGIR needing to be installed #704
Part 2: Bug fixed that caused columns N valid week/weekend days to be omitted #747.
Vignettes: Add cross-references between vignettes to ease navigation and link R introduction tutorial #720.
Vignette: Section added on MX-metrics (thanks Alex Rowlands + Ben Maylor for input) #723.
Part 1: Expand timegap imputation functionality with also imputation of the timestamps #742
Part 1: Add configtz argument to function read.myacc.csv #740
Part 1: Interpolate timestamps that lack decimal places #705
Part 5: fixed minor bug when axivity light data is stored as factor in part 1.
Part 1: cwa is now detected ignoring case in file extension in g.inspectfile #731
Part 2: Bug fixes in accounting for 25 hour days in part 2 day level analyses #728.
Part 2: Seconds in activitylog timestamps are now handled by g.conv.actlog
Part 2: Fixed #733 related to qwindows in the first recording day
Part 4: argument sleeplogidnum deprecated, ID class now auto-detected.
Part 1, 2, 4, 5: Fixes bug (#732 first half). Filenames are no longer ordered prior to processing which should make it more robust to work with raw data stratified across multiple subdirectories.
Visual report: Now uses part 3 milestone data consistently as reference to avoid inconsistencies when part 3 milestone data files were not generated #732 (second half).
Part 1: Improved handling of the expand_tail_max_hours functionality and replacing by argument recordingEndSleepHour. Further, the expanded time is now ignored in reports and visualizations.
Part 5: dayborder != 0 is now handled in g.part5.wakesleepwindow
Part 5: excludefirstlast.part5 is now applied per window type in g.report.part5
Part 2 and 5: arguments bout.metric or closedbout deprecated, g.getbout function simplified to a single algorithm.
Part 2 and 5: Bout detection fixed such that it can now detect bouts that equal the epoch length, and for epochs less than 30 seconds do no overestimate bout length by 1 epoch.
Reports: storing nonwear in part4 reports fixed when number of nights >= 10.
Fixed test for battery voltage in cwa file #678
Reports: nonwear_perc_spt does only appear in reports from part4 when WW windows are available
Vignettes: main vignette revised for undesired spaces and extended with the handling of nonwear_perc_spt in part 4 reports
Part 4: Fixed bug #686 causing last sleeplog night to be ignored when a sleeplog night is missing
Timestamp conversion functions tidied up #661.
Part 1: Deprecate brondcounts due to issues in activityCounts package
Part 5: Fixes #655 (unable to handle when M5HOUR falls on midnight exactly).
Part 5: Additional updates that I missed in 2.8-1 in POSIXlt to character conversion to be compatible with R-devel update svn revision r82904 (2022-09-24 19:32:52)
Part5: Fixes #655 (unable to handle when M5HOUR falls on midnight exactly).
Reports: Fixes #672 (improved speed of reports generation).
Changed POSIXlt to character conversion to be compatible with R-devel update svn revision r82904 (2022-09-24 19:32:52)
Part 1: Added neishabouricounts metrics and dependency to actilifecounts package
Part 2: Fixed time mismatch between metashort and activity log when the first day does not start at
Part 2 report: Improving how f0 != 1 is handled when first recording has no data
Part 4 report: now also able to handle longitudinal studies with repeated measurement for the same ID
Documentation: minor fix in ShellDoc2Vignette that affected the parameters vignette midnight
Documentation: Added information on Neishabouri counts in help files and main vignette
Documentation: New package vignette added for cut-points.
Documentation: New package vignette added for arguments
Documentation: GGIR function manual and parameter/argument vignette auto-integrate default values to avoid inconsistencies.
Documentation: Main vignette sections on cut-points and input argument shortened with reference to the new vignettes.
Documentation: Paragraph added on processing time.
Part 1: Long timegaps in ActiGraph data or ad-hoc .csv data as a result of idle sleep mode are now dealt with at metric level rather than raw data level.
Part 1: Speed up to code by changing how GENEActiv data converted to matrix and by changing how rolling median is derived.
Part 1" Deprecate option to read raw data from in RData files, which was connected to the selectdaysfile functionality as deprecated in previous release.
Remove zenodo and .cff file to simplify package citation and avoid tracking by RSD (issue #636)
Part 1: Add extra arguments to modify zero-crossing count calculation.
Part 3: Adding ColeKripke sleep detection algorithm.
Part 1: Deprecated g.cwaread and internally replaced by GGIRread::readAxivity.
Part 1: Deprecated g.binread and internally replaced by GGIRread::readGenea.
Part 1: Deprecated resample and internally replaced by GGIRread::resample.
Part 1: Added temporary option to choose between using GENEAread or GGIRread::readGENEActiv for reading GENEActiv .bin files.
Part 1 + 2: Deprecated selectdaysfile functionality.
Deprecated function g.getidfromheaderobject, and functionality merged with g.extractheadervars
Part 1: Arguments configtz and desiredtz now also used for .gt3x data.
Part 1: Temporary copy of read.gt3x code replaced by direct dependency on read.gt3x
Vignette: Cut-point documentation paragraph improved.
Part 1: Mismatches in the reading of ActiGraph csv files handled (mainly because of header = TRUE resulted in some acceleration values disregarded as they were considered a header in each iteration).
Part 1: Fixed issue #573 (code redundancy to impute time gaps in read.myacc.csv and g.imputeTimegaps)
Part 1: g.imputeTimegaps extended so that now it can handle time gaps at the begining, at the end of the file, and time gaps from one chunk to the next one.
Part 2: QC plot now with legend and minor updates to layout.
Part 4: Person level aggregation now takes place per filename instead of per ID, which should prevent that identical IDs in repeated recordings get aggregated into a single ling.
Part 4: ID matching between accelerometer file and sleep log improved by ignore spaces.
Part1: Added option to expand the last day of the recording to trigger analyses for that day, see argument expand_tail_max_hours in params_general.
Part 1: Add extraction of ID and serial number from Movisens data
Part 2: Corrected calendar date time stamps in daysummary report on last day of the recording.
Part 2: Further, improvement to activity diary functionality to warn user when date format is inconsistent.
Part 2: Missing values in activity diary are now skipped by which non-neighboring cells with valid data can define segments.
Part 3: Improved handling of sleep that ends in the hour before noon on the last day of the recording.
Part 4: Fixing #592 concerning using a set time window as guider for the sleep analyses
Part 4: Fixed issue #592 which caused GGIR to incorrectly warn used about using the set time window guider functionality correctly
Part 4: Fixing timezone sensitivity for OSx in Pacific timezone for gloadlog function.
Inform user (onAttach) when local GGIR version is behind CRAN version.
Part 2: Enhancing activity diary functionality to warn user when date format is inconsistent and to treat cells with only a dot as missing values.
Part 1: Fixing issue #577 concerning use of temperature data in ad-hoc csv file format
Part 5: Fixing issue #582 affecting windows where a single fragment spans the entire window.
Fixing bug #566 concerning decision to not parallel process being made too late
Part 4: Attempt to fix timezone sensitivity for OSx in Pacific timezone for gloadlog function.
Renaming function g.shell.GGIR to GGIR and adding new function g.shell.GGIR as a wrapper function around GGIR function to preserve functionality.
Deprecating functionality to read GENEA bin files (not to be confused with GENEActiv), because dependency matlab is about to be archived. Once matlab is back online we will reinsert this functionality.
Cosinor analysis now accounts for DST (see vignette for details)
Part 2: Dependency added to ActCR to perform Cosinor and Extended cosinor analyses, see new argument cosinor.
Part 2: g.IVIS function now able to handle missing data points, and used for cosinor analaysis
Part 2: g.IVIS function now has option to specify acceleration threshold when using IVIS.activity.metric=2, and used for cosinor analaysis
General: If there is only 1 file to be processed then code skips setting up parallel processing interface.
Vignette for read.myacc.csv function included.
Parameter objects documentation moved to g.shell.GGIR.
Part 4: Advanced sleeplog handling further improved as it now also handles dates in sleeplog far beyond recording dates.
Part 2 report: Number of days to plot now auto scales to length of measurement.
Part 2 report: Fixed bug introduced in 2.6-3 making it impossible to generate a report for more than 1 file and fix bug introduced in 2.6-4 messing up the merging of files.
Part 1: Now auto-converts files with GT3X extension to gt3x as this is required for read.gt3x.
Part 4: Removed unnecessary warning while loading sleeplog.
Part4: Bug fixed in handling of advanced sleeplog data when start of acc recording does not match start of sleeplog
Deprecated functionality for reading GENEActiv csv files without the read.myacc.csv functionality.
Part2: Non-user facing arguments and object named BodyLocation replaced by sensor.location to be consistent with the term used in part 3.
Minor documentation updates to cover brondcounts and to reflect that bout.metric is no longer 4 by default
Minor change to parallel processing so that GGIR does not create a cluster larger than the number of files to process. Fixes #535
Part 4: Fixes bug #531 re. sleeplog being ignored if first night is missing
Part 4: Now relies more on ID extraction in part 1-3 and only attempts to extract ID from filename if that fails. Previously it extracted the ID twice.
General: Speeded-up implementation of rounding decimal places as introduced in release 2.6-1
Part 1: Can now handle .gt3x produced by CentrePoint but for now user needs to change upercase file extension to lowercase
Part 1: Fixed issue #520 with handling Movisens data
Part 1: Fixed issue #523 with calibration of ActiGraph csv files
General: Prevent redundant warnings resulting from some unnecessary checks of params objects
Report generation per window: Fix undefined function call introduced in 2.6-1
Part 1: Fixed bug that prohibitted processing files in subfolders.
Part 1: Dynamic range can now be extracted from Axivity .cwa files when not equal to 8g.
Part 2: Qwindows logically ordered in reports.
Part 2: Fixed bug #516 regarding passing on of dateformat.
Part 4: Fixed bug introduced in 2.6-0 relating to sleeplog guider being assined even when no sleeplog used.
Part 5: Improved handling of missing sleep estimate for first night.
General: Fixes bug introduced in 2.6-0 relating to storage of configuration file on comma-separated machines
General: GGIR reports are now saved with a maximum of 3 decimal places for numeric variables.
Part 1: Fixed warning when working with a vector of filenames as argument to datadir.
Part 2: Added argument max_calendar_days to allow user to control the maximum number of calendar days to include in analysis, irrespective of argument strategy value.
Part 2: Argument maxdur is no longer specific to strategy 1, but applied irrespective of value of argument strategy.
Part 4: Fixed issue that sleeplog is indicated as the guider even when when corresponding timestamp cannot resolve to timestamp.
Part 5: Time series output filenames now auto-stripped from [.]|rdata|csv|cwa|gt3x|bin character string.
Fixed issues introduced in 2.5-6 release: maxNcores was not defined in part 1, params_output and not passed on to part 3, and params objects were unneccesarily repeatedly checked.
Fixed bug #484 affecting part 5 report not being able to generate because non-matching columns in milestone data
Part 2: Recently introduced BrondCounts and ZeroCrosssing Counts no long auto-scaled by 1000 like all the other metrics as these are not in gravity-units.
Part 3: Fixed warning when SRI is calculated on DST day with 23 hours
Part 5: sibreport and timeseries now stored per sib definition.
Part 1: Now able to process modern .gt3x data with thanks to R package read.gt3x.
Part 1: Timegaps and zeros across all three axes in ActiGraph data (.csv and .gt3x) now automatically imputed by last recorded value normalise to vector of 1.
Adding BrondCounts as optional acceleration metric and dependency on activityCounts, and enabling Sadeh and Galland algorithms to use it for sleep estimation.
Part 1: Deprecating function g.metric as its functionality has been taken over by g.applymetrics (this has been announced to its users with a warning for over a year now).
Part 2: Adding warning when ID cannot be extracted from file based on argument idloc.
Part 4: Empty or incomplete sleeplog rows now better ignored
Part 4: No longer an R warning is given when ID is missing in sleeplog, because this is common and user can already see it in csv reports.
Part 3: Now makes sure that HASPT is skipped when user configures def.noc.sleep as a set time window. This feature that probaly few people use nowadays broke with the 2.5-0 release.
g.shell.GGIR: Now gives warning when user supplies double arguments.
Part 4: Now warns when none of the IDs in the sleeplog could be matched with accelerometer data.
Part 1: read.myacc.csv fixes bug with argument rmc.check4timegaps
Part 3: Fixes #472 SRI calculation not possible when complete absence of sleep in recording
Part 5: Experimental nap detection added to report and time series, currently only model for 3.5 year olds available.
g.shell.GGIR: Removing forced assignment of sleepwindowType argument to "SPT"
g.shell.GGIR: Reviving setwindow option def.noc.sleep, which broke
Minor updates to function documentation and vignettes
visualreport: Month now displayed by name rather than number to avoid confusion about format.
Vignette expanded with documentation on non-default variables in part 4 csv report
Vignette added with a tutorial on how to perform segmented day analysis
Part 1: The sensor fusion functionality introduced in version 2.2-2, as a bit of an experimental development, has now been removed from GGIR as added value turned out to be limited.
Part 2: Code for ID extraction tidied up, and new idloc argument options added.
Part 2: Activity log can now also have empty days.
Part 2: Now also exported in long format if qwindow has length longer than 2.
Part 3 and 4 expanded with Sleep Regularity Index.
Part 4 number of awakenings is now also in the output.
Part 5 LUX per segment calculation bug fixes.
visualreport code modified such that it visualises any day with at least 30 minutes of data unless sleep could not be estimated from the corresponding night.
Part 1 now able to derive zero-crossing counts needed for Sadeh algorithm
Part 2 function g.conv.actlog to use activity log to guide qwindow now able to tailor dateformat
Part 3 now option to tailor SPT detection for hip data by using horizontal longitudinal angle as indicator of lying
Part 3 code restructured to estimate SPT and SIB in separated function (HASIB and HASPT) such that g.sib.det is more readable.
Part 3 now option to select SIB algorithm, including: vanHees2015, Sadeh1994, and Galland2012
Part 4 now able to handle more advance sleeplog format that also contain nap and nonwear entries per date
Part 4 report now includes guider estimates also in 'cleaned' report
Part 4 WASO and NOA (Number of awakenings) added to output
Part 4 Able to handle time in bed diaries/algorithms, and generates sleep latency and sleep efficiency estimate if available
Part 5 now able to export sustained inactivity bouts and self-reported naps and nonwear to csv report to aid nap analysis
Part 5 numeric timing of MX-metrics changed to be hour of the day
Part 5 Lux per segment variables now turn LUX during SPT to zero
Part 4 legend added to visualisation
Part 5 bug fixed that caused part5 single row output to be stored as a single column
Part 1 fixed bug related to g.getmeta reading movisens files
Part 1 resampling function expanded with option to choose interpolation technique
Part 3 fixed bug introduced in 2.4-0 making it impossible to process long recordings with many sustained inactivity bouts
Part 5 LUX variables per segment of the day improved
Removing calls to closeAllConnections as requested by CRAN
Part 5 fragmentation analysis added
Part 5 report, added argument week_weekend_aggregate.part5
Part 5 intensity gradient now also extracted here for waking hours
Part 5 LUX variables added (beta-implementation)
Part 2 and 5, Bout detection algorithm improved, see bout.metric 6
Parts 1, 2, 3 and 5: Added argument maxNcores to control maximum number of cores to be used in parallel processing mode
Part 1 fixed bug related with ENMOa calculation which made the metashort data frame to be empty
Part 2 fixed bug to report generation in part 2
Fixed bug related to visualization report when a file has not been processed in part 4
Part 1 when using ad-hoc data format: now able to handle timestamp column.
Part 2 report when using ad-hoc data format with header: now able to extract and store serial number in part2 report.
Test file generation for unit tests improved. Thanks Lena Kushleyeva.
Part 2 estimation of longitudinal axis and related error handling improved
Part 3 bug fixed in usage of argument dayborder when not 0. Thanks Ruben Brondeel for spotting this.
Part 3 bug fixed in recognition fraction night invalid for first night. Thanks Ruben Brondeel for spotting.
Part 1 fixed warning related to closing connection to bin files. Thanks John Muschelli.
Part 2 fixed warning that deprecated IVIS argument does not exist
Part 5 bug fixed for g.part5.fixmissingnight when night is also missing in sleeplog
Part 1 Documentation for sensor fusion functionality improved
Part 2 csv report generation speeded up
Part 5 bug fix in waking up time for first night, in WW mode and HDCZA guider
Various minor function expansions to documentation and vignette
Part 2 Earlier draft implementation of IV and IS metrics now better tested and bugs fixed.
Part 2 Default value for argument IVIS.activity.metric changed to 2.
Migrate codecoverage testing to Github Actions
Part 1 Implemented initial sensor fusion functionality for AX6 cwa data
Part 3 Fixes bug introduced in 2.2-0 for recordings without sustained inactivity bouts
Transitioned from Travis+Appveyor CI to GitHub Actions
Part 5 fixed issue with expected max number of files to process
Enabled console display of GGIR version number when running g.shell.shell under Windows
Embedded new GGIR logo and update layout of vignette
Part 5 improved midnights identification when the recording starts at 0am
Part 5 fixed days misclassification for MM output when recordings starts with some non-wear days
Documentation added to vignette for L5TIME_num and M5TIME_num
Deprecating sessionInfo storage as it caused problems for large scale parallel processing
Part 1 fix to 1 minute time shift when recording starts at full minute.
Improved compatibility with older .cwa file formats.
Part 5 bug fixed with day name and date allocation for daysleepers for MM report
Fixes bug part 4 and 5 with missing nights which are not accounted for when assessing max night number.
Fixes bug part 3 introduced in version 2.1-0 re. SPT detection for daysleepers.
Fixes redefinition of the time windows (with "MM") in part 5 to include all recording days when the measurement starts with multiple non-wear days.
GGIR version now displayed in console when running GGIR
Bout metric 5 added to enable not allowing for gaps in bouts.
Part2 argument qwindow now able to handle person specific activity diary
Intensity gradient now also extracted from long MX windows, see MX.ig.min.dur
Part 2 now able to be guided by activity log (see qwindow)
Part 2 now stores output also in long format if day is segmented
Actigraph serial number now extracted from the csv fileheader
Actigraph serial number now used to assign correct dynamic range per Actigraph generation (6 and 8 g respectively). Previously 8 assumed.
Part 2 indicator added of which axis is most correlated with itself over 24 hours, for hip data this may be indicator of vertical axis orientation.
Part 1 bug fixed in timestamp generation that caused measurements that start exactly at the hour and 0 minutes to have a 1 minute offset in time.
Part 1 to reduce data storage size epoch level metric values are now rounded to 4 decimal places.
Part 4 report, issue fixed with double night entries.
Bug fixed with Actigraph starttime recognition when machine language is not English and months are expressed in b or hh format.
Bug fixed in accounting for daysleeper in first night ofr recording.
Visual report, fixed argument viewingwindow for g.plot5 (visualreport)
Part 1 rmc.myacc.csv now raises warning when timestamps are not recognised
Part 1 fixed rmc.dynamic_range not correctly passed on in 2.0-1
Part 5 sub-function round_seconds_to_ws3new now handles missing values
Now able to read gzipped csv files
Part 2 Fixed midnight selection being off by one sample
Part 1 tidied up metric calculation and added a few metrics
Part 2 Added strategy 4 (ignore data before first midnight)
Data from movisens accelerometers can be now processe
Part 5 timestamps in timeseries output in RData format (new since 2.0) now correctly accounts for timezone
Part 4 now has option to only exclude the first or only the last night
Now R version 4.0 compatible
Part 1 Clipping detection expanded: If any value in block more than 150 percent dynamic range then ignore entire block.
Part 2 report now able to handle changing variable count due to missing data
Part 2 L5M5 better able to handle small qwindow intervals
Part 3 HDCZA algorithm expanded to be able to detect daysleepers
Part 3 various improvements to qc plots.
Part 5 now also stores full and cleaned output
Part 5 now better handles missing days in part 4 output.
Part 5 behavioral class SIB removed from daytime
Part 5 time series export more user-friendly.
Part 5 function code split up in 7 new functions.
Part 4 + 5 argument data_cleaning_file added.
Part 4 + 5 output variable names improved and documented in vignette
Numunpack function moved back to c++
Various updates to visualreport (plot5 function)
External function embedding feature added
We now consistently refer to ID (not id) and calendar_date, spelling was inconsistent.
Vignette now has documentation on sleep and time-use analysis.
Metric ENMOa now facilitated for MVPA calculation
Bug fixed with part4 daysleeper handling
Part5 WW window calculation improved, first day now uses sleeplog or HDCZA algorithm estimate, and last day is ignored if no sleep estimates are available. This also affects csv exports by argument save_ms5rawlevels.
Added explanation to vignette on how to use published cut-points.
Axivity AX6 (acc + gyro) in cwa format now supported for file reading, actually using the gyro data for feature calculation is future work. In the mean time, gyro signal will be ignored by the rest of GGIR.
Axivity AX3 acc data in cwa format can now also be read if dynamic range is not 8g. Previously this was not possible.
Fixed bug related to visual report generation when qwindow is set to non-default value.
Added way to handle Actigraph files which start with several days of zeros which complicates the auto-calibration.
Default for desiredtz to timezone of machine.
Fixed bug that emerged in previous version with GENEActiv .bin data not being processed by g.getmeta for some files.
read.myacc.csv is now able to resample data with irregular sample rates and handle timestamps in character format.
function resample can now handle any matrix size, previous only 3 columns.
Fixed bug when using multiple non-angle metrics in part1 and trying to calculate 1to6am average metric value in part 2.
Expanded Actigraph date format recognition ability.
visualisationreport (function g.plot5) enhanced with colour coding for activity classes.
Fixed bug in sleep period time recognition for first day of measurement.
Fixed functionality to supply calibration coefficients file to backup.cal.coef.
Fixes OSx flavor not being released on CRAN in previous version.
Upgrades to foreach loop to ease package maintenance
Documentation part4 expanded to clarify difference between full and cleaned report.
Non-wear detection now possible at 1 minute resolution, previously 5 minute.
Function read.myacc.csv now able to utilize 3rd party wear detection.
Device serial number recognition in Axivity cwa files fixed
New GitHub release, because previous version did not install.
Fixed bug introduced in version 1.10-1 in the conversion from numeric to character sleep times
Dependencies of dependencies removed from the DESCRIPTION file
Fixed 1to6am variables, which was wrong in version 1.10-1
Added functionality to handle accelerometer data from any accelerometer brand stored in csv files via read.myacc.csv. Pass on the arguments of this function to g.shell.GGIR to use this functionality.
Added reference to new GGIR paper to the documentation
Configuration file option now added to g.shell.GGIR and documented in vignette
metric lfen added (low-pass filter signels followed by Euclidean norm)
issues fixed with passing on of hb and lb arguments
argument backup.cal.coef can now also handle data_quality_reports.csv files
part 1 now automatically uses previously generated calibration coefficients if the datafile was previously processed, see documentation g.part1 for further details.
Enabled multiple values for argument winhr, by which part2 can now calculated for example L3M3, L5M5, L6M6, L10M10 all in one go. Further, option added (qM5L5) to extract percentiles (quantiles) from the value distribution corresponding to these windows.
Moved IVIS calculation to seperate function, and split up function g.analyse.
Now possible to specify time windows that need to be ignored for imputation, see TimeSegments2ZeroFile.
Default value for argument mode changed from mode = c(1,2) to mode = 1:5, to perform all the parts.
Checks added for user write and read access permission, and subsequent warnings given..
Parts 1, 2, 3, and 5 can now use multi CPU cores which speeds up the processing.
Argument minimumFileSizeMB added to g.part1 to aid filtering out too small data files.
Added functionality to work with studies where accelerometer is configured in one timezone and used in other timezone. Only functional for AX3 cwa data at the moment. See argument 'configtz'.
Sleep estimation is now skipped if a day only has one sustained inactivity bout
Arguments ignorenonwear default value changed to TRUE and def.noc.sleep default changed to 1 in line with literature.
Fixed AX3 csv format starttimestamp recognition
Part5 csv export now also includes class labels (previously only class numbers).
Fixed part5 output midnight-midnight window when monitor not worn during first days.
Fixed assumption that when using argument idloc=2 the ID has a letter at the end, and automatically removes the last value in the index. The code now first checks for this assumption.
Update vignette with a more elaborate explanation of the optional arguments to g.shell.GGIR.
functionality storefilestructure should now store filestructure in output of part 2, 4 and 5.
filelocationkey.csv that was previously written by storefilestructure was redundant and removed.
sessioninfo storage improved.
Fixed bug that caused part2 to provide incorrect window specific estimates on first day. of measurement if day is incomplete (not 23, 24 or 25 hours).
Calibrate function now better able to handle files with more than a week of data, where auto-calibration struggles to find enough sphere data in the first week.
Fixed part5 output midnight-midnight window when monitor not worn during first days.
Part4 handling of clocktime 9am corrected in addition to fix from version 1.7-1.
Fixed bug for Actigraph csv header recognition when column 2 and 3 are NA (prevented processing before)
Fixed bug in g.report.part5 in the calculation of the total number of valid days per person.
Fixed bug that caused part5 to struggle with timezones west of greenwhich time.
desiredtz added as explicit argument to g.inspectfile, g.cwaread, and g.dotorcomma.
Fixed bug in pageindexing in g.readaccfile when machine runs out of memory.
Fixed bug in pageindexing in Actigraph csv files (10 rows in raw data skipped every block (day)) of data.
Added more informative warning message in g.report.part2 if file cannot be read.
Fixed bug in scenario when person is daysleeper and wakingup time occurs before noon, and 12 hours too early.
Fixed bug re. storefolderstructure=TRUE causing 2 variables to drop in g.report.part4 if storefolderstructure=TRUE.
g.intensitygradient enabled to handle absense of data.
tidied up some of the redundant or even confusiong information printer to the console
Fixed order of Nbouts output in g.part5 was not consistent with bout duration.
Functionality added to read AX3 Axivity csv files that have the following characteristics: Raw data in g-units, not resampled, and with timestamps stored in the first column.
Fixed bug that caused the date of the last measurement day in part5 output to be one day ahead if argument dayborder=12.
Part5 struggled to process measurements with more than 40 days, now fixed.
g.getstarttime can now also handle dates in Actigraph csv-file headers that are dot separated, e.g. 20.05.2016, before it only handled 20-05-2016 and 20/05/2016.
Part4 handling of clocktime 9am corrected.
Filename identification in part5 improved when saving raw level data.
Fixed ability to read wav file header when shorter than expected.
Fixed issue with CWA read functionality causing some files not to be completely read
Link with Zenodo for doi generation removed.
Broken url fixed in vignette.
Report part 4: Count of available nights with accelerometer data fixed
Report part 4: NA and NaN values replaced by empty cells like in other reports
Intensity gradient analysis added to part2 output according to Rowlands et al. MSSE 2018, doi: 10.1249/MSS.0000000000001561
Documentation on part4 output variables improved.
Providing incorrect value of sleeplogidnum in part4 should now provide a more informative error message
Added functionality to handle timestamps that start with the year.
Fixed timezone dependency of g.analyse (affected only order of columns), g.part5 (affected time detection), and consequently test_chainof5parts.R
Read functionality for Actigraph csv files speeded up by replacing read.csv by data.table::fread
Argument qwindow is now able to handle input vectors longer than 2 and will derive all part2 variables for each time window that can be defined from the values of qwindow, e.g. value =c(0,8,24) will analyse the windows: 0-8, 8-24 and 0-24 hour.
Argument L5M5window deprecated because argument qwindow now defines the window over which L5M5 analysis is performed.
Argument winhr is now reflected in g.analyse/g.part2 output variable names, previously this variable name was hardcoded as L5M5, even if winhr was not 5.
Part2 output variable names updated to be more consistent in structure and more explicit about the timewindow over which they are calculated. The variables that were calculated over the full recording (using diurnal normalization) now have the extension "fullRecording", this in contrast to the variables that are only calculated from measurement days with 'enough' valid data.
Fixed calculation of N valid WEdays and Nvalid WKdays in part2 that was wrong since version 1.5-21. It counted all days and did not exclude days with insufficient amount of data.
Fixed warning message in test of g.part5.
output variable acc_timeinbed renamed to acc_SptDuration to avoid confusion with terminology used in supporting papers, which are about SPT (sleep period time) detection and not about time in bed detection.
output variable acc_dur_noc renamed to acc_SleepDurationInSpt to improve clarity of variable name relative to acc_SptDuration
Variable names ENMO accidentatly disappeared from g.analyse output in 1.5-23, this has now been reversed.
Fixed issue in g.part5 in handling the last day of measurement when using 'MM' windows and dayborder not equal to 0 (midnight) sometimes resulting in the last day longer than 25 hours.
Fixed error message in g.part5 that occurs when calculating L5M5 when day is shorter than L5M5 time window.
g.part5 is now able to generate summary from all measurment days (thanks Jairo).
MM results in g.part5 now correctly stores onset and waking for single date per row.
Various checks added to g.part4 to ensure measurements in all shapes and size can be processed.
minor improvements to documentation g.part5
size of example data and vignette images reduced to reduce package size
Improved handling of day saving time in g.part3 and g.part4 within the two nights in a year when the clock changes (DST was already correctly handled in the rest of the year)
Algorithm HDCZA is now the default algorithm to use, if a sleeplog is used and an entry is missing for a particular night.
pdf generation in part 3 is now optional (argument do.part3.pdf), this may be useful for slightly speeding up data processing as it takes a few second to generate the plot.
test added for g.getbout function.
bug fixed in timestamp recognition for object timebb in function g.part5
cwaread issue #57 fixed
SPT-window detection included (work in progress)
cpp code fixed which did not compile anymore
a machine specific function test removed following feedback from CRAN maintainers
Fixed bug introduced in 1.5-1: large window size of 3600 seconds was accidentally hardcoded when the g.readaccfile function was added to GGIR in version 1.5-1
Codecov testing added and badge added to the README file
Functions added to create dummy accelerometer file (csv) and dummy sleeplog (csv), needed for testing
Bug fixed in g.wavread to recognize .wav extension file header for files with alternative header size
Default IVIS_epochsize_seconds parameter updated from 30 to 3600
g.part1 messages on the consolo are now condensed printing only the number of the blocks loaded separated by spaces rather than new lines
Split g.part5 function into multiple smaller functions
Replace hard-coded "Europe/London" in g.part5 by desiredtz, to make the function work for users outside the UK
Data frame output from g.part5 is now tidied up by removing empty rows and columns generated
Calculation of mean amplitude deviation (MAD) is now implemented in g.part1 by the argument do.mad
Percentiles and levels in g.part2 are now calculated for all the acceleration metrics selected
g.part3, g.part4 and g.part5 are now independent on metric ENMO to work, argument acc.metric allows the user to select which metric to use to describe behavior
Argument dayborder is now included in g.part5 to consider the whole measurement in case the protocol starts after midnight
Jairo Migueles added to list of contributors
g.inspectfile now also functional with cwa data
option added to enforce dynamic range with argument dynrange
vignette expanded
vignette expanded
Bugs fixes in relation to new cwa-read functionality c++ routine registration
Documentation added for all underlying functions
vignette added
Bugs fixes in relation to new cwa-read functionality
Bugs fixes in correct number of days recognition in part5
Removed teLindert2013 metric, because it was not used and not verified
Split g.getmeta function into multiple smaller functions
Added IS and IV variables to g.analyse (still in explorative version)
bug fixed related to wav file read errors
function g.cwaread added (credits to E. Mirkes) for reading Axivity .cwa-format data. g.shellGGIR will automatically use this function when input data has .cwa extension
bug fixed related to for GENEactiv starttime recognition which was introduced in version 1.2-11
g.part5 documentation added on its output
bug fixed in functionlity to process only specific days in measurement (credits to J Heywood)
bug fixed in midnight recognition in g.part5
improvement to handling of measurements that start a few minutes before midnight (credits to E Mirkes)
bug fixed related processing files shorter than 1 day, introduced in previous version
documentationa added for Axivity wav-format data
start made with implementing code testing functionality using testthat and covr
documentation improved for argument def.noc.sleep in function g.part4
g.part5 added. g.part5 merges the output from the first four parts
Functionality added to read Axivity wav-format files with acceleration in first three channels. No documentation added yet until I have more confirmation that it works well
Changed function argument 'mvpa.2014' into 'bout.metric' across the package in preparation for a central defintion of bouts for future GGIR version which will not only provide bout calculations for MVPA but also for inactivity. Further, I added function g.getbout to improve transparency about the bout calculations
Updated documentation for function g.analyse to clarify different bout metric definitions
Improvements to the functionality to only process specific days from a long accelerometer file using the argument selectdaysfile
Timestamps are now in ISO 8601 format. I have updated the code such that it can still handle old timestamp format, but newly processed files will produce timestamps in the ISO 8601 format. The practical difference is that it will include a numeric timezone indicator.
Bugs fixed in data selection in g.getmeta function. In the old code it tended to drop the last 30-45 minutes of a file.
Added more optional features to be generated by g.getmeta, including rolling medians of the acceleration signals.
Updated documentation for function g.analyse to clarify different mvpa bout definitions
mvpa.2014 = TRUE turned back on again (was disable in last version)
mvpa.2014 TRUE/FALSE was swapped, FALSE is now the default
mvpa.2014 = TRUE disabled
Accelerometer non-wear time is now also reported in the output of part 4
Part 1 is now able to only process specific days of a measurement via argument selectdaysfile. This is useful when measurement lasts for a week and the participant is instructed to only wear the accelerometer on one or two specific days.
Argument mvpa.2014 and closedbout added to function g.analyse. The calculation of MVPA (moderate and vigorous physical activity) has been available since 2014. This calculation has been improved, but the user has the option to continue using the old calculation.
Bug fixed in the loading of data files with (very) large amounts of data
Bug fixed in starttime allocation for measurements starting in the 15 minutes before midnight
Literature reference for sleep detection updated
Argument backup.cal.coef now with improved feedback if something goes wrong
Report generation for part 4 much faster now
Bug fixed in part 4 in assignment of dayname when a person sleeps during the day
g.shell.GGIR now capable of handling minimal input argument specifications
Console output from part 3 and 4 more compact now
Additional bugs fixs related to dealing with csv-format data from the Actigraph accelerometer brand
g.part2 now also stores its output as milestone data just like g.part1. This to facilitate parallel processing of large amounts of data files on clusters.
The orginal report generation functionality in g.part2 has now been moved to shell function g.shell.GGIR because part3, 4 and 5 which are scheduled for later this year will combine milestone data from multiple analysis parts. It therefore, is more logical to control all report generation from the top level in the function hierarchy (g.shell.GGIR).
g.part1 now comes with the option to provide backup calibration coefficients in case auto-calibration is unsuccessful. This function is primarily designed for studies with short lasting experiments.
g.part2 now has the option to export epoch values to a csv-file. Note that these same epoch values are also stored in the .RData milestone file from part2. The export option is mainly to ease access to epoch level data outside the R environment.
g.shell.GGIR now offers the option to overwrite previously generated milestone data with variable 'overwrite'. The default setting (FALSE) is still to skip previously analysed files, which is intended to avoid having to do the same analyses twice after an interruption. However, overwriting previously generated milestone data could be useful when modifications are being made to the input arguments.
g.shell.GGIR now offers the option to record the folderstructure in which an accelerometer file is located, especially useful for studies where accelerometer files are stored hierarchally in line with the study design.
Additional bugs fixs related to recognising data format in Actigraph data
Angle variables are now extracted based on 5 second rolling median as opposed to 501 sample rolling median
Package expanded with functions: g.part1, g.part2, and g.shell.GGIR. These shell functions should help movement scientists to utilize the package without too much prior knowledge about R
Additional bugs fixs related to recognising data format in Actigraph data
Package expanded with axis angle metrics
Package expanded with metric for replicating teLindert2013 counts, see g.getmeta
Package expanded with metric ENMOa, see function tutorial g.getmeta
Bug fixed related to recognising date format in csv-file header from Actigraph accelerometer brand
Literature reference added to function g.calibrate
function g.getmeta expanded with argument 'chunksize'
Implemented functionality for csv-fromat data from GENEActiv and Actigraph. It seems to work for the test files I have, more testing may be necessary
Cleaned up some of the NaN and NA output to aim for consistent annotation of missing data
Expanded g.analyse with estimates of time spent in moderate and vigorous activity (a construct popular among physical activity researchers)
Re-named a number of variables in the output from g.analyse to be more friendly for re-use in stata or sas. The majority of variable names are now shorter and do not include spaces, dots or commas
Added examples
Expanded documentation for function g.analyse
Fixed bug in extraction of starttime that caused the starttime to be truncated to 00:00:00 in a fraction of measurements.
Fixed bug in extract of temperature in function g.calibrate
Deleted three explorative variables that were only extracted in g.analyse if argument doangle was set to TRUE in function g.getmeta. A number of bugs and the lack of referable journal publications made me decide to remove these variables while working on them. I intend on re-releasing these variables during the course of 2014. Please contact me if this causes you problems