Releases: LernerLab/GuPPy
Releases · LernerLab/GuPPy
v2.0.0-alpha6
Features
- Updated license from GPL to BSD-3-Clause PR #309
v2.0.0-alpha5
Fixes
- Cross-correlation now raises a descriptive
ValueError(instead of silently skipping) whencompute_cross_correlation=Truebut fewer than two distinct signal regions are present; the error message is surfaced as a persistent notification in the Panel UI so users do not need to inspect the terminal. PR #284 - Fixed stale output data when overwriting storenames in step 2: the output directory is now fully cleared before writing the new
storesList.csv, removing any leftover HDF5 files and other pipeline artefacts. PR #281 - Replaced the uninformative
"Error in naming convention of files or Error in storesList file"exception with an actionable message that reports the mismatching pair-name suffixes, the directory searched, and a suggestion to re-run step 2. PR #280 - Replaced the generic error for invalid
baselineWindowStart/baselineWindowEndvalues with layered upfront validation in the baseline z-score path: rejects non-numeric/NaNinputs, enforcesstart < end, and checks each bound against the signal timespan — reporting which limit was violated and the valid range. The input parameters tooltip now documents the expected units, ordering, and bounds. PR #283 - Switched the remaining numeric input-parameter widgets (
timeForLightsTurnOn,numberOfCores,moving_wd,highAmpFilt,transientsThresh,moving_avg_filter,no_channels_np,nSecPrev,nSecPost,timeInterval,bin_psth_trials,baselineCorrectionStart,baselineCorrectionEnd) fromLiteralInput(type=int)toIntInput, so non-numeric input is rejected at the browser level instead of being silently reverted to the previous valid value. PR #297 - Step 6 now validates the visualization metric selection (
z-score or ΔF/F? (for visualization)) against the step-5 PSTH outputs on disk at the start ofvisualizeResults. When the requested metric was not computed in step 5, aValueErroris raised that names the missing metric, lists the affected session output directories, and tells the user to either change the visualization selection or re-run step 5 with the relevant option enabled. PR #288 - Doric extractor now validates signal/control channels early with actionable error messages: rejects empty, non-finite (NaN/inf), and constant (zero-variance) channels — common in unused
AIn-X - Dem (AOut-Y)demodulation channels and LED-driveAOutoutputs. Also raises a descriptiveValueErrorwhen a requested channel name is missing from a Doric CSV / V1 / V6 file, listing the available channels, and filters trailing all-NaN columns (e.g.Unnamed: 7from Doric CSVs with trailing commas) during event discovery so they no longer surface as selectable events in Step 2. The mixed-modalityread_raw_dataorchestrator likewise lists available events when a requested event is not found in any extractor. PR #290 - Added group-analysis validation in steps 5 and 6 with actionable error messages for mismatched/non-overlapping storenames and missing average outputs, replacing the prior
IndexErrorand silent fall-through behaviors. PR #293 - Sidebar button click handlers now surface input-parameter validation errors (e.g. "No folder is selected for analysis") as a persistent Panel notification instead of dying silently in a worker thread traceback. PR #296
- Fixed TDT split-event extraction collapsing float-valued event codes (e.g.
0.1, 0.2, 0.4, 0.8, 10.0) to integers, which caused duplicatestoresList.csvrows, silent overwrites of per-code HDF5 files, and a downstreamKeyErrorin step-6 visualization; sub-event suffixes now preserve unique floats as filesystem-safe0p1,0p2, … strings. PR #294 - Fixed
detect_acquisition_formatsskipping the intermediateevent*.csvfiles thatNpmRecordingExtractormaterializes whennpm_split_events=True, which leftCsvRecordingExtractorundispatched and broke step-3 reads of NPM split-event TTLs. Single-column timestamp CSVs are now uniformly reported ascsvregardless of whether NPM data is present. PR #298
Improvements
- Added input validation in step 2 to reject duplicate store names and mismatched signal/control region pairs, with descriptive error messages naming the offending entries. PR #275
- Consolidated input-validation logic from the #138 sub-PRs into
src/guppy/utils/validation.pyand moved peak-window and PSTH baseline-correction validation upfront in step 5 so errors surface before any HDF5 IO. PR #299 - Audited every user-facing error message across
src/guppy/: stripped ANSI escape codes, converted input-validationasserts and genericraise Exception(...)calls toValueError/FileNotFoundError, and rewrote vague strings (naming-convention mismatches, CSV column counts, TDT/Doric/NWB extractor errors, typos) to name the offending value, state the rule, and give the fix. PR #299
v2.0.0-alpha4
Features
- Added read support for NWB files with dedicated recording extractor. PR #261
- Added --start-path option to guppy launch command PR #265
- Added a dedicated DANDI NWB streaming extractor, a prototype streaming script, and orchestration-layer support for running step 2 and step 3 against
dandi://URIs. PR #266 - Added support for streaming NWB files from DANDI, complete with front-end file selector. PR #267
Fixes
- Fixed pickling issue for long storenames in
read_and_save_all_events. PR #261
Improvements
v2.0.0-alpha3
v2.0.0-alpha2
v2.0.0-alpha2 (March 31st, 2026)
Fixes
- Fixed plot saving logic and added selenium as a dependency. PR #252
v2.0.0-alpha1
Features
- Modernized python packaging and distribution: PR #129
- Added support for Python 3.10-3.13: PR #129
- Added pytest-based headless test suite for pipeline steps 1–5 with CI workflows: PR #153
- Added daily tests to the automatic CI/CD pipeline: PR #234
Fixes
- Fixed bug with group analysis by updating pandas syntax: PR #192
Deprecations and Removals
- Dropped support for Python 3.6: PR #129
- Restructured directory layout for improved organization: PR #129
- Converted savingInputParameters.ipynb to saving_input_parameters.py: PR #129
Improvements
- Replaced scattered print statements with centralized structured logging: PR #160
- Added pre-commit hooks for automated code formatting and linting (Black + Ruff): PR #161
- Expanded test suite with an additional example session across steps 2–5: PR #179
- Introduced
BaseRecordingExtractorand format-specific subclasses for TDT, Doric, NPM, and CSV data ingestion: PR #171 - Refactored monolithic analysis code into modular components under
src/guppy/analysis/: PR #190 - Refactored frontend code into modular components under
src/guppy/frontend/: PR #191 - Added code coverage reporting via Codecov to CI workflows: PR #194
- Added GitHub Actions workflow to automatically detect changes to the source code and require updating the changelog for any PR that modifies code: PR #233
- Restored automatic data modality detection and mixed-modality TTL/signal support with a modular, separation-of-concerns architecture: PR #226
- Expanded test suite with consistency tests that compare results to GuPPy-v1.3.0: PR #207
- Expanded test suite with unit tests for recording extractor classes: PR #240
- Migrated testing datasets from Google Drive to GitHub LFS with comprehensive documentation and CI/CD integration: PR #242
- Added GitHub Actions cache for stubbed testing data to avoid exhausting Git LFS bandwidth limits: PR #245
- Expanded test suite with unit tests for analysis functions: PR #247
- Expanded test suite with unit tests for orchestration functions: PR #249
- Expanded test suite with unit tests for utility functions: PR #248
GuPPy-v1.3.0
- Added support for NPM TTL files with multiple format versions
- Added support for multiple NPM files and CSV TTL files simultaneously
- Added binning by trials feature for data organization
- Extended peak AUC analysis with additional window options
- Enhanced cross-correlation module with artifact removal options
- Optional filtering - can disable signal filtering when needed
- Improved storenames GUI for better user experience
- Automatic saving of input parameters for group analysis
- Enhanced visualization GUI with improved Y-axis limits
- Fixed Windows and macOS compatibility issues
- Improved Doric file format support
- Added directory checking for output folders
- Fixed various bugs in group analysis and PSTH computation
- Resolved port number errors and improved error handling
GuPPy-v1.2.0
- Support for Doric system file (.csv and .doric)
- storenames GUI changed, designed it in a way which is less error prone
- Saving of input parameters is not required for doing the analysis
- Visualization GUI changed
- user-defined for number of cores used
- added cross-correalation computation
- two user-defined parameters for transients detection
- artifacts removal can be done with two different methods
- compute negative peaks along with positive peaks in a user-defined window
GuPPy-v1.1.4
- Support for Neurophotometrics data
- Option for binning of PSTH trials
- Option to carry out analysis without using isosbestic control channel
- Plot to see control fitted channel to signal channel
- Selection and deletion of chunks with specific keys in artifacts removal
- Option to change moving average filter window
- Option to compute variations of z-score based on different computation method.
- Faster computation speed for PSTH computation step
GuPPy-v1.1.3
- Minor bug fixes
- No need of Jupyter Notebook to run GuPPy
- Storenames GUI now suggest names for storenames based on user’s past input
- 'csv' file can be used as inputs for isosbestic control channel, signal channel and TTLs too