Changelog¶
0.5.0.dev0¶
Current development version for the next ConfUSIus release.
Breaking changes¶
- Registration now takes a single
initializationparameter in place ofcentering_initializationandinitial_transform.initializationaccepts"center_geometry","center_moments", a homogeneous affine matrix orNonefor an identity initialization. Affectsregister_volume,register_volumewise, and thedata.fusi.registeraccessor (#215).
Enhancements¶
- Added
plot_matrixfor plotting 2D matrices (e.g. connectivity or correlation matrices), with optional lower/diagonal triangle masking, grid lines, and agroupsparameter that annotates contiguous label runs with colored rectangle stripsβuseful for marking anatomical groupings (e.g. cortex, thalamus) when there are too many individual labels to read (#243). - [Napari plugin] Added Events panel to annotate temporal events within Napari.
Events shade the signal plot; active event names appear in the time overlay; load
from / save to a BIDS
.tsv(#176). confusius.bidsmodule is now public with newread_eventsandwrite_events(#176).- Added a
datasetsCLI namespace, listed inconfusius --help:confusius datasets --listprints the table of available datasets, their sizes, and whether each is cached on disk. A bareconfusius PATH...still launches the viewer (#234). - Added
NMFfor non-negative matrix factorization of fUSI time series, wrappingsklearn.decomposition.NMFwith the same xarray-awarefit/transform/inverse_transforminterface asPCAandFastICA. Bothmode='temporal'andmode='spatial'are supported (#211). - Added
adjust_pvaluesfor generic multiple-comparison correction of p-value maps, andapply_statistical_thresholdto threshold z-scaled statistical DataArrays with the same family-wise-error (Bonferroni, Ε idΓ‘k, Holm, Holm-Ε idΓ‘k, Simes-Hochberg, Hommel) or false-discovery-rate (Benjamini-Hochberg, Benjamini-Yekutieli) corrections, plus an optional cluster-extent threshold (#204). - Added
fetch_landemard_2026for downloading the Landemard et al. (2026) fUSI-BIDS dataset from OSF, withdatasets,subjects,acqs, anddatatypesfilters (#228). apply_affineand thedata.fusi.affine.applyaccessor now accept a string naming a key inattrs["affines"], instead of requiring the affine matrix itself (#247).
Fixes¶
apply_affinenow rescales thevoxdimattribute of the spatial coordinates along with the coordinate values (#245).signal.cleannow supportsensure_finite=Trueto repair non-finitesignalsandconfoundsby interpolating along time, fills censored boundary samples from the nearest kept sample before filtering, and acceptsinterpolate_kwargsfor pre-scrubbing interpolation (#239).- Image plotting functions now leave
alphaunset by default (None), so a colormap's built-in alpha channel is respected (#225). load_niftino longer drops affines loaded from the JSON sidecar (e.g.bspline_initializationwritten by the registration pipeline) when merging in the NIfTI qform/sform affines (#222).save_niftino longer maps non-time additional axes to the NIfTI 4th slot. When additional axes are present in the DataArray, a degenerate length-1timeaxis is inserted at NIfTI axis 4 (NIfTI's conventional time slot) so non-time additional axes always land at NIfTI axes 5, 6, 7. The original dim name for each additional axis is always written to the sidecar asConfUSIusDim{N}Name(withNin 4, 5, 6, matching the 0-based NIfTI axis of the extra dim). The matchingConfUSIusDim{N}Coordinatesentry is only written when the coord cannot be reconstructed frompixdim(i.e. when the coord does not start at 0 with regular spacing); otherwise the spacing is stored inpixdimand the coord is rebuilt asstep * arange(size)on load. Attributes are preserved inConfUSIusDim{N}Attributesentries. (#223).
Documentation¶
- Add an NMF example to the gallery, demonstrating the z-score + absolute-value standardization that makes signed fUSI signals NMF-compatible.
- Add an atlas-based region correlation matrix
example to the gallery,
demonstrating registration to the Pepe-Mariani 2026 template, resampling the Allen
Mouse Brain Atlas onto a recording's native grid, and plotting a region correlation
matrix with
plot_matrix'sgroupsannotation (#243).
0.4.0¶
Released 2026-06-25.
Enhancements¶
- The
confusiusCLI now accepts multiple fUSI data files in a single invocation (e.g.confusius fixed.nii moving.nii). Each file is added as its own image layer, named after the file's basename (#206). data.fusi.affine.applynow accepts affines with rotation and shear. The axis-aligned part updates the 1Dz/y/xcoordinates and the method returns the residual orientation as a 4x4 affine (the identity for diagonal affines) for the caller to use as they wish (#188).- Add
smoothing_fwhmparameter toFirstLevelModel. Smoothing is applied to each run before model fitting (#201).
Performance¶
process_iq_blocksnow usesdask.array.map_blocksfor non-overlapping outer IQ windows and batches overlapping windows with explicit overlap before mapping blocks, reducing Dask overhead in common blockwise processing workflows (#190).
Fixes¶
- Masks are now coerced to boolean by
validate_mask(addedreturn_dtype_as_boolparameter that defaults toTrue) to avoid DataArrays using positional indexing. Previously these masks could select the wrong voxels or, forregister_volume, silently disable the metric mask (#197). process_iq_blocksnow handles strongly overlapping IQ windows without corrupting the output time dimension, so power Doppler and related IQ reducers work whenwindow_stride < window_width / 2(#192).load_niftinow anchorsphysical_to_qformto the same physical frame as the primary (sform) coordinates, so the stored qform affine maps the array's physical coordinates to qform world space (#187).save_niftinow preserves each affine's own translation, so a NIfTI file with sform and qform round-trips throughload_nifti/save_niftiwithout corrupting the qform (#187).- [Napari plugin] Fixed the Signals plot x-axis for volumes without a time dimension. It now follows the slider axis world coordinates, with a matching label and dropdown option (#180).
0.3.0¶
Released 2026-05-27.
Breaking changes¶
register_volumenow also returns aRegistrationDiagnosticsdataclass with the per-iteration metric values, final metric value, iteration count, optimizer stop condition, and the metric name.register_volumewisealways adds per-framefinal_metric_valueandn_iterationscolumns tomotion_params, and exposes the full per-frame diagnostics list underattrs["registration_diagnostics"]only when called withkeep_diagnostics=Trueto avoid retaining the full optimizer metric trace by default (#139).- Renamed
validate_iqtovalidate_iq_dataarray(#153).
Enhancements¶
- Added a
maskargument to thePCA,FastICA,SeedBasedMaps, andFirstLevelModelestimators, restricting fitting and projection to the selected voxels. Output maps retain the full spatial geometry, with voxels outside the mask set to0(#155). - Added
plot_composite,VolumePlotter.add_composite, and a matchingdata.fusi.plot.compositeaccessor that render two volumes as a red/cyan RGB overlay (#145). - Added
datatypesfilter tofetch_cybis_pereira_2026, allowing downloads to be scoped to specific BIDS datatype directories ("fusi","angio","motion") (#141). - Added
fetch_template_huang_2025for downloading and loading the Huang et al. vascular mouse template from OSF, with cache/refresh behavior matching existing template fetchers (#162). - Added
show_progressto volumewise registration so joblib progress output can be disabled in scripted or quiet workflows (#126). - Added a reusable
validate_fusi_dataarrayvalidator and refactored IQ/registration validation to use it. Core dimension coordinates are now validated as 1D, numeric, finite, and strictly increasing, while extra/non-dimension coordinates remain allowed (#153). - Added shared
fontsizeparameter toplot_volume,plot_contours, and carpet plotting entry points so text sizing is consistent across all plotting APIs (#128). - Replaced plotting
black_bgwith explicitbg_colorandfg_colorcontrols for clearer visual customization (#124). - Added
FastICAtransformer for independent component analysis of fUSI recordings, with the same xarray-awarefit/transform/inverse_transformAPI asPCA(#118). - Added example gallery helper utilities to streamline writing and maintaining docs examples (#102).
Performance¶
- Top-level
confusiusandconfusius.xarraynamespaces now use SPEC-0001 PEP 562 lazy loading. Submodules and exported functions are only imported on first access, reducingimport confusiusoverhead for workflows that use a subset of the package.
Fixes¶
- Fixed
resample_likeandresample_volumefilling out-of-FOV voxels with0.0when resampling onto a larger grid. This caused a bright background artifact for dB-scaled data (where 0 is maximum intensity). Thedefault_valueparameter now defaults tofloat(moving.min())instead of0.0.register_volumegains afill_valueparameter that overrides the default for both the final resampled output and the live progress composite overlay (#138). - Fixed plotting hover information silently disappearing when the returned
VolumePlotterwas not held in a variable (e.g.obj.fusi.plot.volume().show()). The hover manager is now kept alive until the figure is closed (#148). - Fixed napari x-axis extent computation to ignore the interactive cursor guide line, preventing incorrect plot bounds (#111).
Documentation¶
- Added a Registration of two sessions from the same
subject example
demonstrating
register_volume, the new diagnostics, and confusius'splot_compositeoverlay pattern for inspecting alignment before and after registration (#139).
Maintenance¶
- Switched documentation hosting to GitHub Pages with
mikeversioning and automatic PR preview deployments (#134).
0.2.0¶
Released 2026-05-05.
First official public beta release of ConfUSIus.
Highlights¶
- ConfUSIus now covers the core alpha roadmap, including I/O, beamformed IQ processing, registration, quality control, atlas integration, signal processing, decomposition, functional connectivity, and general linear model workflows.
- The package provides both a Python API and a napari plugin for interactive data loading, visualization, signal inspection, and quality control.
Notes¶
0.1.0was used only to reserve theconfusiusproject name on PyPI and is not a supported public release.0.2.0is therefore the first official public release series for ConfUSIus.