Giter Club home page Giter Club logo

nwbview's Introduction

nwbview

Rust Latest version Apache unsafe forbidden

nwbview is a software to display the contents of the binary NWB file format. It is written in Rust for high-performance, memory safety and ease of deployment.

NWB format

Neurodata Without Borders (NWB) is a standard data format to represent neurophysiology data files. It enables interoperability between neurophysiology data produced by different neuroscience labs. Examples of the data stored in .NWB format range from patch clamp experiments to optical physiology experiments.

The underlying storage technology used by the NWB format is the binary HDF format. While storing the files as binary brings advantages on the read/write speed as well as the file size, it stores the data in a way that is not readable by humans. I.e. one cannot open the file in a text editor to see the contents, thus there is need for a viewer.

GUI

The screenshot below shows the nwbview GUI. The left panel shows the contents of the NWB file in a tree structure. The right panel shows the details of the selected item, which can be a plot, a table or a text.

localImage

nwbview uses the egui Rust GUI library for rendering.

Public NWB Data Sources

Below are some public NWB data sources that can be displayed with nwbview.

To install and run using cargo

Note: HDF5 needs to be installed in your system as cargo will try to locate the HDF5 root directory and/or headers.

First install the cargo package manager and then run the following command to install nwbview.

cargo install nwbview

Once you completed the installation, simply type nwbview on the console to run it.

nwbview

To build and run from the source code

The Rust library dependencies are provided in the cargo.toml file.

Note that the Rust libraries depend on the following system packages that need to be provided.

  • libgtk-3-dev
  • librust-atk-dev
  • libhdf5-serial-dev

The exact names of the packages may differ between systems.

Once all the dependencies are satisfied, go to the directory containing cargo.toml and run the following command.

cargo run --release

The release flag builds the artifacts with optimizations. Do not specify it when you need to debug.

How to contribute

All contributions are welcome and very much appreciated :)

nwbview is currently in alpha version. Do not hesitate to create a new issue with your suggestions.

We use Github's issue tracker, pull requests and the discussion interfaces for the contributions.

The pull requests require the approval from a maintainer as well as the CI checks.

nwbview's People

Contributors

adrien-berchet avatar anilbey avatar crisely09 avatar rai-pranav avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

nwbview's Issues

find a way of closing the traces window

After opening a traces windows by clicking the plot button, the user should be able to close it back. Currently they can only collapse the plot but not close it. Clicking the "X" button is either not working or it is working for a single frame and the plot gets opened back in the next frame.
plot-screen

nwbview does not launch from Terminal on mac os Ventura 13.2.1

  1. I get this error when I try to launch nwbview from terminal:

thread 'main' panicked at 'Failed to open icon path: IoError(Os { code: 2, kind: NotFound, message: "No such file or directory" })', /Users/abc/.cargo/registry/src/github.com-1ecc6299db9ec823/nwbview-0.2.3/src/main.rs:11:10 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

@anilbey, however, managed to run it when the terminal was in working directory mentioned in the error.

  1. The icon does not show in the GUI and also on the dock when opened (Currently dock icon is a black terminal).

Thanks.

pair plot view

Have a pair plot (voltage-timestamp and current-timestamp pair of the same protocol (same group name)) with syncing option if possible. Syncing meaning that the two plots can be scrolled/slided together.

Nwbview silently crashing when running from rust env in conda

I've installed nwbview in a rust environment in conda with hdf5 version 1.12 using Python version 3.9.18

But when I try to run it as below:
(rustenv) C:\Users\MsS>conda run nwbview
I get the following error:
ERROR conda.cli.main_run:execute(124): conda run nwbview failed. (See above for error)

I am not able to get more information on this error so I do not know why it failed. Are you able to help?

packages in environment at C:\Users\MsS\anaconda3\envs\rustenv:

Name Version Build Channel

ca-certificates 2024.2.2 h56e8100_0 conda-forge
hdf5 1.12.2 nompi_h57737ce_101 conda-forge
krb5 1.21.2 heb0366b_0 conda-forge
libaec 1.1.3 h63175ca_0 conda-forge
libcurl 8.7.1 hd5e4a3a_0 conda-forge
libssh2 1.11.0 h7dfc565_0 conda-forge
libzlib 1.2.13 hcfcfb64_5 conda-forge
openssl 3.2.1 hcfcfb64_1 conda-forge
rust 1.77.1 hf8d6059_0 conda-forge
rust-std-x86_64-pc-windows-msvc 1.77.1 h17fc481_0 conda-forge
ucrt 10.0.22621.0 h57928b3_0 conda-forge
vc 14.3 hcf57466_18 conda-forge
vc14_runtime 14.38.33130 h82b7239_18 conda-forge
vs2015_runtime 14.38.33130 hcb4865c_18 conda-forge

Deduplicate window IDs

When I move a plot window of a group that is referenced by another one, there is a weird message appearing in red at the bottom left of the window:

Double use of widget ID 58D6

(or other ID, depending on the window)
I don't know why yet, but it seems it still works properly even with this warning.

It happens only when the 2 groups are expanded in the tree.

See a possible answer in #27 (comment)_

Add support for BlueBrain's NWBs

Issue

BlueBrain's NWBs contain 2D datasets to represent voltage-time or current-time.

Todo

  • the tabular view should support 2D datasets as well
  • the plot view should support reading the voltage and data from the same dataset (in Allen AI's NWBs they come from 2 different datasets, each are 1D, in BlueBrain they're from the same dataset that is 2D)

Testing

This sample NWB file from the Hippocampus Portal can be used in the tests.
https://github.com/BlueBrain/BluePyEfe/tree/master/tests/exp_data/hippocampus-portal

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.