Showing revision 9.1
  • Brain Mesh Library
  • Rendering JNIfTI in WebGL
  • Brain Parcellation
  • NeuroJSON Platform

NeuroJSON logo NeuroJSON

Scalable neuroimaging data exchange platform

NeuroJSON aims to develop a JSON-based neuroimaging data exchange format that is readable, searchable, shareable, can be readily validated and served in the web and cloud. This project is funded by the NIH U24-NS124027 grant.

2021.09.15 Job Opening: Full-time scientific programmer

2022.01.14 BlenderPhotonics built upon JMesh is in preprint
01.05 First NeuroJSON App-MCX Cloud is published on JBO
2021.10.21 See our first conference poster on NeuroJSON at fNIRS2021
09.08 Tweetorial What does "open-source data" really mean?
09.04 Tweetorial What is NeuroJSON?
08.27 NeuroJSON received 5-yr NIH U24-award

Read more news... | Follow us on
Software/Libraries
Python
python-jdata
python-bjdata
MATLAB/GNU Octave
JSONLab
JNIfTY
JSNIRFY
JavaScript
JSData
/Demo/: MCX Cloud
/Demo/: BlenderPhotonics
C/C++
ubj

Software

  • List of NeuroJSON parsers/writers

    Click on each library/utility on the left to read more.
  • python-jdata

    Using the lightweight Python-JData module, a complex Python data structure can be encoded as a dict object that is easily serialized as a JSON/binary JSON file and share such data between programs of different languages.

    URL
    https://pypi.org/project/jdata/

    Code
    https://github.com/NeuroJSON/pyjdata

    Install
    For Debian Bullseye/Ubuntu 21.04 or newer
     sudo apt-get install python3-jdata
    
    For all other systems
     pip install jdata
    

    Example
     import jdata as jd
     import numpy as np
     a={'name':'jd','value':1,'array':np.arange(1,5,dtype=np.uint8)}
     jd.show(a)
     jd.save(a,'mydata.json')  # jdata can dump numpy arrays to JSON
     b=jd.load('mydata.json')  # jdata loads both JSON and UBJSON
     jd.save(b,'mydata.jdb')   # save to UBJSON/Binary JData file
     print(b)
    
  • python-bjdata - a lightweight binary JSON format for Python

    This package was modified based on the py-ubjson package developed by Iotic Labs Ltd. The major changes were focused on supporting the Binary JData Specification Draft 1 - an extended Universal Binary JSON (UBJSON) Specification Draft-12.

    URL
    https://pypi.org/project/bjdata/

    Code
    https://github.com/NeuroJSON/pybj

    Install
    For Debian Bullseye/Ubuntu 21.04 or newer
     sudo apt-get install python3-bjdata
    
    For all other systems
     pip install bjdata
    

    Example
     import bjdata as bj
     a={'name':'jdata','value':1.0,'array':[1,2,4]}
     bj.dumpb(a)
     with open('data.jdb', 'w') as f:
        bj.dump(data, f)
    

     # alternatively, call jd.load/save
     import jdata as jd
     b=jd.load('data.jdb')
     jd.save(b,'newdata.jdb')
    

  • JSONLab - a portable JSON/UBJSON/MsgPack reader/parser for MATLAB/Octave

    JSONLab is one of the most popular JSON parsers for MATLAB, winning Popular Files 2018 and Editor's Pick.

    URL
    http://iso2mesh.sf.net/cgi-bin/index.cgi?jsonlab

    Code
    https://github.com/fangq/jsonlab

    Install
    For Debian Bullseye/Ubuntu 21.04 or newer
     sudo apt-get install octave-jsonlab
    
    For Fedora 24 or new
     sudo apt-get install octave-jsonlab
    
    For all other systems
    https://github.com/fangq/jsonlab/releases

    Example
     a=struct('name','jdata','value',1.0,'array',[1,2,4]);
     savejson(a)
     savejson('rootname',a)
     savejson('rootname',a,'compact',1)
     savejson('',a,'mydata.json')
     savejson('ziparray',eye(10),'Compression',...
        'zlib','CompressArraySize',1)
     savejson('',eye(10),'UseArrayShape',1)
     dat=loadjson('{"obj":{"string":"value","array":[1,2,3]}}')
     dat=loadjson('mydata.json')
     savebj('rootname',a,'mydata.jdb')   # save to UBJSON
    
  • JSData - JData encoder/decoder for JavaScript

    JSData is an ultra-portable JavaScript module that can encode and decode NeuroJSON/JData data structure constructs in Node.js apps or web pages. It uses numjs as the backend when decoding N-D array JData constructs.

    The NIH-funded MCX Cloud web-based Monte Carlo simulation utilizes JSData for decoding 3-D volumes written in the [*URL: https://github.com/NeuroJSON/jnifti JNIfTI format] by MCX and perform in-browser 3-D rendering using Three.js

Specifications
Data Structure Level
JData Specification
BJData Specification
Data File Level
JNIfTI Specification
JSNIRF Specification
JMesh Specification
Dataset Level
BIDS-REST

Specifications

  • List of Format Specifications

    Click on each specification on the left to read more.
  • JData: A general-purpose data annotation and interchange format

    JData is a general-purpose data interchange format aimed for portability, readability and simplicity. It utilizes the JavaScript Object Notation (JSON) [RFC4627] and Universal Binary JSON (UBJSON) specifications to store complex hierarchical data in both text and binary formats. In this specification, we define a list of JSON-compatible constructs to store a wide range of data structures, including scalars, arrays, structures, tables, hashes, linked lists, trees and graphs, and support optional data grouping and metadata for each data element. The generated data files are compatible with JSON/UBJSON specifications and can be readily processed by most existing parsers.

    URL: https://github.com/NeuroJSON/jdata

    Version: 1.0 Draft 3

  • Binary JData: A portable interchange format for complex binary data

    The Binary JData (BJData) Specification defines an efficient serialization protocol for unambiguously storing complex and strongly-typed binary data found in numerous application domains. The BJData specification is the binary counterpart to the JSON format, both of which are used to serialize complex data structures supported by the JData specification (http://openjdata.org). The BJData spec is derived and extended from the Universal Binary JSON (UBJSON, http://ubjson.org) specification (Draft 12). It adds supports for N-dimensional packed arrays and extended binary data types.

    URL: https://github.com/NeuroJSON/bjdata

    Version: 0.5 Draft 1

  • JNIfTI: An extensible file format for storage and interchange of neuroimaging data

    JNIfTI is a highly extensible file format developed for the storage, interchange and processing of neuroimaging data. Built upon the JData specification, a JNIfTI file has both a text-based interface using the JavaScript Object Notation (JSON) [RFC4627] format and a binary interface using the Universal Binary JSON (UBJSON) serialization format. This further allows JNIfTI to store not only neuroimaging data formatted in the NIfTI-1, NIfTI-2, and Analyze7.5 specifications, but also non-array-based and complex data structures, such as neuroimaging metadata, using simple syntax. To enhance accessibility, JNIfTI files can be directly parsed by most existing JSON and UBJSON parsers.

    URL: https://github.com/NeuroJSON/jnifti

    Version: 1.0 Draft 1

  • JSNIRF: A lightweight and portable fNIRS data storage format

    JSNIRF is a portable format for storage, interchange and processing data generated from functional near-infrared spectroscopy, or fNIRS - an emerging functional neuroimaging technique. Built upon the JData and SNIRF specifications, a JSNIRF file has both a text-based interface using the JSON format and a binary interface using the Universal Binary JSON (UBJSON) serialization format. It contains a compatibility layer to provide a 1-to-1 mapping to the existing HDF5 based SNIRF files. A JSNIRF file can be directly parsed by most existing JSON and UBJSON parsers.

    URL: https://github.com/NeuroJSON/jsnirf

    Version: 0.4

  • JMesh - A versatile data format for unstructured meshes and geometries

    JMesh is a portable and extensible file format for the storage and interchange of unstructured geometric data, including discretized geometries such as triangular and tetrahedral meshes, parametric geometries such as NURBS curves and surfaces, and constructive geometries such as constructive solid geometry (CGS) of shape primitives and meshes.

    URL: https://github.com/NeuroJSON/jmesh

    Version: 1.0 Draft 1

  • BIDS-REST

    To be announced

About us

About us

Return Home

Powered by Habitat