NEWS
GGIRread 1.2.0 (2026-10-28)
All changes below concern readAxivity().
Performance and compatibility
- Speed up packet decoding, timestamp caching, integrity checks, imputation and resampling with a buffered C++ processing loop, retaining the R interface and timezone conversion. Reduce memory retention when trimming output buffers.
- Maintain C++11/C++14 and macOS Clang compatibility. Require Rcpp >= 1.0.10 to safely release native buffers when warnings trigger a warning handler exit or become errors (
options(warn = 2)).
Timing and resampling
- Preserve fractional sampling rates (e.g. 12.5) throughout decoding, timestamp correction and resampling. Reverse the firmware's fractional timestamp shim using its truncated integer rate while retaining the exact rate for sample timing.
- Correct the final block's time axis, including chunks containing only that block (#98), and prevent floating-point timing errors from dropping the final sample at fractional rates. These fixes can change the final samples and output row count.
- Use the preceding raw sample and timestamp for linear and nearest-neighbour interpolation between valid packets. Preserve R's timestamp rounding on platforms using fused multiply-add, fixing small interpolation differences on macOS ARM.
Incomplete or corrupt data
- Retain the last valid block before a corrupt file tail, including chunks requesting only that block and the tail. Report an explicit error when a chunk's endpoint search exceeds the consecutive corrupt-block limit.
- Ignore incomplete trailing packets, warn about trailing bytes only when reading the header, and report an explicit error if no complete data blocks remain. Reject unsupported sample packing formats.
- Correct AX6 gap imputation to use accelerometer channels for the normalised 1 g orientation or fallback, and fill gyroscope channels with zero. Preserve sensor columns in single-sample output.
Documentation
- Clarify chunk indices, output units, header fields and quality logs.
GGIRread 1.0.11 (2026-09-18)
- Added GENEActiv light calibration needed for device model GENEActiv 1.2 and above. Contributed by ActivInsights Ltd, the manufacturer of GENEActiv devices.
GGIRread 1.0.10 (2026-08-26)
- Fix bug in readGENEActiv with
path.expand. #94 @muschellij2
- Add StartTime header field to GENEActiv output. Note: we already had the StarTime field but this comes with a typo which can be confusing. #96 @muschellij2
GGIRread 1.0.9 (2026-07-15)
- Fix bug in readActiwatchCount. #92
GGIRread 1.0.8 (2026-03-11)
- Update readActiwatchCount to handle behaviour upcoming data.table package release. #89
GGIRread 1.0.7 (2025-11-26)
GGIRread 1.0.6
- Actical: Improve detection of recording start #85
GGIRread 1.0.5 (2025-05-09)
GGIRread 1.0.4 (2025-03-31)
-
Fitbit: Fix bug preventing the loading of a sequence of json files. #76
-
Add functions for reading Parmay Tech Matrix sensor (BIN files) with accelerometer, gyroscope, temperature, and heart rate #70.
GGIRread 1.0.3 (2025-03-07)
-
Actiwatch: Extract marker button data from .AWD and .CSV files #72
-
Philips Health Band: Extract marker button data from .xlsx files #72
-
Actical csv data: Improved detection of time series start. #73
GGIRread 1.0.2 (2024-10-25)
- Added a
NEWS.md file to track changes to the package.
- Stops interactive calling of
chooseCRANmirror on .onAttach if interactive and CRAN mirror not set GGIR #1141.
- GGIRread version look-up in .onattach() no longer crashes when computer is offline.
- Migrate read function for ActiGraph (csv) and Actiwatch (csv/awd) count data to GGIRread #68.
- Add function for reading Actical (csv) count data #68.
- Add functions for reading and merging Philips Health Band file pairs (xlsx) #68.
- Add functions for reading and merging Fitbit (json) files with sleep, steps, and/or calories #68.
GGIRread 1.0.1 (2024-06-03)
- Progress bar fixed, issue #63 (credits: John Muschelli)
GGIRread 1.0.0 (2024-03-28)
- GENEActiv no longer prints error to console when more data is requested
than is in the file because this is not an error, issue #58
GGIRread 0.3.3 (2024-01-24)
- When GENEActiv device battery runs low before downloading data the timestamp in the file header will default to 2010-9-16. This is now corrected by using the timestamp from the first page header instead, issue #56
GGIRread 0.3.2 (2023-12-05)
- Improved handling of failed checksum in .cwa files #53 (credits: Lena Kushleyeva)
GGIRread 0.3.1 (2023-10-11)
- Now iterates through cwa files using native cwa blocks instead of 300
sample pages.
- Now properly accounts for unexpected high sampling rate for the imputation.
- Deprecated option to iterate based on timestamps.
- Deprecated readWav function, see #48 for justification.
- This release already appeared on GitHub on 30 August but is now also submitted to CRAN
GGIRread 0.3.0 (2023-08-07)
- Improved imputation of faulty blocks readAxivity
- Unit test added for AX6 files
- License update to Apache 2.0.
GGIRread 0.2.10
- Fixed bug in temperature extraction Axivity cwa files (credits: Lena Kushleyeva)
- readAxivity now able to recognise when AX6 has been configured without
gyroscope sensor and only provides accerometer data. Fixes #31 (credits: Lena Kushleyeva)
- readAxivity refactored and faster (credits: Lena Kushleyeva)
but also expanded with checksum check and sampling frequency check,
data blocks are imputed when checks fail and this is logged in the output.
The net speed improvement is approximately 15%-20%.
GGIRread 0.2.9
- Replace bug fix to resample function in 0.2.8 and instead fix the
issue inside readAxivity #33
- Improvements to syntax for readGENEActiv and readGenea following R updates
GGIRread 0.2.8 (2023-05-26)
- Major bug fix introduced in 0.2.7 release affecting readAxivity #29
- resample function now able to handle timestamps outside block as
a result of large time gaps in cwa files #32
GGIRread 0.2.7 (2023-05-17)
- Fixes bug in LUX extraction for GENEActiv .bin data (#27)
- Expanded Axivity .wav file header extraction with alternative method
for sampling rate extraction (#26)
- Speeding up readAxivity function by approximately 75 percent.
GGIRread 0.2.6 (2022-12-05)
- New CRAN release, only minor improvements to syntax
GGIRread 0.2.5
- readWav now correctly identifies the header and first timestamp
GGIRread 0.2.4 (2022-10-09)
- Addressing POSIX errors in R-devel.
- Speeding up readAxivity function by approximately 40 percent.
- Adding readWav function for reading accelerometer data stored in
wav(Audio) format. This function was formerly known as g.wavread in the
GGIR package but has been migrated here to make the GGIR package lighter.
GGIRread 0.2.3 (2022-09-29)
- Changed POSIXlt to character conversion to be compatible with R-devel
update svn revision r82904 (2022-09-24 19:32:52)
- Tidying up namespace references
- Added zzz function to auto-check onattach package version relative to CRAN
GGIRread 0.2.2 (2022-08-31)
- Now also extracting GENEActiv RecordingID, Handedness, DeviceLocation and DeviceModel from header
- Removed skin_on_cran() calls in unit test
- Improved description for resample function
- Fixed errors resulting from how lux values are read (issue #12)
GGIRread 0.2.1 (2022-08-17)
- Addressing request from CRAN to revise AxivityNumUnpack
GGIRread 0.2.0 (2022-08-15)
- First release with functionality for reading Axivity .cwa, GENEActiv .bin, and Genea, .bin data.