diff --git a/assets/jsconfig.json b/assets/jsconfig.json index d6300e5..6eb62ef 100644 --- a/assets/jsconfig.json +++ b/assets/jsconfig.json @@ -2,7 +2,10 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "*": null + "*": [ + "../../../Library/Caches/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/*", + "../../../Library/Caches/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.2+incompatible/js/*" + ] } } } \ No newline at end of file diff --git a/config/_default/menus.yaml b/config/_default/menus.yaml index 6e954fc..30fa44a 100644 --- a/config/_default/menus.yaml +++ b/config/_default/menus.yaml @@ -29,12 +29,16 @@ main: weight: 2 url: "tools/" parent: "Software & Tools" - - name: "Acquisition Tools" + - name: "Core Tools" weight: 3 + url: "tools/core/" + parent: "Software & Tools" + - name: "Acquisition Tools" + weight: 4 url: "tools/acquisition/" parent: "Software & Tools" - name: "Analysis Tools" - weight: 4 + weight: 5 url: "tools/analysis/" parent: "Software & Tools" diff --git a/content/tools/_index.md b/content/tools/_index.md index 507702f..fe8bd4c 100644 --- a/content/tools/_index.md +++ b/content/tools/_index.md @@ -7,6 +7,7 @@ This page is a collection of tools we are cataloging as a convenience reference ## Tool Categories +- [Core NWB Tools]({{< ref "tools/core" >}}) - Key software packages of the core NWB software stack - [Acquisition and Control Tools]({{< ref "tools/acquisition" >}}) - Tools for data acquisition and experimental control - [Analysis and Visualization Tools]({{< ref "tools/analysis" >}}) - Tools for data analysis, visualization, and exploration diff --git a/content/tools/core/_index.md b/content/tools/core/_index.md new file mode 100644 index 0000000..3759f67 --- /dev/null +++ b/content/tools/core/_index.md @@ -0,0 +1,26 @@ +--- +title: "Core NWB Tools" +description: "Glossary of Core NWB Tools" +--- + +The glossary shown here provides a quick overview of the key software packages of the core NWB software stack. For a more general discussion of the overall organization of the core NWB software stack see the [NWB Software Ecosystem](https://www.nwb.org/nwb-software) page on the main NWB website. + +## Read/Write NWB File APIs + +{{< tool-grid category="read-write-api" >}} + +## Converting Data to NWB + +{{< tool-grid category="data-conversion" >}} + +## Validating NWB Files + +{{< tool-grid category="validation" >}} + +## Extending NWB + +{{< tool-grid category="extension" >}} + +## Core Development + +{{< tool-grid category="core-development" >}} diff --git a/content/tools/core/hdmf-common-schema.md b/content/tools/core/hdmf-common-schema.md new file mode 100644 index 0000000..fb38f22 --- /dev/null +++ b/content/tools/core/hdmf-common-schema.md @@ -0,0 +1,45 @@ +--- +title: "HDMF Common Schema" +description: "Schema of common, general data structures used throughout the NWB Standard Schema" +category: "extension" +image: "/images/hdmf_common_schema_logo_framed.png" +source_url: "https://github.com/hdmf-dev/hdmf-common-schema" +docs_url: "https://hdmf-common-schema.readthedocs.io/en/stable/" +weight: 120 +--- + +## Description + +The HDMF Common Schema defines the schema of common, general data structures, which are used throughout the NWB Standard Schema but which are not specific to neurophysiology. + +Example types defined in the HDMF common schema include all types related to `DynamicTable` for defining data tables, along with other common data structures that can be reused across different domains. + +## Installation + +The HDMF Common Schema is a documentation resource, not a software package to install. The documentation can be accessed at: + +``` +https://hdmf-common-schema.readthedocs.io/ +``` + +## Usage + +The HDMF Common Schema is primarily used by the NWB schema and by extension developers. For example, when creating an extension that needs to store tabular data, you'd typically extend or use the `DynamicTable` type from HDMF Common Schema: + +```yaml +groups: +- neurodata_type_def: MyCustomTable + neurodata_type_inc: DynamicTable + doc: A custom table for storing specific experiment data. + datasets: + - name: custom_column + neurodata_type_inc: VectorData + doc: Custom column for my specific data. + dtype: text +``` + +## Additional Information + +The HDMF Common Schema is particularly important because it defines general-purpose data structures that enable efficient and flexible representation of complex data. For example, the `DynamicTable` type provides a way to represent tabular data with columns of different data types and potentially varying numbers of rows, making it suitable for storing experimental metadata, subject information, and other tabular data. + +Understanding this schema is helpful for developers creating extensions, especially when they need to represent structured data like tables, which are common in scientific datasets. diff --git a/content/tools/core/hdmf-docutils.md b/content/tools/core/hdmf-docutils.md new file mode 100644 index 0000000..4b11b80 --- /dev/null +++ b/content/tools/core/hdmf-docutils.md @@ -0,0 +1,41 @@ +--- +title: "HDMF Documentation Utilities" +description: "Utility tools for creating documentation for extension schema" +category: "extension" +image: "/images/documenting_ndx_logo_framed.png" +source_url: "https://github.com/hdmf-dev/hdmf-docutils" +docs_url: "" +weight: 90 +--- + +## Description + +The HDMF Documentation Utilities (hdmf-docutils) provide utility tools for creating documentation for extension schema defined using the NWB Schema Language. These tools help developers create clear, comprehensive documentation for their extensions. + +The NDX Template automatically sets up the documentation for extensions via the hdmf-docutils, making them part of most NDX code repositories without requiring direct interaction with the tools. + +## Installation + +```bash +pip install hdmf-docutils +``` + +## Usage + +The HDMF Documentation Utilities are typically used behind the scenes by the NDX Template, but can also be used directly for more customized documentation generation: + +```python +from hdmf_docutils.doctools import rst_to_html, set_figure_dirpath + +# Set the directory path for figures +set_figure_dirpath('path/to/figures') + +# Convert RST documentation to HTML +html_content = rst_to_html('my_documentation.rst') +``` + +## Additional Information + +HDMF Documentation Utilities help ensure that extension documentation follows consistent formatting and includes all necessary information. This consistency improves the usability of extensions and helps users understand how to properly use them in their workflows. + +The tools can generate documentation from YAML schema files, create diagrams of data structures, and produce HTML and PDF documentation outputs. diff --git a/content/tools/core/hdmf-specification-language.md b/content/tools/core/hdmf-specification-language.md new file mode 100644 index 0000000..6ab58fd --- /dev/null +++ b/content/tools/core/hdmf-specification-language.md @@ -0,0 +1,48 @@ +--- +title: "HDMF Specification Language" +description: "Formal structures for describing the organization of complex data" +category: "extension" +image: "/images/specification_language_logo_framed.png" +source_url: "https://github.com/hdmf-dev/hdmf-schema-language" +docs_url: "https://hdmf-schema-language.readthedocs.io/en/latest/" +weight: 100 +--- + +## Description + +The HDMF Specification Language defines formal structures for describing the organization of complex data using basic concepts, e.g., Groups, Datasets, Attributes, and Links. It provides a standardized way to define data structures and relationships. + +The HDMF specification language is defined by the Hierarchical Data Modeling Framework (HDMF). The NWB Specification Language is a derivative of the HDMF Specification Language with minor modifications for NWB (e.g., to use the term neurodata_type). + +## Installation + +The HDMF Specification Language is a documentation resource, not a software package to install. The documentation can be accessed at: + +``` +https://hdmf-schema-language.readthedocs.io/ +``` + +## Usage + +When creating NWB extensions, you'll use the NWB Specification Language (which builds on HDMF) to define new data types. Here's an example of a simple extension definition in YAML format: + +```yaml +groups: +- neurodata_type_def: ElectricalSeries + neurodata_type_inc: TimeSeries + doc: A time series of electrical measurements. + datasets: + - name: data + dtype: numeric + shape: + - null + - null + doc: The recorded voltage data. + - name: electrodes + neurodata_type_inc: DynamicTableRegion + doc: The electrodes that this electrical series was recorded from. +``` + +## Additional Information + +Understanding the HDMF Specification Language is essential for developers who want to create extensions to the NWB format. It provides the foundation for defining structured, self-describing data models that can be used across different programming languages and storage backends. diff --git a/content/tools/core/hdmf-zarr.md b/content/tools/core/hdmf-zarr.md new file mode 100644 index 0000000..5514926 --- /dev/null +++ b/content/tools/core/hdmf-zarr.md @@ -0,0 +1,56 @@ +--- +title: "HDMF-Zarr" +description: "Zarr backend for HDMF and PyNWB" +category: "core-development" +image: "/images/hdmf_zarr_logo_framed.png" +source_url: "https://github.com/hdmf-dev/hdmf-zarr" +docs_url: "https://hdmf-zarr.readthedocs.io/en/stable/" +weight: 140 +--- + +## Description + +The HDMF Zarr (HDMF-Z) library implements a Zarr backend for HDMF. Zarr is a format for the storage of chunked, compressed, N-dimensional arrays. HDMF-Z also provides convenience classes for integrating Zarr with the PyNWB Python API for NWB to support writing of NWB files to Zarr. + +Using Zarr as a storage backend for NWB can provide benefits like: + +- Cloud-friendly data access +- Parallel read/write operations +- Efficient access to data chunks +- Flexible compression options + +## Installation + +```bash +pip install hdmf-zarr +``` + +## Usage + +```python +from pynwb import NWBFile, NWBHDF5IO +from datetime import datetime +from dateutil.tz import tzlocal +from hdmf_zarr import NWBZarrIO + +# Create a new NWB file +nwbfile = NWBFile( + session_description='my first recording', + identifier='EXAMPLE_ID', + session_start_time=datetime.now(tzlocal()) +) + +# Write the file to Zarr format +with NWBZarrIO('example.zarr', mode='w') as io: + io.write(nwbfile) + +# Read the file from Zarr format +with NWBZarrIO('example.zarr', mode='r') as io: + nwbfile = io.read() +``` + +## Additional Information + +HDMF-Zarr is particularly useful for working with very large datasets, especially in cloud environments or when parallel data access is needed. It provides an alternative storage format to the traditional HDF5 backend, offering different performance characteristics that may be beneficial for certain use cases. + +The library is designed to be a drop-in replacement for the HDF5 backend, making it easy to integrate into existing workflows that use PyNWB. diff --git a/content/tools/core/hdmf.md b/content/tools/core/hdmf.md new file mode 100644 index 0000000..7945ce8 --- /dev/null +++ b/content/tools/core/hdmf.md @@ -0,0 +1,72 @@ +--- +title: "HDMF" +description: "Hierarchical Data Modeling Framework for working with hierarchical data" +category: "core-development" +image: "/images/hdmf_logo_framed.png" +source_url: "https://github.com/hdmf-dev/hdmf" +docs_url: "https://hdmf.readthedocs.io/en/stable/" +weight: 130 +--- + +## Description + +The Hierarchical Data Modeling Framework (HDMF) is a Python package for working with hierarchical data. It provides APIs for specifying data models, reading and writing data to different storage backends, and representing data with Python objects. + +HDMF builds the foundation for the PyNWB Python API for NWB. It offers a flexible, extensible approach to data modeling that allows for the creation of self-describing, structured data formats like NWB. + +## Installation + +```bash +pip install hdmf +``` + +## Usage + +HDMF provides low-level functionality for working with hierarchical data, typically used by developers creating APIs like PyNWB: + +```python +from hdmf.spec import GroupSpec, DatasetSpec, NamespaceBuilder +from hdmf.common import DynamicTable + +# Define a new data type specification +spec = GroupSpec( + doc='A custom data type', + data_type_def='MyType', + datasets=[ + DatasetSpec( + doc='An example dataset', + name='data', + dtype='float' + ) + ] +) + +# Create a namespace for your specification +namespace_builder = NamespaceBuilder( + doc='My extension', + name='my_extension', + full_name='My Custom Extension', + version='0.1.0' +) +namespace_builder.add_spec('my_extension.yaml', spec) + +# Working with DynamicTable +table = DynamicTable( + name='example_table', + description='An example table' +) +table.add_column('column1', 'A string column', dtype='text') +table.add_row(column1='example data') +``` + +## Additional Information + +HDMF is primarily of interest to developers who need to: + +1. Create or extend data APIs like PyNWB +2. Implement new storage backends +3. Support new serialization formats +4. Develop data conversion tools +5. Create validation tools + +Understanding HDMF is helpful for advanced NWB users who want to contribute to the core NWB ecosystem or develop sophisticated extensions and tools. diff --git a/content/tools/core/matnwb.md b/content/tools/core/matnwb.md new file mode 100644 index 0000000..088fcc5 --- /dev/null +++ b/content/tools/core/matnwb.md @@ -0,0 +1,45 @@ +--- +title: "MatNWB" +description: "A MATLAB library for reading and writing NWB files" +category: "read-write-api" +image: "/images/matnwb_logo_framed.png" +source_url: "https://github.com/NeurodataWithoutBorders/matnwb/" +docs_url: "https://matnwb.readthedocs.io/" +weight: 20 +--- + +## Description + +MatNWB is a MATLAB library for reading and writing NWB files. It provides full support for all components of the NWB standard, including support for extensions. The API is interoperable with PyNWB, i.e., files created with MatNWB can be read in PyNWB and vice versa. + +MatNWB supports advanced read/write for efficient interaction with very large data files (i.e., data too large for main memory), via lazy data loading, iterative data write, and data compression among others. + +## Installation + +```bash +# Clone the repository +git clone https://github.com/NeurodataWithoutBorders/matnwb.git + +# Add to MATLAB path +addpath(genpath('/path/to/matnwb')); +``` + +## Usage + +```matlab +% Create a new NWB file +nwb = NwbFile( ... + 'session_description', 'a test NWB File', ... + 'identifier', 'mouse001', ... + 'session_start_time', datetime('now')); + +% Write the file +nwbExport(nwb, 'test_file.nwb'); + +% Read the file +nwb = nwbRead('test_file.nwb'); +``` + +## Additional Information + +MatNWB allows MATLAB users to work with NWB data in their preferred environment, using familiar MATLAB data structures and methods. diff --git a/content/tools/core/ndx-catalog.md b/content/tools/core/ndx-catalog.md new file mode 100644 index 0000000..b9df3c3 --- /dev/null +++ b/content/tools/core/ndx-catalog.md @@ -0,0 +1,39 @@ +--- +title: "NDX Catalog" +description: "A community-led catalog of Neurodata Extensions (NDX) to the NWB data standard" +category: "extension" +image: "/images/ndxcatalog_logo_framed.png" +source_url: "https://github.com/nwb-extensions/" +docs_url: "https://nwb-extensions.github.io/" +weight: 60 +--- + +## Description + +The Neurodata Extensions Catalog (NDX Catalog) is a community-led catalog of Neurodata Extensions (NDX) to the NWB data standard. The NDX Catalog provides a central portal to search, publish, and review NDX extensions. + +Neurodata Extensions (NDX) are used to extend the NWB data standard, for example, to integrate new data types with NWB or define standards for lab- or project-specific metadata. + +## Installation + +The NDX Catalog is a web-based resource that can be accessed at: + +``` +https://nwb-extensions.github.io/ +``` + +## Usage + +The NDX Catalog allows users to: + +- Browse available extensions by category +- Search for extensions based on keywords +- Access extension documentation +- Find installation instructions for specific extensions +- Submit new extensions for inclusion in the catalog + +To use a specific extension from the catalog, follow the installation instructions provided on the extension's page. + +## Additional Information + +The NDX Catalog is an important resource for the NWB community, facilitating the discovery and adoption of extensions that enhance the capabilities of the NWB standard for specific use cases and data types. diff --git a/content/tools/core/ndx-template.md b/content/tools/core/ndx-template.md new file mode 100644 index 0000000..7ff46b6 --- /dev/null +++ b/content/tools/core/ndx-template.md @@ -0,0 +1,60 @@ +--- +title: "NDX Template" +description: "A template for creating Neurodata Extensions (NDX) for the NWB data standard" +category: "extension" +image: "/images/ndxtemplate_logo_framed.png" +source_url: "https://github.com/nwb-extensions/ndx-template" +docs_url: "" +weight: 70 +--- + +## Description + +The NDX Template provides a template for creating Neurodata Extensions (NDX) for the NWB data standard. When creating a new extension, the NDX-template will create a detailed NEXTSTEPS.md file describing how to create an extension and how to submit it to the NDX catalog. + +The template helps developers by providing a standardized structure for NWB extensions, including: + +- Directory structure for extension code +- Template files for extension specification +- Documentation templates +- Setup and configuration files +- Example code + +## Installation + +```bash +# Install the cookiecutter package +pip install cookiecutter + +# Create a new extension using the template +cookiecutter https://github.com/nwb-extensions/ndx-template +``` + +## Usage + +When you run the cookiecutter command, you'll be prompted to enter details about your extension: + +``` +namespace [ndx]: mylab +extension_name [template]: electrode_array +description [Template NWB extension]: Extension for custom electrode array data +author [My Name]: Jane Scientist +email [my.name@example.com]: jane.scientist@university.edu +github_username [myname]: j-scientist +copyright [2023, My Name]: 2023, Jane Scientist and Lab +version [0.1.0]: +``` + +This will create a new directory with the structure needed for your extension. + +## Additional Information + +After creating your extension using the template, follow the instructions in the generated NEXTSTEPS.md file to: + +1. Set up your development environment +2. Define your extension +3. Build and test your extension +4. Create documentation +5. Publish your extension to the NDX Catalog + +The NDX Template is essential for maintaining consistency across the NWB extension ecosystem and making it easier for researchers to develop and share extensions. diff --git a/content/tools/core/neuroconv.md b/content/tools/core/neuroconv.md new file mode 100644 index 0000000..7961861 --- /dev/null +++ b/content/tools/core/neuroconv.md @@ -0,0 +1,57 @@ +--- +title: "NeuroConv" +description: "A Python library for automatic conversion from proprietary data formats to NWB" +category: "data-conversion" +image: "/images/nwbconversiontools_logo_framed.png" +source_url: "https://github.com/catalystneuro/neuroconv" +docs_url: "https://neuroconv.readthedocs.io/en/main/index.html" +weight: 30 +--- + +## Description + +NeuroConv is a Python library for automatic conversion from proprietary data formats to NWB. It provides a standardized way to convert data from various acquisition systems and file formats to NWB, making it easier to adopt the NWB standard. + +NeuroConv supports a wide range of neurophysiology data types and acquisition systems, including extracellular electrophysiology, calcium imaging, intracellular electrophysiology, and behavior data. + +## Installation + +```bash +pip install neuroconv +``` + +## Usage + +```python +from neuroconv.converters import SpikeGLXRecordingConverter +from dateutil import parser +import numpy as np + +# Point to data +file_path = "path/to/spikeglx/file.bin" + +# Initialize the converter +converter = SpikeGLXRecordingConverter(file_path=file_path) + +# Extract metadata from the source files +metadata = converter.get_metadata() + +# Customize metadata +metadata["NWBFile"].update( + experimenter=["experimenter1", "experimenter2"], + experiment_description="Simple SpikeGLX recording", + session_description="A test NWB file from SpikeGLX data.", + identifier="SpikeGLX_example", + session_start_time=parser.parse("2020-10-09T14:35:00+00:00"), +) + +# Run the conversion +converter.run_conversion( + nwbfile_path="output.nwb", + metadata=metadata +) +``` + +## Additional Information + +NeuroConv is developed by CatalystNeuro and the NWB community to streamline the process of standardizing neurophysiology data to NWB format. It is designed to be modular and extensible, allowing for easy integration of new data formats. diff --git a/content/tools/core/nwb-guide.md b/content/tools/core/nwb-guide.md new file mode 100644 index 0000000..bfb115c --- /dev/null +++ b/content/tools/core/nwb-guide.md @@ -0,0 +1,44 @@ +--- +title: "NWB GUIDE" +description: "A desktop app that provides a no-code Graphical User Interface for Data Entry for converting neurophysiology data to NWB" +category: "data-conversion" +image: "/images/guide_logo_framed.png" +source_url: "https://github.com/NeurodataWithoutBorders/nwb-guide" +docs_url: "https://nwb-guide.readthedocs.io/en/stable/" +weight: 40 +--- + +## Description + +NWB GUIDE (Graphical User Interface for Data Entry) is a desktop application that provides a no-code interface for converting neurophysiology data to NWB using NeuroConv. It makes the process of data conversion accessible to researchers who may not have programming experience. + +NWB GUIDE allows users to: +- Select data files for conversion +- Configure metadata for NWB files +- Convert data to NWB format through an intuitive user interface +- Validate the resulting NWB files + +**Note:** NWB GUIDE is in pre-release status and under active development. + +## Installation + +```bash +# Installation instructions will be provided once the tool is released +# Currently, users can access the development version by cloning the repository +git clone https://github.com/NeurodataWithoutBorders/nwb-guide.git +``` + +## Usage + +The NWB GUIDE provides a step-by-step workflow for converting data to NWB: + +1. Select the source data format +2. Select data files +3. Enter metadata information +4. Configure conversion settings +5. Run the conversion +6. Validate the output NWB file + +## Additional Information + +The NWB GUIDE leverages NeuroConv behind the scenes, making it easier for researchers to adopt the NWB standard without writing code. It provides a user-friendly alternative for data conversion while maintaining the robustness and flexibility of the underlying conversion tools. diff --git a/content/tools/core/nwb-schema.md b/content/tools/core/nwb-schema.md new file mode 100644 index 0000000..e913b14 --- /dev/null +++ b/content/tools/core/nwb-schema.md @@ -0,0 +1,54 @@ +--- +title: "NWB Schema" +description: "The NWB data standard format specification" +category: "extension" +image: "/images/nwbschema_logo_framed.png" +source_url: "https://github.com/NeurodataWithoutBorders/nwb-schema" +docs_url: "https://nwb-schema.readthedocs.io/en/latest/" +weight: 110 +--- + +## Description + +The NWB data standard is governed by the NWB Format Specification (a.k.a., the NWB Schema) described using the NWB Specification Language. This schema defines all the neurodata_types available in NWB. + +When creating new extensions, developers typically build on and reuse existing neurodata_types already available in NWB. The NWB Format Specification provides a reference definition for all types available in NWB. The NWB schema itself builds on the HDMF Common Schema. + +## Installation + +The NWB Schema is a documentation resource, not a software package to install. The documentation can be accessed at: + +``` +https://nwb-schema.readthedocs.io/ +``` + +## Usage + +The NWB Schema is primarily used as a reference when creating extensions or when implementing software that needs to understand the structure of NWB files. Below is an example of how the NWB Schema defines a neurodata_type: + +```yaml +groups: +- neurodata_type_def: NWBFile + default_name: root + doc: An NWB file storing cellular-based neurophysiology data from a single + session. + attributes: + - name: nwb_version + dtype: text + value: "2.2.5" + doc: File version string. Use semantic versioning, e.g. 1.2.3. + groups: + - name: acquisition + doc: Data acquired from the subject. + groups: + - neurodata_type_inc: NWBDataInterface + doc: The base data interface for an acquired data type. + quantity: '*' + # ... more definitions ... +``` + +## Additional Information + +The NWB Schema is a living document that evolves through community contributions and feedback. Extensions build on this foundation, allowing researchers to add specialized data types while maintaining compatibility with the core NWB standard. + +Understanding the NWB Schema is essential for anyone developing tools for NWB data, creating extensions, or seeking to understand the detailed structure of NWB files. diff --git a/content/tools/core/nwbinspector.md b/content/tools/core/nwbinspector.md new file mode 100644 index 0000000..e6b52be --- /dev/null +++ b/content/tools/core/nwbinspector.md @@ -0,0 +1,54 @@ +--- +title: "NWB Inspector" +description: "A python library and command-line tool for inspecting NWB files for adherence to NWB best practices" +category: "validation" +image: "/images/nwbinspector_logo_framed.png" +source_url: "https://github.com/NeurodataWithoutBorders/nwbinspector" +docs_url: "https://nwbinspector.readthedocs.io/" +weight: 50 +--- + +## Description + +NWB Inspector is a Python library and command-line tool for inspecting NWB files for adherence to NWB best practices. By default, the Inspector also runs the PyNWB validator to check for compliance with the NWB schema. + +The Inspector can be easily extended to integrate custom data checks and to configure checks based on specific needs or use cases. + +## Installation + +```bash +pip install nwbinspector +``` + +## Usage + +### Command Line + +```bash +# Basic usage +nwbinspector path/to/file.nwb + +# Generate a report +nwbinspector path/to/file.nwb --report-file-path path/to/report.txt +``` + +### Python API + +```python +from nwbinspector import inspect_nwbfile +from pynwb import NWBHDF5IO + +# Load an NWB file +with NWBHDF5IO('path/to/file.nwb', 'r') as io: + nwbfile = io.read() + +# Run the inspection and print the issues +for issue in inspect_nwbfile(nwbfile): + print(f"{issue.severity}: {issue.message}") +``` + +## Additional Information + +NWB Inspector is particularly useful for ensuring that your NWB files not only comply with the schema but also follow best practices that make them more useful and reusable. It helps improve data quality and increases the utility of shared data. + +In practice, most users should use the NWB Inspector to validate NWB files, as it helps to check for compliance with both the schema and best practices and provides greater flexibility. Direct use of PyNWB's validator is primarily useful for use cases where schema compliance and performance are of primary concern. diff --git a/content/tools/core/pynwb.md b/content/tools/core/pynwb.md new file mode 100644 index 0000000..286e384 --- /dev/null +++ b/content/tools/core/pynwb.md @@ -0,0 +1,48 @@ +--- +title: "PyNWB" +description: "The Python reference API for NWB" +category: "read-write-api" +image: "/images/pynwb_logo_framed.png" +source_url: "https://github.com/NeurodataWithoutBorders/pynwb/" +docs_url: "https://pynwb.readthedocs.io/en/stable/" +weight: 10 +--- + +## Description + +PyNWB is the Python reference API for NWB. It provides full support for reading and writing all components of the NWB standard, including support for extensions. The API is interoperable with MatNWB, i.e., files created with PyNWB can be read in MatNWB and vice versa. + +PyNWB supports advanced read/write for efficient interaction with very large data files (i.e., data too large for main memory), via lazy data loading, iterative data write, and data compression among others. + +## Installation + +```bash +pip install pynwb +``` + +## Usage + +```python +from pynwb import NWBFile, NWBHDF5IO +from datetime import datetime +from dateutil.tz import tzlocal + +# Create a new NWB file +nwbfile = NWBFile( + session_description='my first recording', + identifier='EXAMPLE_ID', + session_start_time=datetime.now(tzlocal()) +) + +# Write the file +with NWBHDF5IO('example.nwb', 'w') as io: + io.write(nwbfile) + +# Read the file +with NWBHDF5IO('example.nwb', 'r') as io: + nwbfile = io.read() +``` + +## Additional Information + +PyNWB also includes classes and command line tools for validating compliance of files with the core NWB schema and the schema of NWB Neurodata Extensions (NDX). diff --git a/content/tools/core/staged-extensions.md b/content/tools/core/staged-extensions.md new file mode 100644 index 0000000..a79293e --- /dev/null +++ b/content/tools/core/staged-extensions.md @@ -0,0 +1,45 @@ +--- +title: "Staged Extensions" +description: "GitHub repository for registering new extensions for publication in the NDX Catalog" +category: "extension" +image: "/images/publishing_ndx_logo_framed.png" +source_url: "https://github.com/nwb-extensions/staged-extensions" +docs_url: "" +weight: 80 +--- + +## Description + +The staged-extensions GitHub repository is used to register new extensions for publication in the Neurodata Extensions Catalog (NDX Catalog). It serves as the mechanism for reviewing and accepting new extensions into the official catalog. + +The staged-extensions repository provides a standardized process for: +- Submitting extensions for review +- Conducting community peer review of extensions +- Testing extensions for compliance with NDX standards +- Publishing approved extensions to the NDX Catalog + +## Usage + +To submit an extension for inclusion in the NDX Catalog: + +1. Fork the staged-extensions repository +2. Create a YAML file describing your extension in the `staged-extensions` folder: + +```yaml +name: ndx-my-extension +version: 0.1.0 +src: https://github.com/username/ndx-my-extension +pip: ndx-my-extension +license: BSD-3 +maintainer: Your Name +maintainer_email: your.email@example.com +description: Brief description of your extension +``` + +3. Submit a pull request to the staged-extensions repository +4. Address any feedback from the review process +5. Once approved, your extension will be added to the NDX Catalog + +## Additional Information + +The staged-extensions repository is a key part of the NWB extension ecosystem, ensuring that all extensions in the NDX Catalog meet community standards for quality, documentation, and usability. This review process helps maintain the integrity and usefulness of the extension ecosystem. diff --git a/static/images/documenting_ndx_logo_framed.png b/static/images/documenting_ndx_logo_framed.png new file mode 100644 index 0000000..df9ba21 Binary files /dev/null and b/static/images/documenting_ndx_logo_framed.png differ diff --git a/static/images/guide_logo_framed.png b/static/images/guide_logo_framed.png new file mode 100644 index 0000000..52aa2db Binary files /dev/null and b/static/images/guide_logo_framed.png differ diff --git a/static/images/hdmf_common_schema_logo_framed.png b/static/images/hdmf_common_schema_logo_framed.png new file mode 100644 index 0000000..f6109ef Binary files /dev/null and b/static/images/hdmf_common_schema_logo_framed.png differ diff --git a/static/images/hdmf_logo_framed.png b/static/images/hdmf_logo_framed.png new file mode 100644 index 0000000..f970598 Binary files /dev/null and b/static/images/hdmf_logo_framed.png differ diff --git a/static/images/hdmf_zarr_logo_framed.png b/static/images/hdmf_zarr_logo_framed.png new file mode 100644 index 0000000..0e4c251 Binary files /dev/null and b/static/images/hdmf_zarr_logo_framed.png differ diff --git a/static/images/matnwb_logo_framed.png b/static/images/matnwb_logo_framed.png new file mode 100644 index 0000000..ed0b007 Binary files /dev/null and b/static/images/matnwb_logo_framed.png differ diff --git a/static/images/ndxcatalog_logo_framed.png b/static/images/ndxcatalog_logo_framed.png new file mode 100644 index 0000000..56d443d Binary files /dev/null and b/static/images/ndxcatalog_logo_framed.png differ diff --git a/static/images/ndxtemplate_logo_framed.png b/static/images/ndxtemplate_logo_framed.png new file mode 100644 index 0000000..1547e32 Binary files /dev/null and b/static/images/ndxtemplate_logo_framed.png differ diff --git a/static/images/nwbconversiontools_logo_framed.png b/static/images/nwbconversiontools_logo_framed.png new file mode 100644 index 0000000..f03566f Binary files /dev/null and b/static/images/nwbconversiontools_logo_framed.png differ diff --git a/static/images/nwbinspector_logo_framed.png b/static/images/nwbinspector_logo_framed.png new file mode 100644 index 0000000..f870f4d Binary files /dev/null and b/static/images/nwbinspector_logo_framed.png differ diff --git a/static/images/nwbschema_logo_framed.png b/static/images/nwbschema_logo_framed.png new file mode 100644 index 0000000..6ad823e Binary files /dev/null and b/static/images/nwbschema_logo_framed.png differ diff --git a/static/images/publishing_ndx_logo_framed.png b/static/images/publishing_ndx_logo_framed.png new file mode 100644 index 0000000..0e228da Binary files /dev/null and b/static/images/publishing_ndx_logo_framed.png differ diff --git a/static/images/pynwb_logo_framed.png b/static/images/pynwb_logo_framed.png new file mode 100644 index 0000000..a7463f8 Binary files /dev/null and b/static/images/pynwb_logo_framed.png differ diff --git a/static/images/specification_language_logo_framed.png b/static/images/specification_language_logo_framed.png new file mode 100644 index 0000000..3ca3674 Binary files /dev/null and b/static/images/specification_language_logo_framed.png differ