• Brain atlas sensitivity
  • Tibia bone with structure illumination
  • Digimouse photon simulations
  • Head-neck sensitivity

OpenJData logoOpenJData

A future-proof scientific data format

OpenJData is a set of open data-standards based on JSON/binary JSON formats. They are self-documenting, highly extensible, versatile, lighweight and easy-to-implement. See live demos

2019.11.27Wiki site preview, see JData for Beginners & samples
11.21Initial JData support for Python is here
11.10Initial JData support for JavaScript, see live demo
10.24JSONLab v2b is here-a ref. lib for JData Spec
10.08JNIfTI toolbox had landed on Fedora!
07.25JData spec Draft-2 [Request for comments]
07.23JNIfTI spec (initial draft)
06.23JSNIRF spec (initial draft)
06.21JNIfTI MATLAB support
06.14JNIfTI data samples
06.12JMesh spec (initial draft)

Go to Live Demos
guide

JData Live Demos

JData is not a new format - if your software can read JSON files, it has already supported JData! It is simple, portable, and easy to implement. Check out the live-demos (JavaScript based) by clicking on the links below

Basic Data:Scalars

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ a_float: 0.5, an_integer: 125, a_string: 'test', };
Basic Data:BigInt (64-bit integers)

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ a_bigint64: 9007199254740991n };
Basic Data:Special constants

Input DataText JData (JSON)Binary JData (UBJSON)
data={ logical: [true, false], empty: null, special: [NaN, 0/0, 1/0, Infinity, -Infinity] };
Basic Data:Structured data

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ name: "Andy", school: "Hood", classes: { math: { teacher: "Grant", weekday: ["Monday","Tuesday"] }, art: { teacher: "Cole", weekday: ["Wednesday","Friday"] } } };
Basic Data:1-D Vectors

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ a_row_vector: [1,2,3,5,NaN], a_col_vector: [ [1], [2], [3], [5], [NaN] ], a_mixed_array: ["1","2",[1.0,2.0],[[1],[2]]] };
Basic Data:1-D Vectors

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ a_string: "test string", a_string_with_escape: "a\t\tb" };
Basic Data:Byte stream

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
// Javascript does not have built-in blob-object data={ _ByteStream_: "eJxjZMQEAADmABU=" };
ND Arrays:Direct-form

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={ a_1d_vector: [1,2.5, 10], a_2d_matrix: [[1,2,3],[4,5,6]], a_3d_matrix: [[[1,2,3],[4,5,6]] ,[[11,12,13],[14,15,16]]] }
ND Arrays:Annotated-form

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={}; // a typed-array (1D only) data['a_1d_vector']= new Float32Array([12.5,10]); // a typed 2D array, using numjs ndarray data['a_2d_vector']= nj.array([[1,2,3],[4,5,6]],'uint8'); // a typed 3D array, using numjs ndarray data['a_3d_vector']= nj.array([[[1,2,3],[4,5,6]], [[11,12,13],[14,15,16]]],'int8');
ND Arrays:Complex-valued arrays

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
/* *Javascript does not have built-in complex data type, *but you can use the below JData construct to store *a complex value/vector. In this case, the 1x2 *complex value data=[1+2*i, 3+4*i] */ data={ _ArrayType_: "int32", _ArraySize_: [1,2], _ArrayIsComplex_: true, _ArrayData_: [[1,3],[2,4]] };
ND Arrays:Sparse arrays

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
/* *Javascript does not have built-in sparse array type, *but you can use the below JData construct to store *a sparse 2-D array. In this case, the 5x5 sparse *matrix with 2 values: data[1,1]=2.1 and data[2,3]=2.2. */ data={ _ArrayType_: "single", _ArraySize_: [5,5], _ArrayIsSparse_: true, _ArrayData_: [[1,2],[1,3],[2.1,2.2]] };
ND Arrays:Array compression

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data={}; opt={compression: 'zlib'}; // a typed 3D array, using numjs ndarray data['a_5x4_all_one']=nj.ones([5,4],'uint8');
ND Arrays:Array shape (diagonal, triangular, band, Toeplitz ...)

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
// Javascript does not have built-in special matrices // a 5x5 identity matrix data={ _ArrayType_: "single", _ArraySize_: [5,5], _ArrayShape_: "diag", _ArrayData_: [1,1,1,1,1] };
Advanced Data-types:Maps

Input Data (JavaScript)Text JData (JSON)Binary JData (UBJSON)
data=new Map([ [0/0, 'one'], [2, 'two'], ["k", 'three'], ]);
Live Demo
Click the data type lines below to show live demo info
guide

Specifications

JData specification
-- Portable serialization of general & complex scientific data structures using JSON and binary JSON
http://github.com/OpenJData/jdata
JNIfTI specification
-- Defining binary (.bnii) and text (.jnii) JSON based NIfTI data container; 100% compatible with NIfTI-1/2
http://github.com/OpenJData/jnifti
JSNIRF specification
-- A lightweight and portable fNIRS data storage format that is 100% compatible with SNIRF
http://github.com/OpenJData/jsnirf
JMesh specification
-- A versatile JSON data format for discretized (mesh), parametric (NURBS) and constructive (CGS) geometries
http://github.com/OpenJData/jmesh
JGIfTI specification
-- A JSON/binary-JSON formatted GIfTI data container based on JData
on-going
JDICOM specification
-- A JSON/binary-JSON based DICOM alternative format based on JData
TBD
Go to About
Project maintainer:
Qianqian Fang, PhD
Developers:
Qianqian Fang
Shijie Yan
Yaoshen Yuan
Edward Xu
Morris Vanegas

About

The JData Developers

  • Our team is dedicated to advancing our open-source JData/NeuroJData platform towards transparent, general-purpose, versatile, and efficient data storage format for the broad scientific community.

    Click on each member to read more.
  • Qianqian Fang PhotoDr. Fang is currently an Assistant Professor in the Dept. of Bioengineering, Northeastern University. He is the original author of JSONLab and JData specifications. He is the current maintainer of the project. He enjoys programming, and interactions with the users.
  • Shijie is a PhD student in Dr. Fang's lab since 2017. He is currently working on the JData C/MATLAB parser since 2019.
  • Yaoshen is a PhD student in Dr. Fang's lab since 2016. He is current helping on develop the Python JData/UBJSON parser for Pandas.
  • Morris is a PhD student in Dr. Fang's lab since 2016. He is the current maintainer of the OpenJData.org website.