Changelog
DRIADA follows semantic versioning and maintains a changelog of all notable changes.
The full changelog is available in the repository root:
Changelog
All notable changes to DRIADA will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.1.0] - 2026-03-15
Recurrence analysis module and INTENSE improvements
68 commits, 136 files changed, 12,017 insertions, 1,118 deletions since v1.0.0. 2,052 tests passing on Linux, macOS, Windows (Python 3.9-3.13).
Recurrence analysis (new module)
Full nonlinear time series analysis toolkit in driada.recurrence:
RecurrenceGraph— k-NN and epsilon-ball recurrence graphs with Theiler window exclusion, inheriting from Network for full spectral/community analysisVisibilityGraph— horizontal (O(N) monotone stack) and natural visibility graphs for amplitude-structure analysisOrdinalPartitionNetwork— ordinal rank-pattern transition networks with permutation entropy for temporal ordering analysiscompute_rqa— recurrence quantification analysis extracting DET, LAM, ENTR, and 7 other measures from diagonal/vertical line structuresestimate_tau/estimate_embedding_dim— automated Takens embedding parameter selection via TDMI first minimum and FNN criterion.return_fractions=Truemode for diagnostic plotspairwise_jaccard_sparse— vectorized pairwise Jaccard similarity via sparse matmul. Accepts RecurrenceGraph objects directly;trim_to_min=Truehandles different-sized embeddings from per-neuron parameterspopulation_recurrence_graph— combine per-neuron recurrence graphs via joint (AND threshold) or mean strategiesTimeSeries integration — all recurrence functions available as cached methods on
TimeSeriesandMultiTimeSeries, with automatic tau/dim estimation and Theiler window calculationOptional Numba acceleration — JIT-compiled RQA scanning for large recurrence matrices
INTENSE features
Signal ratio — quantitative selectivity strength metric for binary and linear continuous features. Measures how much stronger the neural response is during active vs baseline periods (
b913762,b87d39d)Anti-selectivity filter —
remove_anti_selectiveoption drops neurons with signal_ratio <= 1 before disentanglement, removing suppressed responses that confuse redundancy/synergy analysis (ca68532)Disentanglement delay correction — optimal delays now applied during CMI computation in the disentanglement pipeline, fixing a bias where unshifted features underestimated multi-feature interactions (
81cb05c)Exhaustive shuffle sampling — when the number of valid circular shifts is small, INTENSE now samples exhaustively instead of drawing with replacement, eliminating duplicate shuffles (
20de17b)
INTENSE bug fixes
Circular feature
_2dhandling — original circular features now correctly excluded from the feature bunch when their_2d(cos, sin) counterparts are present, preventing double-counting in significance testing (2ec0299)2D copula axis bug —
np.rollaxis corrected for 2D copula-normal data in the FFT path (cef50be)Signal ratio delay alignment — uses
np.rollinstead of array truncation, preserving frame count consistency (c9ee988)Feature-feature pipeline return arity —
compute_feat_feat_significancenow returns a consistent 5-tuple across all code paths (c7f3ddb)
Dimensionality reduction
ClassificationLoss — supervised loss component for autoencoders that trains embeddings to preserve categorical structure alongside reconstruction (
46e5a75)FlexibleVAE latent dimension —
_latent_dimnow correctly passed during VAE construction (f33b31b)Optimizer parameter deduplication — duplicate parameter registration in autoencoder models fixed (
70426b9)Graph preprocessing — explicit
Noneforgraph_preprocessingnow respected instead of falling through to default (ecd2e45)
Performance
FFT-accelerated TDMI —
get_tdmiuses FFT cross-correlation for GCMI estimator, matching the INTENSE pipeline optimization (8a4848d)INTENSE pair masking — FFT cache builder skips unused neuron-feature pairs when
pair_maskis provided (ca59fa8)Cell-cell memory — float32/int32 casting for cell-cell significance arrays reduces peak memory by 50% (
bb2661c)ProximityGraph construction — skip directionality detection, use cKDTree for neighbor search, vectorized sparse operations (
66a327a,6cd8823)
Tutorial notebook
Notebook 06: Recurrence analysis — Colab-ready tutorial covering delay embedding, recurrence plots, RQA, three graph representations (RG, HVG, OPN), windowed regime detection, and population module recovery via Jaccard similarity network. Full ReadTheDocs API cross-links and metric explanations
Documentation
Recurrence API reference — 7 Sphinx pages covering all recurrence submodules (embedding, recurrence_graph, rqa, population, visibility, opn, plotting)
Notebook validation protocol — added checks for API cross-links and user-friendly concept explanations
Example validation — all 25 examples re-verified; output path fixes, ASCII compliance
[1.0.0] - 2026-03-01
First stable release
95 commits, 282 files changed, 30,481 insertions, 9,826 deletions since v0.7.2. 1,875 tests passing on Linux, macOS, Windows (Python 3.9-3.13).
INTENSE performance
FFT cache build 2x faster — precompute per-signal FFT and std once (520 unique signals instead of 20,000 pairs for a 500-neuron × 20-feature problem), then combine via cross-correlation. Bit-exact results. (
9d865c3)Stage 2 scan 1.4x faster — replaced
scipy.stats.rankdatawith count-based comparison, vectorized per-neuron cache lookup to eliminate Python inner loop. (fe9bb55)FFT-accelerated
avmetric — average-value selectivity metric now uses the FFT path, matching cc/pearson_cc performance. (7e37c5b)
INTENSE features
Feature shuffle masks — independent circular-shift exclusion zones for calcium (CA_SHIFT_N_TOFF=5 frames) and features (MIN_FEAT_SHIFT_SEC=2s), replacing the single global minimum shift. Prevents trivial self-correlation at small shifts without over-restricting the shuffle range. (
8744e52)feature_typesparameter — override auto-detected feature subtypes (e.g., forcehead_directiontocircular,trial_typetocategorical) inload_exp_from_aligned_data. (98da360)Automatic circular → (cos, sin) encoding — circular features are automatically transformed to 2D representations for MI estimators that assume Euclidean distance. Controlled by
create_circular_2dparameter. (aca9d69)mi_estimator_kwargspassthrough — thread estimator-specific parameters (e.g., KSG neighbors, LNC alpha) through the entire INTENSE pipeline. (9075eee)MTS delay optimization — MultiTimeSeries features (e.g., 2D position) now support optimal delay search. (
2b0f9d4)Post-hoc pre_pval reconstruction — reconstruct Stage 1 p-values from saved shuffle data without re-running the analysis. (
7a6b6e4)
INTENSE refactoring
intense_base.pyfactored into 4 modules — extracted validation (intense_validation.py), FFT cache management (fft.py), multiple-comparison correction (corrections.py), and delay optimization (delay.py). The monolithic file is now the orchestrator only. (c5f5d59,b45cd1b)Removed deprecated parameters —
joint_distr(usefind_joint=Trueinstead) andallow_mixed_dimensions(MTS delay optimization makes this unnecessary). Clean deprecation with no silent fallbacks. (afe68f2,f60e488)
Experiment & data loading
Experiment.add_feature()— register dynamic features after initialization with full attribute binding, shuffle mask application, and hash rebuild. Fixes disentanglement invisibility when features are added via dict assignment. (520bc27)3D place cell support — volumetric spatial manifold generator for 3-photon and light-sheet experiments. (
8842516)Experiment partitioning — split experiments by time windows or trial indices for cross-validation. (
3f44f77)Circular feature rescaling — detects and rescales [0,1]-normalized circular features to [0, 2π] before INTENSE analysis, preventing silent MI underestimation. (
7edf26e)
Tutorial notebooks (new)
Six Colab-ready notebooks with auto-generation scripts (tools/create_notebook_0X.py):
DRIADA overview — Core data structures, quick tour of INTENSE, dimensionality reduction, and networks (
0f9b806)Data loading & neuron analysis — Experiment construction, spike reconstruction methods comparison, surrogate generation (
37b71d4)Selectivity detection with INTENSE — Two-stage testing, MultiTimeSeries features, circular features, multiple comparison correction (
38fa6c4)Population geometry & DR — MVData API, method comparison benchmark (PCA, Isomap, UMAP), sequential DR, autoencoder DR, circular manifold extraction, INTENSE-guided DR (
df27aef)Network analysis — Network construction, spectral decomposition, community detection, thermodynamic entropy, ProximityGraph from DR (
e1515fc)Advanced capabilities — INTENSE + DR pipeline, leave-one-out importance, RSA, RNN analysis (
b4d2b15)
All notebooks verified executable via tools/verify_notebooks.py. Cross-navigation links and API documentation links. Sentence case throughout.
Documentation overhaul
28 docstring-signature mismatches fixed — parameter names, types, and counts verified against source across all public functions. (
ce1065c)All Sphinx cross-references fixed — broken
:func:,:class:,:meth:references and non-clickable See Also entries corrected. (c5d6112,a05c655)Quickstart rewritten — removed references to deleted functions, fixed undefined variables in code examples. (
09dcbcb)README rewrite — added data requirements section, pipeline examples, Colab badges, macOS CI badge, synced citation sections. (
5244ec3,33b98fd,235874f)Network-DR relationship documented — ProximityGraph inherits from Network; documented in module docstrings, Sphinx RST, and notebook 03/04 cross-references. (
c6f5fd8,b223d3e,7f89c8b,c18193b)INTENSE math framework — added FFT-accelerated permutation testing explanation to docs. (
34c25dc)
Test quality
36 RED findings resolved — zero-assertion tests, loose tolerances for exact results, dead code, and lowered-bar comments identified by
tools/validate_tests.pyand fixed. (add6f37,c57e700,cec65cd)Flaky CI tests fixed — RSA cache division by zero, diffusion maps threshold too tight for cross-platform variance, JIT benchmark timing resolution on Windows, warmup fixture durations too short for shuffle mask exclusion zones. (
aefcc22,4d46560,e70353c)Python 3.13 CI — added to test matrix. (
4aa1b36)
Bug fixes
Shift index out-of-bounds after downsampling — invalid-shift indices could exceed array length when
ds > 1; now clipped. (6aeeff7)Ground truth
_2dnames — synthetic generatorexpected_pairsnow use_2dsuffixed names for circular features, matching the auto-created 2D representations. (a9ee6ef)t-SNE/UMAP parameter forwarding —
perplexityandrandom_statewere silently swallowed by**kwargs; now properly forwarded. (28533cd)IntenseResults JSON round-trip — dict keys converted from int to string during serialization; now handled correctly on load. (
04b7690)NumPy scalar compatibility —
ca_mse_errorreturned ndarray instead of scalar on newer NumPy; extracted with.item(). (eebcc0a)Network.n_cc guard — connected components count now handles uninitialized graph state. (
28533cd)Bare except narrowed —
neuron.py:2826catch-all replaced withexcept (ValueError, TypeError). (4aa1b36)Gamma-ZI fit warning — silent
p=1.0fallback on MLE failure now emitsRuntimeWarning. (4aa1b36)Windows encoding — emoji in doc tool output replaced with ASCII; em dash bytes in RST fixed. (
f20fed4,e70353c)
Code quality & refactoring
FFT module reorganization —
info_fft.py(1,130 lines) andinfo_fft_utils.py(256 lines) extracted frominfo_base.py.rfft/irfftreplacingfft/ifftfor 50% speedup. 100-1000x memory reduction in MTS functions. Shared helpers eliminate ~40% code duplication. All public APIs preserved via re-exports. (info_base.pyreduced from 3,246 to 2,311 lines)Neuron module reorganization —
neuron.py(3,807 lines) factored intocalcium_kinetics.py,signal_preprocessing.py,event_detection.py. Backward compatible via static method delegation.Black + isort applied across entire codebase (177 files)
Removed MDS and t-SNE from notebook 03 — too slow for educational use; replaced with Laplacian Eigenmaps in visualization. (
fa43796)visualize_circular_manifoldexported from public API. (28533cd)
Tooling
tools/verify_notebooks.py— executes all notebook code cells against current API, catching broken examples before release. (fa43796)INTENSE validation benchmark — SNR × skip_prob parameter sweep across 315 configurations comparing GCMI vs Pearson methods. (
ef00bc2,844905f)tools/validate_tests.py— automated test quality checker flagging zero-assertion tests, loose tolerances, and dead code. (add6f37)
Project governance (new)
Academic paper (
paper.md) with literature review covering NIT, MINT, FRITES, CaImAn, Suite2p, CEBRABibliography (
paper.bib) with 38 referencesPublications list (
PUBLICATIONS.md) — 8 research papers using DRIADACONTRIBUTING.md,CODE_OF_CONDUCT.md,CITATION.cff,AUTHORS.yamlPR template (
.github/pull_request_template.md)
[0.7.2] - 2026-01-21
🔧 Batch processing CLI and disentanglement analysis enhancements
Performance
Discrete-Discrete FFT Vectorization - 50-100x speedup for
mi_dd_fftcomputation via vectorized operationsFFT Memory Optimization - Up to 200x memory reduction in FFT modules through improved buffer management
MI Value Caching - Pre-computed MI values cached in FFT cache for 4-5x speedup in repeated lookups
Disentanglement Parallelization - MI lookup tables and parallel FFT cache; parallelized per-neuron processing
IPC Overhead Reduction - Split
fft_cacheper worker to reduce inter-process communication in parallel jobsFeature Copula Pre-computation - Pre-compute copula cache before parallel loop to avoid redundant computation
Calcium Signal Vectorization - Vectorized convolution for spike-to-calcium signal reconstruction
Features
Batch Processing CLI
--diroption for processing multiple experiment files in a directory--skip-computedflag to resume interrupted batch runs, loading existing stats from CSV--parallel-backendoption with globalPARALLEL_BACKENDconfig (loky, threading, multiprocessing)Backend-specific parallel config with
pre_dispatchtuning for memory controlTimeout wrapper for autonomous batch processing using
subprocess.PopenpollingIncremental batch summary saving after each file (fault tolerance)
Automatic cache clearing for memory management in long-running jobs
Upgraded to joblib 1.5.0 with
idle_worker_timeoutfor worker cleanup
Disentanglement Analysis
Composable pre-filters for disentanglement analysis (spatial, temporal, threshold-based)
Filter examples added to
run_intense_analysisscriptDisentangled stats and significance output tables for publication-ready results
I/O & Data Loading
New INTENSE I/O module using NPZ format (removes HDF5 dependency)
Tool for loading synchronized experiment
.npzfilesExperiment configs for
selectivity_dynamicspackage
Profiling
Internal timing profiling for INTENSE pipelines
Timing instrumentation for FFT cache building
Fixed
Windows Process Handling - Changed joblib backend to
lokyto prevent CMD hanging; usePopenpolling to prevent timeout wrapper freezeMemory Leaks - Added
gc.collect()after each experiment to prevent memory accumulation in batch processingZero Column Errors - Use
aggregate_multiple_tsin exp_build to add noise and avoid degenerate feature matricesDisentanglement Robustness - Improved numerical stability with spatial filter fallbacks
Google API Warning - Suppressed spurious authentication warning
Test Stability - Relaxed flaky test tolerances for CI reliability
Changed
Consolidated IABS filename parsing into
driada.utils.namingmoduleRemoved HDF5 dependency from INTENSE results (replaced with NPZ format)
[0.7.1] - 2026-01-17
🚀 Enhanced performance and data loading capabilities
Performance
MTS-MTS FFT Acceleration - 3-200x speedup for mutual information computation between MultiTimeSeries pairs (d1+d2 ≤ 6). Uses FFT-based cross-covariance computation with block determinant formula via Schur complement. Enables efficient analysis of multivariate neural dynamics (e.g., 2D position vs 2D neural trajectory). Complexity: O(d₁ × d₂ × n log n + nsh × d³).
Memory Optimization for INTENSE - New
store_random_shiftsparameter (default: False) reduces memory usage by ~400MB for typical datasets (N=500 neurons, M=20 features, nsh=10,000). Random shift indices are not persisted unless explicitly requested, while preserving all MI values for analysis. Addedmemory_usage()method toIntenseResultsfor diagnostics.
Features
Experiment Building Enhancements
aggregate_featuresparameter inload_exp_from_aligned_data()enables combining multiple 1D features into MultiTimeSeries before building Experiment objects (e.g.,{('x', 'y'): 'position'})Reserved key filtering prevents neural data keys (
calcium,spikes,sp,asp,reconstructions) and metadata (_metadata,_sync_info) from being treated as behavioral featuresImproves workflow for analyzing relationships between position/velocity and neural activity
Fixed
Critical FFT Conjugation Bug - Fixed incorrect FFT cross-correlation direction in
compute_mi_mts_mts_fftthat caused wrong MI values at non-zero shifts. Discovered during comprehensive verification testing. Changed fromconj(fft_x1) * fft_x2tofft_x1 * conj(fft_x2)to correctly matchnp.rollsemantics.Documentation - Removed invalid cross-references for missing functions and user guide sections
Test Stability - Fixed flaky CI tests by adding proper imports, fixed random seeds, and increased connectivity parameters in manifold tests
Added
Comprehensive test suite for MTS-MTS FFT (27 unit tests + 3 integration tests) verifying correctness at all shifts with rtol=1e-7
Benchmark script (
tools/benchmark_mts_mts_fft.py) demonstrating speedup characteristics across different parameter regimes (n=1,000 to n=60,000, nsh=100 to nsh=10,000)
[0.7.0] - 2026-01-13
🚀 Major performance and stability release
Performance
FFT Acceleration for INTENSE - 10-100x speedup through FFT-based mutual information computation across shuffle loops, delay calculation, and discrete-continuous MI operations. Unified FFT pipeline with intelligent caching.
Critical Fixes
Cache Collision Bug - Fixed critical bug where all neurons returned identical MI values due to generic TimeSeries naming causing FFT cache collisions. Implemented comprehensive naming strategy ensuring unique cache keys.
Added
Zero-Inflated Gamma (ZIG) distribution for improved MI null hypothesis testing
Tuned Selectivity Generator with disentanglement analysis metrics for INTENSE pipeline
Configurable Random Seeds for graph construction ensuring reproducible manifold learning experiments
Publication Framework Enhancements - Extended
StylePresetwith sizing parameters and accessor methods
Changed
Synthetic Data Module - Consolidated all generators into unified
generators.pywith standardized signatures, explicit kwargs, and improved reproducibilityExamples Updated - Validated and improved 10+ examples including complete RSA rewrite using tuned selectivity generator, enhanced Network Analysis with spectral properties, and updates across INTENSE, dimensionality reduction, and manifold examples
Code Quality - Applied Black formatter (line-length 100) across codebase
Statistics
215 files changed, 20,762 insertions, 14,960 deletions
41 new tests added (FFT cache, multicomp correction, MTS FFT)
Test coverage:
intense_base81.85%,info_base88.48%All 1,681 tests passing
[0.6.6] - 2025-12-01
Added
Dependency Management
Lazy torch imports with conditional GPU support for wavelet detection
Reduces import overhead and enables CPU-only environments without requiring PyTorch installation
GPU toggle allows users to control whether torch-based wavelet detection uses CUDA acceleration
Changed
Distribution Optimization
Excluded images and data files from PyPI distribution package
Reduced tarball size to <1 MB (was >10 MB with example data)
Fixed
Test Stability
Increased shuffle iterations to 1000 for 2D manifold tests (previously failed intermittently with default 100 shuffles)
Ensures consistent statistical power in null hypothesis testing
[0.6.5] - 2025-12-01
Added
Wavelet Optimization
Batch optimization mode for wavelet-based event detection
Vectorized processing of multiple neurons simultaneously (10-50× speedup for large datasets)
New reconstruction workflow balancing accuracy and computational efficiency
Fixed
Dimensionality Reduction
Relaxed diffusion maps variance test to check total variance preservation trend
Previously failed due to strict per-eigenvalue thresholds; now validates overall manifold structure
Changed
Resolved merge conflicts from parallel feature development branches
[0.6.4] - 2025-11-01
Added
Publication Tools
Multi-panel figure framework for generating journal-quality visualizations
Precise physical sizing control (inches/cm) for manuscript submissions
Customizable subplot layouts and spacing
Testing
Comprehensive test suites for quantum metrics, manifold analysis, wavelet detection, and neuron quality assessment
Improved coverage for edge cases in signal processing
Changed
Spike Reconstruction
Major refactor introducing iterative threshold detection algorithm
Alternates between threshold estimation and spike extraction until convergence
Balances sensitivity (detecting weak events) and specificity (avoiding false positives)
Fixed
Statistical Testing
Eliminated spurious correlations in INTENSE null hypothesis test
Proper surrogate generation now preserves temporal autocorrelation structure
Ensures accurate Type I error control during Holm-Bonferroni correction
Event Detection
Unified SNR calculation between wavelet and threshold methods (previously reported inconsistent quality metrics)
Metrics (amplitude, correlation, SNR) now compatible with both detection approaches
Threshold computation uses original signal instead of residuals (prevents threshold drift during iteration)
Kinetics Optimization
Fixed silent failures for signals with long decay time constants (t_off > 200 frames)
Added safety checks capping kernel length at 2000 frames
Warns users about suspicious t_off values incompatible with typical calcium indicators
Improved
Test tolerance relaxation for numerical edge cases
.gitignore specificity for development artifacts
[0.6.1] - 2025-10-01
Added
Frame Rate Adaptivity
Complete FPS (frames per second) adaptivity implementation
Automatic time constant conversion for varying imaging frequencies
Handles datasets from 5 Hz (slow volumetric) to 100+ Hz (fast planar) imaging
Development Environment
Conda environment specification (
environment.yml) for reproducible setupPins exact versions of scientific Python stack (numpy, scipy, scikit-learn, etc.)
Fixed
Kinetics Optimization
Event regions now preserved during rise/decay time constant fitting
Previously could lose detected calcium transients when re-optimizing parameters
Added regression tests to prevent future breakage
Changed
Added Neuron class usage example demonstrating end-to-end calcium imaging workflow
Cleaned up accidentally committed debug and analysis artifacts
[0.6.0] - 2025-09-01
Added
Kinetics Analysis System
Automated optimization of calcium indicator rise/decay time constants (τ_rise, τ_off)
Fits double-exponential kernel to observed calcium dynamics
Uses RMSE minimization between observed and reconstructed calcium traces
Event Quality Metrics
Amplitude extraction from wavelet coefficients and threshold crossings
SNR (Signal-to-Noise Ratio) calculation for transient quality assessment
Template correlation metrics for validating event shape consistency
Deconvolution support for spike inference from calcium traces
Fixed
Critical Reconstruction Bugs
Amplitude extraction from wavelet coefficients (was systematically underestimating event strength)
SNR interface unification across wavelet and threshold detection methods
Kinetics parameter propagation through reconstruction pipeline
Changed
Completed major code quality fixes preparing for public pre-release
Unified SNR calculation interface
[0.5.1] - 2025-08-01
Added
Cross-Validation Framework
Leave-one-out (LOO) dimensionality reduction analysis
Validates manifold structure stability when systematically excluding neurons
Integration with INTENSE for selectivity-guided validation
Visualization Enhancements
make_beautiful()function for publication-quality plot stylingCustomizable legend positioning (upper/lower × left/right, outside options)
Improved default aesthetics (font sizes, line widths, color schemes)
Data Management
Google Drive share link support for collaborative data sharing
router_sourceparameter in experiment loading for flexible data backendsSupport for multiple simultaneous data sources in IABS router
Analysis Features
Downsampling support for LOO analysis on large datasets (reduces computation 10-100×)
Embedding visualization with automatic dimension detection
Fixed
Quality metrics validation for calcium imaging pipelines
Test suite stability improvements
[0.4.0] - 2025-07-01
Added
CI/CD Infrastructure
GitHub Actions workflows for automated testing
Codecov integration for coverage tracking
Test coverage requirements: 80%+ for merging to main branch
Comprehensive Testing
Coverage sprint achieving 80%+ across all major modules:
information/: 88.7% (INTENSE, GCMI, entropy functions)dim_reduction/: 87.3% (PCA, Isomap, UMAP, Diffusion Maps)network/: 96.2% (graph construction, topology metrics)experiment/: extensive exp_base.py and neuron.py tests
Import tests ensuring all modules load without errors
Edge case handling for numerical stability
Dimensionality Reduction
Diffusion Maps: complete eigen-decomposition implementation with heat kernel affinities
Intrinsic dimension estimation: correlation dimension, k-NN fractal dimension
Graph preprocessing: automatic defaults (e.g., UMAP requires connected graph, Isomap handles disconnected)
API modernization:
dr_sequence()replacing legacydr_serieswith better error messages
Information Theory
KSG estimator: Kraskov-Stögbauer-Grassberger k-NN mutual information as alternative to GCMI
Estimator selection:
mi_estimatorparameter in INTENSE pipelines (‘gcmi’ or ‘ksg’)Automatic LNC: local non-uniformity correction alpha selection for KSG
JIT optimization: Numba compilation for GCMI functions (10-100× speedup for large datasets)
Network Analysis
Gromov hyperbolicity: curvature calculation for network geometry
Partial directions: construct graphs using subset of features
Topology metrics: clustering coefficient, path lengths, community structure
Neural Network Models
Flexible autoencoders: modular loss composition system
Loss functions: reconstruction MSE, orthogonality penalties, correlation losses
Architecture options: skip connections, batch normalization, dropout
Time series support: advanced type detection for temporal vs. static data
Changed
API Improvements
Dimensionality reduction functions accept
verboseparameter (suppresses progress print statements)Matrix utilities automatically branch between dense numpy and sparse scipy implementations
Simplified parameter passing with better validation
RSA Module
Major refactoring improving code clarity
Better integration with dimensionality reduction workflows
Simplified correlation distance calculations
Fixed
Critical Bugs
Manifold metric numerical stability (eliminated NaN propagation)
ProximityGraph edge weight doubling in k-NN construction (was creating 2× heavier graphs)
Lost nodes calculation in graph giant component extraction
Zero columns in discrete attribute handling (now raises informative error)
Precision Issues
Floating-point formatting in axis labels and tick marks
Matrix condition number checks before inversion
Removed
Deprecated code
signalsmodule (functionality migrated to utils)Legacy
dr_seriesfunction (usedr_sequenceinstead)
[0.2.0] - 2025-03-01
Added
Synthetic Data Generators
Mixed selectivity populations: neurons responding to multiple task variables with ground truth
3D spatial manifolds: volumetric place cell populations for navigation studies
2D spatial manifolds: planar place fields with adjustable coverage and overlap
Circular manifolds: head direction cells with von Mises tuning curves
Validation framework: compare dimensionality reduction against known ground truth geometry
Dimensionality Estimation
Linear methods:
PCA-based effective dimension (proportion of variance threshold)
Effective rank (entropy of eigenvalue distribution)
Nonlinear methods:
k-NN fractal dimension (scales with neighbor distance)
Correlation dimension (box-counting on embedding)
Circular extraction: identify ring-like manifolds from population activity
Documentation
Interactive Jupyter notebooks demonstrating end-to-end workflows
README overhaul explaining DRIADA’s vision: bridging single-neuron selectivity and population dynamics
Example gallery with 15+ analysis pipelines
Changed
Project Scope
Unified framework integrating INTENSE (single-neuron selectivity) with dimensionality reduction (population structure)
Renamed internal documentation from
_intense_backlog.mdto_backlog.mdreflecting broader mission
Fixed
3D spatial manifold generation stability (optimized firing rate parameters)
Test numerical tolerance for nonlinear dimension estimators
[0.1.x] - 2024-2025
Initial development releases establishing core functionality
INTENSE Module (Information-Theoretic Evaluation of Neuronal Selectivity)
Statistical Framework
Gaussian Copula Mutual Information (GCMI): continuous estimator handling arbitrary distributions
Two-stage testing:
Stage 1: rank-based non-parametric test (fast, conservative)
Stage 2: parametric gamma distribution fitting (precise p-values for significant relationships)
Multiple comparison correction: Holm-Bonferroni controlling family-wise error rate
Optimal shift search: detect delayed relationships (e.g., sensory → motor lag)
Mixed selectivity disentanglement: separate unique vs. shared information using interaction information
Analysis Workflows
Cell-cell interaction information (synergy, redundancy)
Feature-feature joint encoding
Single-cell selectivity for behavioral variables
Parallel processing for large-scale multi-neuron recordings
Dimensionality Reduction Framework
Classical Methods
PCA: principal component analysis with variance-based selection
Factor Analysis: probabilistic latent variable model with noise modeling
Manifold Learning
Isomap: geodesic distance preservation via graph shortest paths
UMAP: uniform manifold approximation with fuzzy topology
t-SNE: t-distributed stochastic neighbor embedding for visualization
Diffusion Maps: spectral embedding based on random walk diffusion
Graph Construction
Heat kernel affinities with adaptive bandwidth
k-NN and ε-ball proximity graphs
Giant component extraction for disconnected graphs
Configurable distance metrics (Euclidean, correlation, etc.)
Calcium Imaging Pipeline
Event Detection
Wavelet-based: multi-scale decomposition with adaptive thresholding
Threshold-based: iterative baseline-crossing detection
Quality metrics: amplitude, SNR, shape correlation
Signal Reconstruction
Double-exponential kernel convolution (rise + decay dynamics)
Spike-to-calcium forward model
Parameter optimization for indicator kinetics
Experiment Framework
Data Management
Unified container: neural activity + behavioral variables + metadata
Multi-cell support: analyze 10-1000+ neurons simultaneously
HDF5 serialization: efficient storage for large datasets (>1 GB recordings)
Flexible loading: support for various acquisition systems (Inscopix, Miniscope, 2-photon)
Integration
Seamless INTENSE → DR pipeline: map selectivity onto population manifolds
Synthetic data validation: test pipelines on ground truth before real data
Infrastructure
Development
Python package structure (setuptools/pip installable)
Modular architecture: independent modules for information theory, DR, experiment handling
Public API via
__init__.pyexports
Testing
pytest framework with fixtures
Unit tests for mathematical functions
Integration tests for full workflows
Doctests in function docstrings
Documentation
Sphinx-based HTML documentation
NumPy-style docstrings
Examples embedded in docstrings
Reference API documentation
Alternatively, you can view the changelog on GitHub.
Version History
1.1.0 (2026-03-15) - Recurrence analysis module, INTENSE signal ratio, supervised DR
1.0.0 (2026-03-01) - First stable release
0.6.6 (2025-12-XX) - Lazy torch imports, distribution optimization
0.6.5 (2025-12-XX) - Wavelet batch optimization
0.6.4 (2025-11-XX) - Publication figure framework, spike reconstruction refactor
0.6.1 (2025-10-XX) - FPS adaptivity, conda environment
0.6.0 (2025-09-XX) - Kinetics optimization system
0.5.1 (2025-08-XX) - LOO analysis, visualization enhancements
0.4.0 (2025-07-XX) - CI/CD, comprehensive testing, diffusion maps
0.2.0 (2025-03-XX) - Synthetic data generators, dimensionality estimation
0.1.x (2024-2025) - Initial development releases