Repository navigation
·
131 commits
to main
since this release
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-cachelaunches 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-cachedeletes 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 aminimum risemethod alongside the defaultMAD 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) orcontrol. 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-rootstill 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/session1gets<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
.ppdrecordings, the open acquisition hardware from Akam and Walton (2019) also sold by Open Ephys. A session folder holding one.ppdfile 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, andanalog_1/analog_2would 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-rootand--output-rootnow 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
ValueErrorafter writingnwb_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_1is 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'
session1folders 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 intoCHANGELOG.mdbytowncrier buildin 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 namedTimestamp. PR #525 stubbed_testing_data/README.mdis 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