Skip to content

Releases: LernerLab/GuPPy

v2.0.0-alpha6

29 Apr 16:41
b48c604

Choose a tag to compare

Features

  • Updated license from GPL to BSD-3-Clause PR #309

v2.0.0-alpha5

28 Apr 19:20
19c3a59

Choose a tag to compare

Fixes

  • Cross-correlation now raises a descriptive ValueError (instead of silently skipping) when compute_cross_correlation=True but 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/baselineWindowEnd values with layered upfront validation in the baseline z-score path: rejects non-numeric/NaN inputs, enforces start < 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) from LiteralInput(type=int) to IntInput, 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 of visualizeResults. When the requested metric was not computed in step 5, a ValueError is 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-drive AOut outputs. Also raises a descriptive ValueError when 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: 7 from Doric CSVs with trailing commas) during event discovery so they no longer surface as selectable events in Step 2. The mixed-modality read_raw_data orchestrator 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 IndexError and 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 duplicate storesList.csv rows, silent overwrites of per-code HDF5 files, and a downstream KeyError in step-6 visualization; sub-event suffixes now preserve unique floats as filesystem-safe 0p1, 0p2, … strings. PR #294
  • Fixed detect_acquisition_formats skipping the intermediate event*.csv files that NpmRecordingExtractor materializes when npm_split_events=True, which left CsvRecordingExtractor undispatched and broke step-3 reads of NPM split-event TTLs. Single-column timestamp CSVs are now uniformly reported as csv regardless 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.py and 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-validation asserts and generic raise Exception(...) calls to ValueError / 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

15 Apr 22:26
8b31b65

Choose a tag to compare

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

  • Added documentation site with Sphinx, pydata-sphinx-theme, and MyST-Parser. Includes Diataxis structure and a first tutorial covering the end-to-end GUI workflow with stubbed CSV test data. PR #264
  • Improved test suite coverage to greater than or equal to 85% on CodeCov. PR #260

v2.0.0-alpha3

02 Apr 01:00
20cc3c5

Choose a tag to compare

Fixes

  • Fixed npm_recording_extractor.py bug that was caused by mixing standard event CSV type CSVs with NPM data. PR #256

Improvements

  • Expanded test suite with unit tests for frontend components: PR #250
  • Re-balanced test suite to conform to standard testing pyramid: PR #255

v2.0.0-alpha2

31 Mar 21:09
103f743

Choose a tag to compare

v2.0.0-alpha2 (March 31st, 2026)

Fixes

  • Fixed plot saving logic and added selenium as a dependency. PR #252

v2.0.0-alpha1

30 Mar 22:45
5d5a49f

Choose a tag to compare

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 BaseRecordingExtractor and 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

12 Aug 23:20

Choose a tag to compare

  • 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

11 Nov 20:04

Choose a tag to compare

  • 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

28 Oct 20:23

Choose a tag to compare

  • 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

05 Aug 21:15

Choose a tag to compare

  • 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