Changelog
Source:NEWS.md
ravetools 0.2.6
CRAN release: 2026-05-31
- Added
plot_mesh_dotcloudfor rendering one or moremesh3dobjects as an orthographic rim-lit dot cloud in base R (norgldependency); supports per-vertex colors, depth-gradient palettes, per-mesh alpha,sidefiltering, and painter’s-algorithm depth sorting across multiple meshes - Added
plot_mesh_polygonfor rendering one or moremesh3dobjects as flat-shaded Lambert-lit triangles in base R; point-cloud meshes (no face matrix) are automatically substituted by small sphere instances; supports camera-facing clipping (mesh_clipping),sidefiltering, per-mesh alpha blending, and configurableshadow_color,light_intensity, andambient_intensity -
plot_mesh_dotcloudandplot_mesh_polygongain aclipping_planeargument (a 4-element numeric normal-and-offset vector, or a list of such vectors) to discard geometry on one side of arbitrary planes before rendering, and a per-meshclipping_plane_enabledlogical toggle to opt individual meshes in or out of clipping - Exported
ensure_mesh3dfor coercing various surface formats (mesh3d,ieegio_surface,fs.surface,surf.asc) to a canonicalmesh3dobject; previously internal-only - Fixed
freqz2plot legend: the cutoff legend used the rawcutoffsargument (and could index past the color palette, yieldingNAcolors) when a requested cutoff did not actually intersect the magnitude curve; the legend now only lists cutoffs that are drawn, and labels the unit asdBinstead of the filter’s frequency unit
ravetools 0.2.5
CRAN release: 2026-05-23
-
morlet_waveletgains asegment_lengthargument (defaultNULL) that processes long signals (e.g. multi-hour recordings) in overlapping segments using batchedmvfftw_c2cconvolutions, dramatically reducing peak memory and FFT cost while preserving the legacy result on the signal interior -
baseline_arraynow supports seven baseline methods:"percentage","sqrt_percentage","decibel","zscore","sqrt_zscore","db_zscore", and"subtract_mean"; newly added methods include decibel z-score normalization - Added spike sorting helpers for normality test, spike detection, per-channel waveform extraction, and
Haarwavelet feature extraction - Replaced
waveletspackage dependency withwaveslimfor discrete wavelet transform used in spike sorting utilities -
project_planegains ann_itersargument to control the number of projection iterations (default is5) - Applied lint fixes and improved code style consistency across all source files
- Added
carlaimplementing the Common Average Re-referencing by Least Anti-Correlation (CARLA) algorithm (seeCITATION) for selecting an optimal subset of channels as the common average reference inCCEPdata - Added
crpimplementing the Canonical Response Parameterization (CRP) method for characterizing single-trial evoked responses (e.g.CCEPs): estimates response duration, extracts the canonical response shape, and reports per-trial weights,SNR, and explained variance - Exposed low-level
FFTW3wrappers (fftw_r2c,fftw_c2r,fftw_c2c,mvfftw_r2c,mvfftw_c2c,mvfftw_c2r, and their2D/3Dvariants) with memory bugs fixed; these are thin bindings for advanced users requiring maximum throughput - Fixed
design_filter_firband-pass scaling reference frequency to use the average of the transition-band midpoints (matchingMATLABfir1/scale_filter), and fixed band-stop scaling to always normalize atDC; previously both could produce incorrect gain for asymmetric transition bands -
filtfiltnow accepts aSos(second-order sections) object fromgsignaland delegates togsignal::filtfiltin that case - Added
catmull_rom_3dfor smoothCatmull-Romspline interpolation through 3D point sequences, including closest-point projection from an arbitrary 3D point onto the curve - Fixed
qfachandling in the matrix toquaternionconversion so that right-handed transforms (negative determinant) are correctly represented -
fir1filter computation is significantly faster via an optimized internal implementation
ravetools 0.2.4
CRAN release: 2025-09-10
- Added a naive implementation of non-negative matrix factorization in pure R
- Added finding and aligning stimulation pulses (for continuous stimulation)
- Added
find_peaksto provide finding peaks along a trace of signal
ravetools 0.2.3
CRAN release: 2025-07-22
- Added
gammatone_fastfilters to obtain the audio envelope at different frequencies - Added
vcg_subset_certexto subset mesh - Added
vcg_subdivisionto up-sample mesh - Added plane-generating function to create mesh for plane
ravetools 0.2.2
CRAN release: 2025-03-05
- Fixed
clang20warning and removed problematicvcglibcode that use pointers after free.
ravetools 0.2.1
CRAN release: 2025-01-24
- Using
std::nearbyintinsteadstd::roundto round numbers to comply toIEC-60559standard that half numbers round to nearest even integers - Implemented low-level
3Dvolume sampling inC++:resample_3d_volume - Exported
gsignal::resample(however, some edits might be needed in the future to produce the same results asMatlab) - Supported converting
ieegiosurface geometries tomesh3dto be used inVCGrelated functions - Added
K-Dtree search to find closest points among two point clouds
ravetools 0.2.0
CRAN release: 2024-12-16
- Added
vcg_raycasterto find intersection of rays and given mesh object.
ravetools 0.1.9
CRAN release: 2024-11-08
- Hot fix by adding
vctrstoSuggeststo fix the issue that fails the unit test due to an update intestthatpackage.
ravetools 0.1.8
CRAN release: 2024-09-03
-
design_filterensures frequency window cuts off within 0 toNyquist -
fftfiltallows matrix input -
filtfiltwitha=1(FIRfilter) callsfftfiltto speed up - Fixed
pwelchincorrect power calculation. The results agrees mostly withMatlabfunction - Using
hammingwindow as the default inpwelch; exported additional window options such asblackmanfamilies,bohmanwin,flattopwin, andhanning
ravetools 0.1.7
CRAN release: 2024-07-17
- Fixed a
c++template issue caused byvcglib, which fails to compile underclang19 -
decimateagrees withMatlabnow (bothfirandiirfilters) - Implemented
freqz2to obtain the frequency response of a digital filter (similar togsignal::freqzbut with more accurate cutoff frequency calculation and more customize plots) - Added filter diagnostic plot
diagnose_filter - Added
check_filterto obtain expected magnitude at given frequency and reciprocal condition number - Removed dependency
signaland usegsignalinstead - Added
design_filterfor bothfirandiirfilters, allowing both entry and intermediate users to design band-pass/stop, low/high pass filters easily. - The
iirfilter order generated fromdesign_filterwill be checked againstrcond_filter_ar(reciprocal condition number) to make improve the numeric stability - Fixed (hopefully) memory issues caused by
dijkstra; the package passedasan,valgrindtest provided byrhub2
ravetools 0.1.6
CRAN release: 2024-06-02
- Fixed
dijkstramethod occasionally causing memory error. New method is much faster now. - Fixed
plot.pwelchnot displaying the signal names correctly. - Removed
c++17requirement and supports 11, 14, and 17 standards
ravetools 0.1.5
CRAN release: 2024-05-19
- Fixed
FIR1filter - Fixed
pwelchthrowing warnings when signal is zero (or zero power) - Updated authorship
ravetools 0.1.4
- Implemented
dijkstrato find shortest paths in mesh - Migrated and incorporated
vcglib - Fixed a
C++template issue via type explicit calls - Fixed
fir1filter when band-passing signals with incorrectn -
pwelchplot works with zero power now;mv_pwelchplot error fixed
ravetools 0.1.3
CRAN release: 2023-12-04
- Rewrote
band_pass2to avoidNAgenerated when upper band frequency isNyquist - Added
Vector3,Matrix4,Quaternionfor in-place calculation - Added support for
WASM - Fixed issues reported by
CRAN: “format string is not a string literal (potentially insecure)”
ravetools 0.1.2
CRAN release: 2023-07-16
- Compatible with the latest
filearray - Exported
grow_volume -
mesh_from_volumeno longer throw errors if the mesh does not form a manifold
ravetools 0.1.1
CRAN release: 2023-04-19
- Fixed a precision issue that caused test failure on some machine
ravetools 0.1.0
CRAN release: 2023-02-18
- Added
fill_surfaceto fill in volume based on given surface mesh - Added
mesh_from_volumeto generate mesh from volume. This function can be used together withfill_surfaceto generate surface envelope - Added
register_volumeto align two imaging data using linear or non-linear registration - Added
fftwon2Dimage and3Dvolume data - Added convolution for
1D,2D,3Ddata usingFFT
ravetools 0.0.9
CRAN release: 2023-01-20
- Fixed
pwelchfrequency not starting from zero issue - Upgraded
TinyThreadusing the latest pull-request toRcppParallel
ravetools 0.0.8
CRAN release: 2022-10-14
- Added
interpolate_stimulationto detect stimulation signals within the response and interpolate with smooth signals - The package now imports
splines - Added
fast_quantileandfast_mvquantileto improve the quantile/median calculation speed - Fixed the
plot_signalsplotting range too large when signals have large values (such as stimulation) - Fixed
TinyThreadslibrary memory leak issues - Simplified
diagnose_channel, avoid duplicatedpwelchcalculation
ravetools 0.0.7
CRAN release: 2022-09-19
- Added signal
filter,filtfiltthat produce the same results asMatlab(with precision error) - Added two ways to perform band-pass filters
- Allows multiple channels through
pwelchas a row-major matrix to speed up calculation - Added
wavelet_cycles_suggestto provide default calculation of wavelet cycles - Added internal argument
signatureto wavelet to resolve potential cache conflicts when running in multiple processes. (This allowsRAVEto run wavelet on multiple subjects at the same time)
ravetools 0.0.6
CRAN release: 2022-08-25
- Added decibel average in
pwelch - Allowed
pwelchsampling frequency to be greater than the signal length - Adjusted parameters diagnostic plot and
pwelchplot to properly handle graph text, margin, axis - Added
plot_signalsto plot multiple functional data within the same canvas
ravetools 0.0.5
CRAN release: 2022-08-06
- Exposed
C++code toinst/includesso other users can dynamically link to the functions (https://github.com/dipterix/ravetools/issues/5) - Removed confusing in-place arguments in the
fftwrelated code - Corrected
fftwplans to respect the flags - Added
C++to convert raw binary bytes touint,int,float, andstring
ravetools 0.0.4
CRAN release: 2022-05-29
Parallel processes might use different temporary directory paths. To improve the performance, it is recommended to set a shared temporary directory, hence this version
- Allows temporary directories to be set via environment variable
RAVETOOLS_TEMPDIRor optionravetools.tempdir.
ravetools 0.0.3
CRAN release: 2022-02-16
This version fixes a memory issue reported by CRAN check (gcc-UBSAN).
- There is a potential integer overflow where
NA_INTEGERis subtracted by one before being converted toR_xlen_ttype. This update fixes this issue - Removed
RcppParalleland copied part of it intoinst/includefolder, withTBBremoved under theGPL-3license framework.
ravetools 0.0.2
CRAN release: 2022-02-14
This is an initial version of ravetools. Although a bare minimal set of signal processing functions are provided, it is sufficient to perform preprocess pipelines on most iEEG signals. Some functions are added from the dipsaus package, with considerable performance improvement. The C++ functions have been tested on all major platforms, with different architectures (ARM, i386, x64).
Documentation
- Added
READMEfile to demonstrate basic usage - Added a
NEWS.mdfile to track changes to the package.
Signal processing functions
- Re-implemented
decimatewithFIRfilters creating the same results as inMatlab - Added
detrendfunction to - Added
diagnose_channelto visually inspect channel signals - Added
morlet_waveletto enable fast and memory efficient wavelet decomposition; the result agrees with existingMatlabcode with floating errors (10^-7) - Added
multitaper - Added
pwelch(Welchperiodogram) - Added
notch_filterto remove line noise
High-performance functions
The following functions are implemented in C++ parallel. They tend to be faster than normal base-R implementations, depending on the number of CPU cores used.
- Added
collapseto collapse arrays - Added
shift_arrayto shift array along certain indices - Added
fast_covto calculatepearsoncovariance matrix in parallel - Added
baseline_arrayto calculate baseline arrays with multiple margins