From 3e937a681d9be42e6c7cd841fa2f2dd904efcf5b Mon Sep 17 00:00:00 2001 From: Cody Baker <51133164+CodyCBakerPhD@users.noreply.github.com> Date: Fri, 20 Jan 2023 12:18:09 -0500 Subject: [PATCH] Add COSYNE 2023 README (#203) Co-authored-by: Ryan Ly --- Cosyne_2023/README.md | 71 +++++++++++++++++++++++++++++++++++++ Cosyne_2023/dandi-logo.png | Bin 0 -> 13013 bytes README.md | 2 ++ 3 files changed, 73 insertions(+) create mode 100644 Cosyne_2023/README.md create mode 100644 Cosyne_2023/dandi-logo.png diff --git a/Cosyne_2023/README.md b/Cosyne_2023/README.md new file mode 100644 index 000000000..f46ca233f --- /dev/null +++ b/Cosyne_2023/README.md @@ -0,0 +1,71 @@ +

+ + +

+ +# Welcome to the DANDI+NWB Tutorial at COSYNE 2023! + +The [Neurodata Without Borders (NWB)](https://www.nwb.org/) team is holding a tutorial on the [DANDI Archive](https://www.dandiarchive.org/) and NWB data standard and on using [PyNWB](https://pynwb.readthedocs.io/en/stable/) and [MatNWB](https://neurodatawithoutborders.github.io/matnwb) at the COSYNE 2023 tutorial session. + +The DANDI Archive now has 100+ publicly available neurophysiology datasets stored using the NWB data standard. + +The NWB project is an effort to standardize the description and storage of neurophysiology data and metadata. NWB enables data sharing and reuse and reduces the energy-barrier to applying data analytics both within and across labs. NWB is more than just a file format but it defines an [ecosystem](https://nwb-overview.readthedocs.io/en/latest/tools/tools_home.html) of tools, methods, and standards for storing, sharing, and analyzing complex neurophysiology data. + +At this tutorial, we’ll teach you how to: + +- find relevant data on the DANDI Archive and use the DANDI compute resources + +- stream NWB data from DANDI and read an NWB file in Python and MATLAB + +- process NWB data using popular tools such as SpikeInterface and suite2p + +- analyze NWB data using tools such as Pynapple, SSM, or your own scripts + +Bring your laptop to work along with the demonstration. To get familiar with NWB and DANDI prior to attending, please refer to this [documentation](https://nwb-overview.readthedocs.io/en/latest/index.html). + + + +## Registration + +There is NO additional fee to attend. When registering for the main meeting, select the Dandi Archive for Neurophysiology Data and the Neurodata Without Borders Data Standard Tutorial. + + + +## Dates and Location + +* **Date/Time:** March 9, 2023, 8-10am +* **Location:** Av. Viger, Convention Floor, Fairmont The Queen Elizabeth + + + +## Tutorial Program (tentative) + +8:00 - 8:30: Introduction to the NWB data standard and DANDI Archive + +8:30 - 8:55: How to find relevant data on the DANDI archive and use the DANDI Hub + +8:55 - 9:00: Break + +9:00 - 9:20: How to stream NWB data from DANDI and how to read an NWB file in Python and MATLAB +- using PyNWB and fsspec +- how to find data of interest within an NWB file + +9:20 - 9:55: How to analyze NWB data using popular data processing and visualization tools +- using [SpikeInterface](https://github.com/SpikeInterface/spikeinterface#spikeinterface-a-unified-framework-for-spike-sorting) to sort raw ecephys data streamed from DANDI & write the output back to NWB +- using [CaImAn](https://github.com/flatironinstitute/CaImAn#caiman), [suite2p](https://www.suite2p.org/), and [EXTRACT](https://github.com/schnitzer-lab/EXTRACT-public) to segment raw ophys data streamed from DANDI & write the output back to NWB +- storing and accessing [DeepLabCut](http://www.mackenziemathislab.org/deeplabcut) and [SLEAP](https://sleap.ai/) pose estimation data in NWB +- using [Pynapple](https://github.com/PeyracheLab/pynapple) and other analysis tools on NWB data + + + +## Organizing Committee + +* Ryan Ly, LBNL +* Cody Baker, CatalystNeuro +* Stephanie Albin, Kavli Foundation + + + +### Additional Organizational Support + +- The Kavli Foundation diff --git a/Cosyne_2023/dandi-logo.png b/Cosyne_2023/dandi-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6a3d47a2c377b3d4adff78670a10a4c79b163ffd GIT binary patch literal 13013 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 X%<}1F3Q7