Skip to content

v2.0.0-beta4

Latest

Choose a tag to compare

@pauladkisson pauladkisson released this 12 Oct 16:11
· 131 commits to main since this release
b4205c6

Features

  • GuPPy now ships with the DANDI dandiset filter's verdicts for every public dandiset, refreshed monthly, so the filter only reads dandisets that are new or have changed since. Cached dandiset verdicts are now re-read whenever the dandiset's version or modification time on DANDI changes. guppy --no-bundled-dandi-cache launches without the bundled verdicts. PR #542
  • Group Analysis now collects tonic epoch means and behavioral covariate correlations across a group's members, writing a per-member table and a mean, standard error and count summary for each recording site. A group whose members only partly hold these results, or used different epoch labels, bin widths or covariates, is refused with a message naming the runs. PR #539
  • guppy --clear-dandi-cache deletes the saved DANDI fiber photometry scan results, so the next dandiset filter or file scan reads every file again. PR #534
  • Transient Detection Method (transient_detection_method) adds a minimum rise method alongside the default MAD threshold: a peak counts as a transient when it rises more than Minimum Rise (transient_minimum_rise) above the local minimum just before it, in the units of the metric the detector runs on. PR #533
  • Timestamps for Each Control/Signal Pair (pair_timestamps_channel) chooses whose sample times a control/signal pair is analyzed on, for systems that sample the two channels at different moments: signal (the default) or control. The longer channel is trimmed to the length of the shorter. PR #523
  • GuPPy now remembers the input and output root folders between launches and pre-selects them, so the Root Folder Selection card is folded away for a returning user and only the session folders are left to pick. The pair is recorded when an analysis starts rather than while browsing, and --input-root / --output-root still win over it. PR #515
  • guppy --input-root <path> --output-root <path> names the two root folders at launch and pre-selects them in the Root Folder Selection card, which folds away once both are known. These replace --start-path: the input root already decides where the session browser opens. PR #514
  • Analysis outputs no longer land inside the session folder. A new Root Folder Selection card names two folders a project keeps for the life of its analyses — an input root folder your sessions live under and an output root folder results are written to — and GuPPy mirrors each session's path below the input root into the output root, writing its run folders there as output_<run name>. A session at <input root>/subject1/session1 gets <output root>/subject1/session1/output_1. Mirroring the input structure means the results tree is navigable without documentation and two sessions sharing a folder name never collide. Both folders are required. Ticking Output root folder is the same as the input root folder points both at one folder, which writes each session's runs inside it — the pre-2.0.0-beta4 arrangement, available but not recommended. Run folders written by earlier versions are still found and still open, and occupy their run name so a new run never collides with one; reading that older name is deprecated. PR #513
  • The DANDI source panel now browses the archive over three screens: a list of dandisets, one dandiset's metadata, and that dandiset's NWB files. It opens having already searched for fiber photometry datasets, and the same search box takes any other term or a six-digit Dandiset ID. Because DANDI records nothing about fiber photometry in its structured metadata, that search matches only what a dataset's authors wrote about it; a checkbox reads the listed dandisets' files instead and keeps only those GuPPy can actually read, and the file browser does the same for a chosen dandiset's assets. Selecting a file previews its channels, their recording sites, indicators and wavelengths, the store names Step 1 will ask you to label, and the first 60 seconds of every channel. PR #506
  • Added support for reading pyPhotometry .ppd recordings, the open acquisition hardware from Akam and Walton (2019) also sold by Open Ephys. A session folder holding one .ppd file is detected like any other format and its traces and digital lines appear as stores in Label Stores, so the rest of the pipeline is unchanged. Stores are named for the photodetector that was read and the excitation source that was lit (detector_1_excitation_2) rather than for the board's two sockets, because a shared detector prefix is what says two traces came off one fiber and so belong to the same recording site: the strobed one-emission modes read a single photodetector twice under different excitations, which is the signal-plus-isosbestic pair, and analog_1/analog_2 would invite labeling it as two regions. Every header generation the format has had is read, including the pre-JSON one whose mode is a byte rather than a string. An acquisition mode the reader does not know is refused rather than read with the default two-signal layout, which would silently interleave several excitations into one trace; the four-colour fork of the acquisition software is refused by name, with a message pointing at its paper. Because the board has no simultaneous analog-to-digital converters, the timestamps of a strobed recording's traces are staggered by one tick of the sampling timer, as the hardware sampled them. PR #447

Fixes

  • guppy --input-root and --output-root now refuse a folder that does not exist instead of silently falling back to the remembered one, and remember a relative or ~ folder as an absolute path. PR #537
  • Save metadata on the Step 6 page no longer raises a ValueError after writing nwb_metadata.yaml, and shows the saved path as intended. PR #536
  • Running a DANDI analysis no longer replaces the remembered input root folder with the output root folder. PR #534
  • Stubbing a Neurophotometrics session now keeps only the events that fall inside the photometry it retains, rather than cutting the event file by its own start, which left events past the end of the stubbed recording; sampleData_NPM_1 is regenerated so all five of its stimuli events fall inside its photometry. PR #524
  • A recording site's timeCorrection_<site> file now records the recording start and sampling rate of the channel its timestamps come from, rather than of whichever channel of the pair was written last. PR #523
  • GuPPy now requires zarr earlier than 3, since a fresh install otherwise resolved zarr 3.x, which the hdmf-zarr/dandi stack cannot use, and backtracked dandi to a release incompatible with pydantic 2. PR #522
  • GuPPy now requires tornado 6.5.10 or later, since 6.5.9 broke Bokeh's static-file serving and left the Panel pages unable to load. PR #520
  • DANDI assets are now materialized as session folders inside the output root folder rather than the input root, so streaming a dandiset no longer leaves GuPPy's folders in your raw data. The Data Source toggle moves above the cards, where it belongs now that it decides which root folders apply, and DANDI mode hides the input root folder — a streamed session has no local input to sit under. PR #518
  • DANDI mode no longer shows the Session folders instruction above the DANDI browser, which told you to pick sessions under an input root folder that the mode does not have. PR #516
  • Pages that list more than one output folder — the Run folder switcher on the preprocessing, artifact and tonic pages, and the transient peak entries — now name each folder by its path below the deepest folder they share, rather than by its own name. Two subjects' session1 folders produce run folders with the same name, which collapsed them into a single entry and left the second one unreachable. PR #512

Improvements

  • Step 4 no longer starts worker processes when # of cores is 1. It computes the PSTHs, peak/AUC, cross-correlations, PSTH significance and transients in place, saving the several seconds each worker spent starting up. PR #540
  • Changelog entries are now written one file per entry under changelog_entries/, named <PR number>.<type>.md, and assembled into CHANGELOG.md by towncrier build in a pre-release pull request, so two pull requests no longer edit the same lines. PR #538
  • The DANDI files screen's Scan for fiber photometry now remembers its verdicts alongside the dandiset filter's, so files either one has already read are not read again. PR #534
  • The stubbed testing data now includes sampleData_NPM_6, PhAT's Sample2 Neurophotometrics recording, whose header carries blank cells and a second timestamp column named Timestamp. PR #525
  • stubbed_testing_data/README.md is no longer tracked in Git LFS, so the stub catalogue can be read in a diff and edited on two branches without conflicting as a pair of opaque hashes. The recordings it describes, and the acquisition artifacts alongside them, stay in LFS. PR #510
  • Saving on the Label Stores page now pops up a confirmation naming the output folder, and the homepage lists the new run under Output Folder Selection as soon as it is saved. PR #504
  • The Label Stores page's save controls are now a Create new run / Overwrite existing run choice, with Run name pre-filled with the next free integer and a Run to overwrite picker, listing runs by folder name, shown only when overwriting; the alert pane appears only when there is something to report. PR #504
  • The cross-correlation lag axis is now named and documented in seconds, the unit it has always held, rather than milliseconds. PR #503