Skip to content

Commit

Permalink
added statement of need t
Browse files Browse the repository at this point in the history
  • Loading branch information
calebweinreb committed Dec 6, 2023
1 parent 19c4b2a commit 412602d
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 66 deletions.
46 changes: 12 additions & 34 deletions paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,56 +20,34 @@ bibliography: paper.bib

---


# Summary

SNUB is a tool for exploring time-series data, such as neural
recordings, behavioral videos, temperature, movement or other sensor signals,
and higher-level annotations derived from such data. The interface is
divided into synchronized windows that each show a different data stream.
The linked data views allow users to quickly inspect the relationships between
experimental phenomena, such as the behaviors that occur during a particular
pattern of neural activity (\autoref{fig:screenshot}).
A core goal of neuroscience is to discover temporal patterns in behavior and neurophysiology. Though a variety of tools exist to characterize these relationships, there is still no substitute for direct inspection as a way to notice unexpected patterns and generate new hypotheses. To facilitate this process, we have developed the Systems Neuro Browser (SNUB), a graphical user interface for exploring time-series data. SNUB is a flexible, general-purpose tool that allows users to build a dashboard of synchronized data views, including neural recordings, behavioral videos, and annotations derived from these data.


# Statement of need

Direct inspection of behavior and neurophysiology recordings is hard because the data are typically high-dimensional, come in a variety of modalities (such as raw video, pose tracking, spike trains, calcium traces, etc.) with different sampling rates and methods of visualization. SNUB lowers the activation energy for data exploration by integrating these data streams into a single easy-to-navigate interface. The interface is divided into synchronized windows that each show a different data stream. The linked data views allow users to quickly inspect the relationships between experimental phenomena, such as the behaviors that occur during a particular pattern of neural activity (\autoref{fig:screenshot}).

![Screenshot from SNUB.\label{fig:screenshot}](docs/media/screenshot.png)

We provide dedicated widgets and loading functions for exploring
raw video, 3D animal pose, behavior annotations, electrophysiology recordings,
and calcium imaging data - either as a raster or as a super-position of
labeled regions of interest (ROIs). More broadly, SNUB can dislay any data
that takes the form of a heatmap, scatter plot, video, or collection of
named temporally-varying signals.
We provide dedicated widgets and loading functions for exploring raw video, 3D animal pose, behavior annotations, electrophysiology recordings, and calcium imaging data - either as a raster or as a super-position of labeled regions of interest (ROIs). More broadly, SNUB can dislay any data that takes the form of a heatmap, scatter plot, video, or collection of named temporally-varying signals.

In addition to the front-end GUI, we include a library of functions for
ingesting raw data and saving it to a format that is readable by the SNUB
viewer. The following code, for example, creates a project with paired
electrophysiology and video data.
In addition to the front-end GUI, we include a library of functions for ingesting raw data and saving it to a format that is readable by the SNUB viewer. The following code, for example, creates a project with paired electrophysiology and video data.

```
snub.io.create_project(project_directory, duration=1800)
snub.io.add_video(project_directory, 'path/to/my_video.avi', name='IR_camera')
snub.io.add_splikeplot(project_directory, 'my_ephys_data', spike_times, spike_labels)
```

SNUB is a flexible general-purpose tool that complements more specialized
packages such as rastermap [@rastermap] and Bento [@bento]. The rastermap
interface, for example, is hard-coded for the display of neural activity
rasters, ROIs and 2D embeddings of neural activity. Bento is hard-coded for
the display of neural activity rasters, behavioral videos and behavioral
annotations. SNUB can reproduce either of these configurations and is
especially useful when one wishes to include additional types of data
or more directly customize the way that data is rendered.
SNUB is a flexible general-purpose tool that complements more specialized packages such as rastermap [@rastermap] and Bento [@bento]. The rastermap interface, for example, is hard-coded for the display of neural activity rasters, ROIs and 2D embeddings of neural activity. Bento is hard-coded for the display of neural activity rasters, behavioral videos and behavioral annotations. SNUB can reproduce either of these configurations and is especially useful when one wishes to include additional types of data or more directly customize the way that data is rendered.

The graphics in SNUB are powered by vispy [@vispy]. SNUB includes wrappers
for several dimensionality reduction methods, including rastermap [@rastermap]
for ordering raster plots and UMAP [@umap] for 2D scatter plots. Fast video
loading is enabled by vidio [@vidio].
The graphics in SNUB are powered by vispy [@vispy]. SNUB includes wrappers for several dimensionality reduction methods, including rastermap [@rastermap] for ordering raster plots and UMAP [@umap] for 2D scatter plots. Fast video loading is enabled by vidio [@vidio].

# Acknowledgements

We are grateful to Mohammed Osman for initial contributions to the 3D keypoint
visualization tool. CW is a Fellow of The Jane Coffin Childs Memorial Fund for
Medical Research. SRD is supported by NIH grants U19NS113201, RF1AG073625,
R01NS114020, the Brain Research Foundation, and the Simons Collaboration on
the Global Brain.
We are grateful to Mohammed Osman for initial contributions to the 3D keypoint visualization tool. CW is a Fellow of The Jane Coffin Childs Memorial Fund for Medical Research. SRD is supported by NIH grants U19NS113201, RF1AG073625, R01NS114020, the Brain Research Foundation, and the Simons Collaboration on the Global Brain.

# References
61 changes: 30 additions & 31 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,41 +1,40 @@
import setuptools

with open("README.md", 'r') as f:
with open("README.md", "r") as f:
long_description = f.read()

setuptools.setup(
name='snub',
version='0.0.3',
author='Caleb Weinreb',
author_email='[email protected]',
description='Systems neuro browser',
name="snub",
version="0.0.3",
author="Caleb Weinreb",
author_email="[email protected]",
description="Systems neuro browser",
include_package_data=True,
packages=setuptools.find_packages(),
classifiers=[
'Programming Language :: Python :: 3',
'Operating System :: OS Independent'
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
],
entry_points={
'console_scripts':[
'snub = snub.gui.main:run']
},
python_requires='>=3.8',
install_requires=['PyQt5',
'numpy',
'scikit-learn',
'tqdm',
'cmapy',
'interlap',
'numba',
'vispy',
'imageio',
'imageio-ffmpeg',
'umap-learn',
'rastermap',
'ipykernel',
'pyqtgraph',
'networkx',
'opencv-python-headless',
'vidio>=0.0.3'],
url='https://github.com/calebweinreb/SNUB'
entry_points={"console_scripts": ["snub = snub.gui.main:run"]},
python_requires=">=3.8",
install_requires=[
"PyQt5",
"numpy",
"scikit-learn",
"tqdm",
"cmapy",
"interlap",
"numba",
"vispy",
"imageio",
"imageio-ffmpeg",
"umap-learn",
"rastermap",
"ipykernel",
"pyqtgraph",
"networkx",
"opencv-python-headless",
"vidio>=0.0.3",
],
url="https://github.com/calebweinreb/SNUB",
)
2 changes: 1 addition & 1 deletion snub/gui/stacks/track.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class TrackStack(Stack):
def __init__(self, config, selected_intervals):
super().__init__(config, selected_intervals)
self.bounds = config["bounds"]
self.center_playhead_policy = config["center_playhead"]
self.track_playhead_policy = config["track_playhead"]
self.zoom_gain = config["zoom_gain"]
self.min_range = config["min_range"]
self.size_ratio = config["tracks_size_ratio"]
Expand Down

0 comments on commit 412602d

Please sign in to comment.