Giter VIP home page Giter VIP logo

nwb-overview's People

Contributors

anilbey avatar arnodelorme avatar bendichter avatar cbroz1 avatar celefthe avatar gviejo avatar khl02007 avatar lawrence-mbf avatar mavaylon1 avatar oruebel avatar rly avatar roomrys avatar stephprince avatar zeitgeberh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nwb-overview's Issues

Add OptiNiSt to community tools list

OptiNiSt - Calcium Imaging Pipeline Tool

OptiNiSt(Optical Neuroimage Studio) helps researchers try multiple data analysis methods, visualize the results, and construct the data analysis pipelines easily and quickly. OptiNiSt’s data-saving format follows NWB standards.

It looks like it can read HDF5/NWB and outputs in NWB.

Documentation: https://optinist.readthedocs.io/en/latest/index.html
Code: https://github.com/oist/optinist/
Tutorial at CNS 2023: https://www.dropbox.com/sh/z0awh38hpwrjchs/AABjmXTvNjrHnsO9lh-jh9fma?dl=0

Describe how to find extensions

As part of the "Converting data to NWB" section we should include a brief discussion about how to find extensions in the catalog and when users should consider creating extensions (e.g., vs. when to use others ways to add custom data, e.g. adding columns to existing tables).

Add extension example for LabMetaData

To further enhance the extension tutorial it will be useful to create end-to-end examples for how to create extension for specific use cases. One such use case is extending theLabMetaData type to add lab-specific metadata to a file.

Add DataJoint to community gallery

DataJoint: a scientific workflow data management platform
https://datajoint.com/

Docs: https://datajoint.com/docs/

Three approaches to integration:

  1. Export from DataJoint Elements to NWB (need docs)
  2. Store (refer to) NWB files in tables, store object_ids in a column, use the object_id to fetch NWB objects (ala Spyglass)
  3. Store NWB objects in tables. Notebooks/code demonstrating this method (dj.AttributeAdapter method):

Add extension example for ``DynamicTable``

To further enhance the extension tutorial it will be useful to create end-to-end examples for how to create extension for specific use cases. One such use case is extending the DynamicTable type to collect results from a new analysis algorithm (e.g., for feature detection) or to extend an existing type, e.g., TimeIntervals to define custom interval definitions.

See also #59 for an example

Add IBL example to Community Gallery

As part of the tutorials at COSYNE 2023 the IBL team presented how to reuse their Brainwide Map via NWB (and the IBL's ONE API). This could make for a nice example to add to the community gallery page.

From the tutorial website:

The IBL recently released a Brainwide Map of neural activity during decision-making! It consists of 547 Neuropixel recordings of 32784 neurons across 194 regions of the mouse brain, and we want to make it easy for you to use it to test your own hypotheses. At this tutorial we’ll teach you how to use our API, ONE, to search and download datasets, and will show you how to do basic analysis such as raster plots, single cell PSTHs, and brain region averages.

Online notebooks:

Create GitHub action to check links

Sphinx ships with a standard link checker that we can run simply by calling make linkcheck. It would be great if we could run the link checker as a standard test on PRs to make sure links are being fixed before merging PRs.

Add Community Conversion Catalogue

Add new page showing conversion pipelines actually in practice used by labs, including

NeuroConv Catalogue: https://neuroconv.readthedocs.io/en/main/catalogue/catalogue.html

and things like

Ecephys in practice with MatNWB and PyNWB: https://dervinism.github.io/bristol-neuroscience-data-guide/tutorials/Bristol%20GIN%20for%20Silicon%20Probe%20Data.html

Ophys in practice with MatNWB and PyNWB: https://dervinism.github.io/bristol-neuroscience-data-guide/tutorials/Bristol%20GIN%20for%20Calcium%20Imaging%20Data.html

and the others from that site for imaging and icephys.

Those community examples still need to be vetted for Best Practices and proper choice/use of neurodata types, but it would still be very useful to acknowledge and point to somewhere in the NWB docs

cc: @dervinism for all the hard work putting the tutorials together

Update HDF5 tools page

Update https://nwb-overview.readthedocs.io/en/latest/tools/hdfview/hdfview.html to provide a list general HDF5 tools that can be useful or inspecting NWB HDF5 file. E.g,:

Add extension example for ``TimeSeries``

To further enhance the extension tutorial it will be useful to create end-to-end examples for how to create extension for specific use cases. One such use case is extending the TimeSeries type (or a subtype of it) to integrate a new data modality (or refine an existing modality).

See also #59 for an example

Add "using extensions" section to the extension tutorial

In the extension tutorial we are currently discussing how to create APIs, but we are not discussing how to use extension, i.e., how to read and write data with extensions. How to install extensions. How to read data with extensions if the extensions is not installed etc.. Overall I think doesn't need to be a very long document, but it would be useful to show how this works.

Consider adding naplib

naplib-python: Neural acoustic data processing and analysis tools in python

Paper: https://www.sciencedirect.com/science/article/pii/S2665963823000787
The paper says "Convenient data loading functions are available for common raw data recording structures including Neurodata Without Borders format (NWB) [33]"

Code repo: https://github.com/naplab/naplib-python

The NWB support is limited to opening an NWB file in Python (pynwb>=2.3.0) and reading an object named "ieeg" with data & rate (presumably an ElectricalSeries) and an "audio" object with data and rate (presumably a TimeSeries) from nwbfile.acquisition. This is not particularly robust. There is also no documentation on how to read data from an NWB file or structure the file to be readable. pynwb is also not installed during the pip install naplib process.
See https://github.com/naplab/naplib-python/blob/main/naplib/io/load_nwb.py

Add best-practices guide on how to design an extension

Participants at the 2022 NWB User Days suggested that it would be useful to create a "Best-practices guide on how to design an extension", which would cover topics such as:

  • When to use Groups, Datasets, Attributes, Link etc.
  • Best practices for data type, quantity, assignment of neurodata_types etc.
  • Extension design principles
  • Core data modeling principles
  • How to best pick neurodata_type to build from. Also include common example use cases. E.g., example for extending LabMetaData (Here is an example for adding cell_id. NOTE: cell_id has been added in NWB so we should use a different example)

I would suggest adding a new section at the end of the extension tutorial on "Best practices for designing extensions" . Alternatively this could also be part of the PyNWB or HDMF documentation, but I think it may fit better here.

Add list of available generic HDF5 tools to the tools page

It would be useful to also list relevant generic HDF5 tools (e.g., HDFView, h5dump, h5ls etc.) that can be useful to inspect NWB files to the tools page. We may also include generic Python tools here, e.g., the Jupyter HDF5 view plugins.

Add NeuroNexus Radiens Analytics Suite to community tools

"Radiens provides a uniform interface, control, workflow, and terminology for data acquisition, early-stage analysis and visualization, and transition to study-specific analysis and data-presentation scripts."

Website, including download and purchase link: https://www.neuronexus.com/products/software/radiens/

Code appears to be closed source.

Data file format page says

Additionally, Radiens, supports many file types common in Ephys, including both proprietary (NeuroExplorer, Plexon, and open (Neurodata Without Borders, Kilosort2, etc.)

In response to my email inquiry, their support person wrote:

Thank you for reaching out to us regarding the compatibility of Radiens with NWB file format. Our platform handles files in version2.

Radiens Software (Allego, Curate, and Videre Apps) fully supports NWB files and provides comprehensive functionalities for both reading and writing.

We offer the Curate App, which allows you to conveniently convert your data to the NWB format. Additionally, our Videre app enables you to efficiently read and interpret NWB files, providing you with the necessary tools to explore and analyze the data effectively.

I have not yet tested the software because it requires a license, but I reached out to see if I can get a demo license.

FAQ: Why shouldn't I write video data to an NWB file?

In the same vein as PyNWB #1647, this question has occurred before (mostly within the team or with other dev teams such as SLEAP/DANDI) but always given as a verbal response.

Would it be possible to have a concise & precise FAQ description of why it is discouraged for users to write videos of natural behavior from lossy formats (mpg, mp4) to internal NWB Datasets?

And why we 'cannot simple integrate' the codecs directly into NWB (which as I understand is more legal than technical)?

@oruebel @bendichter

Came up in meeting with @rly today

Developer docs: Add page on "Contributing to NWB Software"

The page should contain items such as:

  • Links to good first issues and help-wanted issues pages for the different repos
  • All NWB projects and everyone participating in them are governed by our Code of Conduct guidelines. By participating, you are expected to uphold this code.
    Reporting issues
  • Link to the Contributing Guidelines.
  • Move the Contributing Guidelines as much as possible to the nwb-overview page and link to the individual pages for details if necessary.
  • Link to the core tools page for links to sources and docs

Consider adding nwbview

nwbview: Rust powered NWB viewer

Code: https://github.com/brainhack-ch/nwbview
Requires HDF5 1.12 or earlier. Cannot be built with HDF5 1.14

It looks like an HDF5 viewer with some added features

Screenshot from their README
image

In development. It took a little effort to get this to work. My setup (I don't have rust installed globally) is:

conda create --name nwbview --yes
conda activate nwbview
mamba install "hdf5<1.14" rust --yes
HDF5_DIR="/Users/rly/mambaforge/envs/nwbview/" RUSTFLAGS="-C link-args=-Wl,-rpath,$HDF5_DIR/lib" cargo install nwbview
cd /Users/rly/.cargo/bin
./nwbview

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.